Home liberachat/#haskell: Logs Calendar

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

00:00:12 d34df00d joins (~d34df00d@2600:1700:8c60:3a10::48)
00:00:14 × nfd quits (~nfd@user/nfd) (Ping timeout: 250 seconds)
00:00:39 <d34df00d> Hi!
00:01:31 <hpc> it's a nice preparation for the hopelessness of actual computing :D
00:02:00 <monochrom> heh
00:02:06 <d34df00d> I'm trying to forbid the optimizer from inlining some `foreign import`ed effectful code. I'm trying to do that by wrapping that code into Control.Monad.Primitive.primitive with some explicit token passing, but it doesn't really work.
00:03:11 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Remote host closed the connection)
00:03:57 <monochrom> I would want to suggest NOINLINE, but I haven't tried that, and you probably have done and found ineffectiveness.
00:04:16 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
00:04:22 <d34df00d> So, I'm trying to define a function, say, `rdtsc :: PrimMonad m => Unit -> m Word64` where `data Unit = Unit`, so that I'll get two distinct readings of rdtsc when doing `foo = r1 <- rdtsc; r2 <- rdtsc :: IO ()`
00:04:47 <d34df00d> Dang, apparently my last message didn't come through.
00:04:51 <d34df00d> So, I'm trying to define a function, say, `rdtsc :: PrimMonad m => Unit -> m Word64` where `data Unit = Unit`, so that I'll get two distinct readings of rdtsc when doing `foo = r1 <- rdtsc; r2 <- rdtsc :: IO ()`
00:05:51 gay joins (~quassel@77-120-141-90.kha.volia.net)
00:05:59 <monochrom> Wait, "r1 <- rdtsc"? "r1 <- rdtsc Unit"?
00:06:22 <d34df00d> monochrom: yep!
00:06:29 <d34df00d> Sorry about that, that part was off the top of my head.
00:06:41 abrantesasf joins (~abrantesa@187.36.170.211)
00:07:23 × sagax quits (~sagax_nb@user/sagax) (Remote host closed the connection)
00:07:53 <d34df00d> Right now the code for rdtsc is as follows: https://paste.tomsmeding.com/zbwVV2kc
00:08:23 <d34df00d> unbox and rebox just peel of and add the corresponding constructor respectively (and for Unit it's defined as mapping to 0#)
00:08:50 <d34df00d> Sorry abou the names, that comes from TH and is actually a result of -ddump-splices
00:09:28 <d34df00d> And, well, I get same readings of rdtsc like this, even though -ddump-simpl shows that there are two calls to rdtsc.
00:10:30 <d34df00d> Curiously, if I change Unit to Int (and even if I call rdtsc as rdtsc 0, which is operationally the same), the readings actually become different.
00:10:31 <dolio> It sounds like `Int# -> Word#` is the wrong type for the foreign import.
00:10:33 <d34df00d> So dunno what's going on.
00:11:17 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 246 seconds)
00:11:18 <gay> I can't implement arithmetic parser by using parsec, on input "123" it says "unexpected eof", "1+1" -> "unexpected "+"", "1 - 1" -> "unexpected " "": https://paste.tomsmeding.com/TxKF9aVQ
00:11:18 × gay quits (~quassel@77-120-141-90.kha.volia.net) (Quit: No Ping reply in 180 seconds.)
00:11:36 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
00:12:54 gay joins (~quassel@77-120-141-90.kha.volia.net)
00:13:03 <gay> I tried inserting whiteSpace and eof in code, but that didn't change the result
00:13:16 <monochrom> I would double-check with the GHC devs whether "foreign import prim" is suitable for talking to I/O devices.
00:13:22 <d34df00d> dolio: why?
00:13:51 <dolio> Because it's not a pure function.
00:14:09 ec joins (~ec@gateway/tor-sasl/ec)
00:14:28 <d34df00d> monochrom: it says it's internal and designed for primops, but it seems to be doing arbitrary assembly just fine, as long as it follows the calling convention.
00:14:41 <d34df00d> Maybe it's not designed for that really, but these symptoms would be funny.
00:14:54 <d34df00d> dolio: yep, but it's foreign import prim
00:17:11 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3)
00:17:12 <monochrom> I would also trust more the output of -ddump-opt-cmm than -ddump-simpl. -ddump-simpl is at the wrong level of assurance.
00:17:32 <monochrom> In fact -ddump-asm would have the final say on the matter.
00:18:08 <nshepperd> i doubt the optimiser cares whether it's prim or not
00:18:17 <monochrom> Just that I am not very good at reading asm unless I have the help of opt-cmm.
00:18:59 <d34df00d> Yep, -ddump-simpl shows the function is called twice even in the case where it's being optimized away to a single call.
00:19:04 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 245 seconds)
00:19:07 <d34df00d> So that definitely looks wrong.
00:20:08 <d34df00d> Aha, interesting.
00:20:40 <d34df00d> So if I'm wrapping this prim stuff into a function that takes Int, the optimizer leaves my rdtsc as Int -> m Word64 (for the PrimMonad m and all that).
00:20:47 hyiltiz joins (~quassel@31.220.5.250)
00:21:09 <d34df00d> But if I'm passing a singleton type, like this Unit thing, then the optimizer turns my rdtsc into just m Word64
00:21:32 <nshepperd> shouldn't you declare the type as State# s -> (# Word#, State# s #) or something
00:21:34 <monochrom> gay: Does "float lexer" expect "123.0"?
00:21:47 <d34df00d> nshepperd: that's what's being passed to `primitive`
00:21:50 <nshepperd> or even just IO Word
00:22:03 <nshepperd> i mean declare the foreign import as that
00:22:06 <d34df00d> Note primitive (\token -> (# token, ... #))
00:23:05 <d34df00d> I think it'll mess up calling convention.
00:23:20 <d34df00d> import prim is not as smart as importing C functions, where it does the right thing when seeing IO
00:23:27 <d34df00d> (at least that's my understanding)
00:23:56 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
00:24:32 <monochrom> "has_side_effects" "default = False"
00:24:39 mestre joins (~mestre@191.177.175.57)
00:24:55 <monochrom> Does your rdtsc_unlifted use the default? Have you overridden it?
00:25:25 <nshepperd> i see
00:26:09 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 245 seconds)
00:26:40 <monochrom> (What's that? Answer: I started from the GHC user's guide's section on foreign import prim, which has a link to the GHC developers wiki page, which has that.)
00:28:16 <d34df00d> monochrom: it looks like that's an option for a primops definition.
00:28:34 <d34df00d> I even tried to stick it somehow into the foreign import declaration, but to no avail.
00:28:52 <monochrom> The benefit of talking to the GHC people is that, once you have explained your use case, they can quickly resolve "can it work?" and "what to watch out for".
00:29:15 <monochrom> So I see no reason why one would repel that idea.
00:34:08 <d34df00d> Oh! That's a good idea.
00:34:15 <d34df00d> I'm forgetting there's a separate channel for ghc stuff.
00:39:26 emf joins (~emf@2620:10d:c090:400::5:addd)
00:41:50 <dolio> That code is essentially just wrapping your declared-pure function in `pure`.
00:45:03 <dolio> Actual IO operations with effects don't just take the token and pass the same one back, the primop they wrap receives the token and gives one back. Otherwise GHC can see through it and know that the primop doesn't appear to depend on the token, and could be reordered or deduplicated or what have you.
00:47:20 <geekosaur> see also accursedUnutterablePerformIO
00:48:30 <clever> geekosaur: you dare utter its name! :O
00:49:31 <monochrom> voldemortPerformsIO
00:49:42 <clever> :D
00:50:10 × emf quits (~emf@2620:10d:c090:400::5:addd) (Ping timeout: 260 seconds)
00:50:21 <gay> monochrom: yeah https://www.stackage.org/haddock/lts-18.12/parsec-3.1.14.0/src/Text-Parsec-Token.html#makeTokenParser :(
00:51:34 × ksqsf quits (~user@222.195.85.112) (Ping timeout: 245 seconds)
00:51:53 × abrantesasf quits (~abrantesa@187.36.170.211) (Remote host closed the connection)
00:52:41 <d34df00d> dolio: do you by any chance know if there's a way to replicate this behaviour?
00:52:53 abrantesasf joins (~abrantesa@187.36.170.211)
00:53:26 × Psybur quits (~Psybur@mobile-166-170-32-197.mycingular.net) (Remote host closed the connection)
00:54:01 <gay> great, this one works: term = parens lexer expr <|> try (float lexer) <|> fromIntegral <$> integer lexer
00:54:10 <gay> thanks monochrom :)
00:55:48 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
00:57:25 <monochrom> :)
00:58:06 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 260 seconds)
00:58:16 × mestre quits (~mestre@191.177.175.57) (Quit: leaving)
00:59:05 <dolio> It seems like the obvious thing to try is to add the token arguments to the prim op.
00:59:19 ec joins (~ec@gateway/tor-sasl/ec)
01:02:03 <monochrom> gay: Actually I wonder if you like naturalOrFloat. It looks like you have already handled unary minus separately, you probably don't mind naturalOrFloat doing just the non-negative part.
01:02:38 ksqsf joins (~user@2001:da8:d800:611:48f7:6c8c:3aee:c81a)
01:07:48 × ksqsf quits (~user@2001:da8:d800:611:48f7:6c8c:3aee:c81a) (Ping timeout: 268 seconds)
01:08:49 <gay> monochrom: sure, thanks: term = parens lexer expr <|> either fromIntegral id <$> naturalOrFloat lexer
01:08:52 × abrantesasf quits (~abrantesa@187.36.170.211) (Remote host closed the connection)
01:09:34 abrantesasf joins (~abrantesa@187.36.170.211)
01:09:43 <gay> still the parser is not correct, on "12*-1" it returns 12.0
01:11:08 × Guest372 quits (~xxx@47.245.54.240) (Remote host closed the connection)
01:11:29 × abrantesasf quits (~abrantesa@187.36.170.211) (Remote host closed the connection)
01:12:14 Guest372 joins (~xxx@47.245.54.240)
01:12:24 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:12:27 <monochrom> Oh, that one you need "12* -1"
01:12:37 abrantesasf joins (~abrantesa@187.36.170.211)
01:13:15 <monochrom> If you have *- it is first tokenized as one single operator called *-, and then "eh, my table of operators doesn't have that one"
01:13:31 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:13:58 × xff0x quits (~xff0x@2001:1a81:52ac:b800:6148:6b8d:b98a:69f7) (Ping timeout: 260 seconds)
01:15:33 xff0x joins (~xff0x@2001:1a81:52e7:9700:e420:3d19:92c1:3ab6)
01:19:30 ksqsf joins (~user@222.195.85.112)
01:20:55 × gentauro quits (~gentauro@user/gentauro) (Ping timeout: 252 seconds)
01:22:16 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
01:24:24 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
01:27:29 × doyougnu quits (~user@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection)
01:27:54 gentauro joins (~gentauro@user/gentauro)
01:28:34 ec joins (~ec@gateway/tor-sasl/ec)
01:30:48 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
01:40:24 × abrantesasf quits (~abrantesa@187.36.170.211) (Remote host closed the connection)
01:44:07 xiongxin joins (~quassel@113.116.33.66)
01:52:21 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
01:53:45 × alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection)
01:54:35 × infinity0 quits (~infinity0@occupy.ecodis.net) (Ping timeout: 260 seconds)
01:54:39 <gay> monochrom: with random tests on codewars it's impossible to come to correct answer when surrounding operators by whitespace (like " - - - " is gonna tell unexpected "-")
01:55:46 ec joins (~ec@gateway/tor-sasl/ec)
01:56:19 infinity0 joins (~infinity0@occupy.ecodis.net)
02:00:04 × geranim0 quits (~geranim0@modemcable242.171-178-173.mc.videotron.ca) (Ping timeout: 252 seconds)
02:01:49 × vicfred quits (~vicfred@user/vicfred) (Quit: Leaving)
02:02:41 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds)
02:03:38 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
02:03:38 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
02:03:38 wroathe joins (~wroathe@user/wroathe)
02:05:23 gay_ joins (~quassel@77-120-141-90.kha.volia.net)
02:05:44 × gay quits (~quassel@77-120-141-90.kha.volia.net) (Ping timeout: 245 seconds)
02:05:52 gay_ is now known as gay
02:06:08 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
02:07:30 ec joins (~ec@gateway/tor-sasl/ec)
02:08:53 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
02:10:01 × yielduck quits (~yielduck@176.120.238.10) (Ping timeout: 256 seconds)
02:22:15 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
02:26:04 ec joins (~ec@gateway/tor-sasl/ec)
02:29:10 justsomeguy joins (~justsomeg@user/justsomeguy)
02:30:12 × gay quits (~quassel@77-120-141-90.kha.volia.net) (Remote host closed the connection)
02:32:24 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 245 seconds)
02:33:32 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
02:33:32 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
02:33:32 wroathe joins (~wroathe@user/wroathe)
02:38:30 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
02:44:28 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 250 seconds)
02:46:57 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
02:48:22 × ksqsf quits (~user@222.195.85.112) (Ping timeout: 252 seconds)
02:51:14 × alx741 quits (~alx741@186.178.109.65) (Quit: alx741)
02:51:22 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
02:55:43 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds)
02:57:40 × td_ quits (~td@94.134.91.189) (Ping timeout: 252 seconds)
02:57:53 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 246 seconds)
02:59:28 td_ joins (~td@muedsl-82-207-238-165.citykom.de)
02:59:52 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
03:02:07 ksqsf joins (~user@2001:da8:d800:611:dc1c:d1e3:58d8:b859)
03:06:19 ksqsf` joins (~user@2001:da8:d800:611:5ca9:3d11:a6cc:5e0c)
03:08:36 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
03:08:43 × ksqsf quits (~user@2001:da8:d800:611:dc1c:d1e3:58d8:b859) (Ping timeout: 252 seconds)
03:11:16 ksqsf`` joins (~user@2001:da8:d800:611:f834:f441:3a32:fbaf)
03:11:45 × ksqsf` quits (~user@2001:da8:d800:611:5ca9:3d11:a6cc:5e0c) (Ping timeout: 268 seconds)
03:11:58 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
03:11:58 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
03:11:58 wroathe joins (~wroathe@user/wroathe)
03:12:56 <juhp> Is there any tool to get haskell projects git easily? eg via hackage/.cabal
03:13:44 <juhp> well I am guess the .cabal data is exposed via Cabal... but hoping someone has already done this...
03:14:05 <juhp> guessing *
03:14:45 <juhp> something like `cabal clone <package>`
03:15:30 <int-e> this? cabal get --help
03:15:45 <int-e> (there's -s)
03:16:25 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
03:16:48 ksqsf``` joins (~user@2001:da8:d800:611:f11f:c17c:9d0c:758e)
03:17:18 × ksqsf`` quits (~user@2001:da8:d800:611:f834:f441:3a32:fbaf) (Ping timeout: 268 seconds)
03:17:38 <juhp> ah yes indeed thanks! actually found it too, grepping the cabal-install source
03:18:42 <monochrom> Yikes haha. I would "cabal --help".
03:19:20 <monochrom> OK I guess maybe "cabal --help" doesn't make it obvious.
03:19:25 <juhp> nod
03:19:56 <juhp> Sadly the package I wanted doesn't define it's repo in .cabal, but this is good, thanks int-e :)
03:20:55 <juhp> I had actually already tried cabal unpack/get --help, but was only looking for "git"... 8-)
03:21:29 ksqsf```` joins (~user@2001:da8:d800:611:748e:8e1c:f663:766e)
03:21:59 × hendursaga quits (~weechat@user/hendursaga) (Remote host closed the connection)
03:22:35 hendursaga joins (~weechat@user/hendursaga)
03:23:17 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
03:23:28 × ksqsf``` quits (~user@2001:da8:d800:611:f11f:c17c:9d0c:758e) (Ping timeout: 268 seconds)
03:24:37 <int-e> monochrom: cabal --help mentions repositories at least... but it's a bit overwhelmning
03:24:58 <int-e> (I did actually start there)
03:27:10 × ksqsf```` quits (~user@2001:da8:d800:611:748e:8e1c:f663:766e) (Ping timeout: 268 seconds)
03:27:10 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 268 seconds)
03:28:01 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:28:18 ksqsf```` joins (~user@222.195.85.112)
03:29:32 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 250 seconds)
03:39:15 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
03:39:59 <juhp> So it does
03:42:05 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
03:46:59 × ksqsf```` quits (~user@222.195.85.112) (Ping timeout: 245 seconds)
03:47:04 vysn joins (~vysn@user/vysn)
03:48:02 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
03:50:27 ec joins (~ec@gateway/tor-sasl/ec)
03:55:17 rekahsoft joins (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com)
03:55:43 ksqsf```` joins (~user@2001:da8:d800:611:5169:401b:afaa:2ee7)
03:55:45 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
03:55:45 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
03:55:45 wroathe joins (~wroathe@user/wroathe)
03:55:54 × lbseale_ quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
03:57:40 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
04:00:25 × ksqsf```` quits (~user@2001:da8:d800:611:5169:401b:afaa:2ee7) (Ping timeout: 252 seconds)
04:02:19 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
04:04:17 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
04:05:22 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
04:07:03 × cigsender quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Quit: Lost terminal)
04:10:12 bitmapper joins (~bitmapper@142.134.87.154)
04:12:05 × bitmapper quits (~bitmapper@142.134.87.154) (Remote host closed the connection)
04:12:33 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
04:13:40 bitmapper joins (~bitmapper@142.134.87.154)
04:16:55 × infinity0 quits (~infinity0@occupy.ecodis.net) (Ping timeout: 252 seconds)
04:17:07 infinity0 joins (~infinity0@occupy.ecodis.net)
04:17:49 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 245 seconds)
04:19:35 × rekahsoft quits (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 268 seconds)
04:21:56 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
04:21:56 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
04:21:56 wroathe joins (~wroathe@user/wroathe)
04:26:05 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 246 seconds)
04:27:59 mbuf joins (~Shakthi@122.162.133.48)
04:29:47 × sm2n_ quits (~sm2n@user/sm2n) (Read error: Connection reset by peer)
04:30:12 ksqsf```` joins (~user@2001:da8:d800:611:f96c:dc2a:6bc6:fe1d)
04:30:38 sm2n_ joins (~sm2n@user/sm2n)
04:34:50 × Athas quits (athas@2a01:7c8:aaac:1cf:e73c:6e45:62dc:617a) (Quit: ZNC 1.8.2 - https://znc.in)
04:35:00 Athas joins (athas@sigkill.dk)
04:36:43 × ksqsf```` quits (~user@2001:da8:d800:611:f96c:dc2a:6bc6:fe1d) (Ping timeout: 252 seconds)
04:39:57 sleblanc joins (~sleblanc@user/sleblanc)
04:45:30 cjb54763 joins (~cjb@user/cjb)
04:45:30 × cjb54763 quits (~cjb@user/cjb) (Client Quit)
04:45:34 × phma quits (~phma@host-67-44-208-140.hnremote.net) (Read error: Connection reset by peer)
04:46:29 phma joins (~phma@host-67-44-208-158.hnremote.net)
04:47:52 × cjb quits (~cjb@user/cjb) (Ping timeout: 260 seconds)
04:50:02 × xiongxin quits (~quassel@113.116.33.66) (Quit: No Ping reply in 180 seconds.)
04:51:18 xiongxin joins (~quassel@113.116.33.66)
04:57:37 × bitmapper quits (~bitmapper@142.134.87.154) (Ping timeout: 252 seconds)
04:57:49 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 245 seconds)
04:59:27 endless joins (~endlessed@51.81.211.147)
05:00:59 <endless> is there any reason to go with the '13 CIS194 over the 'slightly' newer '16 CIS164 for a Haskell beginner? I assume they're pretty much the same coursework but I always see the '13 one cited more
05:02:24 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 245 seconds)
05:04:46 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 252 seconds)
05:09:23 hyiltiz joins (~quassel@31.220.5.250)
05:12:43 chomwitt joins (~chomwitt@2a02:587:dc04:fc00:12c3:7bff:fe6d:d374)
05:14:18 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:20:30 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
05:24:11 Elissa21F joins (~KELEBEK@95.70.207.107)
05:24:15 × Elissa21F quits (~KELEBEK@95.70.207.107) (K-Lined)
05:28:18 <c_wraith> endless: I haven't looked at them both, but I've heard that people who have thinkg '13 was presented a bit better.
05:32:11 × quasisyntaxed quits (~user@2804:1b2:83:4cd5:4823:3e85:f547:9207) (Remote host closed the connection)
05:37:23 × raym quits (~raym@user/raym) (Quit: kernel update, rebooting...)
05:40:30 michalz joins (~michalz@185.246.204.93)
05:46:15 pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net)
05:49:53 × pfurla_ quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 264 seconds)
05:53:10 × xiongxin quits (~quassel@113.116.33.66) (Ping timeout: 252 seconds)
05:53:19 × chomwitt quits (~chomwitt@2a02:587:dc04:fc00:12c3:7bff:fe6d:d374) (Ping timeout: 268 seconds)
05:54:28 × rembo10 quits (~rembo10@65.108.80.86) (Quit: ZNC 1.8.2 - https://znc.in)
05:56:21 rembo10 joins (~rembo10@remulis.com)
05:58:27 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 240 seconds)
05:58:37 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:59:10 × _xor quits (~xor@74.215.232.67) (Ping timeout: 252 seconds)
06:00:40 ubert joins (~Thunderbi@178.115.39.222.wireless.dyn.drei.com)
06:03:24 Times_ joins (~Times@180.248.30.254)
06:03:52 <Times_> https://www.bitchute.com/video/rUr0pnlyWRpD/
06:09:25 ubert1 joins (~Thunderbi@178.115.39.222.wireless.dyn.drei.com)
06:11:07 jakalx parts (~jakalx@base.jakalx.net) ()
06:12:36 <dminuoso> endless: I find the differences are miniscule in terms of quality.
06:12:58 × zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 252 seconds)
06:13:06 <dminuoso> I personally preferred the newer version by Joachim Breitner, but Brent Yorgeys course is great too.
06:13:24 <dminuoso> I think this one is highly subjective
06:13:44 jakalx joins (~jakalx@base.jakalx.net)
06:14:24 × Times_ quits (~Times@180.248.30.254) (Remote host closed the connection)
06:15:44 × timCF quits (~timCF@m91-129-108-244.cust.tele2.ee) (Ping timeout: 245 seconds)
06:20:04 × pippijn quits (~pippijn@ra.xinutec.org) (Ping timeout: 252 seconds)
06:22:47 lortabac joins (~lortabac@2a01:e0a:541:b8f0:3ebf:673e:c737:b48)
06:26:50 pippijn joins (~pippijn@ra.xinutec.org)
06:30:59 neurocyte013288 joins (~neurocyte@45.10.63.237)
06:30:59 × neurocyte013288 quits (~neurocyte@45.10.63.237) (Changing host)
06:30:59 neurocyte013288 joins (~neurocyte@user/neurocyte)
06:31:17 xiongxin joins (~quassel@113.116.35.70)
06:32:46 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
06:44:11 chomwitt joins (~chomwitt@ppp-2-85-111-14.home.otenet.gr)
06:47:20 <Franciman> awpr: a simpler line of division between compiler and interpreter could be: a compiler won't execute IO actions of your program
06:49:00 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
06:49:19 gehmehgeh joins (~user@user/gehmehgeh)
07:00:02 Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
07:00:37 cfricke joins (~cfricke@user/cfricke)
07:04:38 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 246 seconds)
07:06:22 cfricke joins (~cfricke@user/cfricke)
07:11:49 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 252 seconds)
07:13:12 hyiltiz joins (~quassel@31.220.5.250)
07:13:18 × noctux quits (~noctux@user/noctux) (Read error: Connection reset by peer)
07:13:25 noctux joins (~noctux@user/noctux)
07:15:19 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 245 seconds)
07:16:28 Maxdamantus joins (~Maxdamant@user/maxdamantus)
07:17:21 chele joins (~chele@user/chele)
07:17:23 <lortabac> is there a benchmark of Haskell parser libraries somewhere?
07:17:45 <lortabac> I would like to know how slower Earley is compared to megaparsec
07:17:49 dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be)
07:20:53 × Techcable_ quits (~Techcable@168.235.93.147) (Quit: ZNC - https://znc.in)
07:22:45 × VoidNoir0 quits (~VoidNoir0@72.80.203.52) (Quit: Ping timeout (120 seconds))
07:23:18 Techcable joins (~Techcable@168.235.93.147)
07:23:55 max22- joins (~maxime@2a01cb0883359800777e1cc5db01489a.ipv6.abo.wanadoo.fr)
07:27:53 bontaq joins (~user@ool-45779fe5.dyn.optonline.net)
07:29:36 × xff0x quits (~xff0x@2001:1a81:52e7:9700:e420:3d19:92c1:3ab6) (Ping timeout: 250 seconds)
07:30:35 xff0x joins (~xff0x@2001:1a81:52e7:9700:61a3:64f7:247a:92b0)
07:30:40 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:32:33 _xor joins (~xor@72.49.199.147)
07:36:10 <[exa]> lortabac: I'd say that it depends so much on the parsed language that no one really cared systematically. There were some comparisons linked from megaparsec but I guess these don't include earley
07:37:32 ub joins (~Thunderbi@178.115.35.209.wireless.dyn.drei.com)
07:38:13 × ubert1 quits (~Thunderbi@178.115.39.222.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
07:38:35 × max22- quits (~maxime@2a01cb0883359800777e1cc5db01489a.ipv6.abo.wanadoo.fr) (Ping timeout: 246 seconds)
07:38:36 <[exa]> honestly I wouldn't expect it to be faster than mega/atto parsecs unless you parse something that works brutally bad with descent parsers
07:38:39 × ubert quits (~Thunderbi@178.115.39.222.wireless.dyn.drei.com) (Ping timeout: 245 seconds)
07:38:40 ub is now known as ubert
07:39:36 <[exa]> oh man but Earley package _is_ nice.
07:43:36 × charukiewicz quits (~quassel@108.210.196.136) (Quit: No Ping reply in 180 seconds.)
07:44:59 charukiewicz joins (~quassel@2600:1702:a90:2750::43)
07:48:21 × shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit)
07:51:42 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 250 seconds)
07:58:41 acidjnk_new joins (~acidjnk@pd9e0b933.dip0.t-ipconnect.de)
07:59:22 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
08:00:13 × xff0x quits (~xff0x@2001:1a81:52e7:9700:61a3:64f7:247a:92b0) (Ping timeout: 252 seconds)
08:00:46 xff0x joins (~xff0x@2001:1a81:52e7:9700:28e9:b1f6:45e5:1183)
08:01:52 × vjoki quits (~vjoki@2a00:d880:3:1::fea1:9ae) (Ping timeout: 252 seconds)
08:03:14 rkrishnan joins (~user@2402:e280:215c:2cd:9500:c2fe:49e8:e5f7)
08:06:01 hendursa1 joins (~weechat@user/hendursaga)
08:06:15 vjoki joins (~vjoki@2a00:d880:3:1::fea1:9ae)
08:08:44 sagax joins (~sagax_nb@user/sagax)
08:09:21 × hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 276 seconds)
08:12:39 × ByronJohnson quits (~bairyn@mail.digitalkingdom.org) (*.net *.split)
08:12:39 × hgolden quits (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (*.net *.split)
08:12:40 × rtjure quits (~rtjure@bras-79-132-17-74.comnet.bg) (*.net *.split)
08:12:40 × dolio quits (~dolio@130.44.130.54) (*.net *.split)
08:12:40 × jinsun quits (~quassel@user/jinsun) (*.net *.split)
08:12:40 × jrm quits (~jrm@156.34.187.65) (*.net *.split)
08:12:40 × p3n quits (~p3n@217.198.124.246) (*.net *.split)
08:12:40 × poljar quits (~poljar@93-139-113-226.adsl.net.t-com.hr) (*.net *.split)
08:12:40 × tcard quits (~tcard@p2307053-ipngn17101hodogaya.kanagawa.ocn.ne.jp) (*.net *.split)
08:12:40 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (*.net *.split)
08:12:40 × terrorjack quits (~terrorjac@static.3.200.12.49.clients.your-server.de) (*.net *.split)
08:12:40 × tdammers quits (~tdammers@77.109.72.177.res.static.edpnet.net) (*.net *.split)
08:12:40 × justache quits (~justache@user/justache) (*.net *.split)
08:12:40 × Nahra`` quits (~user@static.161.95.99.88.clients.your-server.de) (*.net *.split)
08:12:40 × do quits (~do@159.89.11.133) (*.net *.split)
08:12:40 × gnyeki quits (~gnyeki@user/gnyeki) (*.net *.split)
08:12:40 × AlexZenon quits (~alzenon@178.34.162.155) (*.net *.split)
08:12:40 × mmarusea1ph2 quits (~mihai@198.199.100.72) (*.net *.split)
08:12:40 × CnnibisIndica quits (~herb@user/mesaboogie) (*.net *.split)
08:12:40 × erisco quits (~erisco@d24-57-249-233.home.cgocable.net) (*.net *.split)
08:12:40 × piele quits (~piele@tbonesteak.creativeserver.net) (*.net *.split)
08:12:40 × Alex_test quits (~al_test@178.34.162.155) (*.net *.split)
08:12:40 × tchakka_ quits (~tchakkazu@static-47-180-28-65.lsan.ca.frontiernet.net) (*.net *.split)
08:12:40 × cods quits (~fred@82-65-232-44.subs.proxad.net) (*.net *.split)
08:12:40 × Jonno_FT1 quits (~come@api.carswap.me) (*.net *.split)
08:12:40 × m5zs7k quits (aquares@web10.mydevil.net) (*.net *.split)
08:12:40 × dysfigured quits (~dfg@li490-89.members.linode.com) (*.net *.split)
08:12:40 × martin02 quits (~silas@141.84.69.76) (*.net *.split)
08:12:40 × turlando quits (~turlando@user/turlando) (*.net *.split)
08:12:40 × slep quits (~slep@cpc150002-brnt4-2-0-cust437.4-2.cable.virginm.net) (*.net *.split)
08:12:41 × mniip quits (mniip@libera/staff/mniip) (*.net *.split)
08:12:41 × tureba quits (~tureba@tureba.org) (*.net *.split)
08:12:41 × sshine quits (~simon@hubris.eta.solutions) (*.net *.split)
08:12:41 × elcaro quits (~anonymous@45.32.191.75) (*.net *.split)
08:12:41 × samebchase quits (~thelounge@51.15.68.182) (*.net *.split)
08:17:37 allbery_b joins (~geekosaur@xmonad/geekosaur)
08:17:37 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
08:17:40 allbery_b is now known as geekosaur
08:18:57 notzmv joins (~zmv@user/notzmv)
08:19:05 hyiltiz joins (~quassel@31.220.5.250)
08:20:16 mniip joins (mniip@libera/staff/mniip)
08:24:24 ByronJohnson joins (~bairyn@mail.digitalkingdom.org)
08:24:24 hgolden joins (~hgolden2@cpe-172-114-81-123.socal.res.rr.com)
08:24:24 rtjure joins (~rtjure@bras-79-132-17-74.comnet.bg)
08:24:24 dolio joins (~dolio@130.44.130.54)
08:24:24 jinsun joins (~quassel@user/jinsun)
08:24:24 jrm joins (~jrm@156.34.187.65)
08:24:24 p3n joins (~p3n@217.198.124.246)
08:24:24 poljar joins (~poljar@93-139-113-226.adsl.net.t-com.hr)
08:24:24 tcard joins (~tcard@p2307053-ipngn17101hodogaya.kanagawa.ocn.ne.jp)
08:24:24 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
08:24:24 terrorjack joins (~terrorjac@static.3.200.12.49.clients.your-server.de)
08:24:24 tdammers joins (~tdammers@77.109.72.177.res.static.edpnet.net)
08:24:24 justache joins (~justache@user/justache)
08:24:24 Nahra`` joins (~user@static.161.95.99.88.clients.your-server.de)
08:24:24 do joins (~do@159.89.11.133)
08:24:24 gnyeki joins (~gnyeki@user/gnyeki)
08:24:24 AlexZenon joins (~alzenon@178.34.162.155)
08:24:24 mmarusea1ph2 joins (~mihai@198.199.100.72)
08:24:24 CnnibisIndica joins (~herb@user/mesaboogie)
08:24:24 erisco joins (~erisco@d24-57-249-233.home.cgocable.net)
08:24:24 piele joins (~piele@tbonesteak.creativeserver.net)
08:24:24 Alex_test joins (~al_test@178.34.162.155)
08:24:24 tchakka_ joins (~tchakkazu@static-47-180-28-65.lsan.ca.frontiernet.net)
08:24:24 cods joins (~fred@82-65-232-44.subs.proxad.net)
08:24:24 Jonno_FT1 joins (~come@api.carswap.me)
08:24:24 m5zs7k joins (aquares@web10.mydevil.net)
08:24:24 dysfigured joins (~dfg@li490-89.members.linode.com)
08:24:24 martin02 joins (~silas@141.84.69.76)
08:24:24 turlando joins (~turlando@user/turlando)
08:24:24 slep joins (~slep@cpc150002-brnt4-2-0-cust437.4-2.cable.virginm.net)
08:24:24 tureba joins (~tureba@tureba.org)
08:24:24 sshine joins (~simon@hubris.eta.solutions)
08:24:24 elcaro joins (~anonymous@45.32.191.75)
08:24:24 samebchase joins (~thelounge@51.15.68.182)
08:24:25 × d34df00d quits (~d34df00d@2600:1700:8c60:3a10::48) (Excess Flood)
08:25:21 × justache quits (~justache@user/justache) (Max SendQ exceeded)
08:25:30 × terrorjack quits (~terrorjac@static.3.200.12.49.clients.your-server.de) (Max SendQ exceeded)
08:26:17 justache joins (~justache@user/justache)
08:26:36 terrorjack joins (~terrorjac@static.3.200.12.49.clients.your-server.de)
08:30:17 × hnOsmium0001 quits (uid453710@id-453710.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
08:33:18 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
08:34:26 Everything joins (~Everythin@37.115.210.35)
08:36:23 × betelgeuse quits (~betelgeus@94-225-47-8.access.telenet.be) (Quit: The Lounge - https://thelounge.chat)
08:39:49 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 252 seconds)
08:42:28 <hololeap> I'm a little surprised more Applicatives don't just throw in `deriving (Semigroup,Monoid) via Ap MyApplicative` for convenience
08:51:53 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
08:51:56 × xiongxin quits (~quassel@113.116.35.70) (Ping timeout: 250 seconds)
08:53:26 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.2.1)
08:53:38 cfricke joins (~cfricke@user/cfricke)
08:54:11 max22- joins (~maxime@2a01cb08833598008bbf230aeaa6be66.ipv6.abo.wanadoo.fr)
08:56:39 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:905e:1e0b:7428:a16f) (Remote host closed the connection)
08:59:29 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 245 seconds)
09:00:10 × xff0x quits (~xff0x@2001:1a81:52e7:9700:28e9:b1f6:45e5:1183) (Ping timeout: 252 seconds)
09:00:58 xff0x joins (~xff0x@2001:1a81:52e7:9700:93c6:a799:3451:f8cc)
09:03:06 × azeem quits (~azeem@2a00:801:2d3:fa49:9002:1b34:5306:e795) (Read error: Connection reset by peer)
09:06:02 azeem joins (~azeem@emp-183-4.eduroam.uu.se)
09:11:24 mc47 joins (~mc47@xmonad/TheMC47)
09:13:44 mestre joins (~mestre@191.177.175.57)
09:17:05 kuribas joins (~user@ptr-25vy0i6xitwnblcgfls.18120a2.ip6.access.telenet.be)
09:24:48 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
09:25:36 unmanbearpig joins (~unmanbear@user/unmanbearpig)
09:28:55 × FragByte quits (~christian@user/fragbyte) (Quit: Quit)
09:30:42 FragByte joins (~christian@user/fragbyte)
09:31:11 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
09:31:21 chexum joins (~quassel@gateway/tor-sasl/chexum)
09:48:34 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 252 seconds)
09:49:49 __monty__ joins (~toonn@user/toonn)
09:50:26 × xff0x quits (~xff0x@2001:1a81:52e7:9700:93c6:a799:3451:f8cc) (Ping timeout: 250 seconds)
09:57:37 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f81d:7133:81c9:b91d)
09:58:27 hyiltiz joins (~quassel@31.220.5.250)
09:59:32 hexfive joins (~eric@50.35.83.177)
10:01:09 × chomwitt quits (~chomwitt@ppp-2-85-111-14.home.otenet.gr) (Ping timeout: 245 seconds)
10:01:44 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:f81d:7133:81c9:b91d) (Ping timeout: 246 seconds)
10:02:53 × hexfive quits (~eric@50.35.83.177) (Client Quit)
10:09:51 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 268 seconds)
10:12:47 xff0x joins (~xff0x@2001:1a81:52e7:9700:5d5e:8dcc:4bf7:bd5f)
10:18:26 hyiltiz joins (~quassel@31.220.5.250)
10:21:28 akegalj joins (~akegalj@93-136-79-174.adsl.net.t-com.hr)
10:22:21 alzgh joins (~alzgh@user/alzgh)
10:27:04 × terrorjack quits (~terrorjac@static.3.200.12.49.clients.your-server.de) (Quit: The Lounge - https://thelounge.chat)
10:27:37 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
10:27:57 __monty__ joins (~toonn@user/toonn)
10:28:07 terrorjack joins (~terrorjac@static.3.200.12.49.clients.your-server.de)
10:29:29 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
10:30:41 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:35:44 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
10:36:43 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:40:42 × darkstarx quits (~darkstard@2601:1c2:300:c8a0::f2b6) (Ping timeout: 250 seconds)
10:41:47 darkstardevx joins (~darkstard@c-24-21-53-33.hsd1.or.comcast.net)
10:41:59 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
10:42:27 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:44:05 × acidjnk_new quits (~acidjnk@pd9e0b933.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
10:47:24 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
10:47:48 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:52:49 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
10:53:30 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:57:10 enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
10:58:39 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
10:58:43 CiaoSen joins (~Jura@p200300c9571e34002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
10:59:13 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:59:24 × OscarH quits (~OscarH@90.201.86.195) (Ping timeout: 268 seconds)
11:00:44 alx741 joins (~alx741@186.178.109.65)
11:02:37 OscarH joins (~OscarH@2a02:c7f:a0da:ae00:ba27:ebff:fe84:d2f4)
11:04:29 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
11:05:12 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:06:00 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.2.1)
11:06:06 DNH joins (~DNH@2a02:8108:1100:16d8:d1f8:65da:debb:16ba)
11:06:25 OscarH_ joins (~OscarH@90.201.86.195)
11:07:13 × OscarH quits (~OscarH@2a02:c7f:a0da:ae00:ba27:ebff:fe84:d2f4) (Ping timeout: 252 seconds)
11:10:19 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
11:10:54 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:11:28 AlexNoo_ joins (~AlexNoo@94.233.240.2)
11:12:43 chomwitt joins (~chomwitt@94.66.61.137)
11:12:57 geranim0 joins (~geranim0@modemcable242.171-178-173.mc.videotron.ca)
11:13:46 × AlexZenon quits (~alzenon@178.34.162.155) (Ping timeout: 252 seconds)
11:13:46 × Alex_test quits (~al_test@178.34.162.155) (Ping timeout: 252 seconds)
11:15:02 × AlexNoo quits (~AlexNoo@178.34.162.155) (Ping timeout: 260 seconds)
11:16:09 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
11:16:55 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:18:31 AlexNoo_ is now known as AlexNoo
11:19:25 Alex_test joins (~al_test@94.233.240.2)
11:19:50 AlexZenon joins (~alzenon@94.233.240.2)
11:21:59 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
11:22:36 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:27:30 timCF joins (~timCF@254-149-20-81.sta.estpak.ee)
11:27:49 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
11:28:31 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:29:12 × timCF quits (~timCF@254-149-20-81.sta.estpak.ee) (Client Quit)
11:36:33 xiongxin joins (~quassel@113.116.35.70)
11:38:30 × Cajun quits (~Cajun@user/cajun) (Quit: Client closed)
11:39:11 Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
11:42:43 × hrnz quits (~ethical@vegan.im.it) (Quit: das ist mir zu bld hier; bb)
11:43:06 hrnz joins (~ethical@vegan.im.it)
11:46:33 Cajun joins (~Cajun@user/cajun)
11:46:51 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
11:47:27 goepsilongo joins (~chacho@2603-7000-ab00-62ed-e8e0-40c9-c788-8ef8.res6.spectrum.com)
11:49:50 jokleinn joins (~jokleinn@user/jokleinn)
11:52:04 rond_ joins (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438)
11:53:30 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
11:55:18 × max22- quits (~maxime@2a01cb08833598008bbf230aeaa6be66.ipv6.abo.wanadoo.fr) (Ping timeout: 268 seconds)
11:55:31 × jaitoon quits (~Jaitoon@2a02:c7f:a5f:1d00:28c3:d6d5:1a31:67d4) (Quit: Leaving)
11:56:40 cfricke joins (~cfricke@user/cfricke)
11:58:06 × Cajun quits (~Cajun@user/cajun) (Quit: Client closed)
12:08:52 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 268 seconds)
12:15:16 slowButPresent joins (~slowButPr@user/slowbutpresent)
12:24:57 × phma quits (~phma@host-67-44-208-158.hnremote.net) (Read error: Connection reset by peer)
12:25:22 phma joins (~phma@host-67-44-208-158.hnremote.net)
12:27:06 × alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection)
12:27:22 hyiltiz joins (~quassel@31.220.5.250)
12:27:26 alzgh joins (~alzgh@user/alzgh)
12:28:23 × hiruji` quits (~hiruji@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
12:29:22 doyougnu joins (~user@c-73-25-202-122.hsd1.or.comcast.net)
12:29:58 hiruji joins (~hiruji@user/hiruji)
12:31:38 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 250 seconds)
12:31:53 lbseale joins (~lbseale@user/ep1ctetus)
12:32:04 × xiongxin quits (~quassel@113.116.35.70) (Ping timeout: 250 seconds)
12:32:54 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
12:34:29 × chomwitt quits (~chomwitt@94.66.61.137) (Ping timeout: 245 seconds)
12:34:32 xiongxin joins (~quassel@113.116.35.70)
12:39:24 jespada joins (~jespada@2803:9800:9842:7a62:2d4b:7b80:ce15:fc84)
12:40:45 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
12:42:23 hyiltiz joins (~quassel@31.220.5.250)
12:54:48 Psybur joins (~Psybur@mobile-166-170-32-197.mycingular.net)
12:57:43 wonko joins (~wjc@62.115.229.50)
12:59:40 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
12:59:57 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f81d:7133:81c9:b91d)
13:00:03 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 268 seconds)
13:00:56 × jokleinn quits (~jokleinn@user/jokleinn) (Ping timeout: 246 seconds)
13:01:12 chomwitt joins (~chomwitt@94.66.61.137)
13:03:09 × ubert quits (~Thunderbi@178.115.35.209.wireless.dyn.drei.com) (Quit: ubert)
13:04:34 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:f81d:7133:81c9:b91d) (Ping timeout: 250 seconds)
13:07:00 ubert joins (~Thunderbi@178.115.35.209.wireless.dyn.drei.com)
13:07:23 hyiltiz joins (~quassel@31.220.5.250)
13:10:42 yielduck joins (~yielduck@176.120.238.10)
13:15:28 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 268 seconds)
13:21:05 <kuribas> is there a DayOfMonth -> Month -> Year -> Day function?
13:21:07 <kuribas> in time?
13:21:46 <kuribas> only pattern YearDay :: Year -> DayOfYear -> Day
13:21:50 <kuribas> which isn't that useful
13:22:05 <Hecate> why… would you create a Day with a DayOfMonth/Mont/Year?
13:22:30 jokleinn joins (~jokleinn@user/jokleinn)
13:22:45 <kuribas> ah, it's in Data.Time.Calendar
13:23:09 <kuribas> Hecate: because that's how everyone describes a day?
13:24:59 × akegalj quits (~akegalj@93-136-79-174.adsl.net.t-com.hr) (Quit: leaving)
13:25:09 <Hecate> kuribas: ah, my bad, I had forgotten the ISO8601 instance for Day :-)
13:26:47 <kuribas> nice elipsis
13:27:10 <Hecate> … <- I like this one as well
13:28:07 <sshine> kuribas, fromGregorian?
13:28:12 <kuribas> yes
13:28:25 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
13:28:38 <sshine> oh, fromGregorianValid is nice.
13:28:42 <tomsmeding>
13:29:25 <tomsmeding> okay so why is there a VERTICAL ELLIPSIS ⋮ and a PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS ︙
13:29:28 <sshine> (╯°□°)╯︵ ⋮
13:29:37 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
13:29:43 <tomsmeding> also the name of that second one is odd
13:29:51 <tomsmeding> what is a vertical horizontal ellipsis
13:30:06 <sshine> it's a verizontal ellipsis.
13:30:11 <tomsmeding> yes
13:30:22 <tomsmeding> luckily I'm not a customer of them
13:30:27 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
13:31:13 hyiltiz joins (~quassel@31.220.5.250)
13:31:47 ec joins (~ec@gateway/tor-sasl/ec)
13:36:02 <robbert-vdh> tomsmeding: How about a quadruple ellipsis: ᠁
13:36:22 × rond_ quits (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Quit: Client closed)
13:37:22 × CiaoSen quits (~Jura@p200300c9571e34002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
13:41:56 <Hecate> hmm
13:42:05 <Hecate> in French the "horizontal" part doesn't exist, for the second character
13:42:18 <tomsmeding> robbert-vdh: hmm I don't have a font that has that apparently
13:44:04 × Everything quits (~Everythin@37.115.210.35) (Ping timeout: 245 seconds)
13:44:10 <tomsmeding> robbert-vdh: further reading http://www.unicode.org/L2/L2019/19132-mwg3-10-mong-punct-marks-r2.pdf
13:45:02 <robbert-vdh> tomsmeding: It's also kinda broken for me (Konsole, screen-256color, Jetbrains Mono, and who knows what fallback fonts). It's a single unicode character, but it seems to take up two spaces. And selecting it will hide the last two dots.
13:45:54 <tomsmeding> robbert-vdh: I have that with basically all two-space characters; my terminal is probably less capable. It's probably just a two-space character but wcwidth() reports 1 or 0 or something
13:46:15 rond_ joins (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438)
13:48:19 × chomwitt quits (~chomwitt@94.66.61.137) (Ping timeout: 252 seconds)
13:51:19 × sqrt2_ quits (~ben@tunnel330957-pt.tunnel.tserv6.fra1.ipv6.he.net) (Quit: ZNC - http://znc.in)
13:51:30 sqrt2 joins (~ben@80-108-18-7.cable.dynamic.surfer.at)
13:52:40 × Aleksejs quits (~Aleksejs@haskell.lv) (Ping timeout: 260 seconds)
13:52:50 Aleksejs joins (~Aleksejs@haskell.lv)
13:54:25 × dkeohane2 quits (~dkeohane@ec2-18-189-29-140.us-east-2.compute.amazonaws.com) (Ping timeout: 260 seconds)
13:56:15 dkeohane2 joins (~dkeohane@ec2-18-189-29-140.us-east-2.compute.amazonaws.com)
13:56:55 fuzzypixelz14 joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
13:58:22 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
13:58:23 fuzzypixelz14 is now known as fuzzypixelz
13:58:49 × sbmsr quits (~pi@2600:1700:63d0:4830:7dbf:92d8:fd42:235d) (Ping timeout: 252 seconds)
14:01:37 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
14:01:37 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
14:01:37 wroathe joins (~wroathe@user/wroathe)
14:02:31 <tdammers> it's probably a zerpital ellipsis
14:02:36 <tdammers> https://www.smbc-comics.com/comic/lines
14:03:35 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
14:05:40 × xsperry quits (~xs@user/xsperry) (Remote host closed the connection)
14:06:02 xsperry joins (~xs@cpe-188-129-101-182.dynamic.amis.hr)
14:06:02 × xsperry quits (~xs@cpe-188-129-101-182.dynamic.amis.hr) (Changing host)
14:06:02 xsperry joins (~xs@user/xsperry)
14:13:13 max22- joins (~maxime@2a01cb088335980036d4a1972afb126b.ipv6.abo.wanadoo.fr)
14:16:40 Sgeo joins (~Sgeo@user/sgeo)
14:24:34 chomwitt joins (~chomwitt@94.66.61.137)
14:30:09 ub joins (~Thunderbi@178.115.35.209.wireless.dyn.drei.com)
14:31:28 yinghua joins (~yinghua@181.228.40.183)
14:32:08 × azimut_ quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
14:32:26 × Digit quits (~user@user/digit) (Read error: Connection reset by peer)
14:32:30 azimut joins (~azimut@gateway/tor-sasl/azimut)
14:32:59 × jess quits (~jess@libera/staff/jess) ()
14:38:39 × ub quits (~Thunderbi@178.115.35.209.wireless.dyn.drei.com) (Ping timeout: 245 seconds)
14:41:50 shriekingnoise joins (~shrieking@186.137.144.80)
14:45:35 mortemeur joins (~mortemeur@pool-173-76-107-201.bstnma.fios.verizon.net)
14:46:59 × lbseale quits (~lbseale@user/ep1ctetus) (Ping timeout: 245 seconds)
14:50:51 Everything joins (~Everythin@37.115.210.35)
14:51:13 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
14:51:35 ChaiTRex joins (~ChaiTRex@user/chaitrex)
14:52:43 × sleblanc quits (~sleblanc@user/sleblanc) (Ping timeout: 252 seconds)
14:57:14 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
14:58:27 × vysn quits (~vysn@user/vysn) (Ping timeout: 268 seconds)
14:59:01 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
14:59:42 ub joins (~Thunderbi@178.115.35.209.wireless.dyn.drei.com)
15:01:49 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f81d:7133:81c9:b91d)
15:03:54 × alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection)
15:04:06 alzgh joins (~alzgh@user/alzgh)
15:05:32 × rond_ quits (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Quit: Client closed)
15:06:03 hnOsmium0001 joins (uid453710@id-453710.hampstead.irccloud.com)
15:06:14 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:f81d:7133:81c9:b91d) (Ping timeout: 246 seconds)
15:06:55 zmt00 joins (~zmt00@user/zmt00)
15:08:08 chisui joins (~chisui@200116b868200e005b083d1d747ea99e.dip.versatel-1u1.de)
15:08:18 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f81d:7133:81c9:b91d)
15:11:58 × img_ quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
15:13:16 × xiongxin quits (~quassel@113.116.35.70) (Ping timeout: 250 seconds)
15:13:20 img joins (~img@user/img)
15:13:42 xiongxin joins (~quassel@113.116.33.66)
15:23:07 × azeem quits (~azeem@emp-183-4.eduroam.uu.se) (Read error: Connection reset by peer)
15:23:44 × ub quits (~Thunderbi@178.115.35.209.wireless.dyn.drei.com) (Ping timeout: 246 seconds)
15:24:04 × ubert quits (~Thunderbi@178.115.35.209.wireless.dyn.drei.com) (Ping timeout: 245 seconds)
15:25:20 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:3ebf:673e:c737:b48) (Quit: WeeChat 2.8)
15:25:36 azeem joins (~azeem@2a00:801:23d:c203:2f8f:c97c:ce0f:f54f)
15:28:16 mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
15:28:17 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
15:30:23 berberman_ joins (~berberman@user/berberman)
15:30:46 × berberman quits (~berberman@user/berberman) (Ping timeout: 252 seconds)
15:32:49 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 245 seconds)
15:33:11 df_ is now known as df
15:33:36 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds)
15:33:43 hyiltiz joins (~quassel@31.220.5.250)
15:35:48 × jokleinn quits (~jokleinn@user/jokleinn) (Ping timeout: 250 seconds)
15:37:09 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Quit: leaving)
15:37:20 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
15:38:55 × xff0x quits (~xff0x@2001:1a81:52e7:9700:5d5e:8dcc:4bf7:bd5f) (Ping timeout: 252 seconds)
15:39:04 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Remote host closed the connection)
15:39:20 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:f81d:7133:81c9:b91d) (Remote host closed the connection)
15:39:49 xff0x joins (~xff0x@2001:1a81:52e7:9700:89ea:128b:cbad:e425)
15:40:35 × enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
15:43:48 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
15:44:53 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f81d:7133:81c9:b91d)
15:47:39 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
15:48:15 × ec quits (~ec@gateway/tor-sasl/ec) (Quit: ec)
15:50:13 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
15:50:13 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
15:50:13 wroathe joins (~wroathe@user/wroathe)
15:50:19 vladomiro joins (~vladomiro@2806:266:485:8e3a:21a:73ff:fe1a:3ecb)
15:52:21 × paddymahoney quits (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (Remote host closed the connection)
15:53:23 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Remote host closed the connection)
15:53:29 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 264 seconds)
15:53:29 × mestre quits (~mestre@191.177.175.57) (Quit: Lost terminal)
15:54:30 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
15:54:49 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
15:56:15 × vladomiro quits (~vladomiro@2806:266:485:8e3a:21a:73ff:fe1a:3ecb) (Quit: Leaving)
15:58:40 lbseale joins (~lbseale@user/ep1ctetus)
15:59:05 <Hecate> hi lbseale :) sorry that your PR took so long to be reviewed
15:59:16 × rkrishnan quits (~user@2402:e280:215c:2cd:9500:c2fe:49e8:e5f7) (Ping timeout: 252 seconds)
15:59:25 lbseale_ joins (~lbseale@user/ep1ctetus)
15:59:38 × xiongxin quits (~quassel@113.116.33.66) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
16:00:52 × rtjure quits (~rtjure@bras-79-132-17-74.comnet.bg) (Ping timeout: 252 seconds)
16:01:38 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
16:02:03 hyiltiz joins (~quassel@31.220.5.250)
16:02:36 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
16:02:49 × lbseale quits (~lbseale@user/ep1ctetus) (Ping timeout: 245 seconds)
16:03:45 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:04:11 ec joins (~ec@gateway/tor-sasl/ec)
16:04:33 × zaquest quits (~notzaques@5.128.210.178) (Remote host closed the connection)
16:05:31 × chisui quits (~chisui@200116b868200e005b083d1d747ea99e.dip.versatel-1u1.de) (Quit: Client closed)
16:06:09 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 245 seconds)
16:08:14 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
16:08:53 × dibblego quits (~dibblego@haskell/developer/dibblego) (Read error: Connection reset by peer)
16:09:07 dibblego joins (~dibblego@122-199-1-30.ip4.superloop.com)
16:09:07 × dibblego quits (~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
16:09:07 dibblego joins (~dibblego@haskell/developer/dibblego)
16:14:07 <maerwald> https://devtut.github.io/haskell/ oy
16:14:27 × dajoer quits (~david@user/gvx) (Quit: leaving)
16:14:42 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
16:14:49 <Hecate> yeah I recall
16:14:53 <Hecate> scrapping StackOverflow
16:15:20 <maerwald> not bad
16:20:53 × fresheyeball quits (~fresheyeb@c-76-25-93-164.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
16:23:06 hyiltiz joins (~quassel@31.220.5.250)
16:25:14 <monochrom> Ugh why is Type Classes after all the sections that assume you know type classes such as Overloaded Literals, Foldable, Traversable, Free Monads?
16:25:49 CiaoSen joins (~Jura@p200300c9571e34002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
16:27:41 <monochrom> And Partial Application (which also explains sectioning, e.g., (++ "ing")) is like 10 sections after "Fibonacci, Using Lazy Evaluation" in which there is (fib !!).
16:30:56 <Hecate> monochrom: can I borrow you when Haskell School "basics" lessons are done? :)
16:32:27 <monochrom> eeeek... What does "borrow" mean?
16:32:55 <[exa]> he goes to your rightful owner and asks nicely? :D
16:33:40 <[exa]> *hecate
16:34:10 <monochrom> Anyway I want to like that tutorial, it has the best diagram that motivates "fib = 0 : 1 : zipWith (+) ...". But ordering is even more important than raw content in pedagogy (and in giving talks, for that matter).
16:35:11 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
16:35:52 Hanicef joins (~gustaf@81-229-9-108-no92.tbcn.telia.com)
16:35:56 fresheyeball joins (~fresheyeb@c-76-25-93-164.hsd1.co.comcast.net)
16:36:01 × fresheyeball quits (~fresheyeb@c-76-25-93-164.hsd1.co.comcast.net) (Client Quit)
16:36:08 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
16:37:01 <monochrom> Storytelling in general. (Special cases being pedagogy and giving talks.)
16:38:38 Null_A joins (~null_a@2601:645:8700:2290:e8ac:2b75:e714:d893)
16:39:24 <monochrom> For an offtopic example, it is now well understood that the movie Passengers fails because it tells you the pivotal plot point right at the beginning, not in the middle when it belongs. That's all. Wrong order alone ruins it, right order alone would fix it.
16:43:36 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:45:55 <Hecate> monochrom: I promise to give you back afterwards :P
16:45:58 <Hecate> like [exa] said
16:47:00 <[exa]> monochrom: thinking about the storytelling in programming, it's kinda inconvenient that goedel&pals spoiled the story right in 1930's
16:48:30 <dolio> Gödel is overhyped.
16:49:09 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
16:49:09 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
16:49:09 wroathe joins (~wroathe@user/wroathe)
16:54:27 × fuzzypixelz quits (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: Client closed)
16:56:08 mc47 joins (~mc47@xmonad/TheMC47)
16:58:30 × hgolden quits (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (Quit: Konversation terminated!)
17:03:15 emf joins (~emf@162.218.217.186)
17:04:40 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
17:04:45 × hendursa1 quits (~weechat@user/hendursaga) (Remote host closed the connection)
17:04:46 × Null_A quits (~null_a@2601:645:8700:2290:e8ac:2b75:e714:d893) (Remote host closed the connection)
17:05:15 hendursa1 joins (~weechat@user/hendursaga)
17:06:27 × mbuf quits (~Shakthi@122.162.133.48) (Quit: Leaving)
17:07:30 emf_ joins (~emf@2620:10d:c090:400::5:5481)
17:07:49 × emf quits (~emf@162.218.217.186) (Ping timeout: 245 seconds)
17:10:53 pavonia joins (~user@user/siracusa)
17:15:54 <monochrom> Nah Gödel showed how to use prime powers to represent arrays, cool coding trick >:)
17:16:04 <monochrom> arrays and strings
17:16:49 <monochrom> Data.Text-use-Gödel-numbering Proposal >:)
17:17:21 <dolio> I guess. The problem with that is that many mathematicians are stuck in the mindset that they should do that, instead of broadening their horizons on induction and stuff. :)
17:17:55 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
17:18:17 <monochrom> Yeah, it pains my heart that the incompleteness proof is 70% setting up that machinery.
17:18:34 <monochrom> OK, it was fair in 1930. But today?
17:19:50 <monochrom> OK, so what I have in mind is the poor philosophy students who have to pick up that much number theory and getting really lost for the trees missing the forest, when they try to learn the incompleteness theorem.
17:20:25 <dolio> Yeah.
17:20:29 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 264 seconds)
17:21:15 hgolden joins (~hgolden2@cpe-172-114-81-123.socal.res.rr.com)
17:23:15 × Guest372 quits (~xxx@47.245.54.240) (Remote host closed the connection)
17:24:22 Guest372 joins (~xxx@47.245.54.240)
17:24:39 econo joins (uid147250@user/econo)
17:27:49 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 245 seconds)
17:30:01 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
17:30:37 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
17:33:46 <dolio> It's probably not Gödel's (and other people of that era) fault that people are stuck in their methodology, but a lot of modern stuff seems to suffer from not analyzing why they might have made certain decisions.
17:34:20 <dolio> Like, encoding everything as natural numbers might make it easier to analyze certain aspects of the system, but it doesn't make for a good system to use, necessarily.
17:36:16 <dolio> But you see that attitude a lot, still. If you have two ways of constructing the same thing, one must be declared redundant and eliminated, even if the two different ways are each good in different situations.
17:38:54 hyiltiz joins (~quassel@31.220.5.250)
17:39:31 Null_A joins (~null_a@2601:645:8700:2290:e8ac:2b75:e714:d893)
17:43:54 <sclv> andrej likes to point out that “ast” is a perfectly good godel code
17:45:58 × mortemeur quits (~mortemeur@pool-173-76-107-201.bstnma.fios.verizon.net) (Ping timeout: 252 seconds)
17:47:01 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
17:47:01 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
17:47:01 wroathe joins (~wroathe@user/wroathe)
17:48:29 <[exa]> you need actual number theory for godel numerals?
17:48:42 <[exa]> like, you need long integers and divisibility but that should be it, right?
17:48:51 snekism joins (~user@88.160.31.174)
17:48:57 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.3)
17:50:02 <geekosaur> that's not how I read it; I read it as philo students get forced to learn number theory because they're presented with the actual number theoretical proof of gödel's theorem instead of a reasonable summary
17:50:10 <geekosaur> (is that where GEB came from?)
17:50:27 <monochrom> You need the Chinese Remainder Theorem at some point.
17:51:13 <monochrom> Now, consider the talent of the student who themselves chose to enter a philosophy major program.
17:51:20 <monochrom> s/student/students/
17:51:23 <[exa]> yeah there it hits the wall
17:51:58 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
17:52:59 <monochrom> I mean, if I changed subject and talk about confirmation bias, I would say "now, consider the talent of the students who themselves chose to enter computer programming courses". :)
17:53:12 <[exa]> I was usually explaining an alternate way with encoding a long string of 1's and 0's using primes (which is straightforward since most of them know at least some totally basic prime factoring) to build some intuition, and then point out that it can be done in an alternative way that's a bit more practical for actually writing the functions that run the program
17:53:45 justsomeguy joins (~justsomeg@user/justsomeguy)
17:54:56 <dolio> That 'optimization' is probably silly, because it's still not practical.
17:55:37 <[exa]> well if someone wanted to write out the math that computes it, the CRT encoding is a bit less ugly than strings encoding :D
18:05:03 × jushur quits (~human@user/jushur) (Quit: brb)
18:06:25 jushur joins (~human@user/jushur)
18:12:19 × hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1)
18:12:47 hendursaga joins (~weechat@user/hendursaga)
18:14:46 × jlamothe_ quits (~jlamothe@104.158.48.100) (Ping timeout: 268 seconds)
18:15:58 × Null_A quits (~null_a@2601:645:8700:2290:e8ac:2b75:e714:d893) (Remote host closed the connection)
18:16:20 × snekism quits (~user@88.160.31.174) (Remote host closed the connection)
18:16:52 mei joins (~mei@user/mei)
18:21:20 Guest20 joins (~Guest20@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
18:22:32 × Hanicef quits (~gustaf@81-229-9-108-no92.tbcn.telia.com) (Quit: leaving)
18:25:12 tfeb joins (~tfb@88.98.95.237)
18:27:30 Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
18:29:39 × DNH quits (~DNH@2a02:8108:1100:16d8:d1f8:65da:debb:16ba) (Quit: My MacBook has gone to sleep. ZZZzzz…)
18:30:00 dunj3_ is now known as dunj3
18:37:05 zaquest joins (~notzaques@5.128.210.178)
18:38:17 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:f81d:7133:81c9:b91d) (Remote host closed the connection)
18:41:49 <zzz> tomsmeding: after HOURS of banging my head against the wall i finally figured out that i had a typo in my Hspec... here's my final solution, thanks for the mapAccumL suggestion: https://www.codewars.com/kata/reviews/55075a7d5e7c2cce6e000009/groups/615c9b69163e8b0001048c69
18:42:24 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 245 seconds)
18:46:21 × kuribas quits (~user@ptr-25vy0i6xitwnblcgfls.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
18:50:17 vysn joins (~vysn@user/vysn)
18:51:01 hyiltiz joins (~quassel@31.220.5.250)
18:51:09 × funsafe quits (~funsafe@2601:1c1:4200:e53:2875:5507:42e4:4e14) (Ping timeout: 268 seconds)
18:54:04 <tomsmeding> zzz: this was mine :) https://www.codewars.com/kata/reviews/55075a7d5e7c2cce6e000009/groups/615b39abbf844600014b9445
18:54:20 DNH joins (~DNH@2a02:8108:1100:16d8:d1f8:65da:debb:16ba)
18:55:54 <tomsmeding> zzz: is there a particular reason you chose to use a lazy map?
18:57:15 <zzz> not really no. actually i noticed a strict map is a bit faster
18:57:33 × DNH quits (~DNH@2a02:8108:1100:16d8:d1f8:65da:debb:16ba) (Client Quit)
18:57:39 <tomsmeding> zzz: aren't you technically missing a map insert in the Left case of the 'either'?
18:58:47 <zzz> well, i thought that some computations will be faster than a lookup on a large map
18:58:56 <tomsmeding> makes sense
18:59:07 <zzz> but yeah i could have optimized it for the other case
18:59:23 <tomsmeding> yeah your decision is probably not a bad one
19:00:30 <zzz> it would depend on the input. in any case it's trivial to adapt it because i isolated my memo function. so intead of (m,) we just need to write (memo . (m,))
19:00:47 <tomsmeding> yeah that's quite nice
19:00:59 × tfeb quits (~tfb@88.98.95.237) (Quit: died)
19:01:19 × dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2)
19:01:23 <Guest20> this is taken straight from my file: https://paste.tomsmeding.com/QFR9yNsG
19:01:34 <Guest20> hlint and ghc are driving me mad
19:02:00 <Guest20> Why do I need 3 extra identations?
19:02:16 <Rembane> Guest20: Turn off hlint. It's not worth going mad over those suggestions.
19:02:48 <zzz> i like that yours is very readable
19:03:13 <tomsmeding> zzz: main difference in that sense, I think, is that I used lots of 'case' whereas you used eliminators
19:03:14 <Guest20> If I move it to the left I get "parse error on input Just`
19:03:19 <geekosaur> because if you indent only to the first variable defined after the "where" then it's taken as a new variable definition, and if you indent not even that far then it ends the "where"
19:04:01 <geekosaur> and this is ghc being lenient, I think (NondecreasingIndenation) or you'[d have to indent past the "case"
19:04:31 jess joins (~jess@libera/staff/jess)
19:04:52 <zzz> tomsmeding: i think i'm allergic to case expressions
19:05:02 <geekosaur> think of haskell beingt like python, indentation matters a lot
19:05:04 <tomsmeding> they are nice and readable :)
19:05:22 <zzz> so are pattern guards ;)
19:05:36 <geekosaur> if it really bothers you then you can use brackets and then indent however you want
19:05:42 <geekosaur> er, braces
19:05:58 <tomsmeding> zzz: yeah true, the outer Just y match could be a pattern guard in my solution
19:06:34 <Guest20> geekosaur: I get it now, I think I want to always add a newline after where then
19:07:48 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 276 seconds)
19:08:13 <c_wraith> I'm not quite sure why people don't like layout-based semantics. do they enjoy confusing others by misrepresenting their code's structure visually?
19:09:09 ChaiTRex joins (~ChaiTRex@user/chaitrex)
19:09:10 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
19:09:10 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
19:09:10 wroathe joins (~wroathe@user/wroathe)
19:09:16 <geekosaur> same, although I do prefer NondecreasingIndentation to the standard
19:09:37 funsafe joins (~funsafe@2601:1c1:4200:e53:2875:5507:42e4:4e14)
19:09:42 <zzz> tomsmeding: is your `cont` short for continuation?
19:09:43 <geekosaur> mostly because I don't like getting too close to the edge of the line either
19:09:53 <tomsmeding> zzz: yeah
19:10:21 <Guest20> another question: I can't seem to define a Show instrance for a type synonym
19:10:30 <tomsmeding> FlexibleInstances
19:10:32 <geekosaur> type synonyms are not distinct
19:10:37 <tomsmeding> also that
19:10:40 <c_wraith> instances belong to types, not synonyms.
19:10:57 <tomsmeding> if you want an actually new type, use newtype
19:11:00 <monochrom> layout: https://twitter.com/HisCursedness/status/788690145822306304
19:11:02 <geekosaur> you can enable FlexibleInstances to do it, but it still won't let you define a different instance for the synonym than for the original type
19:11:29 <c_wraith> honestly, you shouldn't use type synonyms while you're still learning the basics.
19:11:33 <monochrom> I actually gave that on an exam. To pretty-print code in that format. >:)
19:11:34 <Guest20> yes I do realize they're not types x) I really didn't want a constructor so I will try FlexibleInstances
19:11:52 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f81d:7133:81c9:b91d)
19:11:59 <c_wraith> I'm confused why so many introductions to Haskell put them up front as if they're useful
19:12:14 <monochrom> c_wraith: I agree, but other teachers like Hutton like to introduce type synonyms when teaching the basics.
19:12:21 <monochrom> Yeah :)
19:12:26 <zzz> c_wraith: from someone with a design background, there are problems with the way we use vertical alignment in layout mode
19:12:47 <geekosaur> mostly because they want to distinguish data, type, and newtype early
19:12:54 <monochrom> Well, I can understand the "self-documenting type sig" angle.
19:12:56 <geekosaur> which can be a ood thing
19:13:00 <geekosaur> *good
19:13:10 <monochrom> No, they don't teach newtype that early.
19:13:21 <monochrom> In fact they don't teach ADT that early either.
19:13:28 <c_wraith> I mean, I guess the existence of String forces teaching about type aliases early
19:13:39 <Guest20> well in my case I have a `Maybe Text` in four data definitions and I have a Show instance for each of those types where the code for showing Maybe Text is gonna be ... well repeated 3 times
19:13:47 <c_wraith> but that should come with a warning "don't do this"
19:13:51 <Guest20> s/3/4
19:14:06 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
19:14:09 <tomsmeding> Guest20: write a top-level function?
19:14:23 <monochrom> At the stage you just have Int, String, Bool, Float, they already go like "type Celsius = Float; type Fahrenheit = Float; convert :: Celsius -> Fahrenheit"
19:14:56 <tomsmeding> luckily the class at my uni doesn't do that
19:15:06 <Guest20> tomsmeding: Fair enough. I came here to check if I was misunderstanding things
19:15:10 <tomsmeding> (though they do use Hutton's book; haven't opened the book yet)
19:15:20 <monochrom> Hell, even by the time of State monad, they still don't always use newtype.
19:16:38 <monochrom> Me, if some student asks me "what's type Foo = Int", I just say "just like C typedef", and never bring it up again.
19:16:42 acidjnk_new joins (~acidjnk@p200300d0c703cb83c18eec9e6894a9d9.dip0.t-ipconnect.de)
19:17:04 <monochrom> And that's right, only if some student asks me.
19:18:05 Eoco joins (~ian@x-160-94-179-157.acm.umn.edu)
19:19:07 <Guest20> enabling FlexibleInstances gives me "Overlapping instances arising from use of $dmShowList". I guess the top-level function isn't so bad after all
19:20:01 <Guest20> and it breaks any other data type driving Show _and_ containing a Maybe Text
19:20:19 <tomsmeding> Guest20: writing 'type T = Maybe Text' and then writing 'instance Show T where ...' is literally the same as writing 'instance Show (Maybe Text) where'
19:20:34 <tomsmeding> becausse T = Maybe Text :p
19:20:57 <geekosaur> isn't that going to be overlapping anyway?
19:21:05 <tomsmeding> should be
19:21:40 Guest71 joins (~Guest71@a79-169-181-190.cpe.netcabo.pt)
19:22:42 Null_A joins (~null_a@c-98-210-133-39.hsd1.ca.comcast.net)
19:23:04 × mcglk quits (~mcglk@131.191.49.120) (Read error: Connection reset by peer)
19:23:15 <Guest71> hi guys, is it possible to multiply each element of a list by its index without using recursion? thx in advance
19:23:25 <monochrom> Totally overlaps with Prelude's "instance Show a => Show (Maybe a)"
19:24:01 <tomsmeding> Guest71: how would you multiply each element of a list by something else without using recursion?
19:24:02 <c_wraith> Guest71: define "using recursion". the answer might be yes or no, depending
19:24:10 <sprout> Guest71: depends what you mean without recursion
19:24:10 <Guest20> TIL type synonyms are just macros
19:24:24 <c_wraith> you really should avoid using them
19:24:29 <monochrom> Do you know zip or zipWith? Do you know how to use zip to convert [x,y,z] to [(x,0), (y,1), (z,2)] ?
19:24:31 <sprout> you can just make another (infinite) lazy list of indexes and zip
19:24:52 mcglk joins (~mcglk@131.191.49.120)
19:25:13 <Guest20> c_wraith: I sure will :^) that instance overlapping really left a sour taste in my mouth
19:25:27 <monochrom> To be sympathetic, I think most beginners don't know what "define" means. :)
19:25:40 <monochrom> or at least most 1st-year students.
19:25:45 <Guest20> let me have a go at it
19:25:51 <c_wraith> lists are a recursive data type. you can't do anything with all of a list without using recursion somewhere.
19:26:28 <monochrom> You know what, that applies to all of computing.
19:26:35 <c_wraith> the only question is whether you write it, or use a tool that encapsulates it for you
19:27:06 jtomas joins (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net)
19:27:13 <Guest20> #define X Y means when the compiler preprocessor reads you code it literally replaces every occurence X with Y so it's as if you never wrote any Xs but only Ys
19:27:39 <c_wraith> Guest20: I think conversations got a bit crossed.
19:28:07 <monochrom> I think that was intentional. Someone was like "challenge accepted!" :)
19:28:30 <Guest20> well I'm a 2nd year student :^)
19:28:34 <c_wraith> I mean, you're right. it's just not what was intended. :)
19:29:48 <c_wraith> I do remember having my mind blown when a math professor said that there was fundamentally no way of expressing a sum without using recursion.
19:30:03 <monochrom> :)
19:30:08 <c_wraith> because I was like "you can just write it with a big sigma"
19:30:30 <c_wraith> only later did I realize I was just hiding the recursion, not removing it
19:30:47 <monochrom> Well, that point was drove home to me for the nth time when last night someone asks "how does an FPL implementation implements recursion?"
19:31:42 <monochrom> So, for example, GHC translates Haskell's letrec to, drum rolls, STG's letrec!
19:32:34 <monochrom> And beyond that, either a cyclic thunk or a cyclic piece of code.
19:32:47 <monochrom> or perhaps s/thunk/closure/
19:33:06 <Guest20> STG?
19:33:22 <geekosaur> the underlying engine that evaluates ghc-generated code
19:33:27 <monochrom> STG is an intermediate level language that GHC uses internally.
19:33:38 <geekosaur> "spineless tagless g(raph-reduction) machine
19:34:08 <Guest20> and letrec is a language feature?
19:34:32 <monochrom> It just means the language supports recursive definitions syntactically.
19:34:54 <monochrom> You are allowed to write "f x = f (x+1)" and the computer will "do the right thing".
19:34:58 <Guest71> lets say i want to transform [1,2,3] in [1,4,9] (each element multiplied with its position) how can i do that with a list comprehension? [y ...? | y <- xs]
19:35:12 <Guest71> is it possible?
19:35:54 <monochrom> The irony being if a compiler is just translating recursion syntax to yet another recursion syntax, it still doesn't explained recursive in more primitive terms.
19:36:46 <Hecate> % zipWith (*) [1,2,3] [1..]
19:36:46 <yahb> Hecate: [1,4,9]
19:36:50 <Hecate> Guest71: ^
19:36:55 DNH joins (~DNH@2a02:8108:1100:16d8:d1f8:65da:debb:16ba)
19:37:09 <monochrom> In Haskell, you write "let f x = f (x+1) ...". You call it "let", but in Scheme circles, it's called "letrec".
19:37:11 <Guest71> ohhh
19:37:43 <monochrom> So in our circle, sometimes we also say "letrec" if we want the emphasis on supporting recursion.
19:37:51 <Guest71> and for a list that i dont know its size it would be % zipWith (*) [1,2,3] [1.. length xs] right?
19:38:04 <geekosaur> [1..] will produce a list as long as is needed
19:38:30 <geekosaur> zipWit will stop as soon as one of the lists you're zipping does, while [1..] will keep going forever if allowed ot
19:38:32 <Hecate> Guest71: no need, 'zip' (or zipWith) will stop taking from the second list as soon as it finishes with the first :)
19:39:46 <Guest20> monochrom: I see, where can I read more about how recursion is supported internally?
19:40:15 <Guest20> % [0..]
19:40:17 <monochrom> I don't know, apart from reading generally any textbooks on compilers and/or interpreters.
19:40:20 <yahb> Guest20: [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,1
19:40:47 <Guest71> thx :)
19:40:49 <monochrom> But I think what I said amounts to "just let the CPU worry about it".
19:40:53 <Guest20> it's programmed to stop at 126 ... right?
19:41:13 <Guest20> I wonder how this was implemented
19:41:23 <Hecate> Guest20: datacenters are burning right now to give you more integers
19:41:28 <geekosaur> no, the bot has a line length limit and chops the output off
19:41:32 emf joins (~emf@2620:10d:c090:400::5:5481)
19:41:46 <geekosaur> otherwise it'd keep going forever (or at least until interrupted)
19:42:07 <Guest20> monochrom: so I don't necessarily need to read ghc-specific literature
19:42:09 <monochrom> You know that you can test your "stop at 126" hypothesis by trying [126...]
19:42:34 <geekosaur> the neat part of Haskell is this is handled automatically so if something only requests (say) 50 numbers it'll stop there
19:42:37 <monochrom> That depends on whether you want to be GHC-specific or not.
19:42:55 <geekosaur> you can think of evaluation of a recursive expression as turning a crank each time a new value is needed
19:43:04 <Guest20> monochrom: I was thinking along the lines of lists of 126 elements :^)
19:43:16 <geekosaur> if the crank never gets turned, the expression stops producing values
19:43:18 <monochrom> repeat 0
19:44:07 <monochrom> See? Programmers firstly can't phrase their hypotheses properly, secondly can't test them.
19:44:26 <Guest20> well you got me!
19:44:27 <geekosaur> each crank can be connected to another crank, so for example the bot turns a crank based on the length of the current output line and that turns a crank of the infinite [0..] expression
19:44:35 <monochrom> And you say you expect programmers to properly test their code?
19:44:38 × emf_ quits (~emf@2620:10d:c090:400::5:5481) (Ping timeout: 260 seconds)
19:44:54 <monochrom> That's a talent reserved for those who have gone into actual scientific careers.
19:44:55 × mei quits (~mei@user/mei) (Read error: Connection reset by peer)
19:44:59 × DNH quits (~DNH@2a02:8108:1100:16d8:d1f8:65da:debb:16ba) (Quit: My MacBook has gone to sleep. ZZZzzz…)
19:45:42 mei joins (~mei@user/mei)
19:45:52 <monochrom> See also what I said about confirmation bias 2 hours ago.
19:47:52 <tomsmeding> monochrom: you say you can't do much without recursion. I have lots of C code that does lots of useful (perhaps) stuff without using recursion anywhere.
19:47:59 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
19:48:15 <monochrom> It gets compiled to recursion at the asm level.
19:48:27 <tomsmeding> the fact that STG has lots of recursion in it doesn't mean that "all of computing" has it :p
19:48:38 <monochrom> Or how about we agree to s/recursion/self-reference/
19:48:40 <tomsmeding> what does recursion even _mean_ on the asm level?
19:48:41 <dolio> The example above even started printing 127, and stopped in the middle. :)
19:48:43 <geekosaur> any for, do, while loop is ultimately recursion at some level
19:50:50 <monochrom> Alternatively you can try to explain looping in more primitive terms.
19:51:35 × geranim0 quits (~geranim0@modemcable242.171-178-173.mc.videotron.ca) (Quit: Leaving)
19:51:52 geranim0 joins (~geranim0@modemcable242.171-178-173.mc.videotron.ca)
19:52:31 pgib joins (~textual@173.38.117.88)
19:53:01 <tomsmeding> I feel like it's not really productive to call a compute-cmp-jnz loop in assembly "recursion". But maybe that's my operational mind speaking :)
19:53:33 <monochrom> Sure, that's why <monochrom> Or how about we agree to s/recursion/self-reference/
19:53:49 <monochrom> Seriously I think "recursion" means "self referencing" no more no less.
19:54:06 <monochrom> But seems like more people agree to the wording "self reference".
19:54:16 tomsmeding understood "recursion" to mean "self-execution", more or less
19:54:37 <tomsmeding> but right, I guess you can say that a loop references itself
19:54:45 <monochrom> You have "mylabel: ... 10 instructions later ... jmp/jsr mylabel" that's a self-reference, a cycle, a cyclic graph.
19:55:34 <geekosaur> tail recursion does the same thing at asm level, so where's the difference?
19:55:41 <tomsmeding> but then what about a language where a loop looks like this: while (\(i, x) -> i < 10) (\(i, x) -> (i + 1, f x)) (0, input) -- computes (iterate f input !! 10)
19:55:49 <tomsmeding> where is self-reference here?
19:55:59 <monochrom> Just like if you have data "myaddress: .... 10 words later DWORD myaddress" that's cyclic data, a cyclic graph.
19:56:18 <tomsmeding> okay yeah, in a suitable sense :p
19:56:31 <geekosaur> tomsmeding, hidden inside the "while" which produces bopth the initial label and the jmp at the end
19:56:38 <tomsmeding> yeah true
19:56:53 <monochrom> So-called "code" "mylabel: ... 10 instructions later ... jmp/jsr mylabel" is still some special kind of data in the eyes of the CPU. The CPU's job is to interpret that data.
19:56:55 × mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 268 seconds)
19:57:05 <geekosaur> haskell hides it one way, C another
19:59:23 mikoto-chan joins (~mikoto-ch@83.137.2.247)
19:59:25 <monochrom> The one question that can stumble me is this. (I pose this to my students too. Well, I position it as food for thought.)
19:59:58 <monochrom> You take an FPL interpreter like mine at http://www.cs.utoronto.ca/~trebla/CSCC24-2021-Summer/09-semantics-1.html
20:01:07 <monochrom> And you ban the recursive construct there. In Expr, delete the Rec case. In Value, delete the VRecClosure case.
20:01:36 <monochrom> And you find that the section on recursion (#rec) still works.
20:01:54 <tomsmeding> yeah the classical y combinator
20:01:55 <monochrom> You can still do factorial. You can still do non-termination. WTF?
20:02:05 <monochrom> "Where is the recursion?"
20:02:30 <tomsmeding> in the interpreter?
20:03:02 <tomsmeding> like, interp probably calls itself to interpret subexpressions
20:03:51 <monochrom> That is an obvious answer on the surface, but needs much more justification if you're careful. How is the interpreter exceeding primitive recursion (which terminates)?
20:04:33 <tomsmeding> who spoke about primitive recursion? :p
20:04:53 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
20:05:33 × juhp quits (~juhp@128.106.188.220) (Ping timeout: 268 seconds)
20:05:48 <monochrom> I do. Because primitive recursion is a boring kind of recursive that doesn't constitute any interesting food for thought because it can't do non-termination, it can't even do Ackermann.
20:06:02 × Null_A quits (~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Remote host closed the connection)
20:06:34 <tomsmeding> like, I don't see why I have to show that the interpreter can exceed primitive recursion, when there is no a priori evidence that it couldn't
20:06:37 <monochrom> And a lot of people who want total languages bet their hopes on primitive recursion.
20:07:02 <monochrom> The interpreter's code looks like primitive recursion. That's why.
20:07:03 <tomsmeding> now, if you're used to simply-typed lambda calculus, then this is different, but yeah :p
20:07:09 <dolio> Only those stodgy mathematicians who reduce everything to natural numbers think primtiive recursion can't do Ackermann. :þ
20:07:23 <monochrom> Ugh hahaha
20:07:29 <maerwald> happy/alex seem to depend on data files that are in the cabal store, making it impossible to provide static binaries or clean up the store after them?
20:07:55 juhp joins (~juhp@128.106.188.220)
20:08:07 <geekosaur> maerwald, I think that's a known screw case that is hard to do right
20:08:58 × mei quits (~mei@user/mei) (Ping timeout: 252 seconds)
20:09:00 <geekosaur> data files in general can't be handled well, unless there's specific buy-in from the app (that is, it contains them and generates them when needed or uses them from the wired-in data)
20:09:52 <maerwald> if it's static data it can just include it in the binary
20:10:08 <Franciman> maerwald: did you try the Earley package?
20:10:33 <maerwald> no
20:10:44 <Franciman> maybe it can help you avoid using happy/alex
20:11:00 <maerwald> no, it's about docker images that use/compile GHC
20:11:15 <maerwald> which needs alex/happy
20:11:27 <maerwald> and then is dragging a store of several hundred MBs with it
20:13:05 <monochrom> Here is the angle that I like and I would like you to consider. The Value type is able to represent "V = Integer + Bool + (V -> V)", or at least a larger enough subset of (V->V) that matters.
20:13:49 <monochrom> The denotational people have concluded that "V = ... + (V->V)" is where untyped lambda calculus got all its unrestricted recursive power.
20:14:21 <monochrom> (And it costed them a lot to prove that such a V exists in the first place.)
20:15:59 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 246 seconds)
20:16:01 hatds joins (~hatds@c-107-4-136-72.hsd1.mn.comcast.net)
20:16:19 <monochrom> Or put it in another way, if your code syntax doesn't support any kind of recursion or looping, but your data syntax supports "V = V -> ???", roughly speaking recursive data at covariant positions, you've restored recursion.
20:16:25 <tomsmeding> I'd need to consider that in more detail to see how exactly this is different from the simply-typed lambda calculus case. (Presumably your "large enough subset")
20:17:13 × neurocyte013288 quits (~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat)
20:17:27 <tomsmeding> this feels a lot like Chomsky's claim that all languages should have recursion as a common ingredient
20:17:39 <tomsmeding> and then you have that weird amazonian language that actually doesn't (or so it seems)
20:18:03 <tomsmeding> (Piraha, in case you want to look up)
20:20:11 <tomsmeding> I guess the reason why I don't feel convinced by this thing that you need self-reference to do useful computation, is that it's a philosophical argument, I think. I don't see actual practical use of that argument in my life. And I engage in philosophy only very selectively :p
20:20:59 <Franciman> fwiw there are some arguing the opposite, i.e. that inductive data types + coinductive data types + higher order functions in a total language are enough
20:21:14 <tomsmeding> But I'm probably missing something. In any case it's bedtime for me; monochrom: tomorrow I'll check the logs :)
20:21:18 <Franciman> only thing that gets funky is that you can't write a self interpreter in a total language
20:21:28 <Franciman> but you can write a compiler, at least :)
20:22:10 <dolio> You can write a self-interpreter for some notion of "interpreter", though.
20:22:43 × danso quits (~danso@23-233-111-52.cpe.pppoe.ca) (Quit: WeeChat 3.2)
20:23:00 <Franciman> uh dolio could you expand a bit?
20:23:20 <Franciman> are saying that you can like, convert the source code in python and run it?
20:23:28 <dolio> https://popl16.sigplan.org/details/POPL-2016-papers/52/Breaking-Through-the-Normalization-Barrier-A-Self-Interpreter-for-F-omega
20:23:35 <Franciman> ty
20:23:52 <hatds> I'm trying to make a "package1.tar.gz" produced by "cabal sdist all" available as a "local repo" to package2, so that package2 can depend on package1 in an offline manner and without using ghc's notion of global/user package dbs. I've found this: https://cabal.readthedocs.io/en/latest/installing-packages.html#local-no-index-repositories but I don't even know if I'm doing it right: I put those two lines in both the "package1.project"
20:23:53 <hatds> file and "package2.project" file. Does that sound right? "cabal build" now gives the error: "/C:/ghc/cabal/local-repo\noindex.timestamp: openFile: invalid argument (Invalid argument)"
20:24:34 <dolio> It's not the sort of interpreter like for Python.
20:25:02 <Franciman> this is rad
20:25:17 <dolio> It's an interpreter from internally represented 'source code' to a semantic interpretation.
20:25:52 <sclv> hatds: looks line a path / file separator issue
20:26:05 <monochrom> Here is something that points toward the significance of "V = V->V". (\x -> x x) is allowed in untyped. What would you do to give it a type? You first run into "occurs check, infinite type: a ~ a->a". Eh? This means if you're allowed to define your own recursive type inspired by "a ~ a->a" and add wrappers/unwrappers to make "(\x -> x x)" go through, you're good to go.
20:26:25 <dolio> So, like, you represent lambda terms and then 'interpret' them into functions in the language you're using to represent the lambda terms.
20:26:46 lavaman joins (~lavaman@98.38.249.169)
20:27:10 <sclv> hatds: but you can just add an explicit reference to project1’s cabal file in project2
20:27:24 <dolio> But not reducing the lambda terms to a normal form or something.
20:27:53 <hatds> sclv: if I switch the path separators to a blackslash (or pair of blackslashes) I get a parse error
20:28:55 <hatds> sclv: I was doing that, but that doesn't work if I want old versions of package1 lying around. I'd have to manually rollback the project folder every time it was needed
20:28:55 <sclv> the feature might not work well in certain windows configs, its pretty obscure
20:29:06 Null_A joins (~null_a@2601:645:8700:2290:e8ac:2b75:e714:d893)
20:29:53 × Null_A quits (~null_a@2601:645:8700:2290:e8ac:2b75:e714:d893) (Remote host closed the connection)
20:30:03 <sclv> running with high verbosity could give some hints
20:30:07 Null_A joins (~null_a@2601:645:8700:2290:e8ac:2b75:e714:d893)
20:30:12 <hatds> good idea
20:31:17 <hatds> it just says Reading available packages of my-local-repository...
20:31:28 <hatds> and then the error
20:31:35 <hatds> so it is finding the directory OK
20:31:46 maerwald[m] joins (~maerwaldm@user/maerwald)
20:32:01 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 252 seconds)
20:32:12 hyiltiz joins (~quassel@31.220.5.250)
20:33:09 <hatds> how is cabal supposed to create the .cache or whatever in these local-repos? Do I have to do a command while inside package1? Does package1 need to know where the local-repo so cabal can put it there, or can I just copy/paste the result of cabal sdist?
20:38:02 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:f81d:7133:81c9:b91d) (Remote host closed the connection)
20:40:11 <Guest20> I have two directories of text files, say TestInputs and TestOutputs. they are rather sizable. I want to integrate these tests into HSpec but I'm not sure if I need to do it by hand
20:40:44 × jtomas quits (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Ping timeout: 245 seconds)
20:40:49 <Guest20> can I for example have the "it" description be the file name?
20:41:04 justache is now known as justHaunt
20:41:50 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
20:42:07 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
20:44:35 DNH joins (~DNH@2a02:8108:1100:16d8:d1f8:65da:debb:16ba)
20:44:52 × ec quits (~ec@gateway/tor-sasl/ec) (Quit: ec)
20:45:20 × Skyfire quits (~pyon@user/pyon) (Quit: WeeChat 3.3)
20:45:41 Skyfire joins (~pyon@user/pyon)
20:45:49 <Guest20> basically I have no idea how to write a Spec.hs given input/output files
20:46:06 <Guest20> I need to "loop" over them
20:50:24 × michalz quits (~michalz@185.246.204.93) (Remote host closed the connection)
20:50:47 rekahsoft joins (~rekahsoft@2605:8d80:6e1:e79b:d89:2184:8ba7:bd43)
20:51:51 × Guest71 quits (~Guest71@a79-169-181-190.cpe.netcabo.pt) (Quit: Client closed)
20:53:01 olibiera joins (~olibiera@a79-169-181-190.cpe.netcabo.pt)
20:53:26 × olibiera quits (~olibiera@a79-169-181-190.cpe.netcabo.pt) (Client Quit)
21:00:19 × wonko quits (~wjc@62.115.229.50) (Ping timeout: 245 seconds)
21:01:54 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
21:02:53 <dsal> Are you doing some kind of golden tests?
21:04:25 × DNH quits (~DNH@2a02:8108:1100:16d8:d1f8:65da:debb:16ba) (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:05:44 × mikoto-chan quits (~mikoto-ch@83.137.2.247) (Ping timeout: 245 seconds)
21:12:36 × infinity0 quits (~infinity0@occupy.ecodis.net) (Remote host closed the connection)
21:12:49 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 245 seconds)
21:13:12 infinity0 joins (~infinity0@occupy.ecodis.net)
21:13:40 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
21:13:40 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
21:13:40 wroathe joins (~wroathe@user/wroathe)
21:16:39 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
21:19:45 Pickchea joins (~private@user/pickchea)
21:21:51 Guest__ joins (~private@185.31.55.18.dyn.kraftcom.at)
21:21:59 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 245 seconds)
21:23:51 ubert joins (~Thunderbi@178.115.35.209.wireless.dyn.drei.com)
21:24:27 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f81d:7133:81c9:b91d)
21:25:10 Cajun joins (~Cajun@user/cajun)
21:25:14 olibiera joins (~olibiera@a79-169-181-190.cpe.netcabo.pt)
21:25:29 × hatds quits (~hatds@c-107-4-136-72.hsd1.mn.comcast.net) (Quit: Leaving)
21:26:43 <olibiera> hi guys, im having trouble figuring out why i cant compile this piece of code, any help would be amazing
21:26:46 <olibiera> palavras :: [String]
21:26:47 <olibiera> palavras = [x ++ y ++ z ++ m ++ n| x <- [a,e,i,o,u], y <- [a..z], z <- [a,e,i,o,u], m <- [a,e,i,o,u], n <- [a..z], z /= m]
21:27:55 <geekosaur> for one, it looks like you missed some '' around a bunch of Char literals?
21:28:08 <geekosaur> > ['a'..'z']
21:28:09 <lambdabot> "abcdefghijklmnopqrstuvwxyz"
21:28:23 <olibiera> oh
21:28:36 <olibiera> so thats it thx
21:29:09 × Guest__ quits (~private@185.31.55.18.dyn.kraftcom.at) (Quit: Leaving)
21:29:13 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
21:30:31 <monochrom> Looks like you want [x,y,z,m,n] rather than the ++ chain.
21:31:03 <geekosaur> that too, it'll be a type mismatch otherwise
21:31:21 <geekosaur> > 'x' ++ 'y' -- this mismatch
21:31:22 <lambdabot> error:
21:31:22 <lambdabot> • Couldn't match expected type ‘[a]’ with actual type ‘Char’
21:31:22 <lambdabot> • In the first argument of ‘(++)’, namely ‘'x'’
21:32:46 <xsperry> you could also store ['a'..'z'] and ['a','e','i','o','u'] in a variable, instead of repeating them multiple times
21:32:52 <dsal> > let vowels = "aeiou"; letters = ['a' .. 'z'] in [[x,y,z,m,n] | x <- vowels, y <- letters, z <- vowels, m <- letters, n <- letters, z /= m]
21:32:53 <lambdabot> ["aaaba","aaabb","aaabc","aaabd","aaabe","aaabf","aaabg","aaabh","aaabi","aa...
21:33:39 × chomwitt quits (~chomwitt@94.66.61.137) (Ping timeout: 245 seconds)
21:38:28 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
21:38:28 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
21:38:28 wroathe joins (~wroathe@user/wroathe)
21:39:39 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:f81d:7133:81c9:b91d) (Remote host closed the connection)
21:43:16 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds)
21:43:45 <olibiera> how can u tag someone in the chat?
21:44:37 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
21:45:07 <olibiera> ok nvm, dsal thx again for the help
21:45:59 <[exa]> olibiera: tag like this here
21:48:37 × acidjnk_new quits (~acidjnk@p200300d0c703cb83c18eec9e6894a9d9.dip0.t-ipconnect.de) (Remote host closed the connection)
21:49:00 acidjnk_new joins (~acidjnk@p200300d0c703cb83c18eec9e6894a9d9.dip0.t-ipconnect.de)
21:52:19 <monochrom> No formal tagging system.
21:52:58 _abrantesasf_ joins (~abrantesa@187.36.170.211)
21:53:37 <geekosaur> many clients will notice names in the middle of a line, even
21:53:38 × _abrantesasf_ quits (~abrantesa@187.36.170.211) (Remote host closed the connection)
21:53:47 × olibiera quits (~olibiera@a79-169-181-190.cpe.netcabo.pt) (Quit: Client closed)
21:54:31 abrantesasf joins (~abrantesa@187.36.170.211)
21:56:49 <awpr> my hobby: configuring IRC clients to notify me when my nick is a subsequence of any message
21:57:22 <Franciman> saw plotkin
21:57:40 <Franciman> oh i fail'd
21:58:42 <Franciman> I saw probably a good paper saying laziness helps with modularitya
21:59:09 DNH joins (~DNH@2a02:8108:1100:16d8:d1f8:65da:debb:16ba)
21:59:38 <awpr> don't even need "probably" -- "sAW" "PapeR"
22:00:01 <Franciman> i wonder, is there a way to mix strictness with this added modularity
22:00:36 <Franciman> lol awpr
22:01:10 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 252 seconds)
22:03:38 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
22:04:19 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
22:06:04 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 252 seconds)
22:07:25 × doyougnu quits (~user@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection)
22:07:49 × ubert quits (~Thunderbi@178.115.35.209.wireless.dyn.drei.com) (Ping timeout: 245 seconds)
22:10:08 × rekahsoft quits (~rekahsoft@2605:8d80:6e1:e79b:d89:2184:8ba7:bd43) (Ping timeout: 250 seconds)
22:17:19 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f81d:7133:81c9:b91d)
22:19:22 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
22:26:53 × acidjnk_new quits (~acidjnk@p200300d0c703cb83c18eec9e6894a9d9.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
22:30:18 × emf quits (~emf@2620:10d:c090:400::5:5481) (Ping timeout: 260 seconds)
22:30:52 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
22:30:52 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
22:30:52 wroathe joins (~wroathe@user/wroathe)
22:35:19 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 245 seconds)
22:38:39 <cdsmith> You ought to be able to derive Bounded for an ADT with all Bounded fields. GHC says it has to be an enumeration type or have only one constructor. Is there a reason I'm missing?
22:39:13 <awpr> https://hackage.haskell.org/package/finite-table `deriving Finite via Wrapped Generic MyADT`
22:39:14 <geekosaur> just because it's easier, I think
22:39:59 <geekosaur> but also possibly because you could argue about traversal order
22:40:42 <cdsmith> Bounded doesn't need a traversal order, does it?. Only a min and max bound.
22:41:46 <cdsmith> Well, I'm just being grumpy. I can write an instance.
22:42:14 <geekosaur> with only one field, that field specifies the order. with two, you can choose which order to increment the fields in
22:42:19 <awpr> ah yeah, that does seem to make sense even independently of a conversion to/from integers. for some reason I was thinking Bounded had an Enum superclass
22:42:39 <geekosaur> no, it just has some special behavior when combined with Enum
22:43:00 <geekosaur> (which is kinda sad as it should be split out, not just "special behavior")
22:43:03 <cdsmith> But two fields is fine if you have only one constructor? Or not? (I didn't try)
22:43:30 <cdsmith> > data Foo = Foo Int Int deriving (Bounded)
22:43:31 <lambdabot> <hint>:1:1: error: parse error on input ‘data’
22:43:40 <cdsmith> Too bad
22:43:41 <geekosaur> use yahb (% prefix)
22:43:54 <cdsmith> % data Foo = Foo Int Int deriving (Bounded)
22:43:55 <yahb> cdsmith:
22:44:02 <monochrom> Hrm, the Haskell 2010 exact wording (section 11.3) may be thought of as leaving it open. It has prescribed what happens to an enumeration, and what happens to a single-ctor type. But it interestingly lacks wording for either "nothing else allowed" or "what other scenerios are allowed".
22:44:03 <awpr> so Finite would be useful if it should also be Enum, but it doesn't do anything for e.g. `data Thing = Thing Float Bool`
22:44:41 <monochrom> My conjecture is that the committee could not reach a consensus so they just agreed to say nothing. :)
22:44:43 <cdsmith> % data Bar = Bar1 Int | Bar2 Int deriving (Bounded)
22:44:43 <yahb> cdsmith: ; <interactive>:2:42: error:; * Can't make a derived instance of `Bounded Bar':; `Bar' must be an enumeration type (an enumeration consists of one or more nullary, non-GADT constructors); or; `Bar' must have precisely one constructor; * In the data declaration for `Bar'
22:44:46 <awpr> if I don't have an `instance Bounded (Wrapped Finite a)` I definitely should
22:45:02 <cdsmith> % data Baz = Baz1 | Baz2
22:45:02 <yahb> cdsmith:
22:45:05 × CiaoSen quits (~Jura@p200300c9571e34002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
22:45:14 <cdsmith> % data Baz = Baz1 | Baz2 deriving (Bounded)
22:45:14 <yahb> cdsmith:
22:45:44 <cdsmith> Yep, time to get out the ghc-proposal writing pen, I guess. Except that's a lot of work...
22:46:16 <awpr> could just write a Generic instance, e.g. cribbing from `wrapped-generic-default`
22:46:45 <cdsmith> It's three lines of code to write a normal instance, though. Like I said, I'm being grumpy. :)
22:47:07 <monochrom> This one should be not too bad. "For multi-ctors, minBound = 1stctor minBound's, maxBound = lastctor maxBound's" is on par with the quality of writing of Haskell 2010. :)
22:47:09 <awpr> it's 300 lines of code to write 100 normal instances :)
22:47:15 <cdsmith> I mostly wondered if there was some good reason I was missing
22:47:48 × Tuplanolla quits (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
22:48:22 <monochrom> I think something is fishy here. Because 11.2 Enum for example, there is wording explicitly saying "derivable for only such-and-such".
22:48:36 <monochrom> But no such wording for Bounded.
22:49:23 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
22:49:23 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
22:49:23 wroathe joins (~wroathe@user/wroathe)
22:49:54 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 245 seconds)
22:51:49 × yielduck quits (~yielduck@176.120.238.10) (Remote host closed the connection)
22:52:06 yielduck joins (~yielduck@176.120.238.10)
22:53:37 <cdsmith> monochrom: I guess you could argue that the report just leaves the behavior unspecified. But it clearly doesn't specify a behavior, so I'm happier assuming the report makes it illegal than allowing undefined behavior so easily.
22:54:12 × hiruji quits (~hiruji@user/hiruji) (Read error: Connection reset by peer)
22:54:41 hiruji joins (~hiruji@user/hiruji)
22:58:04 × chele quits (~chele@user/chele) (Remote host closed the connection)
22:59:31 <monochrom> The other annoying part of Haskell 2010 is that even "data/newtype X = MkX Bool" is not eligible for deriving Enum.
23:00:16 <cdsmith> Yeah, makes sense for more than one field, but could be allowed for one field.
23:00:28 <monochrom> The stated condition is "only possible for enumerations". They didn't even kindly add "or single-ctor single-field where the field type has Enum".
23:01:17 <monochrom> Overall I sense that the committee was being very, very paranoid about this.
23:04:55 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
23:09:04 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 245 seconds)
23:11:11 hyiltiz joins (~quassel@31.220.5.250)
23:11:37 <Cajun> well what was the paranoia founded in? there must have been *some* reasoning, right?
23:12:31 <geekosaur> sadly I think the documentation about why the language committee made its decisions is long gone
23:12:55 <geekosaur> (and the 2010 docs would not help, this was copied straight from the H98 report)
23:18:14 mestre joins (~mestre@191.177.175.57)
23:21:34 × Null_A quits (~null_a@2601:645:8700:2290:e8ac:2b75:e714:d893) (Remote host closed the connection)
23:21:50 Null_A joins (~null_a@2601:645:8700:2290:e8ac:2b75:e714:d893)
23:24:17 × max22- quits (~maxime@2a01cb088335980036d4a1972afb126b.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
23:29:34 × hiruji quits (~hiruji@user/hiruji) (Quit: ZNC 1.8.2 - https://znc.in)
23:30:24 hiruji joins (~hiruji@user/hiruji)
23:30:58 × DNH quits (~DNH@2a02:8108:1100:16d8:d1f8:65da:debb:16ba) (Quit: Textual IRC Client: www.textualapp.com)
23:31:29 theproffesor joins (~theproffe@2601:282:847f:8010::c471)
23:31:29 × theproffesor quits (~theproffe@2601:282:847f:8010::c471) (Changing host)
23:31:29 theproffesor joins (~theproffe@user/theproffesor)
23:32:59 × Null_A quits (~null_a@2601:645:8700:2290:e8ac:2b75:e714:d893) (Remote host closed the connection)
23:33:39 Null_A joins (~null_a@2601:645:8700:2290:e8ac:2b75:e714:d893)
23:36:38 theproffesor parts (~theproffe@user/theproffesor) (Leaving)
23:40:51 × goepsilongo quits (~chacho@2603-7000-ab00-62ed-e8e0-40c9-c788-8ef8.res6.spectrum.com) (Quit: Konversation terminated!)
23:41:08 × vysn quits (~vysn@user/vysn) (Ping timeout: 250 seconds)
23:51:30 × srk quits (~sorki@user/srk) (Ping timeout: 260 seconds)
23:52:33 srk joins (~sorki@user/srk)
23:59:30 lbseale_ is now known as lbseale

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