Home liberachat/#haskell: Logs Calendar

Logs on 2021-10-02 (liberachat/#haskell)

00:01:04 emf joins (~emf@2620:10d:c090:400::5:113f)
00:01:28 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 252 seconds)
00:03:45 <orzo> probably unsafeIOToPrim is acceptable since the GADT includes the state argument and calling "new" will still be a type error if you use it with ST
00:04:06 <orzo> hm
00:04:12 <orzo> but it wont be a type error
00:04:22 <orzo> there i go tricking myself again
00:04:24 <monochrom> janus: BTW my perspective is that "do { pattern <- xxx; ... }" is as justified as "[ ... | pattern <- xxx, ...]"
00:04:31 hyiltiz joins (~quassel@31.220.5.250)
00:05:12 <monochrom> > [ x | Just x <- [Nothing, Just 4, Nothing, Just 5] ]
00:05:14 <lambdabot> [4,5]
00:06:07 × Tuplanolla quits (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
00:06:17 hexfive joins (~eric@50.35.83.177)
00:06:30 × hexfive quits (~eric@50.35.83.177) (Client Quit)
00:10:13 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 252 seconds)
00:10:48 hyiltiz joins (~quassel@31.220.5.250)
00:13:42 pfurla joins (~pfurla@216.151.180.130)
00:16:23 × pfurla_ quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 252 seconds)
00:17:26 notzmv joins (~zmv@user/notzmv)
00:17:38 Stotteren joins (~Stotteren@pool-108-20-79-41.bstnma.fios.verizon.net)
00:18:30 × hendursaga quits (~weechat@user/hendursaga) (Quit: hendursaga)
00:18:58 hendursaga joins (~weechat@user/hendursaga)
00:22:27 <monochrom> https://github.com/treblacy/hasdoc newly improved :)
00:23:54 × nvmd quits (~nvmd@user/nvmd) (Quit: Later, nerds.)
00:26:58 lavaman joins (~lavaman@98.38.249.169)
00:30:37 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 252 seconds)
00:34:47 × ss4 quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
00:36:07 × ph88 quits (~ph88@ip5f5af6fd.dynamic.kabel-deutschland.de) (Remote host closed the connection)
00:36:30 ph88 joins (~ph88@2a02:8109:9e00:7e5c:1cbc:efbb:c578:a980)
00:39:40 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
00:40:31 Topsi joins (~Tobias@dyndsl-095-033-023-177.ewe-ip-backbone.de)
00:42:16 <orzo> awpr: I got my gl vector to compile using only ioToPrim and unsafeInterleaveIO and GADT matching
00:43:28 <awpr> huh. I don't immediately see how that's possible
00:44:04 <orzo> it's probably an infinite loop
00:44:12 <orzo> i used fix
00:44:16 <orzo> heh
00:44:48 <awpr> oh, to match the output before you construct it? I expect that's a loop, yeah
00:44:50 <orzo> i was trying to use unsafeInterleaveIO to avoid looping but that's probably not right
00:45:30 <orzo> a give away is there was no place for me to call error
00:45:30 <orzo> heh
00:47:46 <awpr> out of curiosity, is this doing something like glGenBuffers+glBindBuffer+glMapBuffer to "create" the buffer?
00:48:17 <orzo> yeah but not glMap
00:48:28 <orzo> glBufferData
00:48:51 <orzo> i did use glMapBuffer for some other calls
00:49:21 × Psybur quits (~Psybur@mobile-166-170-32-197.mycingular.net) (Remote host closed the connection)
00:49:33 <orzo> i'm probably just wating time now trying to make a sanish MVector instance
00:49:51 <orzo> but its ammusing anwyay
00:50:07 <awpr> hmm... I'm not very familiar with the GL APIs, does that mean each element write has to update the whole buffer?
00:50:15 <orzo> no
00:50:31 <orzo> there's a lot of different calls for manipulating buffers
00:52:43 × hgolden_ quits (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (Remote host closed the connection)
00:53:27 <awpr> as far as updating the contents, I'm only finding APIs for "write the whole buffer" and "map the buffer into host address space", am I missing some?
00:53:54 <orzo> yes
00:54:22 <orzo> glBufferSubData
00:54:46 acidjnk joins (~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de)
00:54:57 <awpr> ah, okay. and that interacts with the hefty internal global state of OpenGL
00:55:36 <awpr> just wondering whether "map immediately on creation and keep the pointer" could avoid the internal state enough to be ST-compatible
00:56:54 <orzo> i don't think much would go wrong with ST if you use it within IO and have a GL context active
00:57:01 × acidjnk_new quits (~acidjnk@p200300d0c703cb709cd806e9bafd3ecc.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
00:57:01 × acidjnk_new3 quits (~acidjnk@p200300d0c703cb709cd806e9bafd3ecc.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
00:57:37 <orzo> none of this will work without a GL context initialized
00:57:58 acidjnk_new joins (~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de)
00:58:00 <orzo> that's some kind of thread-local state
00:58:11 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 252 seconds)
00:58:58 <orzo> it seems odd to put requirements like that on pure non-monadic code
00:59:11 <awpr> yeah, agree that's a problem
01:00:56 × lbseale quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
01:04:14 × Lycurgus quits (~juan@98.4.112.204) (Ping timeout: 260 seconds)
01:05:39 hyiltiz joins (~quassel@31.220.5.250)
01:11:25 × acidjnk_new quits (~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
01:11:25 × acidjnk quits (~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
01:12:17 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:13:03 × zaquest quits (~notzaques@5.128.210.178) (Remote host closed the connection)
01:13:24 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:16:49 × xff0x quits (~xff0x@2001:1a81:53fd:8200:7263:a828:f9a7:9516) (Ping timeout: 252 seconds)
01:18:22 × _xor quits (~xor@74.215.232.67) (Quit: WeeChat 3.2.1)
01:18:45 xff0x joins (~xff0x@2001:1a81:5237:ef00:6acb:a523:9d13:873c)
01:18:52 _xor joins (~xor@74.215.232.67)
01:20:51 zaquest joins (~notzaques@5.128.210.178)
01:20:57 acidjnk joins (~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de)
01:20:57 acidjnk_new joins (~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de)
01:26:49 × acidjnk quits (~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
01:26:49 × acidjnk_new quits (~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
01:29:09 <orzo> awpr: what if i use unsafeInterleaveIO to make the basicUnsafeNew constructor lazy and all the read and write routines have an implicit check that PrimState m ~ RealWorld because they use ioToPrim
01:29:25 × alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection)
01:30:04 × betelgeuse quits (~betelgeus@94-225-47-8.access.telenet.be) (Quit: The Lounge - https://thelounge.chat)
01:30:53 <orzo> the uncertainty comes from how it decides (PrimState m ~ RealWorld) is okay based on the GADT match and the constructor was created in the lazy constructor call that used unsafeCoerce
01:30:56 neurocyte01320 joins (~neurocyte@94.46.83.234)
01:30:56 × neurocyte01320 quits (~neurocyte@94.46.83.234) (Changing host)
01:30:56 neurocyte01320 joins (~neurocyte@user/neurocyte)
01:30:59 ec joins (~ec@gateway/tor-sasl/ec)
01:32:25 × tlaxkit quits (~hexchat@170.253.34.130) (Quit: Leaving)
01:33:10 <awpr> that doesn't actually achieve any checking if I'm understanding it correctly
01:33:19 × neurocyte0132 quits (~neurocyte@user/neurocyte) (Ping timeout: 252 seconds)
01:33:19 neurocyte01320 is now known as neurocyte0132
01:33:51 <awpr> if it's actually `unsafeCoerce`, then all it's doing is providing a lie as proof that whatever `PrimState` is `RealWorld`
01:34:11 <awpr> and then consuming that lie to retroactively justify the lie
01:35:03 <monochrom> @quote monochrom unsafeCoerce
01:35:03 <lambdabot> monochrom says: isTrue = (unsafeCoerce :: Either a b -> Bool) . (unsafeCoerce :: Maybe c -> Either a b) . (unsafeCoerce :: Bool -> Maybe c)
01:35:11 <monochrom> Very safe and honest. >:)
01:36:21 <orzo> well
01:36:42 <geekosaur> unsafeCoerce can be safe if and only if the type level says something valid. if you're using it because you can't say what you want at the type level, now you have two problems
01:36:59 <orzo> is there anything worthwhile to get from post-poning actual IO to a point where a constructor could be matched
01:37:47 × mikoto-chan quits (~mikoto-ch@83.137.2.243) (Ping timeout: 252 seconds)
01:37:56 <orzo> the read/write functions are fine the way they are relying on a GADT pattern match to decide the state is RealWorld
01:38:19 <orzo> it's not their fault
01:38:22 <orzo> heh
01:38:57 <orzo> if i made an alternative constructor and disallowed the basicUnsafeNew call, they'd be fine protection
01:39:14 <awpr> yeah, in isolation they're fine. but I don't think there's any way to get around the issue of `basicUnsafeNew`; nothing tells it what `m` is, and the only thing that tells the later methods what `m` is is `basicUnsafeNew`, which itself didn't know to begin with
01:39:14 <orzo> and that call does have unsafe in the title ;)
01:39:21 <geekosaur> I was actually consideriing suggesting that
01:39:27 <geekosaur> smart constructor
01:39:30 mikoto-chan joins (~mikoto-ch@83.137.2.253)
01:39:46 <orzo> well it wont let me use data-vector-growable out of the box to disallow basicUnsafeNew
01:39:47 <awpr> yeah, an alternative IO-only constructor could be safe. but would it _work_ in the context you want to use it in?
01:39:50 <awpr> yeah, that
01:40:08 <orzo> the data-vector-growable package is not big tho
01:40:45 <awpr> does this whole situation also have issues with GHC's threaded runtime? or is this somehow dealing with that by using pinned threads etc.
01:41:06 <orzo> no issues
01:41:12 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
01:41:17 <orzo> i'm actually using gtk to get my gl context
01:41:58 <awpr> "using gtk" meaning "running inside a callback from gtk"? then it might be pinned to the GTK thread
01:42:33 harveypwca joins (~harveypwc@2601:246:c180:a570:2435:ba7:e573:bc26)
01:43:09 geekosaur joins (~geekosaur@xmonad/geekosaur)
01:43:23 <orzo> gtk documents when you can use the gl context
01:43:36 <orzo> they have a call to bring it into scope when it is not
01:44:06 <orzo> but yeah, i don't feel confident i can use it from multiple threads
01:44:22 <awpr> ok, sounds like they've explicitly dealt with the issues and documented how to avoid breaking it
01:46:51 <orzo> i have a thought to add safety
01:48:20 <orzo> class MVector v a -- it has two arguments v and a.
01:49:06 <orzo> I could force the a to be something that includes some proof maybe
01:49:44 <orzo> when you actually write to the vector, kyou'll be forced to include the proof
01:49:58 <orzo> and everything else can be lazy to that point
01:53:45 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
01:53:59 × Topsi quits (~Tobias@dyndsl-095-033-023-177.ewe-ip-backbone.de) (Read error: Connection reset by peer)
01:54:25 MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com)
01:54:33 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
01:54:38 × vysn quits (~vysn@user/vysn) (Ping timeout: 260 seconds)
01:55:11 × yinghua quits (~yinghua@181.228.40.183) (Quit: Leaving)
01:57:57 acidjnk joins (~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de)
01:57:57 acidjnk_new joins (~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de)
01:59:40 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
02:00:12 TDANG joins (~TDANG@inet-177-7.ets.org)
02:00:53 × mikoto-chan quits (~mikoto-ch@83.137.2.253) (Read error: Connection reset by peer)
02:00:58 <TDANG> Hi. Please take a look at this code snipet
02:01:18 <TDANG> data GiveParams = GiveParams
02:01:19 <TDANG> { gpBeneficiary :: !PubKeyHash
02:01:21 <TDANG> , gpDeadline :: !POSIXTime
02:01:22 <TDANG> , gpAmount :: !Integer
02:01:24 <TDANG> } deriving (Generic, ToJSON, FromJSON, ToSchema)
02:01:25 <TDANG> give :: AsContractError e => GiveParams -> Contract w s e ()
02:01:27 <TDANG> give gp = do
02:01:28 <TDANG> let dat = VestingDatum
02:01:31 <TDANG> { beneficiary = gpBeneficiary gp
02:01:31 <TDANG> , deadline = gpDeadline gp
02:01:33 <TDANG> }
02:01:36 <TDANG> My concern: beneficiary = gpBeneficiary gp
02:01:40 <monochrom> Ugh you already know you should use a pastebin.
02:01:53 <TDANG> How should I understand this statement?
02:02:54 <boxscape_> instead of posting multiple lines of code directly, it's appropriate to paste them into something like https://paste.tomsmeding.com/ and then paste a link to the result here
02:03:01 <TDANG> Can you guide me how to use pastebin?
02:03:25 <boxscape_> 1. go to https://paste.tomsmeding.com/ 2. paste code 3. copy link and paste link here
02:04:08 <TDANG> https://paste.tomsmeding.com/oyfqUuyj
02:04:52 <boxscape_> 👍
02:05:18 <TDANG> Can you help me with this statement: beneficiary = gpBeneficiary gp
02:05:35 <boxscape_> what is your question about that statement?
02:06:11 <TDANG> I mean, what does this statement mean: beneficiary = gpBeneficiary gp
02:06:47 mikoto-chan joins (~mikoto-ch@83.137.2.245)
02:07:22 <TDANG> gp is of type GiveParams, correct?
02:07:42 <boxscape_> VestingDatum is a record with the fields beneficiary and deadline. `VestingDatum { beneficiary = gpBeneficiary gp, deadline = gpDeadline gp}` creates a new VestingDatum value with the beneficiary field having the value gpBeneficiary gp
02:07:51 <boxscape_> correc
02:07:52 <boxscape_> t
02:08:07 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
02:08:07 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
02:08:07 wroathe joins (~wroathe@user/wroathe)
02:08:19 <boxscape_> GiveParams is also a record, and the expression `gpBeneficiary gp` extracts the gpBeneficiary field from the gp value
02:08:55 <boxscape_> so the line in question means that the newly created VestingDatum will have the same beneficiary as the gpBeneficiary of the GiveParams value
02:09:48 <TDANG> expression `gpBeneficiary gp` extracts the gpBeneficiary field from the gp value : do you have any document for this?
02:11:44 <boxscape_> TDANG: I don't have a standard document at hand, but the learn you a haskell section on "Record syntax" on this page seems alright http://learnyouahaskell.com/making-our-own-types-and-typeclasses
02:11:57 <boxscape_> (scroll down to "Record syntax")
02:11:59 × alx741 quits (~alx741@181.196.69.214) (Quit: alx741)
02:12:10 <TDANG> Oh, I found one: https://sodocumentation.net/haskell/topic/1950/record-syntax
02:12:23 <boxscape_> yeah that seems good, too
02:12:55 <TDANG> https://paste.tomsmeding.com/pCRT7pFH
02:13:58 <TDANG> Ya, cool. Thanks a lot ;-)
02:14:04 <boxscape_> welcome
02:14:16 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
02:14:31 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.2.1)
02:22:24 pavonia joins (~user@user/siracusa)
02:28:56 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
02:32:43 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 252 seconds)
02:34:09 hyiltiz joins (~quassel@31.220.5.250)
02:38:22 <TDANG> 1 bit concern: gpBeneficiary gp
02:38:52 <TDANG> this statement may be translated as : function gpBeneficiary with parameter gp
02:39:02 <boxscape_> yes
02:39:20 <boxscape_> (technically it's an expression, not a statement)
02:39:26 <TDANG> how can we differentciate with extraction a property from a record var
02:39:35 <TDANG> ya, expression
02:40:12 <boxscape_> when you define `data GiveParam = GiveParam { gpBeneficiary :: ... }`, the extractor `gpBeneficiary` *is* a function
02:40:21 <boxscape_> so you can't really differentiate it from a function
02:40:38 × jaitoon2 quits (~Jaitoon@94.46.244.24) (Quit: Leaving)
02:40:44 <boxscape_> you can figure out where it was defined
02:40:56 <boxscape_> and then there you can see whether it comes from a record or was defined as a regular function
02:41:30 <TDANG> oh, nice. This is a correct way to trace the origin
02:42:02 <boxscape_> right
02:42:18 × terrorjack quits (~terrorjac@static.3.200.12.49.clients.your-server.de) (Read error: Connection reset by peer)
02:43:39 machinedgod joins (~machinedg@24.105.81.50)
02:43:43 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 252 seconds)
02:46:01 × chisui quits (~chisui@200116b8683fc700cf2a945a88454e85.dip.versatel-1u1.de) (Ping timeout: 256 seconds)
02:57:58 × doyougnu quits (~user@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 252 seconds)
02:59:14 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
02:59:58 MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com)
03:00:50 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 252 seconds)
03:01:04 × adium quits (adium@user/adium) (Killed (NickServ (GHOST command used by adium55!~adium55@2804:14d:149a:8ad4:31b5:99c4:c7a3:6ed4)))
03:01:23 × td_ quits (~td@94.134.91.208) (Ping timeout: 252 seconds)
03:02:44 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
03:02:50 adium_ joins (adium@user/adium)
03:03:04 td_ joins (~td@94.134.91.111)
03:06:07 adium_ is now known as adium
03:12:38 rekahsoft joins (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com)
03:18:42 mbuf joins (~Shakthi@27.58.139.33)
03:22:40 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
03:28:16 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 252 seconds)
03:30:25 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Read error: Connection reset by peer)
03:30:37 geekosaur joins (~geekosaur@xmonad/geekosaur)
03:31:01 × mei quits (~mei@user/mei) (Ping timeout: 252 seconds)
03:35:55 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
03:38:32 × boxscape_ quits (~boxscape_@mue-88-130-59-180.dsl.tropolys.de) (Quit: Connection closed)
03:43:56 CnnibisIndica is now known as CannabisIndica
03:47:50 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
03:47:50 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
03:47:50 wroathe joins (~wroathe@user/wroathe)
03:53:01 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
04:08:56 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
04:11:14 × rekahsoft quits (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 252 seconds)
04:11:50 phma_ joins (~phma@host-67-44-209-109.hnremote.net)
04:14:38 × phma quits (~phma@host-67-44-209-109.hnremote.net) (Ping timeout: 260 seconds)
04:16:37 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
04:16:52 MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com)
04:19:55 × geranim0 quits (~geranim0@modemcable242.171-178-173.mc.videotron.ca) (Ping timeout: 252 seconds)
04:24:42 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
04:29:22 hgolden joins (~hgolden2@cpe-172-114-81-123.socal.res.rr.com)
04:33:14 × fizzsegfaultbuzz quits (~segfaultf@135-180-0-138.static.sonic.net) (Ping timeout: 252 seconds)
04:46:20 × thelounge9230681 quits (~thelounge@cpe-75-85-161-60.san.res.rr.com) (Ping timeout: 250 seconds)
04:52:58 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 252 seconds)
04:53:22 hyiltiz joins (~quassel@31.220.5.250)
04:59:05 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
05:02:32 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
05:08:01 pfurla_ joins (~pfurla@ool-182ed2e2.dyn.optonline.net)
05:10:38 × pfurla quits (~pfurla@216.151.180.130) (Ping timeout: 252 seconds)
05:12:16 × emf quits (~emf@2620:10d:c090:400::5:113f) (Quit: emf)
05:13:30 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
05:14:27 × zebrag quits (~chris@user/zebrag) (Remote host closed the connection)
05:16:34 × turlando quits (~turlando@user/turlando) (Ping timeout: 252 seconds)
05:16:55 turlando joins (~turlando@93-42-250-112.ip89.fastwebnet.it)
05:16:55 × turlando quits (~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
05:16:55 turlando joins (~turlando@user/turlando)
05:18:32 <c_wraith> anyone know what the status of the GHC 9.2 release candidate is?
05:19:14 × martin02 quits (~silas@141.84.69.76) (Ping timeout: 246 seconds)
05:19:40 <c_wraith> the current RC fixes a couple bugs that make using type application a lot nicer.
05:19:51 martin02 joins (~silas@141.84.69.76)
05:20:00 <c_wraith> It'd be cool to see it officially released
05:27:50 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
05:39:25 × mikoto-chan quits (~mikoto-ch@83.137.2.245) (Read error: Connection reset by peer)
05:45:03 mikoto-chan joins (~mikoto-ch@83.137.2.245)
05:46:46 vysn joins (~vysn@user/vysn)
05:56:11 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:07:46 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 252 seconds)
06:12:22 chomwitt joins (~chomwitt@ppp-2-85-111-14.home.otenet.gr)
06:14:38 machinedgod joins (~machinedg@24.105.81.50)
06:20:45 benin0369323016 joins (~benin@183.82.205.238)
06:21:33 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
06:23:54 ec joins (~ec@gateway/tor-sasl/ec)
06:27:36 hyiltiz joins (~quassel@31.220.5.250)
06:29:56 acidjnk_new3 joins (~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de)
06:33:10 × acidjnk_new quits (~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
06:33:10 × acidjnk quits (~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
06:33:28 acidjnk joins (~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de)
06:38:30 × juhp quits (~juhp@128.106.188.220) (Quit: juhp)
06:38:31 iridium__ joins (~iridium@122.175.138.158)
06:38:44 juhp joins (~juhp@128.106.188.220)
06:42:36 emf joins (~emf@2620:10d:c090:400::5:113f)
06:43:41 xiongxin joins (~quassel@113.116.33.66)
06:50:21 × mikoto-chan quits (~mikoto-ch@83.137.2.245) (Read error: Connection reset by peer)
06:51:10 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 252 seconds)
06:52:58 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 252 seconds)
06:53:07 × emf quits (~emf@2620:10d:c090:400::5:113f) (Quit: emf)
06:53:20 mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
06:53:50 emf joins (~emf@2620:10d:c090:400::5:113f)
06:55:12 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
06:55:53 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
06:56:22 geekosaur joins (~geekosaur@xmonad/geekosaur)
06:57:53 × ubert quits (~Thunderbi@178.115.52.70.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
07:00:34 hyiltiz joins (~quassel@31.220.5.250)
07:02:46 × mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 252 seconds)
07:04:52 mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
07:07:07 rtjure joins (~rtjure@bras-79-132-17-74.comnet.bg)
07:14:05 falafel joins (~falafel@2603-8000-d800-688c-5d7c-f952-1b32-cc6a.res6.spectrum.com)
07:14:29 × aegon quits (~mike@174.127.249.180) (Remote host closed the connection)
07:18:10 × ByronJohnson quits (~bairyn@mail.digitalkingdom.org) (Remote host closed the connection)
07:19:15 × emf quits (~emf@2620:10d:c090:400::5:113f) (Quit: emf)
07:20:05 emf joins (~emf@2620:10d:c090:400::5:113f)
07:21:36 × iridium__ quits (~iridium@122.175.138.158) (Changing host)
07:21:36 iridium__ joins (~iridium@user/iridium/x-1824934)
07:22:57 max22- joins (~maxime@2a01cb088335980038ece50ee02a7251.ipv6.abo.wanadoo.fr)
07:25:58 gehmehgeh joins (~user@user/gehmehgeh)
07:29:07 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
07:29:46 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
07:30:10 × emf quits (~emf@2620:10d:c090:400::5:113f) (Quit: emf)
07:30:44 ByronJohnson joins (~bairyn@mail.digitalkingdom.org)
07:32:42 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
07:33:04 azimut joins (~azimut@gateway/tor-sasl/azimut)
07:35:46 × xiongxin quits (~quassel@113.116.33.66) (Ping timeout: 252 seconds)
07:35:46 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 252 seconds)
07:42:59 jakalx parts (~jakalx@base.jakalx.net) ()
07:47:40 dajoer joins (~david@user/gvx)
07:49:13 × voldial quits (~user@195.179.201.175) (Changing host)
07:49:13 voldial joins (~user@user/voldial)
07:51:26 jakalx joins (~jakalx@base.jakalx.net)
07:52:54 × falafel quits (~falafel@2603-8000-d800-688c-5d7c-f952-1b32-cc6a.res6.spectrum.com) (Remote host closed the connection)
07:53:14 falafel joins (~falafel@2603-8000-d800-688c-5d7c-f952-1b32-cc6a.res6.spectrum.com)
07:55:01 × benin0369323016 quits (~benin@183.82.205.238) (Remote host closed the connection)
08:01:04 × ryantrinkle quits (~ryan@50.239.20.147) (Read error: Connection reset by peer)
08:05:28 hendursa1 joins (~weechat@user/hendursaga)
08:07:01 × mbuf quits (~Shakthi@27.58.139.33) (Quit: Leaving)
08:08:48 × hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 276 seconds)
08:10:04 × jinsun quits (~quassel@user/jinsun) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
08:15:11 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
08:17:33 allbery_b joins (~geekosaur@xmonad/geekosaur)
08:17:33 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
08:17:36 allbery_b is now known as geekosaur
08:18:05 × falafel quits (~falafel@2603-8000-d800-688c-5d7c-f952-1b32-cc6a.res6.spectrum.com) (Ping timeout: 264 seconds)
08:18:21 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
08:19:24 CookE[] joins (~thedawn@user/thedawn)
08:19:24 fef joins (~thedawn@user/thedawn)
08:20:24 xiongxin joins (~quassel@113.116.33.66)
08:21:00 × fef quits (~thedawn@user/thedawn) (Client Quit)
08:22:30 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
08:24:56 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
08:25:25 kuribas joins (~user@ptr-25vy0i8gk2vqd1giqyv.18120a2.ip6.access.telenet.be)
08:26:41 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Remote host closed the connection)
08:37:37 nfd joins (~nfd@user/nfd)
08:38:21 jakalx parts (~jakalx@base.jakalx.net) ()
08:44:22 × hnOsmium0001 quits (uid453710@id-453710.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
08:45:37 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1)
08:46:37 Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
08:50:07 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 252 seconds)
08:52:55 mei joins (~mei@user/mei)
08:57:30 qbt joins (~edun@user/edun)
08:58:10 × werneta_ quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 268 seconds)
09:00:07 jakalx joins (~jakalx@base.jakalx.net)
09:00:14 × qbt quits (~edun@user/edun) (Client Quit)
09:03:24 VoidNoir0 joins (~VoidNoir0@72.80.203.52)
09:05:53 Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
09:23:46 DNH joins (~DNH@2a02:8108:1100:16d8:f5a0:763f:a395:5643)
09:24:40 × CookE[] quits (~thedawn@user/thedawn) (Remote host closed the connection)
09:24:51 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
09:26:09 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
09:26:24 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
09:33:16 acidjnk_new joins (~acidjnk@pd9e0b933.dip0.t-ipconnect.de)
09:35:38 thelounge9230681 joins (~thelounge@cpe-75-85-161-60.san.res.rr.com)
09:36:29 × acidjnk quits (~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
09:36:29 × acidjnk_new3 quits (~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
09:37:16 acidjnk joins (~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de)
09:38:31 × iridium__ quits (~iridium@user/iridium/x-1824934) (Quit: leaving)
09:39:41 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
09:43:19 × thelounge9230681 quits (~thelounge@cpe-75-85-161-60.san.res.rr.com) (Ping timeout: 252 seconds)
09:45:21 × DNH quits (~DNH@2a02:8108:1100:16d8:f5a0:763f:a395:5643) (Quit: My MacBook has gone to sleep. ZZZzzz…)
09:47:36 × hendursa1 quits (~weechat@user/hendursaga) (Ping timeout: 276 seconds)
09:48:01 alzgh joins (~alzgh@user/alzgh)
09:49:34 hendursa1 joins (~weechat@user/hendursaga)
09:50:30 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
09:55:18 × mjs2600_ quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 250 seconds)
09:56:13 × xsperry quits (~xs@cpe-188-129-101-182.dynamic.amis.hr) (Changing host)
09:56:13 xsperry joins (~xs@user/xsperry)
09:57:20 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
09:58:15 pera joins (~pera@user/pera)
09:59:57 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
10:04:30 Debate2021 joins (~Debate202@103.134.42.228)
10:06:19 Debate2021 parts (~Debate202@103.134.42.228) ()
10:07:20 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1)
10:10:07 DNH joins (~DNH@2a02:8108:1100:16d8:f5a0:763f:a395:5643)
10:12:04 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 252 seconds)
10:14:24 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:18:08 jtomas joins (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net)
10:23:17 × mei quits (~mei@user/mei) (Quit: mei)
10:24:43 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
10:25:05 mei joins (~mei@user/mei)
10:25:40 × pera quits (~pera@user/pera) (Ping timeout: 252 seconds)
10:27:21 <tomjaguarpaw> I know of four popular streaming libraries: conduit, pipes, streaming, streamly. Are there any others?
10:33:11 CiaoSen joins (~Jura@p200300c9571bb9002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
10:43:29 pera joins (~pera@user/pera)
10:50:57 mestre joins (~mestre@191.177.175.57)
10:52:37 × pera quits (~pera@user/pera) (Ping timeout: 252 seconds)
10:53:46 × DNH quits (~DNH@2a02:8108:1100:16d8:f5a0:763f:a395:5643) (Quit: Textual IRC Client: www.textualapp.com)
10:56:54 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:00:08 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
11:00:53 alx741 joins (~alx741@181.196.69.214)
11:01:29 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
11:01:57 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
11:02:55 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
11:04:14 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1)
11:05:17 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
11:05:26 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
11:06:27 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
11:08:04 Vajb joins (~Vajb@n8vwdu04eps78g521-2.v6.elisa-mobile.fi)
11:09:02 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 260 seconds)
11:11:36 AlexNoo_ joins (~AlexNoo@178.34.162.155)
11:13:05 × Alex_test quits (~al_test@178.34.161.150) (Ping timeout: 252 seconds)
11:13:53 <zincy_> transient?
11:14:00 <zincy_> https://hackage.haskell.org/package/transient
11:14:11 × AlexZenon quits (~alzenon@178.34.161.150) (Ping timeout: 252 seconds)
11:14:27 <zincy_> Not sure about popular though
11:15:17 × AlexNoo quits (~AlexNoo@178.34.161.150) (Ping timeout: 252 seconds)
11:15:34 Cajun joins (~Cajun@user/cajun)
11:16:19 × CiaoSen quits (~Jura@p200300c9571bb9002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
11:16:21 phma_ is now known as phma
11:17:23 Alex_test joins (~al_test@178.34.162.155)
11:18:14 AlexZenon joins (~alzenon@178.34.162.155)
11:28:53 × sagax quits (~sagax_nb@user/sagax) (Ping timeout: 264 seconds)
11:31:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
11:33:21 × BestSteve quits (~beststeve@220-135-3-239.HINET-IP.hinet.net) (Quit: WeeChat 3.2)
11:42:41 × max22- quits (~maxime@2a01cb088335980038ece50ee02a7251.ipv6.abo.wanadoo.fr) (Ping timeout: 264 seconds)
11:43:24 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
11:43:58 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1)
11:48:19 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 252 seconds)
11:56:06 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
12:06:52 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 252 seconds)
12:12:04 × tabaqui quits (~root@46.39.45.162) (Quit: WeeChat 3.3)
12:15:27 fusion86 joins (~fusion@2a02-a44c-e6e5-1-1753-33de-9d65-536a.fixed6.kpn.net)
12:16:20 hyiltiz joins (~quassel@31.220.5.250)
12:16:27 snekism joins (~user@88.160.31.174)
12:19:22 slowButPresent joins (~slowButPr@user/slowbutpresent)
12:19:50 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
12:22:25 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 252 seconds)
12:24:03 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1)
12:26:13 × Vajb quits (~Vajb@n8vwdu04eps78g521-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer)
12:26:54 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
12:28:50 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 260 seconds)
12:30:31 <maerwald> tomjaguarpaw: and only 2 of them have good performance :p
12:30:37 max22- joins (~maxime@2a01cb08833598003de9b0144dce98c8.ipv6.abo.wanadoo.fr)
12:31:35 × jtomas quits (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Remote host closed the connection)
12:33:13 hyiltiz joins (~quassel@31.220.5.250)
12:34:24 jtomas joins (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net)
12:44:37 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1)
12:49:16 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 252 seconds)
12:50:38 AlexNoo_ is now known as AlexNoo
12:52:01 × mestre quits (~mestre@191.177.175.57) (Quit: leaving)
12:55:40 × ph88 quits (~ph88@2a02:8109:9e00:7e5c:1cbc:efbb:c578:a980) (Remote host closed the connection)
13:03:23 × Alex_test quits (~al_test@178.34.162.155) (Quit: ;-)
13:03:33 × AlexZenon quits (~alzenon@178.34.162.155) (Quit: ;-)
13:03:56 × AlexNoo quits (~AlexNoo@178.34.162.155) (Quit: Leaving)
13:09:55 renzhi joins (~xp@2607:fa49:6500:b100::1d9d)
13:10:16 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 252 seconds)
13:10:51 CiaoSen joins (~Jura@p200300c9571bb9002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
13:11:43 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:13:00 MQ-17J joins (~MQ-17J@8.6.144.233)
13:17:25 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
13:22:33 AlexZenon joins (~alzenon@178.34.162.155)
13:22:43 AlexNoo joins (~AlexNoo@178.34.162.155)
13:28:30 Alex_test joins (~al_test@178.34.162.155)
13:34:30 × bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 265 seconds)
13:37:07 × rembo10 quits (~rembo10@wally.codeshy.com) (Quit: ZNC 1.8.2 - https://znc.in)
13:37:19 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
13:38:00 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
13:39:37 rembo10 joins (~rembo10@wally.codeshy.com)
13:40:10 machinedgod joins (~machinedg@24.105.81.50)
13:42:28 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
13:44:02 ryantrinkle joins (~ryan@50.239.20.147)
13:46:13 jinsun joins (~quassel@user/jinsun)
13:49:02 Vajb joins (~Vajb@n8vwdu04eps78g521-2.v6.elisa-mobile.fi)
13:49:33 <tomjaguarpaw> maerwald: which two?
13:49:42 <maerwald> tomjaguarpaw: streamly and streaming
13:50:10 <tomjaguarpaw> Depends what you mean by good! https://github.com/haskell-streaming/streaming/issues/109
13:50:41 <tomjaguarpaw> streamly is the only one I have found that does not have quadratic edge cases
13:51:11 × jinsun quits (~quassel@user/jinsun) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
13:53:04 × CiaoSen quits (~Jura@p200300c9571bb9002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
13:53:25 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:57:04 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
13:57:27 jpds joins (~jpds@gateway/tor-sasl/jpds)
14:02:08 fendor joins (~fendor@91.141.55.34.wireless.dyn.drei.com)
14:02:22 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
14:05:54 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 260 seconds)
14:07:28 <maerwald> yeah, I personally am only interested in streamly
14:07:33 <maerwald> but the API is still a bit rough
14:08:07 <tomjaguarpaw> It does seem to be the best thought-through
14:08:26 <kuribas> conduit is the easiest to use.
14:08:43 <tomjaguarpaw> Why is that?
14:09:03 norskal joins (~norskal@101.175.64.73)
14:09:22 <kuribas> streamly is a bit awkward, it's like using a list, except it's not a list...
14:10:08 <maerwald> kuribas: what??
14:10:09 <kuribas> conduit you wait for the input, then yield some output.
14:10:14 <maerwald> conduit is over-engineered :p
14:10:59 azimut_ joins (~azimut@gateway/tor-sasl/azimut)
14:11:24 <maerwald> streamly actually is based on streams
14:11:49 <kuribas> conduit is more like coroutines
14:12:09 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds)
14:12:46 <kuribas> streamly claims it's as easy as using lists, but you cannot just pattern matching on a streamly stream.
14:13:24 <tomjaguarpaw> That's strange. There's nothing that should stop you from doing that. Do they really not have it in their API?
14:14:06 <maerwald> I'm not even sure what that means
14:14:21 <tomjaguarpaw> Yeah, here: https://hackage.haskell.org/package/streamly-0.8.0/docs/Streamly-Prelude.html#v:uncons
14:14:52 <kuribas> that's not the same simplicity as pattern matching on a list.
14:15:00 <maerwald> eh
14:15:13 <maerwald> turn the stream into a list then
14:15:30 <kuribas> maerwald: then you loose the stream, what is the point?
14:15:41 <maerwald> well, not sure what's your problem here
14:15:47 <tomjaguarpaw> It is about as simple as pattern matching on a list!
14:16:38 iridium__ joins (~iridium@user/iridium/x-1824934)
14:16:40 <geekosaur> sounds to me like a pattern synonym might iron out any problems anyway?
14:17:06 <maerwald> this seems to be more of a case people having trouble navigating the streamly docs and I agree it isn't easy
14:17:13 <tomjaguarpaw> I'm not sure what kuribas is objecting to but the uncons has to happen in a monad
14:17:43 <kuribas> what I object to is that it isn't a list. If you pattern match twice, you may get different elements.
14:18:04 <maerwald> because a stream may run actions, yes
14:18:12 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
14:18:28 <kuribas> so "it's as easy as using a list", is false IMO.
14:18:49 <maerwald> that seems like a fabricated complaint :p
14:19:09 <kuribas> whereas conduit is just, read a value from upstream, yield it downstream.
14:20:22 <kuribas> well, do something in between first of course.
14:20:46 <maerwald> except you need all sorts of odd combinators, while streamly's Monad instance actually makes sense
14:21:10 Guest28 joins (~Guest28@2a02:120b:c3f4:72c0:2322:7cf4:1b7d:710b)
14:21:55 <maerwald> you might also wanna check out the Unfold type in streamly
14:22:38 <kuribas> yeah, then there are also folds, lot's of concepts, it's just more complicated that the conduit way of doing things.
14:22:58 <maerwald> sounds more to me like you're used to conduit and hence find it easier
14:23:05 hyiltiz joins (~quassel@31.220.5.250)
14:23:06 <maerwald> https://github.com/composewell/streamly#an-overview-of-the-types-used-in-these-examples
14:23:10 <maerwald> not many types you have to understand
14:23:18 <maerwald> basically 4
14:23:50 <kuribas> I am not saying it's worse, it may have a good usecase, but I find the conduit interface easier to understand.
14:24:03 × Guest28 quits (~Guest28@2a02:120b:c3f4:72c0:2322:7cf4:1b7d:710b) (Client Quit)
14:24:03 <maerwald> I find it mind-boggling whenever I look at it
14:24:23 geekosaur got lost almost immediately trying to understand the API
14:24:37 <maerwald> one day I figure out how conduit works, 2 weeks later I don't anymore
14:24:38 <kuribas> geekosaur: conduit?
14:24:42 <maerwald> it's so unintuitive
14:24:42 <geekosaur> yeh
14:25:18 <tomjaguarpaw> I'm curious why a streamly Unfold m a b is not just an a -> SerialT m b
14:26:05 <maerwald> `forall s. Unfold (s -> m (Step s b)) (a -> m s)`
14:26:10 <kuribas> tomjaguarpaw: because of the applicative?
14:27:40 × xiongxin quits (~quassel@113.116.33.66) (Ping timeout: 252 seconds)
14:27:46 <tomjaguarpaw> I don't understand either response
14:28:05 xiongxin joins (~quassel@113.116.33.66)
14:28:22 × cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds)
14:28:24 <maerwald> I don't understand how `a -> SerialT m b` would allow you to define a stepper function
14:28:46 <tomjaguarpaw> Do you want to define a stepper function?
14:29:03 <tomjaguarpaw> You can't use it for anything other than getting b s out
14:29:54 <maerwald> In the stepper, you have Yield, Skip and Stop
14:30:21 <tomjaguarpaw> What can you do with it that you can't do with an a -> SerialT m b ?
14:30:28 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
14:30:28 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
14:30:28 wroathe joins (~wroathe@user/wroathe)
14:31:46 <kuribas> tomjaguarpaw: maybe it's for performance? Streamly tries very hard to be performant.
14:32:05 cheater joins (~Username@user/cheater)
14:32:13 <tomjaguarpaw> Yes, possible
14:32:46 <kuribas> it even has a plugin that remove intermediate structures.
14:33:13 <tomjaguarpaw> "Unfold is an example of an abstraction that we have created to achieve high performance when mapping streams on streams. Unfold allows stream generation to be optimized well by the compiler through stream fusion."
14:33:17 <tomjaguarpaw> Perhaps that's it
14:33:58 <maerwald> https://hackage.haskell.org/package/streamly-0.8.0/docs/src/Streamly.Internal.Data.Stream.StreamD.Type.html#unfold
14:34:03 × kuribas quits (~user@ptr-25vy0i8gk2vqd1giqyv.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
14:34:11 <maerwald> that's basically what you mean I guess
14:34:57 <tomjaguarpaw> maerwald: Right
14:34:58 <maerwald> tomjaguarpaw: there's StreamD and StreamK btw
14:35:06 <maerwald> maybe Unfold abstracts over that
14:35:46 Guest80 joins (~Guest80@186.122.61.47)
14:35:48 <maerwald> I asked once and harendra says they have different performance properties
14:36:55 <maerwald> "GHC is able to INLINE and fuse direct style better, providing better performance than CPS implementation."
14:37:25 <tomjaguarpaw> Makes sense
14:37:34 <maerwald> so you can defer the decision or so
14:37:44 <tomjaguarpaw> Unfold is likely subject to the same O(n^2) behaviour I have reported on the other libraries though
14:37:57 <tomjaguarpaw> The point of CPS is to right-associate the binds
14:38:04 Lycurgus joins (~juan@98.4.112.204)
14:40:44 × iridium__ quits (~iridium@user/iridium/x-1824934) (Quit: leaving)
14:42:08 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1)
14:43:05 hnOsmium0001 joins (uid453710@id-453710.hampstead.irccloud.com)
14:46:25 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 252 seconds)
14:50:17 acidjnk_new3 joins (~acidjnk@pd9e0b933.dip0.t-ipconnect.de)
14:51:00 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
14:53:40 × acidjnk quits (~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
14:53:50 ubert joins (~Thunderbi@178.115.76.58.wireless.dyn.drei.com)
14:54:55 <hololeap> is there any way to customize `cabal init` to, say, also copy in a .gitignore file?
14:56:17 <maerwald> cabal init && cp gitignore
14:56:19 <maerwald> :p
14:56:45 <hololeap> that's too much typing!
14:56:51 <maerwald> oh dear
14:56:55 <maerwald> but it's unix :)
14:57:01 <hololeap> i'm kidding
14:57:50 <hololeap> however, it seems to be pulling in files from some kind of skel directory, so could this be modified?
15:02:34 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1)
15:05:18 × acidjnk_new quits (~acidjnk@pd9e0b933.dip0.t-ipconnect.de) (Remote host closed the connection)
15:05:18 × acidjnk_new3 quits (~acidjnk@pd9e0b933.dip0.t-ipconnect.de) (Remote host closed the connection)
15:05:57 <fusion86> Hey all, this should be a very simple thing but I can't figure out how to convert a Float -> Word8. Anyone got any tips :)
15:07:02 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 260 seconds)
15:09:39 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
15:09:54 <nitrix> [Word8] or Word8?
15:11:23 <nitrix> A Float wont fit in a Word8 unless it's quite small.
15:12:21 <hpc> there's no single thing that could be "converting" - perhaps you want to round the float?
15:16:20 × mei quits (~mei@user/mei) (Read error: Connection reset by peer)
15:17:10 × alx741 quits (~alx741@181.196.69.214) (Ping timeout: 252 seconds)
15:21:25 × Lycurgus quits (~juan@98.4.112.204) (Quit: Exeunt)
15:21:41 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 252 seconds)
15:22:28 <fusion86> A Word8, I have 4 floats which I need to convert to a `V4 Word8`. This is because I use two libraries which both have their own `Color` data type.
15:23:04 <geekosaur> that's going to be more than just a simple conversion
15:23:28 <geekosaur> the Word8s will be 0-255, the Floats could be 0-1 or some other representation
15:24:55 <fusion86> The floats are 0-1, so I started with doing `r * 255` but at that point it still is a float. I pretty much just want to ignore the decimals (or round, but that doesn't matter in the grand scale of things) and get a Word8.
15:26:30 <geekosaur> :t floor
15:26:31 <lambdabot> (RealFrac a, Integral b) => a -> b
15:26:46 justsomeguy joins (~justsomeg@user/justsomeguy)
15:27:13 <justsomeguy> Is it possible to create a datatype that for only the characters 'a'..'z'?
15:27:28 <geekosaur> not with some evil type level horkery
15:27:37 × Ranhir quits (~Ranhir@157.97.53.139) (Read error: Connection reset by peer)
15:27:39 <geekosaur> haskell doesn't really support subtyping
15:27:41 <hpc> or a newtype wrapper where you control the api
15:28:16 <hpc> or if you like typing, data Letter = A | B | C | ...
15:30:01 alx741 joins (~alx741@186.178.109.221)
15:31:08 <dsal> justsomeguy: you can approximate it with a type that allows for all characters, but doesn't export a constructor and has a smart constructor that only allows a subset. And maybe pattern synonyms or something.
15:32:08 × machinedgod quits (~machinedg@24.105.81.50) (Quit: Lost terminal)
15:32:08 hyiltiz joins (~quassel@31.220.5.250)
15:32:31 <fusion86> Neat, `floor` is the function I was looking for. Thanks :)
15:32:37 × Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 252 seconds)
15:33:20 machinedgod joins (~machinedg@24.105.81.50)
15:34:32 <geekosaur> hm, also I think you want * 256, into a larger type than Word8, then subtract 1 if the result is 256. but then I'd suspect 0-1 actually never returns 1
15:38:07 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1)
15:38:29 × CannabisIndica quits (~herb@user/mesaboogie) (Ping timeout: 264 seconds)
15:38:48 × machinedgod quits (~machinedg@24.105.81.50) (Remote host closed the connection)
15:39:59 <monochrom> > round (0.99 * 255) :: Word8
15:40:00 <lambdabot> 252
15:40:37 <geekosaur> right, I'm thinking you lose a little dynamic range with * 255
15:40:54 <monochrom> > round (0.9999 * 255) :: Word8
15:40:55 <lambdabot> 255
15:41:04 <geekosaur> it's the safer and easier option though
15:41:08 <monochrom> > floor (0.9999 * 256) :: Word8
15:41:09 <lambdabot> 255
15:41:47 machinedgod joins (~machinedg@24.105.81.50)
15:41:50 <monochrom> "0.9999 * 25[5,6]" is already done in a larger type :)
15:42:35 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 265 seconds)
15:46:42 Ranhir joins (~Ranhir@157.97.53.139)
15:47:44 acidjnk joins (~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de)
15:47:46 acidjnk_new joins (~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de)
15:50:17 × raym quits (~raym@user/raym) (Ping timeout: 252 seconds)
15:53:15 <tomsmeding> > 1.0 * 256
15:53:16 <lambdabot> 256.0
15:53:30 <tomsmeding> > floor (1.0 * 256) :: Word8
15:53:31 <lambdabot> 0
15:53:40 × xiongxin quits (~quassel@113.116.33.66) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
15:53:58 <hpc> > floor (1.0 * 255) :: Word8
15:54:00 <lambdabot> 255
15:54:24 <tomsmeding> Yeah probably better to *255
15:54:51 <fusion86> The library from where I am converting the color uses `int / 255` which is why I went with that.
15:55:09 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 265 seconds)
15:55:16 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
15:55:24 <tomsmeding> Sounds good
15:55:51 raym joins (~raym@user/raym)
15:56:20 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
15:57:29 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
15:58:02 <fusion86> I have a function which translates/converts from 1 coordinate system to another, it internally uses `gameWidth / 2` every time the function is called. I assume that this division is calculated every time the function is called. gameWidth is a constant though, so is it possible to also make the result a constant somewhere? Pretty much a `constexpr` from c++, does something like that exist?
15:58:19 <fusion86> A single division wont actually slow my program, but it's the principle
15:59:47 <monochrom> If you have a "foo = gameWidth/2" in a suitable scope, the compiler is forced to reuse it.
16:00:07 <monochrom> If you don't, the optimizer may still do it for you, or maybe not, it depends.
16:00:09 × erinvanderveen[4 quits (~erinvande@2001:470:69fc:105::e8f3) (Quit: You have been kicked for being idle)
16:00:32 × harveypwca quits (~harveypwc@2601:246:c180:a570:2435:ba7:e573:bc26) (Quit: Leaving)
16:00:46 <monochrom> In both cases, don't assume.
16:01:25 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
16:01:49 <monochrom> These days, people don't even have a good idea what C and C++ optimizers do. (They just use Dunning-Kruger to congratulate themselves that they think they do.) So nevermind the even less familiar GHC.
16:03:07 fizzsegfaultbuzz joins (~segfaultf@135-180-0-138.static.sonic.net)
16:03:09 hyiltiz joins (~quassel@31.220.5.250)
16:03:10 <fusion86> Hm, I guess I'll just not worry about that then, because in the end a single division wont actually be noticeable (even if run 10 times a second)
16:03:13 <nitrix> I agree with monochrom, profile if it's important. I will say though, there a big chance it does gets optimized, that's a fairly trivial reduction for SSA (which GHC has).
16:04:10 <monochrom> Even 30 years ago, if you look at a C loop (or Fortran for that matter) like "for (i = 0; i < n; i++) { ... a[i] ... }" and think "a + i*sizeof(whatever)" has an expensive multiplication and you "need" to hand-optimize that to manual pointer games,...
16:04:25 <monochrom> NO, the C optimizer already does that for you.
16:05:04 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 252 seconds)
16:05:20 <monochrom> Even 30 years ago, when people continued to perpetuate the fantasy that recursion always takes up stack space...
16:05:29 <monochrom> NO, gcc already does TCO for you.
16:06:38 <monochrom> If you have neither read compiler-generated asm code or taken a course on code optimization...
16:06:43 <monochrom> Assume that you're wrong.
16:07:09 <hpc> and if you have, you're probably still wrong
16:07:27 <monochrom> And I haven't even touched the toggling story of cache locality.
16:07:30 <hpc> citation: optimization of UB
16:07:51 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Remote host closed the connection)
16:08:33 <monochrom> Yeah, if you think, like I did, that "n = 1; c = 0; while (n != 0) { n *= 2; c++}" helps me count how many bits the machine word has...
16:08:55 × MQ-17J quits (~MQ-17J@8.6.144.233) (Ping timeout: 252 seconds)
16:08:57 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
16:09:01 <monochrom> gcc -O2 optimizes that to "mylabel : jmp mylabel"
16:10:09 <monochrom> What's funny is that -O1 goes only so far as "increment c 32 times" or something.
16:10:23 <int-e> should've used unsigned int
16:10:29 <monochrom> I did.
16:10:30 <nitrix> fusion86, I would be more careful about memory reads or writes. On a cache miss, just one of those can completely outweight one order, sometimes two orders, the amount of multiplications. Skeletal animation for example has a lot of matrix multiplication and it's much faster to just recompute them each frame than fetching from memory the precomputed result (if they change often enough, like every frame, but not often enough to remain in cache).
16:10:52 <nitrix> fusion86, Game development is fun like that. I've never done it in Haskell so I'm sure that'll have its own set of surprises.
16:11:33 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
16:11:33 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
16:11:33 wroathe joins (~wroathe@user/wroathe)
16:11:45 <int-e> monochrom: you didn't
16:12:33 Null_A joins (~null_a@2601:645:8700:2290:e9de:2461:c7b1:d42b)
16:12:41 <geekosaur> isn't this the one you pasted the C source and resulting asm from some years ago?
16:12:48 <monochrom> Yes.
16:12:58 <int-e> monochrom: with `int` it's undefined behavior; `unsigned int` is specified to work modulo 2^w where w is the bit size of the int.
16:13:11 CnnibisIndica joins (~herb@user/mesaboogie)
16:13:55 <int-e> > 2^30 * 2 :: Int
16:13:56 <lambdabot> 2147483648
16:14:02 <int-e> > 2^62 * 2 :: Int
16:14:03 <lambdabot> -9223372036854775808
16:14:29 <monochrom> I mean C.
16:16:01 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
16:16:15 <fusion86> The game framework we need to use is pretty high level (Gloss) so I assume that most performance is lost there. I also hacked sdl2_ttf into the project to render some neat text, so that's probably also a large performance hit (though I didn't test)
16:16:30 <int-e> monochrom: I guess you may have triggered a compiler bug at some point but... I'm not aware of gcc ever getting this particular case wrong.
16:18:20 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1)
16:22:53 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 264 seconds)
16:25:16 × dajoer quits (~david@user/gvx) (Quit: leaving)
16:25:28 q_implies_not_q joins (~p_implies@host-46-33.ilcujsm.champaign.il.us.clients.pavlovmedia.net)
16:26:06 bitmapper joins (uid464869@id-464869.lymington.irccloud.com)
16:30:09 CnnibisIndica is now known as CannabisIndica
16:32:47 Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net)
16:33:11 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
16:37:31 × q_implies_not_q quits (~p_implies@host-46-33.ilcujsm.champaign.il.us.clients.pavlovmedia.net) (Quit: Leaving)
16:38:52 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
16:41:23 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
16:41:59 × cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds)
16:43:05 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
16:43:56 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
16:44:08 × ubert quits (~Thunderbi@178.115.76.58.wireless.dyn.drei.com) (Remote host closed the connection)
16:44:52 ubert joins (~Thunderbi@178.115.76.58.wireless.dyn.drei.com)
16:49:10 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 252 seconds)
16:53:14 hyiltiz joins (~quassel@31.220.5.250)
16:55:54 × snekism quits (~user@88.160.31.174) (Remote host closed the connection)
16:56:23 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
16:56:23 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
16:56:23 wroathe joins (~wroathe@user/wroathe)
16:56:24 × Vajb quits (~Vajb@n8vwdu04eps78g521-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer)
16:57:00 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
16:59:10 TDANG_ joins (~TDANG@216.63.184.7)
16:59:16 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
17:02:20 × TDANG quits (~TDANG@inet-177-7.ets.org) (Ping timeout: 252 seconds)
17:03:23 × fusion86 quits (~fusion@2a02-a44c-e6e5-1-1753-33de-9d65-536a.fixed6.kpn.net) (Remote host closed the connection)
17:03:55 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
17:06:11 econo joins (uid147250@user/econo)
17:06:21 jaitoon joins (~Jaitoon@2a02:c7f:a5f:1d00:3434:15c8:b68c:cba1)
17:09:22 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:11:52 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
17:12:54 cheater joins (~Username@user/cheater)
17:19:11 chisui joins (~chisui@200116b868bc9f00884a12b19ab3b2f3.dip.versatel-1u1.de)
17:19:17 <awpr> a few weeks ago we were looking into a case of a Gloss program being pretty slow, and it turned out it uses the legacy OpenGL API that calls into OpenGL once for every vertex, and pushes/pops the geometry transform matrix stack for every translation. it might just have a performance ceiling when there's a lot of geometry
17:20:51 <Hecate> damn
17:27:47 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
17:28:49 __monty__ joins (~toonn@user/toonn)
17:29:50 × Pacra quits (~Pacra@pool-100-11-34-209.phlapa.fios.verizon.net) (Ping timeout: 252 seconds)
17:32:08 hueso joins (~root@user/hueso)
17:36:19 Zer000 joins (~phil@64.137.132.26)
17:36:37 <maerwald> awpr: ah the thing with a max stack of 30 or so?
17:38:09 <awpr> hmm, I never thought about there being a limit, but I guess that makes sense. in this case the problem was more that it was expensive to do a separate matrix multiply and GL FFI call for basically every polygon
17:44:49 <awpr> oh, fusion86 already left anyway. I'm just responding into the void :/
17:49:11 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:49:22 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds)
17:49:56 wootehfoot joins (~wootehfoo@user/wootehfoot)
17:52:21 × charukiewicz quits (~quassel@108.210.196.136) (Quit: No Ping reply in 180 seconds.)
17:53:22 ss4 joins (~wootehfoo@user/wootehfoot)
17:53:49 charukiewicz joins (~quassel@108.210.196.136)
17:53:50 kayvank joins (~user@52-119-115-185.PUBLIC.monkeybrains.net)
17:54:20 × hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1)
17:54:59 hendursaga joins (~weechat@user/hendursaga)
17:55:53 × kimjetwav quits (~user@2607:fea8:235f:9730:49e1:79a9:994b:782d) (Remote host closed the connection)
17:56:10 kimjetwav joins (~user@2607:fea8:235f:9730:48ad:b7dd:9c1e:6d8d)
17:56:40 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 252 seconds)
17:58:11 mekeor[m] joins (~mekeormat@2001:470:69fc:105::17e4)
17:59:53 <mekeor[m]> is there a package on hackage which provides a function f of type `String -> String` which evaluates arithmetic expressions? e.g. `f "1+2"` would equal `"3"`.
18:00:06 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
18:00:18 <geekosaur> hint? mueval?
18:00:49 <geekosaur> (mueval is based on hint but provides protections, for example it accepts arbitrary Haskell expressions but disallows IO)
18:01:19 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Quit: Leaving)
18:01:22 × kayvank quits (~user@52-119-115-185.PUBLIC.monkeybrains.net) (Remote host closed the connection)
18:02:14 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
18:02:32 <geekosaur> I don't know of one limited to arithmetic evaluations, but those are kinda uninteresting anyway: at minimum you often want simple functions
18:03:11 <geekosaur> and that gets you into how you best structure them for your needs since there's several possible ways to do it, each with its own shortcomings
18:03:13 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:03:27 × max22- quits (~maxime@2a01cb08833598003de9b0144dce98c8.ipv6.abo.wanadoo.fr) (Ping timeout: 240 seconds)
18:06:08 <mekeor[m]> well, i actually really just want an arithmetic calculator. but thanks anyway
18:07:09 kayvank joins (~user@52-119-115-185.public.monkeybrains.net)
18:07:36 × kayvank quits (~user@52-119-115-185.public.monkeybrains.net) (Client Quit)
18:09:00 __monty__ joins (~toonn@user/toonn)
18:10:14 <monochrom> Hutton's Haskell textbook has an arithmetic calculator.
18:10:19 <mekeor[m]> i once wrote such a package myself, but it does not support paranthesis x)
18:10:58 <monochrom> Since it is known upfront that there are only like 5 operations, it can easily be represented as vanilla data.
18:11:43 wroathe joins (~wroathe@50-205-197-50-static.hfc.comcastbusiness.net)
18:11:43 × wroathe quits (~wroathe@50-205-197-50-static.hfc.comcastbusiness.net) (Changing host)
18:11:43 wroathe joins (~wroathe@user/wroathe)
18:17:26 <mekeor[m]> monochrom: you mean, i could check if the input-string matches the regex [0-9\.+-*/^] before i pass it to "hint"?
18:18:17 <monochrom> No, Hutton's book doesn't use hint.
18:18:18 <geekosaur> no, I think he's saying you avoid the problems I mentioned with writing your own if you're not supporting bindings, functions, etc.
18:18:41 <monochrom> It doesn't use regexes either.
18:23:15 Lycurgus joins (~juan@98.4.112.204)
18:24:40 <[exa]> mekeor[m]: calculators are kinda 5-line exercise in megaparsec, I guess if you google megaparsec tutorials you'll find one
18:27:20 snekism joins (~user@88.160.31.174)
18:32:00 aegon joins (~mike@174.127.249.180)
18:34:37 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 252 seconds)
18:38:38 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
18:39:02 max22- joins (~maxime@2a01cb0883359800842b86a07baa5676.ipv6.abo.wanadoo.fr)
18:46:52 Sgeo joins (~Sgeo@user/sgeo)
18:50:41 × nfd quits (~nfd@user/nfd) (Ping timeout: 252 seconds)
18:53:47 × max22- quits (~maxime@2a01cb0883359800842b86a07baa5676.ipv6.abo.wanadoo.fr) (Ping timeout: 240 seconds)
18:58:22 <aegon> i'm looking for a good matrix library in haskell for standard glm type functionality, I found hmatrix but it doesn't have a notion of quaternions which I have to interact with quite a lot and writing a quaternion to matrix function is not trivial. is there a composable library with this that provides those things or does anyone know of a different matrix lib in haskell that fits the bill better for
18:58:28 <aegon> geometric operations
18:59:51 <aegon> oh linear might be better
19:00:27 justsomeguy joins (~justsomeg@user/justsomeguy)
19:00:30 <Lycurgus> quaternions are their own thing, there's several hs pkgs iirc
19:01:05 <aegon> well, they are hteir own things but going from linear to rotation matrix is a normal operation in my domain
19:01:08 <aegon> and vice versa
19:01:08 <Lycurgus> usually filed under classical nick nacks
19:01:28 <aegon> s/linear/quaternion/g
19:02:10 <Lycurgus> math bric a brac
19:02:13 terrorjack joins (~terrorjac@static.3.200.12.49.clients.your-server.de)
19:02:27 machinedgod joins (~machinedg@24.105.81.50)
19:02:57 <aegon> maybe theres a quaternion library that gives me a list of lists that is the rotation matrix equivalent
19:04:13 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
19:04:31 geekosaur joins (~geekosaur@xmonad/geekosaur)
19:04:48 × Null_A quits (~null_a@2601:645:8700:2290:e9de:2461:c7b1:d42b) (Remote host closed the connection)
19:05:10 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
19:07:09 <aegon> linear / linear-accelerate seem to have all the bells and whistles needed
19:10:09 × ss4 quits (~wootehfoo@user/wootehfoot) (Quit: Leaving)
19:10:26 wootehfoot joins (~wootehfoo@user/wootehfoot)
19:21:00 × Lycurgus quits (~juan@98.4.112.204) (Quit: Exeunt)
19:22:42 Lorra joins (~lorenzo@2001:a61:be4:201:2c70:ff42:b0f:e800)
19:28:53 × shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit)
19:30:58 shriekingnoise joins (~shrieking@186.137.144.80)
19:32:32 × Lorra quits (~lorenzo@2001:a61:be4:201:2c70:ff42:b0f:e800) (Quit: Konversation terminated!)
19:37:25 yinghua joins (~yinghua@181.228.40.183)
19:38:27 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:39:42 × gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection)
19:39:57 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
19:40:31 gehmehgeh joins (~user@user/gehmehgeh)
19:45:36 × fendor quits (~fendor@91.141.55.34.wireless.dyn.drei.com) (Remote host closed the connection)
19:48:29 fendor joins (~fendor@91.141.55.34.wireless.dyn.drei.com)
19:48:30 fendor_ joins (~fendor@91.141.55.34.wireless.dyn.drei.com)
19:48:31 fendor__ joins (~fendor@91.141.55.34.wireless.dyn.drei.com)
19:57:03 × fendor__ quits (~fendor@91.141.55.34.wireless.dyn.drei.com) (Quit: Leaving)
19:57:06 × fendor_ quits (~fendor@91.141.55.34.wireless.dyn.drei.com) (Quit: Leaving)
19:57:13 × fendor quits (~fendor@91.141.55.34.wireless.dyn.drei.com) (Quit: Leaving)
19:58:01 snekism` joins (~user@88.160.31.174)
19:59:55 × snekism quits (~user@88.160.31.174) (Ping timeout: 252 seconds)
20:04:52 × azeem quits (~azeem@2a00:801:428:f4e3:face:8eed:b26f:ce9c) (Ping timeout: 252 seconds)
20:04:56 × juhp quits (~juhp@128.106.188.220) (Ping timeout: 252 seconds)
20:05:49 <hololeap> what ever happened to ski?
20:08:31 juhp joins (~juhp@128.106.188.220)
20:08:40 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
20:12:33 × norskal quits (~norskal@101.175.64.73) (Quit: Ping timeout (120 seconds))
20:13:00 <hpc> he got simplified to sk
20:15:42 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
20:18:01 × mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 252 seconds)
20:19:51 fr33domlover1 is now known as fr33domlover
20:20:21 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
20:29:32 wroathe joins (~wroathe@user/wroathe)
20:34:59 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
20:35:26 rond_ joins (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438)
20:45:11 × rond_ quits (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Quit: Client closed)
20:54:26 × Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 246 seconds)
20:55:01 <zwro[m]> what do we call it when we do `a <- someMonad`?
20:55:07 <zwro[m]> "unbinding"?
20:55:57 <[exa]> "binding" actually
20:56:13 <Hecate> zwro[m]: nothing more than binding :)
20:56:21 <Hecate> https://en.wikibooks.org/wiki/Haskell/do_notation
20:57:16 <zwro[m]> ok makes sense
20:58:01 <zwro[m]> my intuition was that the real binding happens in the next line
20:58:11 <[exa]> in certain cases you might say it's a bit like "unwrapping", but with many monads that's misleading
20:58:37 × ByronJohnson quits (~bairyn@mail.digitalkingdom.org) (Remote host closed the connection)
20:59:11 <zwro[m]> yeah. i was considering "lifting" and gave up on it for the same reason
20:59:12 <[exa]> it gets rewritten to something like `... someMonad >>= \a -> ...nextline...`, so yeah, technically `a` is bound for the next line
21:00:12 <[exa]> (name "lifting" is usually reserved for the other direction, making a function work through some extra semantics)
21:01:13 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
21:01:53 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
21:02:03 <zwro[m]> yeah... words are confusing
21:02:13 <[exa]> (like, `map f` is the function `f` lifted to work on lists, and the actual name can be seen e.g. in `liftA2`)
21:03:24 × ubert quits (~Thunderbi@178.115.76.58.wireless.dyn.drei.com) (Remote host closed the connection)
21:03:49 <zwro[m]> liftA2 f a b = f <$> a <*> , right?
21:04:03 <zwro[m]> ^ missed the b at the end
21:04:04 <[exa]> yes that should work
21:04:21 <awpr> the funnest part of all this is that "map" seems to have come from the definition of a functor "... along with a map of morphisms in C to morphisms in D", in which context it just means "a function"
21:04:56 <zwro[m]> well, functions are maps
21:05:37 <awpr> right, it was used as a totally generic term and then accidentally acquired a very specific meaning by being used as the name of a class method
21:05:54 <awpr> if that's actually how the etymology happened, anyway
21:06:11 <zwro[m]> and now we even have fmap
21:06:35 <zwro[m]> words...
21:06:43 <[exa]> mapmap from now on
21:07:05 <zwro[m]> aha fair. that's why i like lambda calculos. names are irrelevant
21:07:24 <zwro[m]> what's in a name? said the bard
21:07:33 <awpr> if we started using lambda calculus for large scale software development, names would instantly become relevant
21:07:36 Lycurgus joins (~juan@98.4.112.204)
21:08:21 <awpr> `Endo`, `Endo`, wherefore art thou `Endo`?
21:08:55 <[exa]> needs starwars memes with endor
21:09:19 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
21:11:34 ByronJohnson joins (~bairyn@mail.digitalkingdom.org)
21:12:05 <zwro[m]> let a = Nothing:a in a
21:12:57 <zwro[m]> ^ in the Merchant of Venice, this is an insult
21:13:39 zebrag joins (~chris@user/zebrag)
21:13:45 × kimjetwav quits (~user@2607:fea8:235f:9730:48ad:b7dd:9c1e:6d8d) (Remote host closed the connection)
21:14:46 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 250 seconds)
21:15:55 × unmanbearpig quits (~unmanbear@user/unmanbearpig) (Ping timeout: 252 seconds)
21:16:26 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
21:16:52 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
21:17:21 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
21:17:37 zero parts (~yin@user/zero) ()
21:17:46 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:18:18 zzz joins (~yin@user/zero)
21:18:23 × Lycurgus quits (~juan@98.4.112.204) (Quit: Exeunt)
21:20:23 × jtomas quits (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Remote host closed the connection)
21:21:45 hyiltiz joins (~quassel@31.220.5.250)
21:27:44 × ByronJohnson quits (~bairyn@mail.digitalkingdom.org) (Remote host closed the connection)
21:31:32 Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net)
21:35:46 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Read error: Connection reset by peer)
21:35:50 × Guest80 quits (~Guest80@186.122.61.47) (Quit: Connection closed)
21:36:03 geekosaur joins (~geekosaur@xmonad/geekosaur)
21:39:07 unmanbearpig joins (~unmanbear@user/unmanbearpig)
21:43:49 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 252 seconds)
21:44:06 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1)
21:44:21 acidjnk_new3 joins (~acidjnk@p200300d0c703cb484c7d47010f4c2dbe.dip0.t-ipconnect.de)
21:47:28 <zzz> "You speak an infinite deal of nothing!"
21:48:05 × acidjnk_new quits (~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
21:48:05 × acidjnk quits (~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
21:48:23 acidjnk joins (~acidjnk@p200300d0c703cb484c7d47010f4c2dbe.dip0.t-ipconnect.de)
21:51:40 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 252 seconds)
21:55:40 hyiltiz joins (~quassel@31.220.5.250)
21:58:46 machinedgod joins (~machinedg@24.105.81.50)
22:00:08 ByronJohnson joins (~bairyn@mail.digitalkingdom.org)
22:00:10 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
22:03:51 jinsun joins (~quassel@user/jinsun)
22:14:52 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
22:15:03 chexum joins (~quassel@gateway/tor-sasl/chexum)
22:15:13 × vysn quits (~vysn@user/vysn) (Ping timeout: 252 seconds)
22:28:47 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
22:28:47 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
22:28:47 wroathe joins (~wroathe@user/wroathe)
22:29:08 max22- joins (~maxime@2a01cb0883359800513140971d4ae4c5.ipv6.abo.wanadoo.fr)
22:37:49 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
22:39:14 <awpr> `lens` speaks poniards, and every term `s t a b`s
22:58:35 × Techcable quits (~Techcable@168.235.93.147) (Quit: ZNC - https://znc.in)
22:59:09 Techcable joins (~Techcable@168.235.93.147)
23:00:38 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3)
23:01:48 norskal joins (~norskal@101.175.64.73)
23:04:00 <aegon> [exa]: that description of lifting is great
23:05:37 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
23:06:29 geranim0 joins (~geranim0@modemcable242.171-178-173.mc.videotron.ca)
23:09:20 slowButPresent joins (~slowButPr@user/slowbutpresent)
23:10:13 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Ping timeout: 252 seconds)
23:10:50 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 252 seconds)
23:14:25 harveypwca joins (~harveypwc@2601:246:c180:a570:2435:ba7:e573:bc26)
23:15:40 × acidjnk_new3 quits (~acidjnk@p200300d0c703cb484c7d47010f4c2dbe.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
23:15:46 × acidjnk quits (~acidjnk@p200300d0c703cb484c7d47010f4c2dbe.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
23:17:34 hyiltiz joins (~quassel@31.220.5.250)
23:17:39 Vajb joins (~Vajb@n8vwdu04eps78g521-2.v6.elisa-mobile.fi)
23:18:19 × harveypwca quits (~harveypwc@2601:246:c180:a570:2435:ba7:e573:bc26) (Remote host closed the connection)
23:20:37 jokleinn joins (~jokleinn@user/jokleinn)
23:22:23 TranquilEcho joins (~grom@user/tranquilecho)
23:22:24 × max22- quits (~maxime@2a01cb0883359800513140971d4ae4c5.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
23:28:14 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
23:34:25 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 252 seconds)
23:40:01 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
23:50:23 × Vajb quits (~Vajb@n8vwdu04eps78g521-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer)
23:51:37 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Remote host closed the connection)
23:52:09 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
23:54:34 thyriaen joins (~thyriaen@x4db7dca5.dyn.telefonica.de)

All times are in UTC on 2021-10-02.