Home liberachat/#haskell: Logs Calendar

Logs on 2023-03-06 (liberachat/#haskell)

00:00:31 <hammond> I'm just trying to see if the compiler can tell this, two reverses on a list is the same as though i didn't do anything to it, and instead of calling the function, it decides not to call it at all.
00:00:48 <monochrom> Sigh your lecturer is wrong too.
00:00:59 <hammond> ok
00:01:01 <mauke> it is not the same as doing nothing
00:01:06 <mauke> see my example above
00:01:06 <monochrom> The compiler doesn't know this.
00:01:11 <hammond> so i have to be careful
00:01:27 <monochrom> The real reason you don't worry about efficiency at this stage is solely that you're just starting.
00:01:46 <mauke> yes, but more for reasons of "will this terminate at all?", not efficiency per se
00:02:01 <monochrom> We don't even talk about performance in front of C beginners.
00:02:58 × euandreh quits (~Thunderbi@189.6.18.7) (Quit: euandreh)
00:03:40 johnw joins (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
00:04:06 jwiegley joins (~jwiegley@76-234-69-149.lightspeed.frokca.sbcglobal.net)
00:04:32 <monochrom> At the beginner level the most you can do is stay at the leve of big-O.
00:04:37 <johnjaye> surprised ghc is written in c, i thought it would be c++
00:05:24 <mauke> ?? it's written in Haskell
00:05:24 <lambdabot> it's written in Haskell
00:05:49 <johnjaye> well don't tell wikipedia that.
00:05:56 <johnjaye> > Written in Haskell and C
00:05:58 <lambdabot> <hint>:1:9: error: parse error on input ‘in’
00:06:54 <monochrom> > "written in Haskell and C" == "written in C"
00:06:56 <lambdabot> False
00:07:34 <monochrom> (P.S. No, no one knows what you "meant".)
00:08:27 mauke_ joins (~mauke@user/mauke)
00:08:29 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9169:384f:bf1b:a487) (Remote host closed the connection)
00:08:33 <hpc> ghc is written in c the same way gcc is written in assembly
00:08:44 <mauke_> "GHC itself is written in Haskell,[11] but the runtime system for Haskell, essential to run programs, is written in C and C--."
00:08:50 <mauke_> as I was saying
00:09:35 × mauke quits (~mauke@user/mauke) (Ping timeout: 248 seconds)
00:09:36 mauke_ is now known as mauke
00:10:36 <johnjaye> so the c isn't necessarily even part of the algorithm, it's just glue to enable you to run the compiler?
00:11:02 <johnjaye> like the gnu assembler makes those start and exit routines when you assemble a file
00:11:34 <dsal> You can just look. https://github.com/ghc/ghc has a "Languages" section which describes the repo as a whole.
00:12:30 <mauke> ... which is a wild guess and highly inaccurate
00:13:23 <mauke> for example, all the tests are mislabeled as "Terra"
00:13:23 × king_gs quits (~Thunderbi@187.201.41.239) (Read error: Connection reset by peer)
00:14:50 king_gs joins (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7)
00:16:16 <dsal> Well, sure, but it takes you to what it considers C code and you can look around. I don't think it confuses C code for Haskell code.
00:17:49 <mauke> if you put it in a file called something.c, sure it will
00:18:06 <dsal> Does the ghc code do that a lot?
00:19:39 mrcsno is now known as mrcsno_afk
00:20:03 <mauke> probably not, but are you going to check all the .c and .h files? :-)
00:20:15 × CiaoSen quits (~Jura@p200300c9570e91002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
00:20:44 × king_gs quits (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7) (Remote host closed the connection)
00:20:46 <mauke> oh hell yeah, it misdetects 118 files as Raku
00:20:51 <mauke> (they're actually Python)
00:21:28 <dsal> No. Just pointing out that the code's there if someone wants to ponder which parts are haskell and which parts are c. You don't have to trust the github tool, but it does take you things it identifies.
00:22:26 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
00:22:26 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
00:22:26 wroathe joins (~wroathe@user/wroathe)
00:24:00 × gurkenglas quits (~gurkengla@dynamic-046-114-177-117.46.114.pool.telefonica.de) (Ping timeout: 248 seconds)
00:24:00 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
00:27:51 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 255 seconds)
00:28:51 × acidjnk_new quits (~acidjnk@p200300d6e715c44791275394656fcc6d.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
00:29:06 × stackdroid18 quits (14094@de1.hashbang.sh) (Quit: hasta la vista... tchau!)
00:33:14 mmhat joins (~mmh@p200300f1c72dcd21ee086bfffe095315.dip0.t-ipconnect.de)
00:34:40 jmorris joins (uid537181@id-537181.uxbridge.irccloud.com)
00:35:42 bilegeek_ joins (~bilegeek@161.sub-174-208-233.myvzw.com)
00:36:10 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
00:37:30 × jumper149 quits (~jumper149@base.felixspringer.xyz) (Quit: WeeChat 3.8)
00:38:12 × bilegeek quits (~bilegeek@2600:1008:b021:4218:6410:3e2f:ccc:adc4) (Ping timeout: 255 seconds)
00:38:53 × pera quits (~pera@user/pera) (Quit: leaving)
00:43:56 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:9169:384f:bf1b:a487)
01:03:41 × andrewboltachev quits (~andrey@178.141.199.8) (Quit: Leaving.)
01:10:57 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:13:34 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
01:17:04 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:20:09 × xff0x quits (~xff0x@ai098135.d.east.v6connect.net) (Ping timeout: 255 seconds)
01:29:04 grnman_ joins (~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net)
01:47:09 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds)
01:51:25 × robobub quits (uid248673@id-248673.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
02:02:44 × sagax quits (~sagax_nb@user/sagax) (Quit: Konversation terminated!)
02:10:04 × alecs quits (~alecs@host-79-44-188-195.retail.telecomitalia.it) (Quit: WeeChat 3.8)
02:10:10 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
02:11:12 × vglfr quits (~vglfr@145.224.100.65) (Ping timeout: 248 seconds)
02:21:22 × bilegeek_ quits (~bilegeek@161.sub-174-208-233.myvzw.com) (Remote host closed the connection)
02:21:24 × azimut_ quits (~azimut@gateway/tor-sasl/azimut) (Quit: ZNC - https://znc.in)
02:21:41 bilegeek_ joins (~bilegeek@161.sub-174-208-233.myvzw.com)
02:21:56 azimut joins (~azimut@gateway/tor-sasl/azimut)
02:23:18 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
02:23:57 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds)
02:24:37 Lord_of_Life_ is now known as Lord_of_Life
02:31:20 justsomeguy joins (~justsomeg@user/justsomeguy)
02:33:30 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 255 seconds)
02:45:37 emmanuelux_ joins (~emmanuelu@user/emmanuelux)
02:47:53 Lycurgus joins (~juan@user/Lycurgus)
02:48:42 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Ping timeout: 255 seconds)
02:49:06 × emmanuelux_ quits (~emmanuelu@user/emmanuelux) (Client Quit)
02:51:12 × hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 248 seconds)
02:52:46 emmanuelux joins (~emmanuelu@user/emmanuelux)
02:55:32 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds)
02:57:15 stiell joins (~stiell@gateway/tor-sasl/stiell)
03:03:58 razetime joins (~Thunderbi@117.254.34.243)
03:07:34 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:07:34 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:07:34 finn_elija is now known as FinnElija
03:14:51 hugo joins (znc@verdigris.lysator.liu.se)
03:20:31 × mmhat quits (~mmh@p200300f1c72dcd21ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
03:23:16 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6)
03:32:37 × td_ quits (~td@i5387093C.versanet.de) (Ping timeout: 268 seconds)
03:34:22 td_ joins (~td@i53870927.versanet.de)
03:34:40 mmhat joins (~mmh@p200300f1c7052b40ee086bfffe095315.dip0.t-ipconnect.de)
03:37:08 × jero98772 quits (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) (Remote host closed the connection)
03:41:58 × razetime quits (~Thunderbi@117.254.34.243) (Remote host closed the connection)
03:42:57 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
03:43:46 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
03:48:39 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds)
03:54:50 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
03:56:17 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds)
03:56:51 stiell joins (~stiell@gateway/tor-sasl/stiell)
04:04:37 mbuf joins (~Shakthi@49.207.178.186)
04:07:59 tusko joins (~yeurt@user/tusko)
04:09:16 <tusko> I am brand-new to Haskell. I'm trying to compile hello world. It seems I can do this with `ghc --dynamic main.hs`, but I also use emacs with haskell-mode and when I isssue haskell-compile it tries to build this file with cabal.
04:09:31 <tusko> Is cabal usually involved in building software written in Haskell?
04:09:51 <sclv> yes
04:10:44 <tusko> Ok, so I will need to plan to write a .cabal file in every project directory. Is there a minimal example for what this file should contain?
04:11:19 <sclv> “cabal init” will generate one for you
04:11:32 <mauke> https://cabal.readthedocs.io/en/stable/getting-started.html
04:12:08 <tusko> thank you very much
04:12:09 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
04:12:50 <mauke> why --dynamic, though?
04:14:23 razetime joins (~Thunderbi@117.254.34.243)
04:15:42 <tusko> It was telling me it couldn't find Prelude
04:15:48 <tusko> that made it find
04:16:15 <mauke> interesting. what OS is this on?
04:17:26 Sgeo joins (~Sgeo@user/sgeo)
04:17:59 trev joins (~trev@user/trev)
04:18:04 <tusko> UwUntu
04:18:52 × johnjaye quits (~pi@173.209.64.74) (Ping timeout: 268 seconds)
04:19:36 <jackdk> what
04:20:12 johnjaye joins (~pi@173.209.64.74)
04:21:25 <mauke> https://uwuntuos.site/about-uwuntu/
04:22:55 × razetime quits (~Thunderbi@117.254.34.243) (Ping timeout: 248 seconds)
04:23:48 × grnman_ quits (~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net) (Ping timeout: 268 seconds)
04:26:28 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir)
04:30:42 ix joins (~ix@213.205.192.31)
04:39:25 razetime joins (~Thunderbi@117.254.34.243)
04:42:51 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 248 seconds)
04:43:54 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 255 seconds)
04:45:14 cassaundra joins (~cassaundr@c-73-25-18-25.hsd1.or.comcast.net)
04:45:23 × cassaundra quits (~cassaundr@c-73-25-18-25.hsd1.or.comcast.net) (Changing host)
04:45:23 cassaundra joins (~cassaundr@user/cassaundra)
05:06:40 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 248 seconds)
05:09:15 × razetime quits (~Thunderbi@117.254.34.243) (Quit: See You Space Cowboy)
05:12:21 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
05:13:11 × Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz)
05:24:23 × jmorris quits (uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
05:26:36 <Inst> ugh
05:26:42 <Inst> is the limitation on unboxed literals still extant?
05:26:52 <Inst> also, might there be a reason I might not want to use unboxed types?
05:27:06 <Inst> unboxed tuples, rather, i.e, it has to be immediately consumed, can't be affixed to a value
05:31:41 × adanwan_ quits (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 255 seconds)
05:32:02 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
05:32:09 <Inst> groan, this is a pain, it turns out I can't assign unboxed tuples to a variable
05:32:21 <Inst> best I can do is to have a datatype made from unboxed values, and it'll still be a lifted type
05:36:39 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 255 seconds)
05:38:46 Midjak joins (~Midjak@82.66.147.146)
05:41:01 jakalx joins (~jakalx@base.jakalx.net)
05:41:05 × ghostbuster quits (~admin@user/ghostbuster) (Quit: WeeChat 3.6)
05:45:17 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
05:47:03 razetime joins (~Thunderbi@117.254.34.243)
05:47:55 × polyphem_ quits (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17) (Ping timeout: 248 seconds)
05:48:53 × bilegeek_ quits (~bilegeek@161.sub-174-208-233.myvzw.com) (Quit: Leaving)
05:53:14 × razetime quits (~Thunderbi@117.254.34.243) (Quit: See You Space Cowboy)
05:56:26 Square2 joins (~Square4@user/square)
05:57:44 abhixec joins (~abhinav@c-67-169-139-16.hsd1.ca.comcast.net)
06:05:48 × jinsun quits (~jinsun@user/jinsun) (Ping timeout: 255 seconds)
06:07:20 mncheck joins (~mncheck@193.224.205.254)
06:11:41 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
06:17:28 × tubogram44 quits (~tubogram@user/tubogram) (Quit: See ya later!)
06:18:58 kenran joins (~user@user/kenran)
06:19:07 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
06:24:58 andrewboltachev joins (~andrey@178.141.199.8)
06:25:11 tubogram44 joins (~tubogram@user/tubogram)
06:26:00 × mcglk quits (~mcglk@131.191.19.145) (Quit: (seeya))
06:33:17 tdammers joins (~tdammers@219-131-178-143.ftth.glasoperator.nl)
06:34:32 × ix quits (~ix@213.205.192.31) (Ping timeout: 268 seconds)
06:44:41 ix joins (~ix@213.205.192.31)
06:47:32 vglfr joins (~vglfr@145.224.100.65)
06:48:01 mcglk joins (~mcglk@131.191.19.145)
06:48:02 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
06:50:31 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
06:50:34 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Quit: Lost terminal)
06:57:07 Maxdamantus joins (~Maxdamant@user/maxdamantus)
07:02:00 × freeside_ quits (~mengwong@103.252.202.85) (Ping timeout: 260 seconds)
07:04:10 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
07:10:14 × califax quits (~califax@user/califx) (Ping timeout: 255 seconds)
07:11:33 califax joins (~califax@user/califx)
07:15:21 jakalx parts (~jakalx@base.jakalx.net) ()
07:15:38 × AmyMalik quits (ellenor@callbox.trd.is) (Quit: Bye Open Projects!)
07:16:11 jakalx joins (~jakalx@base.jakalx.net)
07:17:22 Ellenor joins (ellenor@callbox.trd.is)
07:18:19 pyook joins (~pyook@user/puke)
07:19:32 <dminuoso> 08:15:02 Inst | [05:26:51] also, might there be a reason I might not want to use unboxed types?
07:19:37 <dminuoso> Premature optimization
07:20:03 × dcoutts_ quits (~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net) (Ping timeout: 255 seconds)
07:20:10 <Inst> this is going to be a rewrite
07:20:31 <Inst> also does anyone know if there's good tutorials for streamly? I'm trying to learn the library right now, not sure how to use it in such a way that I don't blow up my face
07:20:33 × dcoutts quits (~duncan@82.15.57.30) (Ping timeout: 252 seconds)
07:21:21 dcoutts_ joins (~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net)
07:21:23 dcoutts joins (~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net)
07:24:09 <jackdk> My answer to any streaming question more complicated than "I want to connect this conduit source to this conduit sink": Just use `streaming`.
07:33:39 <dminuoso> jackdk: I feel like streaming has an unintuitive interface for a beginner.
07:34:03 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:34:37 <[exa]> beginners ain't gonna magically become advanced themselves
07:34:42 <dminuoso> `Stream can be used wherever FreeT or Coroutine are used.`
07:34:55 <dminuoso> If his is the introductory line of `streaming`, I really do wonder whether the authors do not want fresh beginners to use their library.
07:35:41 <dminuoso> (The rest of the paragraph isnt much better)
07:36:13 × ix quits (~ix@213.205.192.31) (Read error: Connection reset by peer)
07:37:20 jinsun joins (~jinsun@user/jinsun)
07:38:14 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
07:38:28 Ellenor is now known as AmyMalik
07:38:45 <dminuoso> Im sure that if you understand streaming, its easy to work with. But really the entire documentation of it seems to invite only users who already have semigroupoids, kan-extensions and free in their dependencies.
07:39:49 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
07:41:21 ix joins (~ix@213.205.192.31)
07:42:59 <jackdk> The description on its hackage page is a lot better
07:43:48 × Midjak quits (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
07:47:18 × ix quits (~ix@213.205.192.31) (Read error: Connection reset by peer)
07:48:47 michalz joins (~michalz@185.246.204.107)
07:52:30 zeenk joins (~zeenk@2a02:2f04:a20d:f900::7fe)
07:52:35 ix joins (~ix@213.205.192.31)
07:57:15 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
07:57:19 freeside joins (~mengwong@103.252.202.85)
07:57:55 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
07:59:58 random-jellyfish joins (~random-je@user/random-jellyfish)
08:01:17 gastus joins (~gastus@185.6.123.188)
08:04:59 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
08:07:30 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
08:14:15 acidjnk_new joins (~acidjnk@p200300d6e715c447314bc12d87d6546d.dip0.t-ipconnect.de)
08:14:31 <mauke> heh. streaming has atrocious documentation
08:15:13 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
08:15:14 <mauke> a good chunk of it is unhinged ranting, and halfway through it just stops
08:15:34 <mauke> like, mid-sentence
08:17:20 <mauke> and yeah, it is written for people who already know and understand the library
08:18:34 akegalj joins (~akegalj@93-138-138-203.adsl.net.t-com.hr)
08:18:34 × dcoutts_ quits (~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net) (Read error: Connection reset by peer)
08:18:46 dcoutts_ joins (~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net)
08:22:31 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
08:24:19 irrgit__ joins (~irrgit@146.70.27.242)
08:24:44 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Quit: ZNC - https://znc.in)
08:24:52 lortabac joins (~lortabac@2a01:e0a:541:b8f0:1d87:971:a878:a02f)
08:25:15 azimut joins (~azimut@gateway/tor-sasl/azimut)
08:27:16 × irrgit_ quits (~irrgit@146.70.27.218) (Ping timeout: 252 seconds)
08:28:16 × dcoutts_ quits (~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net) (Remote host closed the connection)
08:29:28 dcoutts_ joins (~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net)
08:37:21 alex` joins (~user@45.red-83-36-44.dynamicip.rima-tde.net)
08:43:17 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:45:04 × MasseR46 quits (thelounge@2001:bc8:47a0:1521::1) (Quit: The Lounge - https://thelounge.chat)
08:46:47 MasseR46 joins (thelounge@2001:bc8:47a0:1521::1)
08:48:05 <freeside> "unexpected end to stream"
08:49:19 × wrengr quits (~wrengr@201.59.83.34.bc.googleusercontent.com) (Remote host closed the connection)
08:55:29 whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com)
09:00:06 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
09:01:50 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
09:02:24 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
09:02:39 jespada joins (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net)
09:03:22 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
09:05:54 <mauke> https://hackage.haskell.org/package/streaming-0.2.3.1/docs/Streaming.html#v:untilJust
09:06:31 × dcoutts_ quits (~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net) (Remote host closed the connection)
09:11:31 npm_i_kurbus joins (~npm_i_kur@user/kurbus)
09:16:17 × npm_i_kurbus quits (~npm_i_kur@user/kurbus) (Client Quit)
09:17:03 <dminuoso> The one thing that makes servant bearable, is that it has a very easy documentation detailing how to get started an how to do simple things.
09:17:06 × Inst quits (~Inst@2601:6c4:4081:54f0:4dc:ae3f:dfd:1774) (Read error: Connection reset by peer)
09:17:10 <dminuoso> And very thoroguh documentation.
09:17:23 <dminuoso> It makes you almost not even notice the sheer complexity of the type tricks that happen.
09:17:37 <dminuoso> At any rate, this is a solveable problem for `streaming`.
09:18:21 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
09:20:57 Guest65 joins (~Guest65@192.234.91.20)
09:22:38 xiliuya joins (~xiliuya@user/xiliuya)
09:23:14 gehmehgeh joins (~user@user/gehmehgeh)
09:23:55 cfricke joins (~cfricke@user/cfricke)
09:26:56 gehmehgeh is now known as gmg
09:27:40 × ft quits (~ft@p3e9bc443.dip0.t-ipconnect.de) (Quit: leaving)
09:31:27 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9169:384f:bf1b:a487) (Remote host closed the connection)
09:31:33 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds)
09:40:21 × alex` quits (~user@45.red-83-36-44.dynamicip.rima-tde.net) (Read error: Connection reset by peer)
09:40:35 alex` joins (~user@45.red-83-36-44.dynamicip.rima-tde.net)
09:45:16 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
09:46:06 × acidjnk_new quits (~acidjnk@p200300d6e715c447314bc12d87d6546d.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
09:50:46 × zeenk quits (~zeenk@2a02:2f04:a20d:f900::7fe) (Quit: Konversation terminated!)
10:04:49 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 268 seconds)
10:05:22 mixfix41 joins (~sdenynine@user/mixfix41)
10:09:36 × dcoutts quits (~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net) (Remote host closed the connection)
10:09:47 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 255 seconds)
10:10:14 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds)
10:10:39 dcoutts joins (~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net)
10:11:02 × dcoutts quits (~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net) (Remote host closed the connection)
10:11:30 dcoutts joins (~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net)
10:13:40 × xiliuya quits (~xiliuya@user/xiliuya) (Quit: leaving)
10:14:34 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
10:18:27 × alex` quits (~user@45.red-83-36-44.dynamicip.rima-tde.net) (Ping timeout: 260 seconds)
10:21:05 alex` joins (~user@45.red-83-36-44.dynamicip.rima-tde.net)
10:24:28 stiell joins (~stiell@gateway/tor-sasl/stiell)
10:27:43 × mmhat quits (~mmh@p200300f1c7052b40ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
10:28:05 mmhat joins (~mmh@p200300f1c7052b52ee086bfffe095315.dip0.t-ipconnect.de)
10:28:16 × dcoutts quits (~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net) (Read error: Connection reset by peer)
10:28:26 dcoutts joins (~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net)
10:29:35 × Guest65 quits (~Guest65@192.234.91.20) (Quit: Client closed)
10:29:36 × alex` quits (~user@45.red-83-36-44.dynamicip.rima-tde.net) (Ping timeout: 255 seconds)
10:30:27 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
10:30:37 __monty__ joins (~toonn@user/toonn)
10:31:55 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:9169:384f:bf1b:a487)
10:37:50 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9169:384f:bf1b:a487) (Ping timeout: 260 seconds)
10:47:33 cheater_ joins (~Username@user/cheater)
10:48:12 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
10:49:30 cheater__ joins (~Username@user/cheater)
10:50:29 × cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds)
10:50:35 cheater__ is now known as cheater
10:52:25 × cheater_ quits (~Username@user/cheater) (Ping timeout: 260 seconds)
10:56:25 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Quit: Lost terminal)
10:56:47 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
11:08:05 xff0x joins (~xff0x@ai098135.d.east.v6connect.net)
11:10:17 acidjnk_new joins (~acidjnk@p200300d6e715c447314bc12d87d6546d.dip0.t-ipconnect.de)
11:11:00 × dcoutts quits (~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net) (Ping timeout: 255 seconds)
11:11:37 dcoutts joins (~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net)
11:11:56 × ix quits (~ix@213.205.192.31) (Ping timeout: 246 seconds)
11:13:26 <fendor[m]> small lens question, when I have a lens like (lens .~ val) orig, what's the infix notation of that?
11:13:27 <Jade[m]1> Why do I get an error for `instance Num a => Num (a -> a) where` (`Illegal instance declaration for ‘Num (a -> a)’ (All instance types must be of the form (T a1 ... an)`)
11:13:27 <fendor[m]> I came up with `orig & lens .~ val`
11:13:27 <fendor[m]> just now
11:13:27 <fendor[m]> good enough or could it be better?
11:15:29 <kuribas> Jade[m]1: most likely you are missing an argument
11:15:43 <kuribas> Jade[m]1: to a function that returns an integer.
11:16:38 <kuribas> > (*) 2 + 3
11:16:39 <lambdabot> error:
11:16:39 <lambdabot> • No instance for (Num (Integer -> Integer))
11:16:39 <lambdabot> arising from a use of ‘e_123’
11:16:57 <ncf> fendor[m]: that's the standard idiom
11:17:18 <Jade[m]1> No, I get the error when trying to create that instance
11:17:51 <ncf> Jade[m]1: i think you need FlexibleInstances
11:18:11 <ncf> or make that b -> a
11:18:19 <fendor[m]> ncf, thank you!
11:18:20 <Jade[m]1> mhm, it says that but I'd like to know what it allows
11:20:19 <ncf> well, it tells you
11:20:33 <ncf> T a1 ... an where a1 ... an are *distinct type variables*
11:21:20 <kenran> (How) Is it possible to "dispatch" on certain types depending on runtime information? Example: Someone sends me some JSON, and there's some "type information" in there. Now after reading I want to use that on the type level. I don't know if my question makes sense without more context, but maybe you can point me to blog posts or other stuff that surely already exists :)
11:22:37 <ncf> the general answer is dependent types, the haskell answer is probably singletons
11:23:50 <kenran> ncf: dang, I feared as much. I guess I'll have to get familiar with singletons then. Our work application contains three services and does IPC with other Haskell binaries, so it arises quite often and is always a little painful.
11:24:01 <kenran> thanks!
11:25:32 <opqdonut> kenran: you won't necessarily need any fancy stuff. You can do something like `case messageType of "foo" -> handle (parseFoo message); "bar" -> handle (parseBar message)`
11:25:55 <opqdonut> where handle is a type class method, and parseFoo and parseBar produce concrete Foo and Bar outputs
11:27:22 <kenran> opqdonut: ahh thank you, that should fit in quite nicely in most places!
11:27:47 <opqdonut> if you want something just a bit fancier, you can have a type like `data AnyMessage = FooMessage Foo | BarMessage Bar | ...`
11:29:36 × dcoutts quits (~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net) (Ping timeout: 248 seconds)
11:33:35 dcoutts joins (~duncan@host213-122-124-241.range213-122.btcentralplus.com)
11:33:43 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:404f:ae08:50c4:925d)
11:35:57 <dminuoso> 12:13:27 fendor[m] | good enough or could it be better?
11:36:38 <dminuoso> fendor[m]: An infix operator can take two arguments, you have a total of three things (whole, lens and part), that by itself means the minimum number of operators is two.
11:37:05 <dminuoso> fendor[m]: So I have a genuine question: How can you reasonably expect this to become shorter?
11:38:12 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:404f:ae08:50c4:925d) (Ping timeout: 246 seconds)
11:44:20 dcoutts_ joins (~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net)
11:46:33 × dcoutts quits (~duncan@host213-122-124-241.range213-122.btcentralplus.com) (Ping timeout: 255 seconds)
11:49:43 × dcoutts_ quits (~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net) (Ping timeout: 252 seconds)
11:50:02 × biberu quits (~biberu@user/biberu) (Ping timeout: 252 seconds)
11:51:07 × random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed)
11:55:10 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
11:55:46 mechap joins (~mechap@user/mechap)
11:56:07 MajorBiscuit joins (~MajorBisc@145.94.156.212)
11:58:42 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
11:59:07 jpds joins (~jpds@gateway/tor-sasl/jpds)
12:09:36 cheater_ joins (~Username@user/cheater)
12:12:11 × cheater quits (~Username@user/cheater) (Ping timeout: 264 seconds)
12:12:21 cheater_ is now known as cheater
12:21:15 szkl joins (uid110435@id-110435.uxbridge.irccloud.com)
12:23:25 use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:3577:7d35:34e6:6624)
12:26:15 polyphem_ joins (~rod@2a02:810d:840:8754:39cf:f589:aabf:df80)
12:26:30 × Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Remote host closed the connection)
12:27:44 × mixfix41 quits (~sdenynine@user/mixfix41) (Ping timeout: 248 seconds)
12:29:50 × akegalj quits (~akegalj@93-138-138-203.adsl.net.t-com.hr) (Ping timeout: 260 seconds)
12:30:22 lyle joins (~lyle@104.246.145.237)
12:39:32 × cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds)
12:42:13 × tusko quits (~yeurt@user/tusko) (Remote host closed the connection)
12:42:36 ub joins (~Thunderbi@p548c84ba.dip0.t-ipconnect.de)
12:43:11 × ubert quits (~Thunderbi@p548c9fde.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
12:43:12 ub is now known as ubert
12:43:41 tusko joins (~yeurt@user/tusko)
12:45:57 ubert1 joins (~Thunderbi@2a02:8109:abc0:6434:69a1:e4e8:f403:6d0a)
12:48:32 × acidjnk_new quits (~acidjnk@p200300d6e715c447314bc12d87d6546d.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
12:50:23 cheater joins (~Username@user/cheater)
12:50:40 akegalj joins (~akegalj@89-164-104-80.dsl.iskon.hr)
12:52:35 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
12:55:48 cheater_ joins (~Username@user/cheater)
12:57:33 × cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds)
12:57:33 cheater_ is now known as cheater
12:59:04 × mei quits (~mei@user/mei) (Quit: mei)
13:00:46 mei joins (~mei@user/mei)
13:01:30 CiaoSen joins (~Jura@p200300c9570e91002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
13:02:31 cheater_ joins (~Username@user/cheater)
13:03:36 gurkenglas joins (~gurkengla@dynamic-046-114-177-117.46.114.pool.telefonica.de)
13:03:48 cheater__ joins (~Username@user/cheater)
13:05:30 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
13:05:33 cheater__ is now known as cheater
13:06:54 acidjnk_new joins (~acidjnk@p200300d6e715c447314bc12d87d6546d.dip0.t-ipconnect.de)
13:07:37 × cheater_ quits (~Username@user/cheater) (Ping timeout: 256 seconds)
13:13:17 × cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds)
13:14:13 cheater joins (~Username@user/cheater)
13:14:14 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
13:19:17 Inst joins (~Inst@2601:6c4:4081:54f0:d8ed:99cb:5666:6ba0)
13:19:32 <Inst> gah, this is killing me, is anyone running a windows machine and using sdl2?
13:20:23 <Inst> i'm getting some weird behavior, like, sdl2 seemingly contaminates builds, even if it's not explicitly imported, it just has to be in the package dependencies listing
13:20:44 × Fischmiep quits (~Fischmiep@user/Fischmiep) (Ping timeout: 246 seconds)
13:23:05 Fischmiep joins (~Fischmiep@user/Fischmiep)
13:25:00 king_gs joins (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7)
13:25:23 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
13:25:25 × king_gs quits (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7) (Client Quit)
13:26:08 × Fischmiep quits (~Fischmiep@user/Fischmiep) (Excess Flood)
13:26:38 <geekosaur> make sure you don't have any package environments sitting around
13:30:42 Fischmiep joins (~Fischmiep@user/Fischmiep)
13:31:35 <Inst> bleh, i'll look for the haskell games guys because they're the ones maintaining sdl2
13:31:40 <Inst> let's see if we can reproduce this crap
13:34:35 × mechap quits (~mechap@user/mechap) (Ping timeout: 260 seconds)
13:35:10 × Fischmiep quits (~Fischmiep@user/Fischmiep) (Ping timeout: 260 seconds)
13:36:07 mechap joins (~mechap@131.170.185.81.rev.sfr.net)
13:36:21 Fischmiep joins (~Fischmiep@user/Fischmiep)
13:37:06 enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
13:37:52 king_gs joins (~Thunderbi@187.201.41.239)
13:38:00 × king_gs quits (~Thunderbi@187.201.41.239) (Remote host closed the connection)
13:41:03 × Fischmiep quits (~Fischmiep@user/Fischmiep) (Ping timeout: 256 seconds)
13:43:32 Fischmiep joins (~Fischmiep@user/Fischmiep)
13:44:20 × mmhat quits (~mmh@p200300f1c7052b52ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.8)
13:45:03 × jle` quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 248 seconds)
13:46:22 ix joins (~ix@213.205.192.31)
13:46:55 jle` joins (~jle`@cpe-23-240-75-236.socal.res.rr.com)
13:54:08 alex` joins (~user@45.red-83-36-44.dynamicip.rima-tde.net)
13:54:20 × Fischmiep quits (~Fischmiep@user/Fischmiep) (Ping timeout: 252 seconds)
13:54:49 jero98772 joins (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff)
13:57:40 Fischmiep joins (~Fischmiep@user/Fischmiep)
13:59:30 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
14:00:41 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
14:02:02 × Fischmiep quits (~Fischmiep@user/Fischmiep) (Ping timeout: 246 seconds)
14:03:59 dcoutts joins (~duncan@host86-175-43-163.range86-175.btcentralplus.com)
14:04:35 thegeekinside joins (~thegeekin@189.141.115.134)
14:07:02 <kuribas> kenran: typically you would use a sum type for that.
14:08:55 × mei quits (~mei@user/mei) (Quit: mei)
14:12:03 × alex` quits (~user@45.red-83-36-44.dynamicip.rima-tde.net) (Remote host closed the connection)
14:14:09 × Square2 quits (~Square4@user/square) (Ping timeout: 255 seconds)
14:15:05 mei joins (~mei@user/mei)
14:18:26 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
14:18:57 <kuribas> kenran: don't even think about going to singletons or dependent types.
14:18:58 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
14:20:26 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 255 seconds)
14:23:36 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
14:25:35 × polyphem_ quits (~rod@2a02:810d:840:8754:39cf:f589:aabf:df80) (Ping timeout: 248 seconds)
14:25:51 ChanServ sets mode +o litharge
14:25:53 litharge sets mode -bo lambdap237!*@static.167.190.119.168.clients.your-server.de$##fix-your-connection litharge
14:26:15 jpds joins (~jpds@gateway/tor-sasl/jpds)
14:26:34 × ph88 quits (~ph88@ip5b426553.dynamic.kabel-deutschland.de) (Quit: Leaving)
14:26:40 polyphem_ joins (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17)
14:27:04 × mechap quits (~mechap@131.170.185.81.rev.sfr.net) (Quit: WeeChat 3.8)
14:30:38 × ix quits (~ix@213.205.192.31) (Ping timeout: 252 seconds)
14:35:35 × gurkenglas quits (~gurkengla@dynamic-046-114-177-117.46.114.pool.telefonica.de) (Ping timeout: 260 seconds)
14:35:44 × kenran quits (~user@user/kenran) (Remote host closed the connection)
14:35:56 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:404f:ae08:50c4:925d)
14:37:32 gurkenglas joins (~gurkengla@dynamic-046-114-156-015.46.114.pool.telefonica.de)
14:40:30 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:404f:ae08:50c4:925d) (Ping timeout: 260 seconds)
14:44:56 × cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds)
14:46:34 cheater joins (~Username@user/cheater)
14:46:55 × td_ quits (~td@i53870927.versanet.de) (Quit: waking up from the american dream ...)
14:48:20 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
14:53:12 ix joins (~ix@213.205.192.31)
14:54:11 td_ joins (~td@i53870927.versanet.de)
14:54:11 × akegalj quits (~akegalj@89-164-104-80.dsl.iskon.hr) (Ping timeout: 246 seconds)
15:00:05 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
15:00:05 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
15:00:05 wroathe joins (~wroathe@user/wroathe)
15:00:48 cheater_ joins (~Username@user/cheater)
15:02:18 × cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds)
15:02:23 cheater_ is now known as cheater
15:06:54 Sgeo joins (~Sgeo@user/sgeo)
15:08:53 × acidjnk_new quits (~acidjnk@p200300d6e715c447314bc12d87d6546d.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
15:08:55 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 246 seconds)
15:13:07 × cheater quits (~Username@user/cheater) (Ping timeout: 246 seconds)
15:14:15 cheater joins (~Username@user/cheater)
15:16:51 × son0p quits (~ff@181.136.122.143) (Ping timeout: 268 seconds)
15:18:41 × califax quits (~califax@user/califx) (Remote host closed the connection)
15:19:02 califax joins (~califax@user/califx)
15:19:20 akegalj_ joins (~akegalj@89-164-104-80.dsl.iskon.hr)
15:20:12 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
15:21:48 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
15:24:26 grnman_ joins (~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net)
15:34:07 × gurkenglas quits (~gurkengla@dynamic-046-114-156-015.46.114.pool.telefonica.de) (Ping timeout: 252 seconds)
15:35:56 Lycurgus joins (~juan@user/Lycurgus)
15:43:42 × mei quits (~mei@user/mei) (Remote host closed the connection)
15:44:29 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 255 seconds)
15:44:36 mei joins (~mei@user/mei)
15:48:29 × andrewboltachev quits (~andrey@178.141.199.8) (Quit: Leaving.)
15:50:46 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
15:51:24 L29Ah joins (~L29Ah@wikipedia/L29Ah)
15:52:00 × grnman_ quits (~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net) (Ping timeout: 248 seconds)
15:53:53 acidjnk_new joins (~acidjnk@p200300d6e715c410d9ae1c6a8a63c597.dip0.t-ipconnect.de)
16:02:11 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:1d87:971:a878:a02f) (Quit: WeeChat 2.8)
16:02:29 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 268 seconds)
16:03:03 × mncheck quits (~mncheck@193.224.205.254) (Ping timeout: 255 seconds)
16:04:26 Guest|6 joins (~Guest|6@194.83.11.20)
16:04:47 × Guest|6 quits (~Guest|6@194.83.11.20) (Client Quit)
16:08:06 × mbuf quits (~Shakthi@49.207.178.186) (Quit: Leaving)
16:08:21 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
16:10:08 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
16:13:22 king_gs joins (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7)
16:13:29 × king_gs quits (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7) (Client Quit)
16:13:55 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:404f:ae08:50c4:925d)
16:18:45 × Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz)
16:18:52 ghostbuster joins (~admin@user/ghostbuster)
16:29:36 × AlexZenon quits (~alzenon@178.34.160.55) (Ping timeout: 255 seconds)
16:29:51 × Alex_test quits (~al_test@178.34.160.55) (Ping timeout: 248 seconds)
16:30:23 × AlexNoo quits (~AlexNoo@178.34.160.55) (Ping timeout: 248 seconds)
16:33:03 AlexNoo joins (~AlexNoo@178.34.160.55)
16:33:30 <fendor[m]> miscommunication on my end, the question was not, can I shave off a character, but what's the idiomatic way to do it. Just because it type-checks does not mean it is idiomatic
16:33:31 <Jade[m]1> Is there a way to simplify this?... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/6610463f8537237c06ce48eccbe2004e5bde5fba>)
16:34:34 <Jade[m]1> especially because I need to do the exact same destructuring 5-6 times; Would it make sense to have a `destructure :: Function a -> (a -> a, Function a, String)` or is there a more idiomatic way?
16:35:11 <merijn> Jade[m]1: You don't have to destructure, you can just use the fields as accessors inline
16:35:25 Alex_test joins (~al_test@178.34.160.55)
16:35:47 <Jade[m]1> Ohh, right
16:36:06 <kuribas> Why are people going to advanced types, when they don't even know how to model in boring haskell?
16:36:22 AlexZenon joins (~alzenon@178.34.160.55)
16:36:28 <merijn> Jade[m]1: Like https://paste.tomsmeding.com/MQId86pg
16:36:29 <mauke> Jade[m]1: destructure is just positional pattern matching
16:36:31 <mauke> that still works
16:36:39 <merijn> kuribas: Because they get overly carried away
16:36:45 <merijn> mauke: I guess that works too, yeah
16:37:14 <merijn> kuribas: "some types are good, so more types must be better!"
16:37:56 Jade[m]1 sent a hs code block: https://libera.ems.host/_matrix/media/v3/download/libera.chat/62fa37287df6511e7f18a5e0cce6430b9d57032e
16:38:07 <Jade[m]1> yep, a lot better
16:38:43 <Jade[m]1> mauke: yeah, I even used it in the `toString`
16:39:02 <Jade[m]1> I know this, just didn't think of it haha
16:39:20 <mauke> Jade[m]1: no, your toString uses field accessors
16:40:17 <Jade[m]1> yeah that's what I meant
16:41:01 <mauke> are you confusing merijn and me?
16:41:58 <Jade[m]1> Didn't look at the names sorry
16:42:36 <Jade[m]1> I meant to say that I knew field accessors existed and that I used them in the `toString` but simply didn't think of them because I had the match anyways
16:43:09 <mauke> MkFunction f f' s + MkFunction g g' t = MkFunction (\x -> f x + g x) (f' + g') (s <> " + " <> t)
16:43:33 × ix quits (~ix@213.205.192.31) (Ping timeout: 255 seconds)
16:43:58 <Jade[m]1> ahh, yeah
16:44:27 <Jade[m]1> I don't think I like positional destructuring of records for my purposes then
16:45:20 × MajorBiscuit quits (~MajorBisc@145.94.156.212) (Ping timeout: 248 seconds)
16:47:28 sadmax joins (~user@64.130.91.66)
16:47:32 <kuribas> you can destructure records on labels.
16:48:04 npmania1 joins (~Thunderbi@45.8.223.206)
16:48:14 <kuribas> https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/record_puns.html
16:48:41 <hellwolf[m]> who'd be able to help to update https://wiki.haskell.org/User_groups page with two more entries?
16:48:41 <Jade[m]1> I know of that language extension yeah
16:49:45 × npmania quits (~Thunderbi@45.8.223.254) (Ping timeout: 256 seconds)
16:49:45 npmania1 is now known as npmania
16:49:49 <kuribas> unpopular opinion: haskell is a bad language for doing type level computation.
16:50:24 <int-e> How is that unpopular? I guess most people have no opinion on that at all.
16:50:41 <ncf> pretty sure most people who have an opinion on that agree that the current situation is terrible lol
16:50:43 <int-e> Which does make it unpopular, I suppose. Technically.
16:50:47 <geekosaur> I run into enough people who think it is
16:50:56 <kuribas> But it's a great language for the algebraic approach to programming, using composition and parametricity.
16:51:00 <geekosaur> (…seriously, use idris)
16:51:31 <kuribas> int-e: well, the fact that so many hackage libraries use type level features.
16:51:33 <int-e> It'd be more interesting to ask how many people think that they need type level computations.
16:52:39 <int-e> kuribas: It's cool and shiny?
16:53:00 <geekosaur> just don't make me use singletons. they're an absolutely miserable simulation of real dependent types
16:53:06 <kuribas> I think it's a status symbol. Use GADTs and type families to show that you belong to the "cool crowd".
16:53:54 mechap joins (~mechap@user/mechap)
16:54:22 <ncf> sounds like what the average non-haskeller would say about haskell
16:55:27 telser joins (~quassel@user/telser)
16:56:21 <int-e> I don't think of GADTs or type families as type-level computations, necessarily. They can be, sure, but most are just pretty direct mappings? Notably associated type families for type classes.
16:57:12 <geekosaur> ^
16:57:52 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
17:01:15 <ncf> also i think you need GADTs to define free applicatives?
17:03:22 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 246 seconds)
17:03:44 mixfix41 joins (~sdenynine@user/mixfix41)
17:08:39 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:404f:ae08:50c4:925d) (Remote host closed the connection)
17:09:24 euandreh joins (~Thunderbi@189.6.18.7)
17:14:36 × pyook quits (~pyook@user/puke) (Ping timeout: 255 seconds)
17:18:03 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
17:24:48 × remexre quits (~remexre@user/remexre) (Ping timeout: 252 seconds)
17:25:16 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
17:27:55 × sadmax quits (~user@64.130.91.66) (Remote host closed the connection)
17:28:33 biberu joins (~biberu@user/biberu)
17:29:03 sadmax joins (~user@64.130.91.66)
17:29:46 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
17:35:05 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
17:37:20 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
17:40:31 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
17:40:58 stiell joins (~stiell@gateway/tor-sasl/stiell)
17:41:53 × CiaoSen quits (~Jura@p200300c9570e91002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
17:45:16 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
17:45:23 econo joins (uid147250@user/econo)
17:45:46 stiell joins (~stiell@gateway/tor-sasl/stiell)
17:48:50 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 246 seconds)
17:52:03 × hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 260 seconds)
17:52:07 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
18:03:55 × cheater quits (~Username@user/cheater) (Ping timeout: 246 seconds)
18:05:43 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
18:12:15 azimut joins (~azimut@gateway/tor-sasl/azimut)
18:13:21 remexre joins (~remexre@user/remexre)
18:15:39 hugo- joins (znc@verdigris.lysator.liu.se)
18:16:51 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
18:19:20 qhong_ joins (~qhong@rescomp-21-400677.stanford.edu)
18:19:44 cheater joins (~Username@user/cheater)
18:21:51 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
18:22:59 × qhong quits (~qhong@DN160vrd000d6kpg009l6c0000ep.stanford.edu) (Ping timeout: 264 seconds)
18:23:47 Guest31 joins (~Guest31@rrcs-74-219-213-86.central.biz.rr.com)
18:24:00 × cheater quits (~Username@user/cheater) (Ping timeout: 248 seconds)
18:24:16 × whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
18:24:24 <Guest31> I'm wondering if I'm starting to go crazy, but I've been using haskell for personal work - and am considering introducing it at work as a form of documentation for some code in another language
18:24:48 <Guest31> I just find reading through well written haskell code can be self documenting
18:25:04 <Guest31> And solving a problem in haskell can inform how to solve it in another language
18:25:11 <Guest31> Wondering if anybody has similar experiences
18:26:40 × tusko quits (~yeurt@user/tusko) (Remote host closed the connection)
18:27:19 tusko joins (~yeurt@user/tusko)
18:32:08 <geekosaur> I think that's been mentioned here before?
18:32:11 × freeside quits (~mengwong@103.252.202.85) (Ping timeout: 260 seconds)
18:35:59 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Quit: _)
18:36:44 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
18:37:39 cheater joins (~Username@user/cheater)
18:38:04 <Guest31> where is here?
18:41:16 <geekosaur> either this IRC channel or possibly #haskell-offtopic
18:41:31 <geekosaur> I just did a search of my logs and the incident I thought was it wasn't
18:42:15 <geekosaur> (because Haskell has previously been mistaken for pseudocode describing an algorithm)
18:43:43 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
18:47:16 × akegalj_ quits (~akegalj@89-164-104-80.dsl.iskon.hr) (Quit: leaving)
18:52:20 caryhartline joins (~caryhartl@cpe-76-187-114-220.tx.res.rr.com)
18:52:51 freeside joins (~mengwong@103.252.202.85)
18:57:32 Sciencentistguy5 joins (~sciencent@hacksoc/ordinary-member)
19:00:14 × Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Ping timeout: 255 seconds)
19:00:15 Sciencentistguy5 is now known as Sciencentistguy
19:00:20 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
19:11:53 × sadmax quits (~user@64.130.91.66) (Remote host closed the connection)
19:15:34 × tusko quits (~yeurt@user/tusko) (Remote host closed the connection)
19:15:34 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
19:15:46 <[exa]> Guest31: pretty common with haskell I'd say
19:16:00 tusko joins (~yeurt@user/tusko)
19:16:49 gmg joins (~user@user/gehmehgeh)
19:18:23 <[exa]> Guest31: as one of common reasons, the equational reasoning (haskell-style way of declaring stuff) is much much easier to follow than the common ways of operational reasoning
19:21:19 wrengr joins (~wrengr@201.59.83.34.bc.googleusercontent.com)
19:21:25 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
19:22:31 × ubert1 quits (~Thunderbi@2a02:8109:abc0:6434:69a1:e4e8:f403:6d0a) (Remote host closed the connection)
19:22:54 gmg joins (~user@user/gehmehgeh)
19:25:59 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 255 seconds)
19:26:15 <[exa]> haskeline question: is there any good way to run withInterrupt when InputT is deeper in the stack? (It stinks a bit of unliftIO or something similar...) Or should I completely avoid doing that?
19:27:29 <monochrom> Yes it's the unliftIO situation all over again.
19:29:42 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
19:30:01 jpds joins (~jpds@gateway/tor-sasl/jpds)
19:31:41 <[exa]> ok, well, great.
19:31:49 <[exa]> thanks for confirm :D
19:32:03 × Guest31 quits (~Guest31@rrcs-74-219-213-86.central.biz.rr.com) (Ping timeout: 260 seconds)
19:32:42 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
19:33:00 × solzao quits (~zelador@187.61.153.177) (Read error: Connection reset by peer)
19:33:11 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:404f:ae08:50c4:925d)
19:33:20 xsarnik0 joins (xsarnik@lounge.fi.muni.cz)
19:33:31 xstill_6 joins (xstill@fimu/xstill)
19:33:52 yaroot_ joins (~yaroot@2400:4052:ac0:d900:1cf4:2aff:fe51:c04c)
19:34:04 terrorjack8 joins (~terrorjac@2a01:4f8:1c1e:4e8c::)
19:34:11 ggranberry_ joins (sid267884@id-267884.uxbridge.irccloud.com)
19:34:16 econo_ joins (uid147250@user/econo)
19:34:17 eL_Bart0- joins (eL_Bart0@dietunichtguten.org)
19:34:21 img_ joins (~img@user/img)
19:34:25 manwithl- joins (~manwithlu@2406:da14:b37:1300:8c42:7d16:8950:6c74)
19:34:26 kraftwerk28_ joins (~kraftwerk@178.62.210.83)
19:34:26 xelxebar_ joins (~xelxebar@wilsonb.com)
19:34:36 × cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds)
19:34:50 TimWolla_ joins (~timwolla@2a01:4f8:150:6153:beef::6667)
19:35:00 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds)
19:36:35 juri__ joins (~juri@84-19-175-179.pool.ovpn.com)
19:36:43 lyle1 joins (~lyle@104.246.145.237)
19:36:45 finstern1s joins (~X@23.226.237.192)
19:37:06 mal1 joins (~mal@ns2.wyrd.be)
19:37:08 stilgart_ joins (~Christoph@chezlefab.net)
19:37:12 farn__ joins (~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505)
19:37:32 robobub joins (uid248673@id-248673.uxbridge.irccloud.com)
19:37:35 × econo quits (uid147250@user/econo) (Ping timeout: 248 seconds)
19:37:35 × xelxebar quits (~xelxebar@wilsonb.com) (Ping timeout: 248 seconds)
19:37:35 × ggranberry quits (uid267884@id-267884.uxbridge.irccloud.com) (Ping timeout: 248 seconds)
19:37:35 × lyle quits (~lyle@104.246.145.237) (Ping timeout: 248 seconds)
19:37:36 × finsternis quits (~X@23.226.237.192) (Ping timeout: 248 seconds)
19:37:36 × eL_Bart0 quits (eL_Bart0@dietunichtguten.org) (Ping timeout: 248 seconds)
19:37:36 × img quits (~img@user/img) (Ping timeout: 248 seconds)
19:37:36 × hellwolf[m] quits (~hellwolfm@2001:470:69fc:105::3:6a4) (Ping timeout: 248 seconds)
19:37:36 × TimWolla quits (~timwolla@2a01:4f8:150:6153:beef::6667) (Ping timeout: 248 seconds)
19:37:36 × juri_ quits (~juri@84-19-175-179.pool.ovpn.com) (Ping timeout: 248 seconds)
19:37:36 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 248 seconds)
19:37:36 × tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 248 seconds)
19:37:36 × manwithluck quits (~manwithlu@2406:da14:b37:1300:8c42:7d16:8950:6c74) (Ping timeout: 248 seconds)
19:37:36 × terrorjack quits (~terrorjac@2a01:4f8:1c1e:4e8c::) (Ping timeout: 248 seconds)
19:37:36 × lieven quits (~mal@ns2.wyrd.be) (Ping timeout: 248 seconds)
19:37:36 × kraftwerk28 quits (~kraftwerk@178.62.210.83) (Ping timeout: 248 seconds)
19:37:37 × aaRabbit[m] quits (~rootsandw@2001:470:69fc:105::2:ca2e) (Ping timeout: 248 seconds)
19:37:37 × alexfmpe[m] quits (~alexfmpem@2001:470:69fc:105::38ba) (Ping timeout: 248 seconds)
19:37:37 × stilgart quits (~Christoph@chezlefab.net) (Ping timeout: 248 seconds)
19:37:37 × farn_ quits (~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505) (Ping timeout: 248 seconds)
19:37:37 × yaroot quits (~yaroot@p3431218-ipngn9301souka.saitama.ocn.ne.jp) (Ping timeout: 248 seconds)
19:37:37 × xstill_ quits (xstill@fimu/xstill) (Ping timeout: 248 seconds)
19:37:37 × xsarnik quits (xsarnik@lounge.fi.muni.cz) (Ping timeout: 248 seconds)
19:37:37 econo_ is now known as econo
19:37:37 terrorjack8 is now known as terrorjack
19:37:39 ggranberry_ is now known as ggranberry
19:37:39 finstern1s is now known as finsternis
19:37:39 yaroot_ is now known as yaroot
19:37:39 TimWolla_ is now known as TimWolla
19:37:45 xstill_6 is now known as xstill_
19:37:45 xsarnik0 is now known as xsarnik
19:38:22 tomboy64 joins (~tomboy64@user/tomboy64)
19:38:50 gurkenglas joins (~gurkengla@dynamic-046-114-156-015.46.114.pool.telefonica.de)
19:38:57 cheater joins (~Username@user/cheater)
19:39:24 hellwolf[m] joins (~hellwolfm@2001:470:69fc:105::3:6a4)
19:39:53 qhong_ is now known as qhong
19:41:50 alexfmpe[m] joins (~alexfmpem@2001:470:69fc:105::38ba)
19:45:48 segfaultfizzbuzz joins (~segfaultf@12.172.217.142)
19:46:10 <segfaultfizzbuzz> so >>> is just function composition?
19:46:58 <monochrom> I wouldn't say "just" but you can use it for forward function composition.
19:49:40 Albina_Pavlovna joins (~Albina_Pa@cpe-66-65-40-132.nyc.res.rr.com)
19:51:50 aaRabbit[m] joins (~rootsandw@2001:470:69fc:105::2:ca2e)
19:53:43 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
19:54:51 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
20:03:08 Midjak joins (~Midjak@82.66.147.146)
20:05:50 rustisafungus joins (~segfaultf@12.172.217.142)
20:06:32 × Albina_Pavlovna quits (~Albina_Pa@cpe-66-65-40-132.nyc.res.rr.com) (Quit: ZZZzzz…)
20:06:41 <rustisafungus> i'm confused, what is "forward" or "left to right" vs "right to left"? i thought we were working with associative operations here...?
20:07:14 <ncf> f ∘ g = g >>> f
20:07:18 Albina_Pavlovna joins (~Albina_Pa@cpe-66-65-40-132.nyc.res.rr.com)
20:07:43 a_coll joins (~acoll@45.92.120.189)
20:08:01 sammelweis_ joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
20:08:04 <geekosaur> associative, but not commutative
20:08:15 sadmax joins (~user@64.130.91.66)
20:09:16 <rustisafungus> oh hell, that's right, you can reverse the order of operations, ok that's confusing as i kinda expect the syntax of the language to normalize order of operations
20:09:32 × segfaultfizzbuzz quits (~segfaultf@12.172.217.142) (Ping timeout: 248 seconds)
20:09:32 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 248 seconds)
20:09:33 dekster joins (~Albina_Pa@181.119.160.58)
20:09:33 dekster is now known as 074AAK5I4
20:09:33 × 074AAK5I4 quits (~Albina_Pa@181.119.160.58) (K-Lined)
20:11:01 <dminuoso> rustisafungus: What do you mean by "expect the syntax of the language to normalize order of operations"?
20:11:22 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
20:11:52 × Albina_Pavlovna quits (~Albina_Pa@cpe-66-65-40-132.nyc.res.rr.com) (Ping timeout: 252 seconds)
20:12:15 × shapr quits (~user@68.54.166.125) (Ping timeout: 255 seconds)
20:12:38 <rustisafungus> i naievely expect that if f is on the left and g is on the right that the ordering of f and g will always be the same
20:12:51 <rustisafungus> but in haskell, you can insert operations which can flip that
20:13:00 <dminuoso> What does "ordering of f and g" even mean?
20:13:10 <dminuoso> Left and right dont have any intrinsic meaning
20:13:27 <dminuoso> Are you perhaps trying to imply evaluation order?
20:13:39 <rustisafungus> foo f bar g i kinda expect evaluation order here to always have f earlier and g later
20:13:49 <rustisafungus> (or precisely the opposite of that )
20:13:54 <dminuoso> Its better than that.
20:13:59 <dminuoso> Evaluation order is unspecified.
20:14:03 <rustisafungus> but the reality is that depending on what foo and bar are, the eval order can be whatever
20:14:10 <dminuoso> Nope
20:14:13 <rustisafungus> dminuoso: aaaaaaaaaaaaaaaaa why do you folks do this?
20:14:34 <dminuoso> rustisafungus: because for the most part the evaluation order is irrelevant.
20:14:45 <rustisafungus> 🤯
20:15:17 <dminuoso> rustisafungus: Consider a math expression like `(3 + 2) * (7 + 1)` - would you agree that the order of evaluating this is irrelevant to both the meaning of the expression and the result?
20:15:37 son0p joins (~ff@181.136.122.143)
20:16:00 <rustisafungus> yes but 1 / (a + b) is not the same as 1 + (a / b)
20:16:11 <dminuoso> Sure, but that's something entirely different.
20:16:29 <rustisafungus> ??
20:17:00 <dminuoso> rustisafungus: Imagine my math problem not as a program to write, but perhaps an excercise from school.
20:17:11 <dminuoso> So lets say you are tasked with calculating the result of that expression
20:17:22 <dminuoso> You might start writing down the entirety of the expression first
20:17:39 <rustisafungus> i understand that the for a fixed AST the order of eval doesn't matter
20:17:43 <dminuoso> And then decide `lets first add 3 + 2` together, and write on a subsequent line `= 5 * (7 + 1)`
20:17:45 <dminuoso> Or....
20:18:02 <dminuoso> You might decide to first add 7 + 1 together and write on a subsequent line `= (3 + 2) * 8`
20:18:04 <rustisafungus> but if f and g don't commute, then swapping f and g changes the result
20:18:10 <dminuoso> Sure
20:18:11 <dminuoso> However.
20:18:28 <rustisafungus> and depending on how i write haskell code, i think i get either (f.g) or (g.f) right?
20:18:36 <rustisafungus> even if f is to the "left" of g in the source code
20:18:37 <dminuoso> The order of calculation has nothing to do with where you place arguments
20:18:39 <dminuoso> say:
20:18:43 <dminuoso> (3 + 2) * (7 + 1)
20:18:45 <dminuoso> vs
20:18:48 <dminuoso> (3 * 2) + (7 + 1)
20:18:56 <dminuoso> In *both* cases, the "evaluation order" is unspecified.
20:19:03 <dminuoso> That is, its completely irrelevant how you evaluate it.
20:19:59 <dminuoso> swapping symbols around by itself doesnt "change the evalation order", because there wasnt an instrinsic evaluation order to begin with
20:20:08 <dminuoso> it changes the meaning of the program
20:20:11 <dminuoso> not the evaluation order
20:20:16 <rustisafungus> i don't care about AST eval order for fixed AST, that's not concerning (if ignore IO etc)
20:20:49 <dminuoso> You do seem to care about it:
20:20:55 <dminuoso> 21:13:39 rustisafungus | foo f bar g i kinda expect evaluation order here to always have f earlier and g later
20:21:07 <dminuoso> Whether `f` or `g` is evaluated first, does not (generally) matter
20:21:11 <rustisafungus> well, not eval order--call it "AST order" then
20:21:18 <rustisafungus> sorry that was me being imperative
20:21:26 <dminuoso> Not necessarily imperative actually'
20:21:27 <rustisafungus> "effective eval order" rather than "actual eval order"
20:21:35 <c_wraith> "order" isnt really what you mean, though
20:21:42 <c_wraith> What you seem to mean is "parse tree"
20:21:59 <dminuoso> rustisafungus: We call this evaluation strategies. What most imperative programming languages have is `call-by-value`
20:22:01 <dminuoso> And it should be noted
20:22:08 <rustisafungus> not eval i am very sorry i ever said eval
20:22:14 <dminuoso> That in plenty of languages the evaluation orders of parameters themselves is unspecified
20:22:16 <dminuoso> Notably: C.
20:22:17 <rustisafungus> c_wraith: yes i think i mean parse tree or AST
20:22:24 <monochrom> Yes, with lazy evaluation, you now have to dissociate parsing (tree structure) with orde of evaluation.
20:22:25 <rustisafungus> dminuoso: oh wow really
20:22:29 <dminuoso> In f if you write foo(bar(), quux(), baz()) it is unspecified which argument is evaluated first.
20:22:33 <dminuoso> *In C
20:22:44 <dminuoso> THe only guarantee you *do* get is that they are evaluated before foo is entered.
20:22:45 <c_wraith> yeah, it makes writing recursive descent parsers by hand in C really annoying
20:23:01 <monochrom> Because "False && (undefined && undefined)" totally does not mean "evaluate (undefined && undefined) first".
20:23:18 <rustisafungus> i don't want to emphasize evaluation order here
20:23:51 <monochrom> In fact, if I asked you about "0 * (2398493 * 239085)", I doubt that you would evaluate "2398493 * 239085" first.
20:24:07 <rustisafungus> monochrom: again that's eval order
20:24:31 × acidjnk_new quits (~acidjnk@p200300d6e715c410d9ae1c6a8a63c597.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
20:24:58 <dminuoso> rustisafungus: as opposed to what?
20:25:10 <monochrom> haha
20:25:24 <monochrom> OK OK we're on the same page now.
20:25:41 <dminuoso> I do have a vague idea what they are on about.
20:25:43 <rustisafungus> sorry, i should probably just hush down, but if you do really want to discuss this, my comment is relevant only if f and g don't commute in general
20:26:47 <rustisafungus> and so like i said if, as the programmer, i look at a line of code, i see f somewhere on the left and g somewhere on the right, i expect f to be "later" (not in eval order but in some kind of AST/chaining/parse tree kind of order) and g to be "earlier"
20:26:58 <dminuoso> Oh I see.
20:27:07 <rustisafungus> but if i understand correctly, when i look at a line of code which goes
20:27:15 <dminuoso> Haskell code can vary wildly in this respect
20:27:23 <rustisafungus> a b c f d e g q w r
20:27:29 <dminuoso> Especially because the evaluation order isnt pinned
20:27:41 <c_wraith> I mean, so can C code. foo() * bar() + baz() / quux()
20:27:52 <dminuoso> `f <$> foo` vs `foo <&> f`> vs `fooM >>= q` vs `q =<< q`
20:27:53 <rustisafungus> there is a horrendous number of possible permutations of those functions a thru r
20:27:57 <c_wraith> how does that parse? I have no idea!
20:28:06 <rustisafungus> and to really know what is being specified or going on, i have to know the behavior of all of those functions
20:28:26 <rustisafungus> which seems pretty onerous imo, and it's hard to imagine that the occasional improvement in expressiveness of the language is worth that kind of ambiguity
20:28:53 <rustisafungus> i'm not saying C is great either
20:28:55 <dminuoso> I guess this problem is amplified in languages that use functions as first class values a lot.
20:29:28 <c_wraith> Any language with a recursive syntax is going to have issues related to this, and that's almost all of them
20:29:37 <rustisafungus> oh it's intrinsic to recursion?
20:29:48 <c_wraith> not recursion in the program
20:29:51 <c_wraith> recursion in the syntax
20:29:54 <rustisafungus> i mean doesn't lisp have a totally unambiguous parse tree/AST?
20:30:00 <c_wraith> can you embed an expression in an expression?
20:30:16 <c_wraith> if you bad macros, sure
20:30:19 <c_wraith> *ban
20:30:24 <dminuoso> rustisafungus: I mean this becomes a matter of API design really quickly.
20:30:35 <monochrom> People do have heated (and pointless IMO) debates on "readability" when code order differs from what they intuitively (religiously IMO) expect of effect order.
20:30:46 <dminuoso> For instance, do you have `append :: a -> [a] -> [a]` or `append :: [a] -> a -> [a]`
20:30:51 <dminuoso> There's arguments for both
20:31:01 <monochrom> I simply undefine "readability" as meaningless.
20:31:05 <dminuoso> rustisafungus: ^- I think this goes into what you are thinking about, right?
20:31:24 <dminuoso> (whether argument order itself is indicative or some underlying behavior)
20:31:26 <dminuoso> *of some
20:32:00 <c_wraith> monochrom: I'm not sure it's completely meaningless. There are limits that intend to probe just how bad readability can be, like intercal or whitespace
20:32:02 <rustisafungus> dminuoso: in that case you can have a type error to help protect you, but in general there may not be type errors
20:32:20 <dminuoso> rustisafungus: sure, say `append :: T.Text -> T.Text -> T.Text` then
20:32:40 <dminuoso> Haskell having sections makes this even more complicated
20:33:03 <dminuoso> since some functions have their argument order such that application to a single argument or section usage reads nicer.
20:33:09 <dminuoso> x `elem` [1,2,3,4]
20:33:13 <rustisafungus> i am not familar with sections,...
20:34:04 <dminuoso> rustisafungus: sections is something like the first argument in: filter (> 3) [1..10]
20:34:12 <dminuoso> Or infix notation for arbitrary functions
20:34:27 <dminuoso> There'd different design decisions depending on how you anticipate a function is used
20:34:48 fnurglewitz joins (uid263868@id-263868.lymington.irccloud.com)
20:34:52 <dminuoso> is it going to be applied to a single argument? Or a section? if a section, which argument is likely used more? or do you use it in infix position with backticks?
20:35:08 <dminuoso> or maybe you want something that reads nicely when used as an argument all by itself?
20:35:24 <dminuoso> And for some of these functions we provide multiple versions to let you decide
20:35:24 <rustisafungus> hm ok, maybe i am unsophisticated
20:35:27 <dminuoso> % import Data.Functor
20:35:27 <yahb2> <no output>
20:35:31 <dminuoso> % :t (<$>)
20:35:31 <yahb2> (<$>) :: Functor f => (a -> b) -> f a -> f b
20:35:33 <dminuoso> % :t (<&>)
20:35:33 <yahb2> (<&>) :: Functor f => f a -> (a -> b) -> f b
20:35:36 <dminuoso> We just give you both here.
20:35:41 <rustisafungus> yeah i never understood that aesthetic
20:35:52 <rustisafungus> in my view of the world there should be only one way...
20:36:06 <dminuoso> Let me give you a code excerpt where I really like <&>
20:36:14 <rustisafungus> i think if programmers want "readability" or "aesthetics" then perhaps we need something like a css file for that
20:37:21 <dminuoso> rustisafungus: https://gist.github.com/dminuoso/a897218d0fab3194592a2f926f2ea8c1
20:37:37 <dminuoso> This aligns and reads very nicely
20:38:04 <dminuoso> When looking at the large file, its visually immediately clear that the only changing thing between each case is just the constructor on the right hand side
20:38:13 <dminuoso> If you used <$> it wouldnt be evident at first glance
20:38:35 <dminuoso> And this also emphasizes the parser structure a bit better
20:38:43 <dminuoso> "get this thing and then stuff it inside that other thing"
20:38:46 <rustisafungus> hmm ok
20:39:33 <rustisafungus> i usually use whitespace alignment to achieve that, but to each his or her own
20:40:16 <rustisafungus> i gotta run, thanks for the chat folks bye
20:40:57 <monochrom> Nothing is perfect ("perfect", another meaningless word) so there will not be only one way. There will be multiple ways because they arise from different trade-offs.
20:41:31 <monochrom> (Well either meaningless or self-contradictory)
20:41:54 <dminuoso> This certainly goes towards different design philosophies.
20:42:12 <dminuoso> Some languages like to constrain their user such that there is only one way to do or represent something
20:42:28 × lyle1 quits (~lyle@104.246.145.237) (Quit: WeeChat 3.8)
20:42:33 <dminuoso> This can be seen as advantageous because its easy to learn "the way everybody does it", but it also severely limits your options to express thought.
20:42:56 <dminuoso> Imagine the number of phrases you could ever utter was constrained to those listed in a small book.
20:43:05 <monochrom> Yeah see, even that is making one particular trade-off and does not represent the will of other people.
20:44:02 <monochrom> But on top of that, 1984 made a great mockery of that trade-off.
20:44:48 <monochrom> It's why I'm liberally minded and prefer if you optimize for something else, anything else.
20:44:52 × rustisafungus quits (~segfaultf@12.172.217.142) (Ping timeout: 252 seconds)
20:45:49 <dminuoso> I mean mathematics is generally on the other end of the spectrum. Every paper makes up their own symbols, denotations, proof structure, font, and everything. It's the ultimate expression of thought, but it becomes very hard to understand something without first reshaping your mind to the shape you think the author had.
20:46:05 <dminuoso> There'
20:46:29 <monochrom> I don't think mathematics is that badly diverse.
20:46:30 <dminuoso> (Or well, not sure whether its the extreme, but its at least far out there)
20:46:45 <monochrom> If you s/Every paper/Every area/ then sure.
20:46:56 <dminuoso> Sure. Lets go with that.
20:47:17 <monochrom> Note for example how all type system papers use almost identical notation.
20:47:58 <c_wraith> My favorite thing about SPJ's papers is that in his papers, code blocks are actually readable. The font looks like code, and is the content is written like code. No greek letters anywhere!
20:48:07 <darkling> There's usually a convergence of notation after a few years or decades.
20:48:18 <c_wraith> (actually, my favorite thing is that his papers are well written. the code stuff is second)
20:48:18 <monochrom> So standardized to the point that everyone trying to write a tutorial aiming at absolute beginners still can't free themselves of the horizontal-line notation.
20:48:20 <dminuoso> darkling: at least for a period.
20:49:05 <dminuoso> I suppose there's at least an intrinsic moticator to reuse some styles because you want your publication to be peer reviewed and cited.
20:49:28 <dminuoso> If nobody understood a thing you expressed, it would be hard to publish anything or get a high impact factor your professor really cares about.
20:49:36 <dminuoso> But it's like you said very domain specific
20:50:06 <dminuoso> Which is still fine, since generally a type theory paper will probably not be cared much for by someone who studies topology
20:50:11 <monochrom> But then math : every area uses a different notation :: programming : every language community uses a different notation and vocab
20:51:01 <monochrom> math : real analysis papers saying 0 is not a natural number :: programming : SML saying functor just means parameterized modules
20:53:51 <monochrom> Ample evidence that they are social constructs, much as I hate that conclusion. :)
20:56:55 pavonia joins (~user@user/siracusa)
20:59:00 burakcan- is now known as burakcank
20:59:52 cheater_ joins (~Username@user/cheater)
21:00:16 ft joins (~ft@p3e9bc443.dip0.t-ipconnect.de)
21:01:08 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
21:01:52 × cheater quits (~Username@user/cheater) (Ping timeout: 248 seconds)
21:01:58 cheater_ is now known as cheater
21:05:38 <ncf> homotopy type theory has entered the chat
21:05:56 mal1 is now known as lieven
21:10:18 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:404f:ae08:50c4:925d) (Remote host closed the connection)
21:11:38 × ddellacosta quits (~ddellacos@146.70.166.10) (Quit: WeeChat 3.8)
21:13:38 ddellacosta joins (~ddellacos@146.70.166.10)
21:13:49 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
21:15:11 talismanick joins (~talismani@c-98-238-242-189.hsd1.ca.comcast.net)
21:22:51 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Ping timeout: 248 seconds)
21:31:59 Albina_Pavlovna joins (~Albina_Pa@cpe-66-65-40-132.nyc.res.rr.com)
21:32:09 segfaultfizzbuzz joins (~segfaultf@12.172.217.142)
21:34:35 × talismanick quits (~talismani@c-98-238-242-189.hsd1.ca.comcast.net) (Ping timeout: 248 seconds)
21:34:56 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds)
21:36:13 × trev quits (~trev@user/trev) (Remote host closed the connection)
21:40:33 × tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 255 seconds)
21:49:54 × sammelweis_ quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
21:50:57 × a_coll quits (~acoll@45.92.120.189) (Remote host closed the connection)
21:51:07 × segfaultfizzbuzz quits (~segfaultf@12.172.217.142) (Ping timeout: 248 seconds)
21:51:17 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
21:53:19 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
21:58:13 fut joins (~futar@129.234.0.191)
21:58:18 × smeouros quits (~doo@185.44.146.69) (Remote host closed the connection)
21:58:45 × Inst quits (~Inst@2601:6c4:4081:54f0:d8ed:99cb:5666:6ba0) (Ping timeout: 246 seconds)
21:59:07 fut parts (~futar@129.234.0.191) ()
21:59:24 segfaultfizzbuzz joins (~segfaultf@12.172.217.142)
22:01:23 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
22:01:50 jpds joins (~jpds@gateway/tor-sasl/jpds)
22:03:29 × gmg quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds)
22:04:34 gmg joins (~user@user/gehmehgeh)
22:04:36 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
22:06:18 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
22:06:23 × Albina_Pavlovna quits (~Albina_Pa@cpe-66-65-40-132.nyc.res.rr.com) (Ping timeout: 248 seconds)
22:09:35 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds)
22:10:48 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:404f:ae08:50c4:925d)
22:13:10 npm_i_kurbus joins (~npm_i_kur@user/kurbus)
22:14:44 Albina_Pavlovna joins (~Albina_Pa@cpe-66-65-40-132.nyc.res.rr.com)
22:14:44 emmanuelux joins (~emmanuelu@user/emmanuelux)
22:15:04 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:404f:ae08:50c4:925d) (Ping timeout: 252 seconds)
22:15:36 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Remote host closed the connection)
22:15:59 rustisafungus joins (~segfaultf@12.172.217.142)
22:18:25 × segfaultfizzbuzz quits (~segfaultf@12.172.217.142) (*.net *.split)
22:18:25 × son0p quits (~ff@181.136.122.143) (*.net *.split)
22:18:30 shapr joins (~user@68.54.166.125)
22:23:20 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
22:24:32 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
22:29:27 tomboy64 joins (~tomboy64@user/tomboy64)
22:29:34 × michalz quits (~michalz@185.246.204.107) (Remote host closed the connection)
22:42:02 abrar joins (~abrar@static-108-2-152-54.phlapa.fios.verizon.net)
22:55:02 × shapr quits (~user@68.54.166.125) (Ping timeout: 268 seconds)
22:55:41 zeenk joins (~zeenk@2a02:2f04:a20d:f900::7fe)
22:56:32 × cheater quits (~Username@user/cheater) (Ping timeout: 248 seconds)
23:00:27 shapr joins (~user@68.54.166.125)
23:02:26 × rustisafungus quits (~segfaultf@12.172.217.142) (Ping timeout: 268 seconds)
23:04:43 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
23:18:23 × shapr quits (~user@68.54.166.125) (Ping timeout: 248 seconds)
23:18:32 × ystael_ quits (~ystael@user/ystael) (Read error: Connection reset by peer)
23:20:18 mechap_ joins (~mechap@user/mechap)
23:20:40 ystael joins (~ystael@user/ystael)
23:22:05 codaraxis joins (~codaraxis@user/codaraxis)
23:23:30 × mechap quits (~mechap@user/mechap) (Ping timeout: 255 seconds)
23:24:24 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
23:25:28 jpds joins (~jpds@gateway/tor-sasl/jpds)
23:36:04 ctyjr joins (~ctyjr@95.107.235.112)
23:38:15 × npm_i_kurbus quits (~npm_i_kur@user/kurbus) (Quit: Client closed)
23:38:48 × phileasfogg quits (~phileasfo@user/phileasfogg) (Quit: "It's the only way, then they can all forget me. I got too big, Dorium, too noisy. Time to step back into the shadows.")
23:39:08 × ctyjr quits (~ctyjr@95.107.235.112) (Client Quit)
23:39:33 ctyjr joins (~ctyjr@95.107.235.112)
23:39:59 × ctyjr quits (~ctyjr@95.107.235.112) (Client Quit)
23:43:11 × Albina_Pavlovna quits (~Albina_Pa@cpe-66-65-40-132.nyc.res.rr.com) (Quit: bb)
23:44:30 jmorris joins (uid537181@id-537181.uxbridge.irccloud.com)
23:44:32 × gurkenglas quits (~gurkengla@dynamic-046-114-156-015.46.114.pool.telefonica.de) (Ping timeout: 248 seconds)
23:44:40 phileasfogg joins (~phileasfo@user/phileasfogg)
23:46:42 × Midjak quits (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
23:46:48 lxi joins (~quassel@2a02:2f08:4d1c:400:c33f:394a:2177:e1a0)
23:51:34 Tuplanolla joins (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi)
23:58:07 × zeenk quits (~zeenk@2a02:2f04:a20d:f900::7fe) (Quit: Konversation terminated!)

All times are in UTC on 2023-03-06.