2021/06/02

2021-06-02 00:00:17 +0000pavonia(~user@user/siracusa) (Ping timeout: 264 seconds)
2021-06-02 00:00:26 +0000pavonia_pavonia
2021-06-02 00:00:42 +0000derelict(~winter@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com) (Ping timeout: 272 seconds)
2021-06-02 00:00:54 +0000tv(~tv@user/tv) (Ping timeout: 264 seconds)
2021-06-02 00:01:17 +0000tv(~tv@user/tv)
2021-06-02 00:02:00 +0000fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 245 seconds)
2021-06-02 00:05:41 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-06-02 00:06:18 +0000mccoyb(~textual@2601:182:d000:3b50:74fc:67c:ef8b:8632)
2021-06-02 00:06:50 +0000myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net) (Ping timeout: 252 seconds)
2021-06-02 00:08:43 +0000mccoyb(~textual@2601:182:d000:3b50:74fc:67c:ef8b:8632) (Client Quit)
2021-06-02 00:09:02 +0000exarkun(~exarkun@user/exarkun)
2021-06-02 00:09:14 +0000Axman6(~Axman6@user/axman6) (Remote host closed the connection)
2021-06-02 00:09:28 +0000Axman6(~Axman6@user/axman6)
2021-06-02 00:09:29 +0000 <exarkun> With Warp (or any other Wait-compatible server) how do I listen on an arbitrary unused port and then discover which port that was?
2021-06-02 00:11:29 +0000 <exarkun> oh there's `withApplication`, great
2021-06-02 00:13:48 +0000zopsi(sid153252@id-153252.stonehaven.irccloud.com) ()
2021-06-02 00:17:13 +0000zopsi(~zopsi@irc.dir.ac)
2021-06-02 00:17:16 +0000tonyday(~user@202-65-93-249.ip4.superloop.com)
2021-06-02 00:18:10 +0000 <tonyday> https://hackage.haskell.org/package/base-4.15.0.0/reports/1
2021-06-02 00:18:52 +0000 <tonyday> I get the same error as hackage, trying to cabal build base. What are we doing wrong?
2021-06-02 00:19:11 +0000 <sclv> you can't build base
2021-06-02 00:19:12 +0000 <geekosaur> base isn't buildable by itself normally, it's built as part of ghc
2021-06-02 00:19:13 +0000 <sclv> it ships with ghc
2021-06-02 00:20:13 +0000myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net)
2021-06-02 00:20:58 +0000bfrk(~Thunderbi@200116b845fca000f97ff890167a6943.dip.versatel-1u1.de) (Ping timeout: 272 seconds)
2021-06-02 00:21:09 +0000neceve(~quassel@2a02:c7f:607e:d600:a95a:ecd2:e57a:3130) (Ping timeout: 244 seconds)
2021-06-02 00:21:35 +0000 <tonyday> I'm used to saying -fwrite-ide-info -hiedir=.hie to get files I can analyse for a project. Any clues how I would do this for base?
2021-06-02 00:22:04 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel)
2021-06-02 00:24:40 +0000sayola(~vekto@dslc-082-082-145-205.pools.arcor-ip.net)
2021-06-02 00:25:39 +0000 <geekosaur> you might need to do it as part of a ghc build
2021-06-02 00:26:08 +0000mccoyb(~textual@2601:182:d000:3b50:74fc:67c:ef8b:8632)
2021-06-02 00:26:56 +0000hexfive(~eric@50.35.83.177) (Quit: WeeChat 3.0)
2021-06-02 00:27:18 +0000zeenk(~zeenk@2a02:2f04:a310:b600:b098:bf18:df4d:4c41) (Quit: Konversation terminated!)
2021-06-02 00:27:47 +0000mccoyb(~textual@2601:182:d000:3b50:74fc:67c:ef8b:8632) (Client Quit)
2021-06-02 00:30:11 +0000 <tonyday> ok, thanks.
2021-06-02 00:30:38 +0000 <geekosaur> folks in #ghc might have better ideas, possibly
2021-06-02 00:33:17 +0000boxscape(~boxscape@user/boxscape) (Ping timeout: 264 seconds)
2021-06-02 00:35:45 +0000 <yin> i was going through some stuff i had bookmarked and was happy to find this https://www.youtube.com/watch?v=jFk1qpr1ytk which got me curious, has anything been done in this direction? what's the state of "lazy" natural numbers in haskell?
2021-06-02 00:35:45 +0000mccoyb(~textual@2601:182:d000:3b50:74fc:67c:ef8b:8632)
2021-06-02 00:37:12 +0000fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-02 00:38:10 +0000mccoyb(~textual@2601:182:d000:3b50:74fc:67c:ef8b:8632) (Client Quit)
2021-06-02 00:40:36 +0000ddellacosta(~ddellacos@89.45.224.118) (Remote host closed the connection)
2021-06-02 00:41:21 +0000jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
2021-06-02 00:41:52 +0000fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 272 seconds)
2021-06-02 00:42:17 +0000shailangsa(~shailangs@host165-120-169-73.range165-120.btcentralplus.com) (Ping timeout: 264 seconds)
2021-06-02 00:43:24 +0000mccoyb(~textual@2601:182:d000:3b50:74fc:67c:ef8b:8632)
2021-06-02 00:44:06 +0000falafel_(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-02 00:45:08 +0000Deide(~Deide@user/deide) (Quit: Seeee yaaaa)
2021-06-02 00:45:46 +0000mccoyb(~textual@2601:182:d000:3b50:74fc:67c:ef8b:8632) (Client Quit)
2021-06-02 00:45:59 +0000wagle(~wagle@quassel.wagle.io) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
2021-06-02 00:46:26 +0000wagle(~wagle@quassel.wagle.io)
2021-06-02 00:55:47 +0000petersen(~juhp@bb219-75-40-154.singnet.com.sg) (Ping timeout: 268 seconds)
2021-06-02 00:55:48 +0000mccoyb(~textual@2601:182:d000:3b50:74fc:67c:ef8b:8632)
2021-06-02 00:58:13 +0000mccoyb(~textual@2601:182:d000:3b50:74fc:67c:ef8b:8632) (Client Quit)
2021-06-02 00:59:25 +0000ddellacosta(~ddellacos@89.45.224.248)
2021-06-02 01:00:14 +0000tonyday(~user@202-65-93-249.ip4.superloop.com) (Ping timeout: 272 seconds)
2021-06-02 01:00:40 +0000jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-06-02 01:01:29 +0000myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net) (Ping timeout: 264 seconds)
2021-06-02 01:02:00 +0000geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com) (Ping timeout: 245 seconds)
2021-06-02 01:02:01 +0000lbseale(~lbseale@ip72-194-54-201.sb.sd.cox.net) (Read error: Connection reset by peer)
2021-06-02 01:02:01 +0000 <lyxia> yin: is there a two sentence summary of what you are looking for
2021-06-02 01:03:17 +0000dhil(~dhil@195.213.192.85) (Ping timeout: 264 seconds)
2021-06-02 01:04:52 +0000jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 252 seconds)
2021-06-02 01:07:13 +0000jpds(~jpds@gateway/tor-sasl/jpds)
2021-06-02 01:11:05 +0000oxide(~lambda@user/oxide) (Ping timeout: 264 seconds)
2021-06-02 01:12:47 +0000albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-06-02 01:13:55 +0000albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-06-02 01:14:38 +0000shailangsa(~shailangs@host86-186-136-74.range86-186.btcentralplus.com)
2021-06-02 01:15:32 +0000petereteppjlsergeant
2021-06-02 01:15:51 +0000oxide(~lambda@user/oxide)
2021-06-02 01:17:02 +0000 <yin> performant peano-like natural numbers i guess?
2021-06-02 01:17:29 +0000 <yin> emphasis on performant
2021-06-02 01:18:02 +0000pjlsergeant(sid143467@id-143467.stonehaven.irccloud.com) (Quit: Updating details, brb)
2021-06-02 01:18:11 +0000pjlsergeant(sid143467@id-143467.stonehaven.irccloud.com)
2021-06-02 01:18:14 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel) (Remote host closed the connection)
2021-06-02 01:21:46 +0000falafel_(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 272 seconds)
2021-06-02 01:23:34 +0000 <yin> the talk i based on this paper http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.56.3442
2021-06-02 01:24:09 +0000 <yin> *is
2021-06-02 01:24:37 +0000mccoyb(~textual@2601:182:d000:3b50:74fc:67c:ef8b:8632)
2021-06-02 01:25:21 +0000 <lyxia> well you can write a compiler that compiles your Nat to a GMP integer and translates pattern-matching to arithmetic operations.
2021-06-02 01:25:21 +0000abrar(~abrar@static-108-2-152-54.phlapa.fios.verizon.net)
2021-06-02 01:29:18 +0000ddellacosta(~ddellacos@89.45.224.248) (Remote host closed the connection)
2021-06-02 01:29:35 +0000 <yin> i that what idris does?
2021-06-02 01:31:35 +0000mccoyb(~textual@2601:182:d000:3b50:74fc:67c:ef8b:8632) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-06-02 01:33:18 +0000 <yin> Colin siggests something like a pair (m,n) where m is a machine word and n is a thunk, where the think progressively collapses, incrementing the word as it is lazily evaluated
2021-06-02 01:33:44 +0000xff0x(~xff0x@2001:1a81:52ca:4f00:7e41:f92f:ed4d:a7b5) (Ping timeout: 252 seconds)
2021-06-02 01:35:14 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel)
2021-06-02 01:35:28 +0000xff0x(~xff0x@2001:1a81:5307:4e00:e51:c3f6:62c2:5e71)
2021-06-02 01:36:26 +0000 <Axman6> yin: I seem to remember edwardk doing some stuff that involved using weird representation of natural numbers that might be relevant - I remember something where they were base 2, but the digits were 2 and 3, with a single 1... it's been along time (pretty sure this had to do with efficient maps or caches or something)
2021-06-02 01:36:53 +0000 <c_wraith> sounds like the skew heap stuff
2021-06-02 01:38:36 +0000egoist(~egoist@186.235.82.52) (Quit: WeeChat 3.1)
2021-06-02 01:38:48 +0000 <Axman6> yes!
2021-06-02 01:38:53 +0000myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net)
2021-06-02 01:40:30 +0000jaevanko(~jaevanko@2600:1700:1330:2bef:7d9a:87ce:495f:966a)
2021-06-02 01:45:50 +0000waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 252 seconds)
2021-06-02 01:48:08 +0000wenzel(~wenzel@user/wenzel)
2021-06-02 01:49:09 +0000tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-06-02 01:51:12 +0000hmmmas(~chenqisu1@183.217.202.217)
2021-06-02 01:52:56 +0000systemhalted(~aqualogic@71-129-231-253.lightspeed.rcsntx.sbcglobal.net)
2021-06-02 01:58:40 +0000systemhalted(~aqualogic@71-129-231-253.lightspeed.rcsntx.sbcglobal.net) (Ping timeout: 245 seconds)
2021-06-02 02:01:28 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-02 02:02:26 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel) (Ping timeout: 245 seconds)
2021-06-02 02:02:43 +0000jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
2021-06-02 02:05:01 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:5878:fcfd:e07b:ffd9) (Remote host closed the connection)
2021-06-02 02:05:59 +0000wei2912(~wei2912@112.199.250.21)
2021-06-02 02:06:04 +0000systemhalted(~aqualogic@71-129-231-253.lightspeed.rcsntx.sbcglobal.net)
2021-06-02 02:07:43 +0000juhp(~juhp@128.106.188.199)
2021-06-02 02:09:08 +0000machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 244 seconds)
2021-06-02 02:12:06 +0000finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-06-02 02:12:07 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (copper.libera.chat (Nickname regained by services)))
2021-06-02 02:12:07 +0000finn_elijaFinnElija
2021-06-02 02:12:26 +0000systemhalted(~aqualogic@71-129-231-253.lightspeed.rcsntx.sbcglobal.net) (Ping timeout: 272 seconds)
2021-06-02 02:12:58 +0000jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-06-02 02:14:09 +0000o1lo01ol1o(~o1lo01ol1@c-73-10-81-85.hsd1.nj.comcast.net)
2021-06-02 02:15:46 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel)
2021-06-02 02:16:27 +0000lavaman(~lavaman@98.38.249.169)
2021-06-02 02:18:17 +0000y04nn(~y04nn@193.32.127.220) (Ping timeout: 252 seconds)
2021-06-02 02:20:43 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel) (Ping timeout: 272 seconds)
2021-06-02 02:20:45 +0000lavaman(~lavaman@98.38.249.169) (Ping timeout: 245 seconds)
2021-06-02 02:24:53 +0000AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net)
2021-06-02 02:29:43 +0000 <yin> oh i think i remember that!
2021-06-02 02:31:30 +0000td_(~td@94.134.91.112) (Ping timeout: 264 seconds)
2021-06-02 02:32:56 +0000tonyday(~user@202-65-93-249.ip4.superloop.com)
2021-06-02 02:33:10 +0000td_(~td@muedsl-82-207-238-043.citykom.de)
2021-06-02 02:35:13 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:5878:fcfd:e07b:ffd9)
2021-06-02 02:35:55 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-06-02 02:36:17 +0000ikex(~ash@user/ikex)
2021-06-02 02:36:50 +0000mccoyb(~textual@2601:182:d000:3b50:74fc:67c:ef8b:8632)
2021-06-02 02:37:15 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel)
2021-06-02 02:37:32 +0000tonyday(~user@202-65-93-249.ip4.superloop.com) (Ping timeout: 268 seconds)
2021-06-02 02:41:51 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel) (Ping timeout: 268 seconds)
2021-06-02 02:44:31 +0000vicfred(~vicfred@user/vicfred)
2021-06-02 02:45:17 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2021-06-02 02:45:55 +0000tonyday(~user@202-65-93-249.ip4.superloop.com)
2021-06-02 02:48:33 +0000shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 264 seconds)
2021-06-02 02:48:34 +0000ornxka(~ornxka@user/ornxka) (Quit: WeeChat 3.0)
2021-06-02 02:53:47 +0000ornxka(~ornxka@user/ornxka)
2021-06-02 03:01:14 +0000shailangsa(~shailangs@host86-186-136-74.range86-186.btcentralplus.com) ()
2021-06-02 03:01:56 +0000falafel_(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-02 03:02:08 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-02 03:03:18 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel)
2021-06-02 03:06:54 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
2021-06-02 03:07:19 +0000alx741(~alx741@181.196.69.176) (Quit: alx741)
2021-06-02 03:11:59 +0000fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-02 03:12:58 +0000abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-06-02 03:15:14 +0000zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-06-02 03:15:31 +0000otto_s(~user@p5b044eb9.dip0.t-ipconnect.de)
2021-06-02 03:17:34 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-02 03:18:23 +0000pfurla_(~pfurla@216.151.180.231)
2021-06-02 03:18:47 +0000otto_s_(~user@p5de2ffe1.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-06-02 03:19:34 +0000fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 272 seconds)
2021-06-02 03:20:04 +0000abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving)
2021-06-02 03:20:12 +0000twitch(~textual@pool-71-246-146-102.rich.east.verizon.net)
2021-06-02 03:21:28 +0000ikex(~ash@user/ikex) (Ping timeout: 272 seconds)
2021-06-02 03:21:53 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel) (Ping timeout: 264 seconds)
2021-06-02 03:21:54 +0000pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 264 seconds)
2021-06-02 03:22:18 +0000twitch(~textual@pool-71-246-146-102.rich.east.verizon.net) (Client Quit)
2021-06-02 03:22:25 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 245 seconds)
2021-06-02 03:23:04 +0000wanagnuj(~wanagnuj@101.95.97.158)
2021-06-02 03:24:11 +0000koishi_(~koishi_@67.209.186.120.16clouds.com)
2021-06-02 03:25:28 +0000Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-06-02 03:25:36 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 244 seconds)
2021-06-02 03:26:04 +0000hyiltiz(~quassel@31.220.5.250) ()
2021-06-02 03:26:33 +0000Lord_of_Life_Lord_of_Life
2021-06-02 03:26:35 +0000koishi_(~koishi_@67.209.186.120.16clouds.com) (Client Quit)
2021-06-02 03:26:42 +0000o1lo01ol1o(~o1lo01ol1@c-73-10-81-85.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-06-02 03:26:57 +0000o1lo01ol1o(~o1lo01ol1@c-73-10-81-85.hsd1.nj.comcast.net)
2021-06-02 03:28:42 +0000shailangsa(~shailangs@host86-186-136-74.range86-186.btcentralplus.com)
2021-06-02 03:29:36 +0000hyiltiz(~quassel@31.220.5.250)
2021-06-02 03:32:19 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-06-02 03:34:31 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel)
2021-06-02 03:39:12 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel) (Ping timeout: 272 seconds)
2021-06-02 03:39:15 +0000o1lo01ol1o(~o1lo01ol1@c-73-10-81-85.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-06-02 03:39:54 +0000ku(~ku@2601:280:c780:7ea0:a829:e2b3:d453:ddc1) (Ping timeout: 264 seconds)
2021-06-02 03:42:26 +0000renzhi(~xp@2607:fa49:6500:bc00::e7b) (Ping timeout: 252 seconds)
2021-06-02 03:50:05 +0000skn(~znc@sec.nimmagadda.net) (Quit: ZNC 1.8.2 - https://znc.in)
2021-06-02 03:50:34 +0000skn(~znc@sec.nimmagadda.net)
2021-06-02 03:50:49 +0000smitop(uid328768@user/smitop) (Quit: Connection closed for inactivity)
2021-06-02 03:53:11 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel)
2021-06-02 03:58:12 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel) (Ping timeout: 272 seconds)
2021-06-02 03:58:30 +0000rk04(~rk04@user/rajk)
2021-06-02 04:01:00 +0000 <jaevanko> So there's "Write Yourself a Scheme in 48 Hours", is there anything similar for a statically typed language, maybe a subset of Haskell?
2021-06-02 04:02:06 +0000 <Axman6> I think Stephen Dehow about http://dev.stephendiehl.com/fun/
2021-06-02 04:02:09 +0000 <Axman6> uh
2021-06-02 04:02:12 +0000 <Axman6> how about http://dev.stephendiehl.com/fun/
2021-06-02 04:02:32 +0000 <jaevanko> Oh, that seems perfect. Thanks
2021-06-02 04:02:51 +0000 <dy> Incomplete sadly :(
2021-06-02 04:03:06 +0000rk04(~rk04@user/rajk) (Ping timeout: 250 seconds)
2021-06-02 04:03:07 +0000 <Axman6> yeah, is a shame
2021-06-02 04:03:23 +0000haskman(~haskman@106.201.29.153)
2021-06-02 04:04:03 +0000 <jaevanko> Oh, I see that now. Well, it'll be a start
2021-06-02 04:05:59 +0000kmein(~weechat@user/kmein) (Quit: ciao kakao)
2021-06-02 04:06:03 +0000 <dy> Still a great start yeah.
2021-06-02 04:06:24 +0000 <dy> You might also check out: https://www.microsoft.com/en-us/research/publication/make-fast-curry-pushenter-vs-evalapply/
2021-06-02 04:06:29 +0000 <dy> For some insight into evaluation models.
2021-06-02 04:06:39 +0000 <dy> (And, perhaps, how you might compile them down.)
2021-06-02 04:07:07 +0000 <dy> "Our conclusion is simple, and contradicts our initial intuition: compiled implementations should use eval/apply."
2021-06-02 04:07:23 +0000 <dy> I could be wrong but isn't GHC STG still/back to push/enter though?
2021-06-02 04:07:57 +0000kmein(~weechat@user/kmein)
2021-06-02 04:09:17 +0000Feuermagier(~Feuermagi@user/feuermagier)
2021-06-02 04:09:32 +0000satai(~satai@static-84-42-172-253.net.upcbroadband.cz) (Quit: satai)
2021-06-02 04:13:56 +0000koishi_(~koishi_@67.209.186.120.16clouds.com)
2021-06-02 04:14:57 +0000koishi_(~koishi_@67.209.186.120.16clouds.com) (Remote host closed the connection)
2021-06-02 04:14:58 +0000eight(~eight@user/eight) (Ping timeout: 268 seconds)
2021-06-02 04:17:13 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel)
2021-06-02 04:19:14 +0000pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-06-02 04:21:08 +0000slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-06-02 04:21:35 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel) (Ping timeout: 245 seconds)
2021-06-02 04:22:16 +0000pfurla_(~pfurla@216.151.180.231) (Ping timeout: 272 seconds)
2021-06-02 04:22:51 +0000seeg-(~seeg@45.76.32.162) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
2021-06-02 04:24:46 +0000seeg(~seeg@2a05:f480:1400:311:5400:1ff:feff:256)
2021-06-02 04:29:27 +0000pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net) (Read error: Connection reset by peer)
2021-06-02 04:29:33 +0000pfurla_(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-06-02 04:30:09 +0000rk04(~rk04@user/rajk)
2021-06-02 04:30:44 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-02 04:31:48 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-02 04:32:53 +0000jaevanko(~jaevanko@2600:1700:1330:2bef:7d9a:87ce:495f:966a) (Quit: Leaving)
2021-06-02 04:34:08 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel)
2021-06-02 04:36:09 +0000lavaman(~lavaman@98.38.249.169)
2021-06-02 04:36:17 +0000vk3wtf(~doc@59-102-3-251.tpgi.com.au) (Ping timeout: 264 seconds)
2021-06-02 04:36:39 +0000reumeth(~reumeth@user/reumeth)
2021-06-02 04:38:24 +0000mccoyb(~textual@2601:182:d000:3b50:74fc:67c:ef8b:8632) (Quit: Textual IRC Client: www.textualapp.com)
2021-06-02 04:38:44 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel) (Ping timeout: 272 seconds)
2021-06-02 04:41:16 +0000lavaman(~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
2021-06-02 04:42:53 +0000danso(~danso@23-233-111-52.cpe.pppoe.ca) (Quit: WeeChat 3.1)
2021-06-02 04:45:04 +0000beka(~beka@104.193.170-254.PUBLIC.monkeybrains.net) (Ping timeout: 272 seconds)
2021-06-02 04:45:37 +0000ytg(~ytg@109-186-149-143.bb.netvision.net.il)
2021-06-02 04:46:00 +0000ytg(~ytg@109-186-149-143.bb.netvision.net.il) (Client Quit)
2021-06-02 04:46:08 +0000danso(~danso@23-233-111-52.cpe.pppoe.ca)
2021-06-02 04:47:22 +0000pfurla(~pfurla@216.131.82.58)
2021-06-02 04:48:14 +0000reumeth(~reumeth@user/reumeth) (Ping timeout: 272 seconds)
2021-06-02 04:49:05 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 245 seconds)
2021-06-02 04:49:50 +0000vk3wtf(~doc@124.168.198.139)
2021-06-02 04:50:13 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel)
2021-06-02 04:50:46 +0000pfurla_(~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 272 seconds)
2021-06-02 04:52:34 +0000haskman(~haskman@106.201.29.153) (Quit: Going to sleep. ZZZzzz…)
2021-06-02 04:53:35 +0000pfurla_(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-06-02 04:55:12 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel) (Ping timeout: 272 seconds)
2021-06-02 04:55:18 +0000seeg0(~thelounge@static.89.161.217.95.clients.your-server.de)
2021-06-02 04:55:50 +0000pfurla(~pfurla@216.131.82.58) (Ping timeout: 272 seconds)
2021-06-02 04:57:50 +0000falafel_(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 245 seconds)
2021-06-02 04:58:48 +0000Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-06-02 05:04:28 +0000AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) (Quit: Leaving.)
2021-06-02 05:05:45 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-06-02 05:06:52 +0000kristjansson(sid126207@id-126207.tinside.irccloud.com)
2021-06-02 05:08:34 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel)
2021-06-02 05:12:50 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel) (Ping timeout: 245 seconds)
2021-06-02 05:16:46 +0000fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-02 05:20:04 +0000favonia(~favonia@user/favonia)
2021-06-02 05:21:48 +0000fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 272 seconds)
2021-06-02 05:25:25 +0000beka(~beka@104.193.170-254.PUBLIC.monkeybrains.net)
2021-06-02 05:29:27 +0000exarkun(~exarkun@user/exarkun) (Ping timeout: 272 seconds)
2021-06-02 05:30:41 +0000Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-06-02 05:31:50 +0000rk04(~rk04@user/rajk) (Quit: Client closed)
2021-06-02 05:32:32 +0000chomwitt(~Pitsikoko@2a02:587:dc02:b00:b16c:5166:feb8:97d5)
2021-06-02 05:33:52 +0000wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com)
2021-06-02 05:36:59 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel)
2021-06-02 05:38:41 +0000euix(~euix@047-229-039-121.res.spectrum.com)
2021-06-02 05:38:42 +0000haltux(~haltux@a89-154-181-47.cpe.netcabo.pt) (Ping timeout: 264 seconds)
2021-06-02 05:39:06 +0000jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 245 seconds)
2021-06-02 05:39:25 +0000euix(~euix@047-229-039-121.res.spectrum.com) ()
2021-06-02 05:41:29 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel) (Ping timeout: 244 seconds)
2021-06-02 05:42:16 +0000schuelermine(~schuelerm@user/schuelermine)
2021-06-02 05:43:51 +0000Bartosz(~textual@24.35.90.211)
2021-06-02 05:43:56 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-02 05:46:27 +0000haltux(~haltux@a89-154-181-47.cpe.netcabo.pt)
2021-06-02 05:49:41 +0000guest62(~user@49.5.6.87)
2021-06-02 05:50:42 +0000 <guest62> turn epoch time to date like the command in bash shell, date "+%Y-%m-%d %H-%M-%S ", it is hard?
2021-06-02 05:51:14 +0000 <guest62> there's a list, contain lots of epoch time, but I need to group them by month
2021-06-02 05:51:31 +0000 <guest62> or by year or day
2021-06-02 05:51:54 +0000xff0x(~xff0x@2001:1a81:5307:4e00:e51:c3f6:62c2:5e71) (Ping timeout: 264 seconds)
2021-06-02 05:52:11 +0000xff0x(~xff0x@185.65.135.235)
2021-06-02 05:54:12 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-02 05:55:15 +0000mattil(~mattil@airio.portalify.com)
2021-06-02 05:56:48 +0000larkfisherman(~larkfishe@178.77.38.65)
2021-06-02 05:56:48 +0000larkfisherman(~larkfishe@178.77.38.65) (Client Quit)
2021-06-02 05:57:58 +0000sondre(~sondrelun@cm-84.212.100.140.getinternet.no)
2021-06-02 06:00:18 +0000myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net) (Ping timeout: 264 seconds)
2021-06-02 06:00:54 +0000favonia(~favonia@user/favonia) (Ping timeout: 264 seconds)
2021-06-02 06:01:18 +0000favonia(~favonia@user/favonia)
2021-06-02 06:02:08 +0000guest62`(~user@49.5.6.87)
2021-06-02 06:02:47 +0000v01d4lph4(~v01d4lph4@122.160.65.250)
2021-06-02 06:02:47 +0000v01d4lph4(~v01d4lph4@122.160.65.250) (Changing host)
2021-06-02 06:02:47 +0000v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-06-02 06:04:20 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel)
2021-06-02 06:05:41 +0000guest62(~user@49.5.6.87) (Ping timeout: 264 seconds)
2021-06-02 06:07:21 +0000pfurla(~pfurla@5.15.195.173.client.static.strong-in52.as13926.net)
2021-06-02 06:07:34 +0000Erutuon(~Erutuon@user/erutuon) (Quit: WeeChat 2.8)
2021-06-02 06:08:44 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel) (Ping timeout: 252 seconds)
2021-06-02 06:09:46 +0000exarkun(~exarkun@user/exarkun)
2021-06-02 06:10:08 +0000Erutuon(~Erutuon@user/erutuon)
2021-06-02 06:10:34 +0000pfurla_(~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 272 seconds)
2021-06-02 06:14:07 +0000 <dminuoso> Not bad, I have an actual memory leak in one of our haskell servers.
2021-06-02 06:14:16 +0000 <dminuoso> Now how do I go about and find it..
2021-06-02 06:15:08 +0000 <Axman6> Look at the code, and think _really_ hard
2021-06-02 06:15:13 +0000 <dminuoso> heh
2021-06-02 06:15:47 +0000 <Axman6> heap profiling is the first place to start, not sure the best way to do that though, it always felt like a bit of a dark art to me
2021-06-02 06:16:24 +0000 <dminuoso> https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/profiling.html#profiling-memory-us…
2021-06-02 06:16:28 +0000 <dminuoso> Looks straight enough to me
2021-06-02 06:16:53 +0000 <Axman6> Getting useful output is sometimes a bit painful though
2021-06-02 06:17:05 +0000 <Axman6> I think there might be some better tools now though
2021-06-02 06:17:05 +0000sondre(~sondrelun@cm-84.212.100.140.getinternet.no) (Ping timeout: 264 seconds)
2021-06-02 06:17:42 +0000favonia(~favonia@user/favonia) (Ping timeout: 264 seconds)
2021-06-02 06:17:57 +0000 <dminuoso> https://iohk.io/en/blog/posts/2020/09/24/being-lazy-without-getting-bloated/
2021-06-02 06:17:59 +0000 <dminuoso> Mmm
2021-06-02 06:18:06 +0000rk04(~rk04@user/rajk)
2021-06-02 06:18:53 +0000rk04(~rk04@user/rajk) (Client Quit)
2021-06-02 06:19:40 +0000Bartosz(~textual@24.35.90.211) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-02 06:20:28 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel)
2021-06-02 06:20:31 +0000favonia(~favonia@user/favonia)
2021-06-02 06:21:33 +0000Erutuon(~Erutuon@user/erutuon) (Quit: WeeChat 2.8)
2021-06-02 06:21:43 +0000Erutuon(~Erutuon@user/erutuon)
2021-06-02 06:24:30 +0000xff0x(~xff0x@185.65.135.235) (Ping timeout: 245 seconds)
2021-06-02 06:24:55 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel) (Ping timeout: 245 seconds)
2021-06-02 06:25:20 +0000haltux(~haltux@a89-154-181-47.cpe.netcabo.pt) (Ping timeout: 245 seconds)
2021-06-02 06:26:22 +0000xff0x(~xff0x@2001:1a81:5307:4e00:e51:c3f6:62c2:5e71)
2021-06-02 06:27:17 +0000jlamothe(~jlamothe@198.251.57.81) (Ping timeout: 272 seconds)
2021-06-02 06:27:28 +0000haltux(~haltux@a89-154-181-47.cpe.netcabo.pt)
2021-06-02 06:28:18 +0000vicfred(~vicfred@user/vicfred) (Ping timeout: 272 seconds)
2021-06-02 06:28:21 +0000phma(phma@2001:5b0:210b:c908:65f2:b626:259e:91d6) (Read error: Connection reset by peer)
2021-06-02 06:28:59 +0000jlamothe(~jlamothe@198.251.57.81)
2021-06-02 06:30:47 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-02 06:31:48 +0000phma(phma@2001:5b0:210b:c908:3c3e:633c:a47d:5a17)
2021-06-02 06:31:57 +0000wonko(~wjc@62.115.229.50)
2021-06-02 06:33:18 +0000sheepduck(~sheepduck@2607:fea8:2a60:b700::8a94) (Ping timeout: 264 seconds)
2021-06-02 06:37:33 +0000lavaman(~lavaman@98.38.249.169)
2021-06-02 06:38:02 +0000bfrk(~Thunderbi@200116b845fca000f97ff890167a6943.dip.versatel-1u1.de)
2021-06-02 06:39:18 +0000chomwitt(~Pitsikoko@2a02:587:dc02:b00:b16c:5166:feb8:97d5) (Ping timeout: 264 seconds)
2021-06-02 06:41:06 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel)
2021-06-02 06:42:00 +0000lavaman(~lavaman@98.38.249.169) (Ping timeout: 245 seconds)
2021-06-02 06:43:24 +0000bfrk(~Thunderbi@200116b845fca000f97ff890167a6943.dip.versatel-1u1.de) ()
2021-06-02 06:45:20 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel) (Ping timeout: 245 seconds)
2021-06-02 06:46:06 +0000chele(~chele@user/chele)
2021-06-02 06:46:20 +0000 <dminuoso> % instance Char where magic = 1
2021-06-02 06:46:20 +0000 <yahb> dminuoso: ; <interactive>:20:21: error: `magic' is not a (visible) method of class `Char'
2021-06-02 06:46:34 +0000 <dminuoso> Is this a diagnostic bug?
2021-06-02 06:46:58 +0000 <dminuoso> % :k Char
2021-06-02 06:46:58 +0000 <yahb> dminuoso: *
2021-06-02 06:47:27 +0000 <dminuoso> I get that this is valid syntax (nullary typeclasses), but GHC should detect that Char is not a class
2021-06-02 06:47:44 +0000Adran(~adran@botters/adran) (Quit: Este é o fim.)
2021-06-02 06:48:16 +0000 <opqdonut> % instance Maybe Char where magic = 1
2021-06-02 06:48:16 +0000 <yahb> opqdonut: ; <interactive>:22:27: error: `magic' is not a (visible) method of class `Maybe'
2021-06-02 06:48:23 +0000 <opqdonut> same thing
2021-06-02 06:49:05 +0000 <dminuoso> % instance NotAThing where magic = 1
2021-06-02 06:49:05 +0000 <yahb> dminuoso: ; <interactive>:23:10: error: Not in scope: type constructor or class `NotAThing'
2021-06-02 06:50:50 +0000 <Axman6> D:
2021-06-02 06:51:19 +0000Adran(adran@botters/adran)
2021-06-02 06:52:26 +0000rk04(~rk04@user/rajk)
2021-06-02 06:57:13 +0000haskman(~haskman@106.201.29.153)
2021-06-02 07:00:56 +0000schuelermine(~schuelerm@user/schuelermine) (Quit: Quit)
2021-06-02 07:02:24 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-02 07:03:20 +0000niflce(~IceChat95@user/niflce)
2021-06-02 07:03:28 +0000niflce(~IceChat95@user/niflce) (Client Quit)
2021-06-02 07:04:30 +0000chomwitt(~Pitsikoko@athedsl-20549.home.otenet.gr)
2021-06-02 07:10:04 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel)
2021-06-02 07:10:49 +0000mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-06-02 07:11:08 +0000cfricke(~cfricke@user/cfricke)
2021-06-02 07:12:08 +0000mc47(~yecinem@89.246.239.190)
2021-06-02 07:13:16 +0000guest62`(~user@49.5.6.87) (Ping timeout: 272 seconds)
2021-06-02 07:13:56 +0000shriekingnoise(~shrieking@186.137.144.80)
2021-06-02 07:14:41 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel) (Ping timeout: 264 seconds)
2021-06-02 07:15:10 +0000raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-02 07:15:18 +0000Guest6937(bart@kobayashi.com.pl) (Quit: WeeChat 3.1)
2021-06-02 07:15:31 +0000bjfs(bart@kobayashi.com.pl)
2021-06-02 07:15:50 +0000pavonia(~user@user/siracusa) (Quit: Bye!)
2021-06-02 07:17:34 +0000satai(~satai@static-84-42-172-253.net.upcbroadband.cz)
2021-06-02 07:17:38 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:2e4f:b94a:ab3f:8431)
2021-06-02 07:20:42 +0000bor0(~boro@user/bor0)
2021-06-02 07:21:30 +0000beka(~beka@104.193.170-254.PUBLIC.monkeybrains.net) (Ping timeout: 272 seconds)
2021-06-02 07:25:30 +0000favonia(~favonia@user/favonia) (Ping timeout: 264 seconds)
2021-06-02 07:26:07 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel)
2021-06-02 07:27:53 +0000favonia(~favonia@user/favonia)
2021-06-02 07:28:14 +0000Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-06-02 07:29:26 +0000chele_(~chele@user/chele)
2021-06-02 07:29:48 +0000dpl_(~dpl@77-121-78-163.chn.volia.net)
2021-06-02 07:30:11 +0000shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-06-02 07:30:20 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel) (Ping timeout: 245 seconds)
2021-06-02 07:31:06 +0000rk04(~rk04@user/rajk) (Ping timeout: 250 seconds)
2021-06-02 07:32:18 +0000chele(~chele@user/chele) (Ping timeout: 268 seconds)
2021-06-02 07:32:43 +0000chele_chele
2021-06-02 07:37:00 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-06-02 07:41:59 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel)
2021-06-02 07:42:31 +0000dunkeln(~dunkeln@94.129.65.28)
2021-06-02 07:44:56 +0000mattil(~mattil@airio.portalify.com) (Ping timeout: 272 seconds)
2021-06-02 07:45:10 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-02 07:46:50 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel) (Ping timeout: 272 seconds)
2021-06-02 07:51:56 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel)
2021-06-02 07:52:04 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:5878:fcfd:e07b:ffd9) (Remote host closed the connection)
2021-06-02 07:52:21 +0000spirgel(spirgel@gateway/vpn/protonvpn/spirgel) (Client Quit)
2021-06-02 07:54:19 +0000hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-06-02 07:55:06 +0000pera(~pera@0541db7e.skybroadband.com)
2021-06-02 07:55:29 +0000zeenk(~zeenk@2a02:2f04:a310:b600:b098:bf18:df4d:4c41)
2021-06-02 07:55:29 +0000peraGuest6551
2021-06-02 07:58:15 +0000fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-02 07:59:20 +0000pfurla_(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-06-02 08:00:43 +0000jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2021-06-02 08:00:56 +0000rk04(~rk04@user/rajk)
2021-06-02 08:01:08 +0000chele_(~chele@user/chele)
2021-06-02 08:01:11 +0000cheleGuest5174
2021-06-02 08:01:11 +0000chele_chele
2021-06-02 08:01:21 +0000jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Client Quit)
2021-06-02 08:01:38 +0000chomwitt(~Pitsikoko@athedsl-20549.home.otenet.gr) (Remote host closed the connection)
2021-06-02 08:01:39 +0000jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2021-06-02 08:01:48 +0000jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Client Quit)
2021-06-02 08:02:02 +0000pfurla(~pfurla@5.15.195.173.client.static.strong-in52.as13926.net) (Ping timeout: 252 seconds)
2021-06-02 08:02:03 +0000jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2021-06-02 08:02:41 +0000fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 264 seconds)
2021-06-02 08:03:15 +0000Guest5174(~chele@user/chele) (Ping timeout: 245 seconds)
2021-06-02 08:05:30 +0000rk04(~rk04@user/rajk) (Client Quit)
2021-06-02 08:06:18 +0000favonia(~favonia@user/favonia) (Ping timeout: 264 seconds)
2021-06-02 08:06:39 +0000shryke_(~shryke@91.103.43.254)
2021-06-02 08:07:43 +0000favonia(~favonia@user/favonia)
2021-06-02 08:08:05 +0000alp(~alp@163.172.83.213) (Changing host)
2021-06-02 08:08:05 +0000alp(~alp@user/alp)
2021-06-02 08:09:20 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Quit: Lost terminal)
2021-06-02 08:09:28 +0000hendursaga(~weechat@user/hendursaga) (Ping timeout: 252 seconds)
2021-06-02 08:10:00 +0000larkfisherman(~larkfishe@217.75.204.126)
2021-06-02 08:10:18 +0000_xft0(~root@185.234.208.208.r.toneticgroup.pl)
2021-06-02 08:12:57 +0000hendursaga(~weechat@user/hendursaga)
2021-06-02 08:13:27 +0000dhil(~dhil@195.213.192.85)
2021-06-02 08:15:36 +0000michalz(~user@185.246.204.60)
2021-06-02 08:17:00 +0000sqrt2(~ben@tunnel330957-pt.tunnel.tserv6.fra1.ipv6.he.net) (Ping timeout: 244 seconds)
2021-06-02 08:17:27 +0000pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-06-02 08:19:23 +0000gehmehgeh(~user@user/gehmehgeh)
2021-06-02 08:20:38 +0000sqrt2(~ben@tunnel330957-pt.tunnel.tserv6.fra1.ipv6.he.net)
2021-06-02 08:21:09 +0000shryke_(~shryke@91.103.43.254) (Quit: WeeChat 3.1)
2021-06-02 08:21:38 +0000shryke(~shryke@91.103.43.254)
2021-06-02 08:22:13 +0000ccapndave(~ccapndave@84-73-232-220.dclient.hispeed.ch)
2021-06-02 08:22:44 +0000 <ccapndave> Morning! How can I write this in point-free style? isValidChar c = isAscii c && isAlpha c
2021-06-02 08:23:25 +0000 <opqdonut> :t liftA2 (&&) isAscii isAlpha -- using the Applicative ((->) r) instance
2021-06-02 08:23:26 +0000 <lambdabot> Char -> Bool
2021-06-02 08:24:00 +0000boxscape(~boxscape@user/boxscape)
2021-06-02 08:24:21 +0000fendor_(~fendor@178.115.57.160.wireless.dyn.drei.com)
2021-06-02 08:24:26 +0000 <dminuoso> Depending on frequency, I sometimes find myself writing: (.&&.) = liftA2 (&&)
2021-06-02 08:24:43 +0000 <ccapndave> Awesome! Thanks very much
2021-06-02 08:24:52 +0000 <dminuoso> (And (.||.) = liftA2 (||) equivalent)
2021-06-02 08:25:08 +0000 <opqdonut> :t All . isAlpha <> All . isAscii -- using the Monoid m => Monoid (r->m) istance
2021-06-02 08:25:09 +0000 <lambdabot> Char -> All
2021-06-02 08:25:20 +0000raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 245 seconds)
2021-06-02 08:25:42 +0000 <boxscape> I recently discovered the Boolean package which just lets you do `isAlpha && isAscii`
2021-06-02 08:25:44 +0000 <opqdonut> :t getAll . (All . isAlpha <> All . isAscii) -- let's unwrap
2021-06-02 08:25:44 +0000 <lambdabot> Char -> Bool
2021-06-02 08:26:08 +0000 <dminuoso> % :t ala Sum foldMap [even, odd]
2021-06-02 08:26:09 +0000 <yahb> dminuoso: (Integral a, Num (a -> Bool)) => a -> Bool
2021-06-02 08:26:29 +0000 <dminuoso> uh no wait
2021-06-02 08:26:31 +0000 <dminuoso> this is strange
2021-06-02 08:26:59 +0000fendor(~fendor@178.165.178.245.wireless.dyn.drei.com) (Ping timeout: 272 seconds)
2021-06-02 08:27:19 +0000 <boxscape> % :t cotraverse and [even, odd]
2021-06-02 08:27:19 +0000 <yahb> boxscape: Integral a => a -> Bool
2021-06-02 08:27:29 +0000raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-02 08:27:33 +0000 <dminuoso> That's cute
2021-06-02 08:27:44 +0000dpl_(~dpl@77-121-78-163.chn.volia.net) (Read error: Connection reset by peer)
2021-06-02 08:27:55 +0000 <ccapndave> boxscape: https://hackage.haskell.org/package/Boolean-0.2.4/candidate/docs/Data-Boolean.html this one?
2021-06-02 08:28:08 +0000dpl_(~dpl@77-121-78-163.chn.volia.net)
2021-06-02 08:28:21 +0000 <boxscape> ccapndave yep, though this module in particular is what redefines && https://hackage.haskell.org/package/Boolean-0.2.4/docs/Data-Boolean-Overload.html
2021-06-02 08:29:19 +0000 <ccapndave> Stack doesn't seem to know about this package
2021-06-02 08:29:30 +0000 <boxscape> :(
2021-06-02 08:29:38 +0000 <ccapndave> Ah well, `liftA2` is fine
2021-06-02 08:29:52 +0000 <opqdonut> yeah that's what people use in practice
2021-06-02 08:30:27 +0000FreeVariable(~Thunderbi@2a02:aa12:540:e480:d738:2660:2e:8993)
2021-06-02 08:30:29 +0000 <ccapndave> Thanks a lot. I had better get back to my day job :)
2021-06-02 08:30:49 +0000 <ccapndave> Haskell has a way of taking my attention away from what I am supposed to be doing
2021-06-02 08:30:59 +0000 <opqdonut> I know
2021-06-02 08:31:34 +0000FreeVariable(~Thunderbi@2a02:aa12:540:e480:d738:2660:2e:8993) (Client Quit)
2021-06-02 08:31:38 +0000 <opqdonut> speaking of Haskell, I just pushed the final lecture of my online haskell course: https://haskell.mooc.fi/
2021-06-02 08:31:43 +0000 <boxscape> :t isAlpha &liftA2 (&&)$ isAscii -- I wish we had a nicer way of modifying operators with liftA2
2021-06-02 08:31:44 +0000 <lambdabot> Char -> Bool
2021-06-02 08:31:52 +0000 <opqdonut> part 2 is still technically "in preview", but there should be no major changes
2021-06-02 08:32:18 +0000 <ccapndave> Awesome!
2021-06-02 08:32:23 +0000 <ccapndave> I'll check it out
2021-06-02 08:32:30 +0000 <ccapndave> *after* doing some actual work ;)
2021-06-02 08:33:59 +0000FreeVariable(~Thunderbi@2a02:aa12:540:e480:d738:2660:2e:8993)
2021-06-02 08:35:07 +0000xprlgjf(~gavin@60.27.93.209.dyn.plus.net)
2021-06-02 08:36:22 +0000ccapndave(~ccapndave@84-73-232-220.dclient.hispeed.ch) (Quit: Leaving...)
2021-06-02 08:42:41 +0000tcard(~tcard@p2307053-ipngn17101hodogaya.kanagawa.ocn.ne.jp) (Remote host closed the connection)
2021-06-02 08:42:55 +0000tcard(~tcard@p2307053-ipngn17101hodogaya.kanagawa.ocn.ne.jp)
2021-06-02 08:43:17 +0000fabfianda(~fabfianda@net-93-148-125-174.cust.vodafonedsl.it) (Ping timeout: 252 seconds)
2021-06-02 08:44:15 +0000fabfianda(~fabfianda@mob-5-90-244-84.net.vodafone.it)
2021-06-02 08:46:06 +0000ukari(~ukari@user/ukari)
2021-06-02 08:47:15 +0000FreeVariable(~Thunderbi@2a02:aa12:540:e480:d738:2660:2e:8993) (Quit: FreeVariable)
2021-06-02 08:47:44 +0000FreeVariable(~Thunderbi@2a02:aa12:540:e480:d738:2660:2e:8993)
2021-06-02 08:48:07 +0000batman_(~batman@x4db91071.dyn.telefonica.de)
2021-06-02 08:48:24 +0000batman_(~batman@x4db91071.dyn.telefonica.de) (Client Quit)
2021-06-02 08:48:27 +0000FreeVariable(~Thunderbi@2a02:aa12:540:e480:d738:2660:2e:8993) (Client Quit)
2021-06-02 08:48:53 +0000FreeVariable(~Thunderbi@2a02:aa12:540:e480:d738:2660:2e:8993)
2021-06-02 08:49:18 +0000FreeVariable(~Thunderbi@2a02:aa12:540:e480:d738:2660:2e:8993) (Client Quit)
2021-06-02 08:50:50 +0000dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-06-02 08:52:24 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:5878:fcfd:e07b:ffd9)
2021-06-02 08:52:30 +0000kuribas(~user@ptr-25vy0i6y10noc9bho8l.18120a2.ip6.access.telenet.be)
2021-06-02 08:54:55 +0000dpl_(~dpl@77-121-78-163.chn.volia.net) (Ping timeout: 245 seconds)
2021-06-02 08:56:40 +0000FreeVariable(~Thunderbi@2a02:aa12:540:e480:d738:2660:2e:8993)
2021-06-02 08:57:18 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:5878:fcfd:e07b:ffd9) (Ping timeout: 264 seconds)
2021-06-02 08:58:42 +0000 <ukari> for `foo x y = bar x >> bar y`, it could be rewrite to `foo x = ((>>) . bar) x . bar` through `foo x y = (>>) (bar x) . bar $ y`. how to rewrite it to `foo = (. bar) . (>>) . bar`?
2021-06-02 08:59:42 +0000azeem(~azeem@dynamic-adsl-94-34-34-125.clienti.tiscali.it) (Ping timeout: 264 seconds)
2021-06-02 08:59:44 +0000 <[exa]> ukari: as the first thing, flip the `.` in the middle (flip (.) ...)
2021-06-02 09:00:06 +0000 <[exa]> then you should be able to do it just by adding one more `.` to get the `x` "out" of the second parameter
2021-06-02 09:00:19 +0000nschoe(~quassel@2a01:e0a:8e:a190:184d:3a8c:7727:6c6d)
2021-06-02 09:00:45 +0000 <[exa]> OR, use lambdabots great @pl functionality. :]
2021-06-02 09:01:05 +0000FreeVariable(~Thunderbi@2a02:aa12:540:e480:d738:2660:2e:8993) (Client Quit)
2021-06-02 09:03:55 +0000 <ukari> thanks you, [exa], I have get the `foo = flip (.) bar . ((>>) . bar)`
2021-06-02 09:04:14 +0000ubert(~Thunderbi@p200300ecdf259da5e6b318fffe838f33.dip0.t-ipconnect.de)
2021-06-02 09:04:50 +0000 <[exa]> yap that looks right
2021-06-02 09:05:26 +0000 <[exa]> not "optically better" tho
2021-06-02 09:05:39 +0000 <[exa]> I'd vote for `traverse bar [x,y]` or something
2021-06-02 09:06:24 +0000 <[exa]> (given you'd desperately want to "simplify" the original expression)
2021-06-02 09:07:59 +0000azeem(~azeem@dynamic-adsl-94-34-34-125.clienti.tiscali.it)
2021-06-02 09:09:44 +0000exarkun(~exarkun@user/exarkun) (Remote host closed the connection)
2021-06-02 09:10:17 +0000exarkun(~exarkun@user/exarkun)
2021-06-02 09:11:15 +0000Maxdamantus(~Maxdamant@user/maxdamantus) (Ping timeout: 244 seconds)
2021-06-02 09:13:00 +0000Maxdamantus(~Maxdamant@user/maxdamantus)
2021-06-02 09:13:54 +0000tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-06-02 09:14:14 +0000favonia(~favonia@user/favonia) (Ping timeout: 272 seconds)
2021-06-02 09:14:39 +0000favonia(~favonia@user/favonia)
2021-06-02 09:15:07 +0000Kaivo(~Kaivo@user/kaivo) (Ping timeout: 272 seconds)
2021-06-02 09:15:17 +0000 <ukari> summary about pointfree style for `foo x y = bar x >> bar y`, https://gist.github.com/ukari/6402acdcc61489c6625027d65a59bcc9
2021-06-02 09:17:50 +0000fabfianda(~fabfianda@mob-5-90-244-84.net.vodafone.it) (Ping timeout: 245 seconds)
2021-06-02 09:18:23 +0000fabfianda(~fabfianda@net-93-148-125-174.cust.dsl.teletu.it)
2021-06-02 09:18:31 +0000 <[exa]> o nice
2021-06-02 09:18:45 +0000Kaivo(~Kaivo@user/kaivo)
2021-06-02 09:19:31 +0000Pixi_(~Pixi@user/pixi)
2021-06-02 09:21:18 +0000 <boxscape> hm wikipedia lists an algorithm for converting into a pointfree expression (ie an expression in SK calculus) that has length Θ(n^3)
2021-06-02 09:21:19 +0000 <boxscape> I'm pretty sure you could do Θ(n) though
2021-06-02 09:21:25 +0000 <boxscape> You "just" need to write a lambda calculus interpreter pointfreely, and then attach the lambda term encoded with S and K combinators, giving you the constant length of the interpreter plus O(n) for the lambda term
2021-06-02 09:22:01 +0000 <boxscape> (n being the length of the original lambda expression)
2021-06-02 09:22:16 +0000 <river> true
2021-06-02 09:23:09 +0000Pixi(~Pixi@user/pixi) (Ping timeout: 272 seconds)
2021-06-02 09:24:15 +0000ixlun(~matthew@109.249.184.235)
2021-06-02 09:27:56 +0000sondre(~sondrelun@cm-84.212.100.140.getinternet.no)
2021-06-02 09:29:21 +0000wei2912(~wei2912@112.199.250.21) (Quit: Lost terminal)
2021-06-02 09:30:56 +0000dpl_(~dpl@77-121-78-163.chn.volia.net)
2021-06-02 09:34:30 +0000favonia(~favonia@user/favonia) (Ping timeout: 272 seconds)
2021-06-02 09:34:55 +0000favonia(~favonia@user/favonia)
2021-06-02 09:35:22 +0000pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2-dev)
2021-06-02 09:37:11 +0000Kaivo(~Kaivo@user/kaivo) (Ping timeout: 252 seconds)
2021-06-02 09:37:13 +0000pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-06-02 09:38:48 +0000Kaivo(~Kaivo@user/kaivo)
2021-06-02 09:41:31 +0000ku(~ku@2601:280:c780:7ea0:3536:1caf:f72e:47bc)
2021-06-02 09:42:30 +0000thiross(~thiross@173.242.113.143.16clouds.com)
2021-06-02 09:46:58 +0000thiross(~thiross@173.242.113.143.16clouds.com) (Client Quit)
2021-06-02 09:47:41 +0000thiross(~thiross@173.242.113.143.16clouds.com)
2021-06-02 09:48:58 +0000koishi_(~koishi_@67.209.186.120.16clouds.com)
2021-06-02 09:49:59 +0000koishi_(~koishi_@67.209.186.120.16clouds.com) (Remote host closed the connection)
2021-06-02 09:52:30 +0000ccntrq(~ccntrq@business-90-187-183-141.pool2.vodafone-ip.de)
2021-06-02 09:53:55 +0000econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-06-02 09:54:02 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:5878:fcfd:e07b:ffd9)
2021-06-02 09:56:02 +0000favonia(~favonia@user/favonia) (Ping timeout: 272 seconds)
2021-06-02 09:56:27 +0000favonia(~favonia@user/favonia)
2021-06-02 09:59:04 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:5878:fcfd:e07b:ffd9) (Ping timeout: 268 seconds)
2021-06-02 10:00:45 +0000dpl_(~dpl@77-121-78-163.chn.volia.net) (Ping timeout: 245 seconds)
2021-06-02 10:01:02 +0000shryke_(~shryke@91.103.43.254)
2021-06-02 10:02:07 +0000tonyday(~user@202-65-93-249.ip4.superloop.com) (Read error: Connection reset by peer)
2021-06-02 10:02:25 +0000tonyday(~user@202-65-93-249.ip4.superloop.com)
2021-06-02 10:04:04 +0000thiross(~thiross@173.242.113.143.16clouds.com) (Ping timeout: 250 seconds)
2021-06-02 10:04:30 +0000shryke(~shryke@91.103.43.254) (Ping timeout: 245 seconds)
2021-06-02 10:06:35 +0000fabfianda(~fabfianda@net-93-148-125-174.cust.dsl.teletu.it) (Ping timeout: 245 seconds)
2021-06-02 10:07:03 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:2e4f:b94a:ab3f:8431) (Ping timeout: 244 seconds)
2021-06-02 10:07:21 +0000fabfianda(~fabfianda@mob-5-90-240-15.net.vodafone.it)
2021-06-02 10:07:26 +0000tonyday(~user@202-65-93-249.ip4.superloop.com) (Ping timeout: 272 seconds)
2021-06-02 10:11:24 +0000favonia(~favonia@user/favonia) (Ping timeout: 268 seconds)
2021-06-02 10:11:47 +0000benin4(~benin@183.82.205.186)
2021-06-02 10:11:49 +0000favonia(~favonia@user/favonia)
2021-06-02 10:12:18 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:ca30:4180:833e:bce9)
2021-06-02 10:12:30 +0000benin(~benin@183.82.205.186) (Ping timeout: 272 seconds)
2021-06-02 10:12:30 +0000benin4benin
2021-06-02 10:13:45 +0000k3nny(~k3nny@user/k3nny)
2021-06-02 10:16:25 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-06-02 10:17:37 +0000haskman(~haskman@106.201.29.153) (Ping timeout: 272 seconds)
2021-06-02 10:18:18 +0000Erutuon(~Erutuon@user/erutuon) (Ping timeout: 264 seconds)
2021-06-02 10:19:28 +0000fabfianda(~fabfianda@mob-5-90-240-15.net.vodafone.it) (Ping timeout: 272 seconds)
2021-06-02 10:19:40 +0000fabfianda(~fabfianda@net-93-148-125-174.cust.dsl.teletu.it)
2021-06-02 10:20:59 +0000rk04(~rk04@user/rajk)
2021-06-02 10:22:46 +0000dpl_(~dpl@77-121-78-163.chn.volia.net)
2021-06-02 10:26:44 +0000ubikium(~ubikium@113x43x248x70.ap113.ftth.arteria-hikari.net)
2021-06-02 10:29:02 +0000scn(~user@2600:6c54:4500:1849:11c9:ec1e:8500:8c64)
2021-06-02 10:32:49 +0000favonia(~favonia@user/favonia) (Ping timeout: 272 seconds)
2021-06-02 10:33:03 +0000scn(~user@2600:6c54:4500:1849:11c9:ec1e:8500:8c64) (Quit: ERC (IRC client for Emacs 27.1))
2021-06-02 10:33:13 +0000favonia(~favonia@user/favonia)
2021-06-02 10:33:24 +0000dhil(~dhil@195.213.192.85) (Ping timeout: 272 seconds)
2021-06-02 10:35:15 +0000pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2-dev)
2021-06-02 10:36:04 +0000pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-06-02 10:36:45 +0000amk(~amk@176.61.106.150) (Remote host closed the connection)
2021-06-02 10:37:04 +0000pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit)
2021-06-02 10:37:17 +0000bor0(~boro@user/bor0) (Quit: Leaving)
2021-06-02 10:37:40 +0000haskman(~haskman@223.190.0.187)
2021-06-02 10:37:55 +0000raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
2021-06-02 10:38:49 +0000lavaman(~lavaman@98.38.249.169)
2021-06-02 10:39:26 +0000amk(~amk@176.61.106.150)
2021-06-02 10:41:43 +0000dhil(~dhil@195.213.192.85)
2021-06-02 10:43:16 +0000lavaman(~lavaman@98.38.249.169) (Ping timeout: 245 seconds)
2021-06-02 10:45:07 +0000berberman(~berberman@user/berberman) (Ping timeout: 265 seconds)
2021-06-02 10:45:13 +0000berberman_(~berberman@user/berberman)
2021-06-02 10:46:56 +0000img(~img@2405:6580:b1c0:2500:1e68:3732:5209:e4c0) (Quit: ZNC 1.8.1 - https://znc.in)
2021-06-02 10:47:43 +0000rk04(~rk04@user/rajk) (Quit: Client closed)
2021-06-02 10:49:15 +0000pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-06-02 10:49:47 +0000img(~img@2405:6580:b1c0:2500:2508:a86c:693c:5a39)
2021-06-02 10:49:59 +0000fendor_fendor
2021-06-02 10:56:06 +0000azeem(~azeem@dynamic-adsl-94-34-34-125.clienti.tiscali.it) (Ping timeout: 264 seconds)
2021-06-02 10:56:19 +0000raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-02 10:57:40 +0000raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-02 11:00:20 +0000raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 245 seconds)
2021-06-02 11:06:49 +0000ru0mad(~ru0mad@82-64-17-144.subs.proxad.net)
2021-06-02 11:08:38 +0000y04nn(~y04nn@193.32.127.220)
2021-06-02 11:08:50 +0000_xft0(~root@185.234.208.208.r.toneticgroup.pl) (Quit: leaving)
2021-06-02 11:09:40 +0000xsperry(~as@user/xsperry)
2021-06-02 11:10:08 +0000shryke_(~shryke@91.103.43.254) (Ping timeout: 272 seconds)
2021-06-02 11:10:32 +0000 <ziman> i'm writing an algorithm (check various caches, if they all miss, do something expensive) that can short-circuit in two ways: 1) cache hit, 2) some error. Is there a neat way of expressing this? Now I'm using MonadFail to express the errors but the cache lookups still cause a indentation cascade of case expressions, where the (Just hitData) branch is always (return hitData).
2021-06-02 11:10:57 +0000 <ziman> I find it hard to google.
2021-06-02 11:11:01 +0000machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-06-02 11:11:51 +0000ru0mad(~ru0mad@82-64-17-144.subs.proxad.net) (Remote host closed the connection)
2021-06-02 11:12:17 +0000ru0mad(~ru0mad@82-64-17-144.subs.proxad.net)
2021-06-02 11:12:25 +0000cheater1__(~Username@user/cheater)
2021-06-02 11:12:27 +0000cheater(~Username@user/cheater) (Ping timeout: 268 seconds)
2021-06-02 11:12:37 +0000cheater1__cheater
2021-06-02 11:12:59 +0000ru0mad(~ru0mad@82-64-17-144.subs.proxad.net) (Remote host closed the connection)
2021-06-02 11:13:24 +0000ru0mad(~ru0mad@82-64-17-144.subs.proxad.net)
2021-06-02 11:13:25 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-02 11:13:42 +0000pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2-dev)
2021-06-02 11:14:01 +0000ru0mad(~ru0mad@82-64-17-144.subs.proxad.net) (Client Quit)
2021-06-02 11:15:20 +0000wanagnuj(~wanagnuj@101.95.97.158) (Ping timeout: 245 seconds)
2021-06-02 11:16:14 +0000 <boxscape> ziman I don't have extensive experience with it but that seems like a use case for callCC, which lets you return early
2021-06-02 11:16:22 +0000 <boxscape> https://en.m.wikibooks.org/wiki/Haskell/Continuation_passing_style (search for callcc here)
2021-06-02 11:16:22 +0000pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-06-02 11:16:52 +0000 <boxscape> ziman you could combine ContT with ExceptT to get both the ability to return early and the ability to throw an error
2021-06-02 11:18:08 +0000 <ziman> ah, i see
2021-06-02 11:18:48 +0000 <ziman> yeah, that would probably work for my use case
2021-06-02 11:19:38 +0000ikex(~ash@user/ikex)
2021-06-02 11:20:52 +0000ixlun(~matthew@109.249.184.235) (Read error: Connection reset by peer)
2021-06-02 11:28:03 +0000 <boxscape> ziman I suppose you could also only use Cont without Except and have the function live in Cont r (Either Error Result), not sure which would be more convenient
2021-06-02 11:29:12 +0000haskman(~haskman@223.190.0.187) (Quit: Going to sleep. ZZZzzz…)
2021-06-02 11:29:38 +0000 <ziman> i think i'd prefer to have two distinct "throws"
2021-06-02 11:29:42 +0000 <boxscape> fair
2021-06-02 11:29:43 +0000 <ziman> but it's an interesting question
2021-06-02 11:30:19 +0000 <ziman> well, in other words, i'd like (pure x) return the success thing without me having to wrap it in Right
2021-06-02 11:30:46 +0000 <ziman> because otherwise the monad instance would be annoying, i imagine
2021-06-02 11:30:58 +0000 <ziman> like not being able to fmap stuff easily and such
2021-06-02 11:31:02 +0000boxscape10(~boxscape@user/boxscape)
2021-06-02 11:31:25 +0000 <boxscape10> ziman are you familiar with mtl style?
2021-06-02 11:31:36 +0000azeem(~azeem@dynamic-adsl-94-34-34-125.clienti.tiscali.it)
2021-06-02 11:32:01 +0000 <ziman> i use mtl but i'm not sure what you mean by the "mtl style"; do you mean autolifting via typeclasses?
2021-06-02 11:32:06 +0000 <boxscape10> yeah
2021-06-02 11:32:27 +0000 <boxscape10> but if you use mtl I imagine the answer is yes :)
2021-06-02 11:32:45 +0000 <ziman> hmm, is there an autolifted version of "pure"?
2021-06-02 11:32:57 +0000 <ziman> not sure if that makes sense, even
2021-06-02 11:33:27 +0000 <boxscape10> erm, I suppose I say pure is already autolifted IIUC
2021-06-02 11:33:34 +0000 <boxscape10> s/I say/I would say
2021-06-02 11:33:54 +0000favonia(~favonia@user/favonia) (Ping timeout: 264 seconds)
2021-06-02 11:34:01 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-02 11:34:55 +0000boxscape(~boxscape@user/boxscape) (Ping timeout: 245 seconds)
2021-06-02 11:34:55 +0000Guest6551(~pera@0541db7e.skybroadband.com) (Ping timeout: 245 seconds)
2021-06-02 11:35:27 +0000favonia(~favonia@user/favonia)
2021-06-02 11:36:47 +0000 <ziman> oh, right, because you'd use the transformer formulation then
2021-06-02 11:37:31 +0000haskman(~haskman@223.190.0.187)
2021-06-02 11:37:39 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Client Quit)
2021-06-02 11:37:47 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-02 11:38:07 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Client Quit)
2021-06-02 11:38:15 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-02 11:39:09 +0000habib(~habib@89.38.69.197)
2021-06-02 11:39:24 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Client Quit)
2021-06-02 11:39:33 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-02 11:39:48 +0000boxscape10boxscape
2021-06-02 11:40:30 +0000 <habib> hey, can anyone tell me if `(a <=< b) . c` is equivalent to `a <=< (b . c)`, and/or how to check the equivalence of different bracketed statements in the general case?
2021-06-02 11:40:48 +0000 <hpc> :t \a b c -> (a <=< b) . c
2021-06-02 11:40:49 +0000 <lambdabot> Monad m => (b -> m c) -> (a1 -> m b) -> (a2 -> a1) -> a2 -> m c
2021-06-02 11:40:55 +0000 <hpc> :t \a b c -> a <=< (b . c)
2021-06-02 11:40:56 +0000 <lambdabot> Monad m => (b1 -> m c) -> (b2 -> m b1) -> (a -> b2) -> a -> m c
2021-06-02 11:42:04 +0000 <hpc> you could do it with equational reasoning
2021-06-02 11:42:14 +0000 <merijn> @check \f g h x -> ((f <=< g) . h) x == (f <=< (g . h)) x
2021-06-02 11:42:15 +0000 <lambdabot> error:
2021-06-02 11:42:15 +0000 <lambdabot> • No instance for (Typeable m0) arising from a use of ‘myquickcheck’ • In th...
2021-06-02 11:42:18 +0000 <merijn> aww
2021-06-02 11:42:23 +0000 <hpc> expand out the definition of (.) and (<=<), and use the Monad laws to turn them into the same equation
2021-06-02 11:42:40 +0000 <hpc> or well, same expression
2021-06-02 11:42:56 +0000 <habib> i guess that's my final resort, just manually expanding it
2021-06-02 11:43:36 +0000waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-06-02 11:44:03 +0000 <habib> what i really care about is doing `a <=< b . c` without brackets and knowing that it's equivalent to the one i want `a <=< (b . c)`, but if the one i want is also equivalent to the other one, it doesn't matter which way the unbracketed expression resolves to
2021-06-02 11:44:30 +0000 <habib> in fact, if they're both equivalent, that's happy days, because then it means i don't have to put brackets when i want it the other way as well
2021-06-02 11:45:01 +0000hmmmas(~chenqisu1@183.217.202.217) (Quit: Leaving.)
2021-06-02 11:45:08 +0000dunkeln(~dunkeln@94.129.65.28) (Ping timeout: 268 seconds)
2021-06-02 11:46:36 +0000 <habib> thanks hpc, i'll just do the expansion tonight
2021-06-02 11:46:46 +0000 <lyxia> @check \fgh x -> let f,g :: Int -> [Int] ; h :: Int -> Int ; (Fn f, Fn g, Fn h) = fgh in ((f <=< g) . h) x === (f <=< (g . h)) x
2021-06-02 11:46:47 +0000 <lambdabot> +++ OK, passed 100 tests.
2021-06-02 11:47:55 +0000 <hpc> jeez, i need to properly learn quickcheck
2021-06-02 11:48:15 +0000 <habib> oh nice
2021-06-02 11:48:15 +0000dunkeln(~dunkeln@94.129.65.28)
2021-06-02 11:49:33 +0000 <habib> that's confidence enough for me with what i'm doing if i do a manual test and things still work the same
2021-06-02 11:49:39 +0000 <habib> thanks lyxia
2021-06-02 11:50:09 +0000 <habib> i gotta get back to work now ha; i'll use this tonight
2021-06-02 11:50:21 +0000habib(~habib@89.38.69.197) ()
2021-06-02 11:51:27 +0000haltux_(~haltux@a89-154-181-47.cpe.netcabo.pt)
2021-06-02 11:51:37 +0000thiross(~user@173.242.113.143.16clouds.com)
2021-06-02 11:51:45 +0000waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Quit: WeeChat 3.1)
2021-06-02 11:51:54 +0000haltux(~haltux@a89-154-181-47.cpe.netcabo.pt) (Ping timeout: 264 seconds)
2021-06-02 11:52:19 +0000shryke_(~shryke@91.103.43.254)
2021-06-02 11:52:30 +0000pera(~pera@0541db7e.skybroadband.com)
2021-06-02 11:52:54 +0000peraGuest3322
2021-06-02 11:54:18 +0000smitop(uid328768@user/smitop)
2021-06-02 11:55:07 +0000thiross(~user@173.242.113.143.16clouds.com) (Remote host closed the connection)
2021-06-02 11:55:29 +0000exarkun(~exarkun@user/exarkun) (Remote host closed the connection)
2021-06-02 11:55:38 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:5878:fcfd:e07b:ffd9)
2021-06-02 11:55:49 +0000ubikium(~ubikium@113x43x248x70.ap113.ftth.arteria-hikari.net) (Read error: Connection reset by peer)
2021-06-02 11:56:02 +0000exarkun(~exarkun@user/exarkun)
2021-06-02 11:56:09 +0000shryke_(~shryke@91.103.43.254) (Client Quit)
2021-06-02 11:58:57 +0000waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-06-02 12:00:22 +0000fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-02 12:00:33 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:5878:fcfd:e07b:ffd9) (Ping timeout: 268 seconds)
2021-06-02 12:02:14 +0000ubikium(~ubikium@113x43x248x70.ap113.ftth.arteria-hikari.net)
2021-06-02 12:03:58 +0000ikex(~ash@user/ikex) (Ping timeout: 272 seconds)
2021-06-02 12:04:52 +0000fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 268 seconds)
2021-06-02 12:08:24 +0000azeem(~azeem@dynamic-adsl-94-34-34-125.clienti.tiscali.it) (Read error: Connection reset by peer)
2021-06-02 12:09:08 +0000zebrag(~chris@user/zebrag)
2021-06-02 12:09:11 +0000ikex(~ash@user/ikex)
2021-06-02 12:09:46 +0000GuYuChina(~GuYuChina@120.244.202.156)
2021-06-02 12:10:05 +0000GuYuChina(~GuYuChina@120.244.202.156) ()
2021-06-02 12:13:00 +0000azeem(~azeem@dynamic-adsl-94-34-34-125.clienti.tiscali.it)
2021-06-02 12:13:56 +0000dutchgriffon(~laurens@2604:3d08:4383:6200:14a:dacb:8b69:ead6) (Ping timeout: 252 seconds)
2021-06-02 12:15:04 +0000dutchgriffon(~laurens@2604:3d08:4383:6200:1c6:2d20:b4b0:b2cf)
2021-06-02 12:18:06 +0000benin8(~benin@106.198.94.140)
2021-06-02 12:18:20 +0000ptrcmd(~ptrcmd@user/ptrcmd) (Quit: Lost terminal)
2021-06-02 12:19:23 +0000jacks2(~bc817c21@217.29.117.252)
2021-06-02 12:19:25 +0000ptrcmd(~ptrcmd@user/ptrcmd)
2021-06-02 12:19:55 +0000benin(~benin@183.82.205.186) (Ping timeout: 245 seconds)
2021-06-02 12:21:29 +0000 <jacks2> hi. where can I find textual source that is in the gif on this page? http://hackage.haskell.org/package/concurrent-output
2021-06-02 12:21:32 +0000 <jacks2> I tried google but no luck
2021-06-02 12:21:43 +0000benin(benin@gateway/vpn/protonvpn/benin)
2021-06-02 12:23:21 +0000 <Taneb> jacks2: https://git.joeyh.name/index.cgi/concurrent-output.git/tree/demo2.hs
2021-06-02 12:23:41 +0000benin8(~benin@106.198.94.140) (Ping timeout: 264 seconds)
2021-06-02 12:23:52 +0000 <jacks2> thanks!
2021-06-02 12:23:55 +0000 <Taneb> I went to the website linked to as the source repo on Hackage, and saw there was a demo2.hs file
2021-06-02 12:25:12 +0000 <jacks2> yeah, I missed it
2021-06-02 12:25:17 +0000 <jacks2> pretty nifty library.
2021-06-02 12:26:02 +0000 <jacks2> demo works flawlessly on linux, would be nice if it worked on other OSes as well. I'll have to test
2021-06-02 12:29:14 +0000leeb(~leeb@KD111239154171.au-net.ne.jp)
2021-06-02 12:30:52 +0000Guest5(~Guest5@040-194-158-163.dynamic.caiway.nl)
2021-06-02 12:30:54 +0000dpl_(~dpl@77-121-78-163.chn.volia.net) (Ping timeout: 264 seconds)
2021-06-02 12:31:00 +0000cheater(~Username@user/cheater) (Remote host closed the connection)
2021-06-02 12:31:05 +0000 <Guest5> Hi, I have a strange Haskell problem
2021-06-02 12:31:19 +0000v01d4lph4(~v01d4lph4@user/v01d4lph4) (Remote host closed the connection)
2021-06-02 12:31:36 +0000 <Guest5> I have a list `[c, b, a]`, I then call `reverse` on the list and it gives back `[b, a, c]`
2021-06-02 12:31:51 +0000 <Guest5> How is that possible?
2021-06-02 12:31:53 +0000v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-06-02 12:32:09 +0000 <jacks2> > reverse [1, 2, 3]
2021-06-02 12:32:11 +0000 <lambdabot> [3,2,1]
2021-06-02 12:32:11 +0000 <merijn> > reverse [ 3, 2, 1]
2021-06-02 12:32:13 +0000 <lambdabot> [1,2,3]
2021-06-02 12:32:43 +0000int-ecan think of dirty runST/unsafeInterleaveST tricks to do that kind of thing
2021-06-02 12:32:44 +0000 <merijn> Pretty sure you're calling the wrong reverse function
2021-06-02 12:33:01 +0000dpl_(~dpl@77-121-78-163.chn.volia.net)
2021-06-02 12:33:06 +0000benin(benin@gateway/vpn/protonvpn/benin) (Ping timeout: 272 seconds)
2021-06-02 12:33:07 +0000 <merijn> int-e: When you hear hooves, think horses, not zebras ;)
2021-06-02 12:33:18 +0000 <merijn> Well, unless you live in Africa, I suppose!
2021-06-02 12:33:28 +0000 <int-e> > reverse [c,b,a]
2021-06-02 12:33:29 +0000 <lambdabot> [a,b,c]
2021-06-02 12:33:43 +0000 <Guest5> ```
2021-06-02 12:33:47 +0000 <Guest5> ```flattenApp :: Surface -> (Surface, [Surface])
2021-06-02 12:33:48 +0000 <Guest5> flattenApp s = let (f', as) = go s in (f', reverse as)
2021-06-02 12:33:48 +0000 <Guest5> where
2021-06-02 12:33:49 +0000 <Guest5> go (SApp f a) = let (f', as) = flattenApp f in (f', a : as)
2021-06-02 12:33:49 +0000 <Guest5> go s = (s, [])
2021-06-02 12:33:50 +0000 <Guest5> reverse [] = []
2021-06-02 12:33:50 +0000Guest5(~Guest5@040-194-158-163.dynamic.caiway.nl) (Killed (ozone (No Spam)))
2021-06-02 12:34:00 +0000 <yushyin> ;D
2021-06-02 12:34:19 +0000 <merijn> Guest5: That is defining a custom reverse right there, so *presumably* your definition of reverse is broken :)
2021-06-02 12:34:29 +0000 <int-e> reverse [] = [] -- well we see what's wrong here
2021-06-02 12:34:41 +0000 <int-e> merijn: they're not currently here, ozone killed them
2021-06-02 12:35:06 +0000 <merijn> I have join/quits disabled :p
2021-06-02 12:35:06 +0000 <niko> he should be able to rejoin
2021-06-02 12:35:38 +0000timothy1(~timothy@bb42-60-217-138.singnet.com.sg)
2021-06-02 12:36:11 +0000 <int-e> merijn: anyway, when I hear hooves, I think people banging coconuts
2021-06-02 12:36:41 +0000koishi_(~koishi_@67.209.186.120.16clouds.com)
2021-06-02 12:36:54 +0000v01d4lph4(~v01d4lph4@user/v01d4lph4) (Ping timeout: 272 seconds)
2021-06-02 12:37:35 +0000dpl_(~dpl@77-121-78-163.chn.volia.net) (Ping timeout: 252 seconds)
2021-06-02 12:37:56 +0000timothy1(~timothy@bb42-60-217-138.singnet.com.sg) (Client Quit)
2021-06-02 12:38:49 +0000 <merijn> Where did you get the coconuts?
2021-06-02 12:38:51 +0000 <jacks2> Guest5, do you understand what you did?
2021-06-02 12:39:26 +0000 <jacks2> > let reverse _ = "..." in reverse [a,b,c]
2021-06-02 12:39:28 +0000 <lambdabot> "..."
2021-06-02 12:39:28 +0000 <merijn> Found them? In Mercia? The coconut's tropical! This is a temperate zone!
2021-06-02 12:40:01 +0000ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2021-06-02 12:41:27 +0000cheater(~Username@user/cheater)
2021-06-02 12:41:53 +0000Guest5(~Guest5@040-194-158-163.dynamic.caiway.nl)
2021-06-02 12:42:09 +0000 <Guest5> Oops, I got banned for a moment
2021-06-02 12:42:27 +0000dpl_(~dpl@77-121-78-163.chn.volia.net)
2021-06-02 12:43:11 +0000 <Taneb> Guest5: yeah, it's generally bad to paste multiple lines directly into IRC. For that sort of thing you should use some sort of paste bin service
2021-06-02 12:43:25 +0000 <Guest5> Yeah lesson learned
2021-06-02 12:45:11 +0000koishi_(~koishi_@67.209.186.120.16clouds.com) (Remote host closed the connection)
2021-06-02 12:45:53 +0000 <int-e> merijn: I don't know, I never asked the Monty Python troupe.
2021-06-02 12:46:13 +0000fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-02 12:46:39 +0000cheater(~Username@user/cheater) (Remote host closed the connection)
2021-06-02 12:47:04 +0000benin(~benin@183.82.205.186)
2021-06-02 12:47:08 +0000bigLama(~user@static-176-165-167-17.ftth.abo.bbox.fr)
2021-06-02 12:50:24 +0000rk04(~rk04@user/rajk)
2021-06-02 12:50:50 +0000Guest5(~Guest5@040-194-158-163.dynamic.caiway.nl) (Quit: Client closed)
2021-06-02 12:50:54 +0000koishi_(~koishi_@67.209.186.120.16clouds.com)
2021-06-02 12:51:11 +0000 <c_wraith> how confusing is it to use <**> in a parser? I've got an infix expression that I had written variously as `(\x op y -> x `op` y) <$> fx <*> fop <*> fy', `flip ($) <$> fx <*> fop <*> fy', and `(&) <$> fx <*> fop <*> fy'
2021-06-02 12:51:38 +0000 <c_wraith> I just realized I can write it as `fx <**> fop <*> fy' instead.
2021-06-02 12:52:00 +0000 <c_wraith> But I'm not convinced that's any better
2021-06-02 12:52:20 +0000 <Taneb> I personally think it's not much worse than using <*> at all
2021-06-02 12:53:01 +0000ubikium(~ubikium@113x43x248x70.ap113.ftth.arteria-hikari.net) (Read error: Connection reset by peer)
2021-06-02 12:53:57 +0000 <int-e> c_wraith: lgtm
2021-06-02 12:54:33 +0000cheater1__(~Username@user/cheater)
2021-06-02 12:55:03 +0000cheater1__cheater
2021-06-02 12:55:41 +0000 <dminuoso> c_wraith: I dislike <**> in optparse-applicative, where it seems to be rather common
2021-06-02 12:55:53 +0000 <gentauro> anybody using `hakyll`? I would like to have bookmarks on my "titles". Just like the readme.md handle that on GitLab/GitHub. Anybody done this?
2021-06-02 12:55:58 +0000 <int-e> (apart from the fact that <**> isn't the nicest name for what it does, which can't easily be changed after the fact)
2021-06-02 12:56:34 +0000 <dminuoso> Id rather use ApplicativeDo ;)
2021-06-02 12:57:12 +0000 <int-e> dminuoso: but then you need names for all the points, eww
2021-06-02 12:57:45 +0000reumeth(~reumeth@user/reumeth)
2021-06-02 12:58:37 +0000ubikium(~ubikium@113x43x248x70.ap113.ftth.arteria-hikari.net)
2021-06-02 13:00:22 +0000rk04(~rk04@user/rajk) (Quit: Client closed)
2021-06-02 13:01:01 +0000alx741(~alx741@181.196.69.176)
2021-06-02 13:01:11 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:5878:fcfd:e07b:ffd9)
2021-06-02 13:03:12 +0000rk04(~rk04@user/rajk)
2021-06-02 13:04:01 +0000bigLama(~user@static-176-165-167-17.ftth.abo.bbox.fr) (Quit: ERC (IRC client for Emacs 28.0.50))
2021-06-02 13:06:07 +0000koishi_(~koishi_@67.209.186.120.16clouds.com) (Remote host closed the connection)
2021-06-02 13:06:56 +0000gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-06-02 13:07:44 +0000gentauro(~gentauro@user/gentauro)
2021-06-02 13:10:21 +0000dunkeln(~dunkeln@94.129.65.28) (Ping timeout: 245 seconds)
2021-06-02 13:10:43 +0000o1lo01ol1o(~o1lo01ol1@mobile-107-107-58-49.mycingular.net)
2021-06-02 13:12:22 +0000oxide(~lambda@user/oxide) (Ping timeout: 272 seconds)
2021-06-02 13:12:22 +0000bigLama(~user@static-176-165-167-17.ftth.abo.bbox.fr)
2021-06-02 13:12:44 +0000wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-02 13:14:00 +0000bigLama(~user@static-176-165-167-17.ftth.abo.bbox.fr) (Client Quit)
2021-06-02 13:14:08 +0000wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com)
2021-06-02 13:15:25 +0000bigLama(~user@static-176-165-167-17.ftth.abo.bbox.fr)
2021-06-02 13:15:40 +0000bigLama(~user@static-176-165-167-17.ftth.abo.bbox.fr) (Client Quit)
2021-06-02 13:16:10 +0000xff0x(~xff0x@2001:1a81:5307:4e00:e51:c3f6:62c2:5e71) (Ping timeout: 272 seconds)
2021-06-02 13:16:19 +0000bigLama(~user@static-176-165-167-17.ftth.abo.bbox.fr)
2021-06-02 13:18:42 +0000waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 272 seconds)
2021-06-02 13:19:32 +0000FreeVariable(~Thunderbi@156.25.4.27)
2021-06-02 13:20:17 +0000waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
2021-06-02 13:20:24 +0000FreeVariable(~Thunderbi@156.25.4.27) (Client Quit)
2021-06-02 13:21:05 +0000hexo(~hexo@2a02-ab04-2843-9500-c95c-a376-1418-c3e1.dynamic.v6.chello.sk)
2021-06-02 13:22:27 +0000dunkeln(~dunkeln@94.129.65.28)
2021-06-02 13:23:04 +0000wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-02 13:23:43 +0000dut(~dut@user/dut)
2021-06-02 13:23:44 +0000dut_(~dut@user/dut)
2021-06-02 13:24:26 +0000dut_(~dut@user/dut) (Client Quit)
2021-06-02 13:27:35 +0000fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-06-02 13:27:44 +0000fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-02 13:29:40 +0000ub(~Thunderbi@p200300ecdf259da5656b91086baf35ac.dip0.t-ipconnect.de)
2021-06-02 13:30:27 +0000AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net)
2021-06-02 13:30:39 +0000larkfisherman(~larkfishe@217.75.204.126) (Quit: Leaving)
2021-06-02 13:31:18 +0000ixlun(~matthew@109.249.184.235)
2021-06-02 13:31:30 +0000larkfisherman(~larkfishe@217.75.204.126)
2021-06-02 13:31:30 +0000haltux_(~haltux@a89-154-181-47.cpe.netcabo.pt) (Ping timeout: 264 seconds)
2021-06-02 13:31:31 +0000dyocelot
2021-06-02 13:31:40 +0000ocelotdy
2021-06-02 13:39:09 +0000larkfisherman(~larkfishe@217.75.204.126) (Quit: Leaving)
2021-06-02 13:42:46 +0000benin(~benin@183.82.205.186) (Ping timeout: 272 seconds)
2021-06-02 13:46:27 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:5878:fcfd:e07b:ffd9) (Remote host closed the connection)
2021-06-02 13:48:40 +0000__monty__(~toonn@user/toonn)
2021-06-02 13:49:56 +0000marienz(~marienz@libera/staff/marienz)
2021-06-02 13:51:00 +0000waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 272 seconds)
2021-06-02 13:55:40 +0000Boomerang(~Boomerang@xd520f68c.cust.hiper.dk)
2021-06-02 13:57:51 +0000 <dminuoso> Alternatively you can use <*> + Backwards
2021-06-02 13:57:57 +0000 <dminuoso> A bit overkill, I admit.
2021-06-02 13:58:30 +0000myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net)
2021-06-02 14:02:16 +0000 <c_wraith> that's way beyond a *bit* overkill
2021-06-02 14:03:14 +0000 <c_wraith> it would work nicely if I wanted that every single time. But when I just want reverse application once, that's an amazing amount of overhead.
2021-06-02 14:05:17 +0000exarkun(~exarkun@user/exarkun) (Read error: Connection reset by peer)
2021-06-02 14:05:47 +0000exarkun(~exarkun@user/exarkun)
2021-06-02 14:09:31 +0000pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2-dev)
2021-06-02 14:10:00 +0000benin(~benin@183.82.205.186)
2021-06-02 14:11:03 +0000geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com)
2021-06-02 14:11:23 +0000xff0x(~xff0x@217.110.198.158)
2021-06-02 14:19:12 +0000hexfive(~eric@50.35.83.177)
2021-06-02 14:19:26 +0000hexfive(~eric@50.35.83.177) (Client Quit)
2021-06-02 14:19:30 +0000xff0x(~xff0x@217.110.198.158) (Ping timeout: 245 seconds)
2021-06-02 14:19:52 +0000FreeVariable(~Thunderbi@wifi-unifr-140-170.unifr.ch)
2021-06-02 14:20:56 +0000ixlun(~matthew@109.249.184.235) (Read error: Connection reset by peer)
2021-06-02 14:21:49 +0000bigLama(~user@static-176-165-167-17.ftth.abo.bbox.fr) (ERC (IRC client for Emacs 28.0.50))
2021-06-02 14:21:57 +0000xff0x(~xff0x@217.110.198.158)
2021-06-02 14:22:06 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-02 14:22:22 +0000bigLama(~user@static-176-165-167-17.ftth.abo.bbox.fr)
2021-06-02 14:24:40 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-02 14:27:23 +0000slowButPresent(~slowButPr@user/slowbutpresent)
2021-06-02 14:28:07 +0000 <dminuoso> c_wraith: Hey,
2021-06-02 14:28:13 +0000 <dminuoso> Sorry, hit enter too early
2021-06-02 14:30:05 +0000 <dminuoso> But hey, can you find some comfort in the irony of the Applicative definition for BackwardsÖ
2021-06-02 14:30:06 +0000 <dminuoso> Backwards f <*> Backwards a = Backwards (a <**> f)
2021-06-02 14:31:16 +0000 <c_wraith> haha
2021-06-02 14:37:02 +0000dtman34(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net)
2021-06-02 14:40:34 +0000lavaman(~lavaman@98.38.249.169)
2021-06-02 14:40:48 +0000chomwitt(~Pitsikoko@2a02:587:dc02:b00:b16c:5166:feb8:97d5)
2021-06-02 14:41:43 +0000Sgeo(~Sgeo@user/sgeo)
2021-06-02 14:43:36 +0000jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-06-02 14:45:28 +0000lavaman(~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
2021-06-02 14:46:06 +0000ikex(~ash@user/ikex) (Ping timeout: 272 seconds)
2021-06-02 14:46:12 +0000drewolson(~drewolson@64.227.24.16) (Changing host)
2021-06-02 14:46:12 +0000drewolson(~drewolson@user/drewolson)
2021-06-02 14:46:26 +0000raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
2021-06-02 14:46:49 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3547:b6d4:7412:5857)
2021-06-02 14:50:21 +0000Iryon(~Iryon@2a02:a31a:a045:3500:c000:ef2e:b473:4083)
2021-06-02 14:51:48 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3547:b6d4:7412:5857) (Ping timeout: 272 seconds)
2021-06-02 14:56:56 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3547:b6d4:7412:5857)
2021-06-02 14:57:17 +0000Soft(~soft-matr@2001:470:69fc:105::c75)
2021-06-02 14:57:48 +0000cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.1)
2021-06-02 14:58:29 +0000 <kuribas> :t Backwards
2021-06-02 14:58:30 +0000 <lambdabot> error:
2021-06-02 14:58:30 +0000 <lambdabot> • Data constructor not in scope: Backwards
2021-06-02 14:58:30 +0000 <lambdabot> • Perhaps you meant variable ‘backwards’ (imported from Control.Lens)
2021-06-02 14:59:38 +0000 <c_wraith> https://hackage.haskell.org/package/transformers-0.5.6.2/docs/Control-Applicative-Backwards.html
2021-06-02 15:00:45 +0000arjun(~user@user/arjun)
2021-06-02 15:00:47 +0000hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com)
2021-06-02 15:08:34 +0000 <ski> @type Control.Applicative.Backwards.Backwards
2021-06-02 15:08:35 +0000 <lambdabot> forall k (f :: k -> *) (a :: k). f a -> Control.Applicative.Backwards.Backwards f a
2021-06-02 15:10:08 +0000 <c_wraith> Huh. I really don't see that getting much benefit from being polykinded, but at least it won't hurt anything
2021-06-02 15:12:25 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3547:b6d4:7412:5857) (Remote host closed the connection)
2021-06-02 15:12:37 +0000hexo(~hexo@2a02-ab04-2843-9500-c95c-a376-1418-c3e1.dynamic.v6.chello.sk) (Changing host)
2021-06-02 15:12:38 +0000hexo(~hexo@user/hexo)
2021-06-02 15:13:14 +0000arjun(~user@user/arjun) (Remote host closed the connection)
2021-06-02 15:15:14 +0000haskman(~haskman@223.190.0.187) (Quit: Going to sleep. ZZZzzz…)
2021-06-02 15:16:30 +0000__monty__(~toonn@user/toonn) (Ping timeout: 272 seconds)
2021-06-02 15:17:24 +0000Topsi(~Tobias@dyndsl-095-033-027-146.ewe-ip-backbone.de)
2021-06-02 15:20:39 +0000haskman(~haskman@223.190.0.187)
2021-06-02 15:21:23 +0000Ariakenom(~Ariakenom@2001:9b1:efb:fc00:524:105d:d218:2c77)
2021-06-02 15:22:06 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3547:b6d4:7412:5857)
2021-06-02 15:24:23 +0000ccntrq(~ccntrq@business-90-187-183-141.pool2.vodafone-ip.de) (Remote host closed the connection)
2021-06-02 15:24:54 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-06-02 15:26:18 +0000k3nny(~k3nny@user/k3nny) (Quit: Leaving)
2021-06-02 15:27:56 +0000__monty__(~toonn@user/toonn)
2021-06-02 15:28:39 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:ca30:4180:833e:bce9) (Quit: WeeChat 2.8)
2021-06-02 15:30:26 +0000xff0x(~xff0x@217.110.198.158) (Ping timeout: 272 seconds)
2021-06-02 15:30:54 +0000favonia(~favonia@user/favonia) (Ping timeout: 264 seconds)
2021-06-02 15:32:19 +0000benin5(benin@gateway/vpn/protonvpn/benin)
2021-06-02 15:32:36 +0000favonia(~favonia@user/favonia)
2021-06-02 15:34:20 +0000bfrk(~Thunderbi@200116b845fca000f97ff890167a6943.dip.versatel-1u1.de)
2021-06-02 15:34:30 +0000benin(~benin@183.82.205.186) (Ping timeout: 264 seconds)
2021-06-02 15:34:31 +0000benin5benin
2021-06-02 15:34:37 +0000lbseale(~lbseale@ip72-194-54-201.sb.sd.cox.net)
2021-06-02 15:36:02 +0000o1lo01ol_(~o1lo01ol1@c-73-10-81-85.hsd1.nj.comcast.net)
2021-06-02 15:36:25 +0000chddr(~Thunderbi@31.148.23.125)
2021-06-02 15:38:14 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3547:b6d4:7412:5857) (Remote host closed the connection)
2021-06-02 15:39:16 +0000sondre(~sondrelun@cm-84.212.100.140.getinternet.no) (Ping timeout: 244 seconds)
2021-06-02 15:39:18 +0000nschoe(~quassel@2a01:e0a:8e:a190:184d:3a8c:7727:6c6d) (Ping timeout: 264 seconds)
2021-06-02 15:39:53 +0000o1lo01ol1o(~o1lo01ol1@mobile-107-107-58-49.mycingular.net) (Ping timeout: 264 seconds)
2021-06-02 15:40:37 +0000Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-06-02 15:43:32 +0000o1lo01ol1o(~o1lo01ol1@c-73-10-81-85.hsd1.nj.comcast.net)
2021-06-02 15:43:32 +0000o1lo01ol_(~o1lo01ol1@c-73-10-81-85.hsd1.nj.comcast.net) (Read error: Connection reset by peer)
2021-06-02 15:43:55 +0000_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-06-02 15:45:15 +0000benin1(~benin@183.82.205.186)
2021-06-02 15:46:49 +0000_xft0(~root@185.234.208.208.r.toneticgroup.pl)
2021-06-02 15:46:51 +0000rk04(~rk04@user/rajk) (Quit: Client closed)
2021-06-02 15:47:00 +0000benin(benin@gateway/vpn/protonvpn/benin) (Ping timeout: 245 seconds)
2021-06-02 15:47:01 +0000benin1benin
2021-06-02 15:47:37 +0000Scotty_Trees(~Scotty_Tr@162-234-179-169.lightspeed.brhmal.sbcglobal.net) (Quit: Leaving)
2021-06-02 15:48:10 +0000chomwitt(~Pitsikoko@2a02:587:dc02:b00:b16c:5166:feb8:97d5) (Ping timeout: 272 seconds)
2021-06-02 15:51:08 +0000nectar(~nectar@117.222.64.74)
2021-06-02 15:53:30 +0000chele(~chele@user/chele) (Remote host closed the connection)
2021-06-02 15:56:24 +0000shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-06-02 15:58:28 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-02 15:59:50 +0000Guest9(~Guest9@43.241.144.19)
2021-06-02 16:00:10 +0000FreeVariable(~Thunderbi@wifi-unifr-140-170.unifr.ch) (Quit: FreeVariable)
2021-06-02 16:03:53 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-06-02 16:05:05 +0000Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-06-02 16:08:12 +0000xff0x(~xff0x@2001:1a81:5307:4e00:7012:84d9:dce9:1f3f)
2021-06-02 16:14:46 +0000bfrk(~Thunderbi@200116b845fca000f97ff890167a6943.dip.versatel-1u1.de) (Ping timeout: 272 seconds)
2021-06-02 16:17:50 +0000bigLama(~user@static-176-165-167-17.ftth.abo.bbox.fr) (Remote host closed the connection)
2021-06-02 16:19:30 +0000 <boxscape> :t when
2021-06-02 16:19:31 +0000 <lambdabot> Applicative f => Bool -> f () -> f ()
2021-06-02 16:19:32 +0000 <boxscape> hm
2021-06-02 16:19:37 +0000 <boxscape> I'd prefer Bool -> f a -> f ()
2021-06-02 16:26:14 +0000Topsi1(~Tobias@2001:638:708:1a::d5)
2021-06-02 16:27:11 +0000Topsi2(~Tobias@dyndsl-095-033-027-146.ewe-ip-backbone.de)
2021-06-02 16:27:12 +0000Topsi1(~Tobias@2001:638:708:1a::d5) (Read error: Connection reset by peer)
2021-06-02 16:27:22 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3547:b6d4:7412:5857)
2021-06-02 16:30:17 +0000Topsi(~Tobias@dyndsl-095-033-027-146.ewe-ip-backbone.de) (Ping timeout: 264 seconds)
2021-06-02 16:31:31 +0000ixlun(~matthew@109.249.184.235)
2021-06-02 16:33:42 +0000heath(~heath@user/heath)
2021-06-02 16:33:53 +0000dunkeln(~dunkeln@94.129.65.28) (Ping timeout: 264 seconds)
2021-06-02 16:37:23 +0000pounce(~pounce@facebook/engineering/pounce) (Ping timeout: 252 seconds)
2021-06-02 16:38:18 +0000waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-06-02 16:40:08 +0000favonia(~favonia@user/favonia) (Ping timeout: 252 seconds)
2021-06-02 16:40:32 +0000favonia(~favonia@user/favonia)
2021-06-02 16:43:32 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3547:b6d4:7412:5857) (Remote host closed the connection)
2021-06-02 16:46:01 +0000dunkeln(~dunkeln@94.129.65.28)
2021-06-02 16:46:49 +0000rk04(~rk04@user/rajk)
2021-06-02 16:49:16 +0000bartavelle(~bartavell@2001:41d0:1:744c::1)
2021-06-02 16:49:39 +0000favonia(~favonia@user/favonia) (Ping timeout: 272 seconds)
2021-06-02 16:50:04 +0000favonia(~favonia@user/favonia)
2021-06-02 16:50:28 +0000tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-06-02 16:50:41 +0000rk04(~rk04@user/rajk) (Client Quit)
2021-06-02 16:51:55 +0000fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-06-02 16:52:48 +0000econo(uid147250@user/econo)
2021-06-02 16:54:12 +0000fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-02 16:54:42 +0000amk(~amk@176.61.106.150) (Ping timeout: 244 seconds)
2021-06-02 16:56:20 +0000amk(~amk@176.61.106.150)
2021-06-02 16:56:37 +0000jrm(~jrm@156.34.187.65) (Ping timeout: 272 seconds)
2021-06-02 16:57:18 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2021-06-02 17:00:15 +0000chomwitt(~Pitsikoko@athedsl-20549.home.otenet.gr)
2021-06-02 17:00:20 +0000nectar(~nectar@117.222.64.74) (Quit: leaving)
2021-06-02 17:00:58 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-02 17:02:20 +0000shailangsa(~shailangs@host86-186-136-74.range86-186.btcentralplus.com) ()
2021-06-02 17:03:15 +0000lemmih_(~lemmih@2406:3003:2072:44:f18c:82dd:8503:4c59)
2021-06-02 17:03:17 +0000dunkeln(~dunkeln@94.129.65.28) (Ping timeout: 264 seconds)
2021-06-02 17:03:30 +0000 <infinisil> :t when . void
2021-06-02 17:03:31 +0000 <lambdabot> error:
2021-06-02 17:03:31 +0000 <lambdabot> • Couldn't match type ‘f ()’ with ‘Bool’
2021-06-02 17:03:31 +0000 <lambdabot> Expected type: f a -> Bool
2021-06-02 17:03:51 +0000 <infinisil> Well, something like that
2021-06-02 17:05:05 +0000Erutuon(~Erutuon@user/erutuon)
2021-06-02 17:05:11 +0000 <boxscape> yeah
2021-06-02 17:05:33 +0000lemmih(~lemmih@2406:3003:2072:44:a0fb:4a2e:4541:1c1d) (Ping timeout: 244 seconds)
2021-06-02 17:07:32 +0000wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com)
2021-06-02 17:07:59 +0000Iryon(~Iryon@2a02:a31a:a045:3500:c000:ef2e:b473:4083) (Remote host closed the connection)
2021-06-02 17:10:23 +0000favonia(~favonia@user/favonia) (Ping timeout: 252 seconds)
2021-06-02 17:10:30 +0000chomwitt(~Pitsikoko@athedsl-20549.home.otenet.gr) (Ping timeout: 264 seconds)
2021-06-02 17:10:46 +0000favonia(~favonia@user/favonia)
2021-06-02 17:10:58 +0000dss1(~dss@shepsoft.net)
2021-06-02 17:11:40 +0000dss1(~dss@shepsoft.net) ()
2021-06-02 17:12:57 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-02 17:14:14 +0000chddr(~Thunderbi@31.148.23.125) (Ping timeout: 252 seconds)
2021-06-02 17:14:32 +0000dunkeln(~dunkeln@94.129.65.28)
2021-06-02 17:14:44 +0000Guest9(~Guest9@43.241.144.19) (Quit: Connection closed)
2021-06-02 17:16:28 +0000sqrt2(~ben@tunnel330957-pt.tunnel.tserv6.fra1.ipv6.he.net) (Quit: ZNC - http://znc.in)
2021-06-02 17:16:47 +0000Guest9(~Guest9@43.241.144.19)
2021-06-02 17:18:06 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
2021-06-02 17:18:51 +0000 <dminuoso> boxscape: `() <$` tends to read nicely
2021-06-02 17:19:07 +0000 <dminuoso> Perhaps it's just because I used a lot
2021-06-02 17:19:27 +0000 <boxscape> hm yeah that doesn't look too bad
2021-06-02 17:19:46 +0000 <dminuoso> Also it doesn't need an extra import. :)
2021-06-02 17:20:11 +0000 <boxscape> true
2021-06-02 17:20:34 +0000 <dminuoso> Mmm, that's actually a silly argument, since you need Control.Monad anyway for when
2021-06-02 17:20:43 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-02 17:20:55 +0000ixlun(~matthew@109.249.184.235) (Read error: Connection reset by peer)
2021-06-02 17:21:05 +0000 <boxscape> it makes the explicit import list a bit shorter if you use it :)
2021-06-02 17:21:18 +0000 <boxscape> s/if you use it/if you have one
2021-06-02 17:21:20 +0000 <dminuoso> Actually Ive been switching to explicit import lists
2021-06-02 17:21:27 +0000 <dminuoso> Tend to prefer it much
2021-06-02 17:21:45 +0000 <dminuoso> But it needs something like hls to make it enjoyable
2021-06-02 17:21:54 +0000skigrumbles at `void'
2021-06-02 17:22:12 +0000 <dminuoso> ski: the choice of the identifier?
2021-06-02 17:22:16 +0000 <boxscape> yeah on the other hand when you have tools to jump to any definition in any package I find less of a need for explicit import lists
2021-06-02 17:22:36 +0000 <dminuoso> boxscape: The readers are not always under your control though.
2021-06-02 17:22:41 +0000 <boxscape> yes, that is true
2021-06-02 17:22:44 +0000sqrt2(~ben@80-108-18-7.cable.dynamic.surfer.at)
2021-06-02 17:23:00 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-02 17:23:04 +0000 <dminuoso> Also, its sometimes usefult to ascertain external dependencies by just going through the import part.
2021-06-02 17:24:43 +0000 <boxscape> dminuoso do you use them when you import something qualified?
2021-06-02 17:25:35 +0000 <dminuoso> boxscape: No, but out of habit I generally only import text/bytestring/containers qualified.
2021-06-02 17:25:43 +0000 <boxscape> I see
2021-06-02 17:27:39 +0000derelict(~winter@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com)
2021-06-02 17:29:06 +0000dpl_(~dpl@77-121-78-163.chn.volia.net) (Ping timeout: 264 seconds)
2021-06-02 17:29:12 +0000 <dminuoso> (heh well, I guess *Yes* rather than *No*)
2021-06-02 17:29:46 +0000 <dminuoso> And `ip`, but that's very specific to IP annoyances.
2021-06-02 17:29:59 +0000 <ski> dminuoso : yes
2021-06-02 17:30:15 +0000 <dminuoso> It's quite interesting how it's nearly impossible to cleanly abstract over both ipv4 and ipv6. Every attempt in each library/tooling here has been foiled.
2021-06-02 17:30:25 +0000 <monochrom> text, bytestring, and containers have deliberate name clashes and tell you to resolve by qualified imports.
2021-06-02 17:30:46 +0000 <monochrom> They do this as their answer to SML real adult module system. >:)
2021-06-02 17:30:46 +0000 <dminuoso> Instead, we have fooV4, fooV6, barV4, barV6 - with lots of duplication (with duplication rates that feel like 95%)
2021-06-02 17:30:53 +0000waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Quit: WeeChat 3.1)
2021-06-02 17:30:58 +0000 <ski> imho, the name `void', with this meaning, should not be exported from any other modules than FFI ones
2021-06-02 17:32:00 +0000azeem(~azeem@dynamic-adsl-94-34-34-125.clienti.tiscali.it) (Ping timeout: 245 seconds)
2021-06-02 17:32:24 +0000ordinate(~ordinate@c-68-38-144-3.hsd1.in.comcast.net)
2021-06-02 17:32:57 +0000 <ordinate> good afternoon
2021-06-02 17:33:02 +0000 <dminuoso> Hi ordinate o/
2021-06-02 17:33:03 +0000 <boxscape> hi
2021-06-02 17:33:19 +0000dminuosoreadies his answer cards for ordinate
2021-06-02 17:33:31 +0000 <ordinate> nice to see you all again
2021-06-02 17:34:30 +0000favonia(~favonia@user/favonia) (Ping timeout: 264 seconds)
2021-06-02 17:35:14 +0000mustafa(sid502723@rockylinux/releng/mstg)
2021-06-02 17:37:56 +0000shailangsa(~shailangs@host86-186-136-74.range86-186.btcentralplus.com)
2021-06-02 17:38:03 +0000dpl_(~dpl@77-121-78-163.chn.volia.net)
2021-06-02 17:38:23 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-02 17:38:50 +0000rk04(~rk04@user/rajk)
2021-06-02 17:38:53 +0000favonia(~favonia@user/favonia)
2021-06-02 17:39:29 +0000maerwaldblinks
2021-06-02 17:39:39 +0000 <maerwald> no... can't see you -,-
2021-06-02 17:39:49 +0000jacks2(~bc817c21@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout))
2021-06-02 17:42:25 +0000Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-06-02 17:43:54 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3547:b6d4:7412:5857)
2021-06-02 17:44:57 +0000leeb(~leeb@KD111239154171.au-net.ne.jp) (Quit: WeeChat 3.1)
2021-06-02 17:45:02 +0000oxide(~lambda@user/oxide)
2021-06-02 17:45:16 +0000azeem(~azeem@dynamic-adsl-94-34-34-125.clienti.tiscali.it)
2021-06-02 17:45:36 +0000rk04(~rk04@user/rajk) (Quit: Client closed)
2021-06-02 17:45:48 +0000 <dminuoso> Is it safe to Data.ByteString.Char8.hPutStrLn (Aeson.encode x) ?
2021-06-02 17:46:19 +0000 <dminuoso> My instinct says yes, because Aeson will give me a UTF8 encoded string anyway, which should not screw up my terminal
2021-06-02 17:46:36 +0000favonia(~favonia@user/favonia) (Ping timeout: 272 seconds)
2021-06-02 17:47:29 +0000 <monochrom> I say yes. Unless UTF8 screws up your terminal.
2021-06-02 17:47:46 +0000 <Ariakenom> does anyone have a fancy pretty printed ghci setup?
2021-06-02 17:47:56 +0000 <dminuoso> Well couldn't a user embed sneaky escape sequences in a JSON string?
2021-06-02 17:48:30 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3547:b6d4:7412:5857) (Ping timeout: 272 seconds)
2021-06-02 17:48:39 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-02 17:49:37 +0000 <monochrom> I want to conjecture that unprintable characters are further backslash-escaped, but I haven't tried.
2021-06-02 17:50:29 +0000dminuosowishes for a reality in which a terminal control protocol and text encoding were separate things
2021-06-02 17:51:05 +0000 <dminuoso> Conflating these two seems like one of the larger mistakes in programming history
2021-06-02 17:52:29 +0000jackhillKM4MBG
2021-06-02 17:53:24 +0000 <ordinate> i think ive accidentally started a much bigger project than i thought
2021-06-02 17:53:34 +0000derelict(~winter@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com) (Ping timeout: 272 seconds)
2021-06-02 17:53:40 +0000favonia(~favonia@user/favonia)
2021-06-02 17:54:52 +0000 <lyxia> I think encode only produces ASCII, unless someone hijacks a ToJSON instance.
2021-06-02 17:55:44 +0000chomwitt(~Pitsikoko@athedsl-20549.home.otenet.gr)
2021-06-02 17:59:20 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-02 18:00:45 +0000imdoor(~imdoor@balticom-142-78-50.balticom.lv) (Quit: imdoor)
2021-06-02 18:00:54 +0000 <Ariakenom> I just got this code to work some an ancient tab I had https://gist.github.com/pera/8447522
2021-06-02 18:01:54 +0000 <Ariakenom> ..work from some..
2021-06-02 18:04:58 +0000azeem(~azeem@dynamic-adsl-94-34-34-125.clienti.tiscali.it) (Read error: Connection reset by peer)
2021-06-02 18:09:19 +0000zebrag(~chris@user/zebrag) (Remote host closed the connection)
2021-06-02 18:10:29 +0000doublex__(~doublex@2601:542:c480:6ee0:184b:7083:f026:c689)
2021-06-02 18:12:31 +0000vicfred(~vicfred@user/vicfred)
2021-06-02 18:13:11 +0000beka(~beka@104.193.170-254.PUBLIC.monkeybrains.net)
2021-06-02 18:14:05 +0000pavonia(~user@user/siracusa)
2021-06-02 18:14:15 +0000doublex_(~doublex@2601:542:c480:6ee0:184b:7083:f026:c689) (Ping timeout: 268 seconds)
2021-06-02 18:14:28 +0000reumeth(~reumeth@user/reumeth) (Ping timeout: 272 seconds)
2021-06-02 18:16:23 +0000favonia(~favonia@user/favonia) (Ping timeout: 252 seconds)
2021-06-02 18:23:01 +0000favonia(~favonia@user/favonia)
2021-06-02 18:24:08 +0000azeem(~azeem@dynamic-adsl-94-34-34-125.clienti.tiscali.it)
2021-06-02 18:24:09 +0000KM4MBGjackhill
2021-06-02 18:26:44 +0000tremon(~tremon@217-63-61-89.cable.dynamic.v4.ziggo.nl)
2021-06-02 18:29:30 +0000mrufrufin(~dxk@108.235.170.90)
2021-06-02 18:29:42 +0000myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net) (Ping timeout: 264 seconds)
2021-06-02 18:31:35 +0000myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net)
2021-06-02 18:32:00 +0000amk(~amk@176.61.106.150) (Ping timeout: 245 seconds)
2021-06-02 18:32:21 +0000amk(~amk@176.61.106.150)
2021-06-02 18:32:32 +0000Ariakenom(~Ariakenom@2001:9b1:efb:fc00:524:105d:d218:2c77) (Read error: Connection reset by peer)
2021-06-02 18:32:50 +0000ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-06-02 18:33:18 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-06-02 18:33:37 +0000ukari(~ukari@user/ukari)
2021-06-02 18:33:52 +0000sondre(~sondrelun@cm-84.212.100.140.getinternet.no)
2021-06-02 18:42:00 +0000lavaman(~lavaman@98.38.249.169)
2021-06-02 18:42:45 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-02 18:45:13 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3547:b6d4:7412:5857)
2021-06-02 18:46:16 +0000wenzel(~wenzel@user/wenzel) (Read error: Connection reset by peer)
2021-06-02 18:46:36 +0000wenzel(~wenzel@user/wenzel)
2021-06-02 18:46:46 +0000lavaman(~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
2021-06-02 18:48:33 +0000mrufrufin(~dxk@108.235.170.90) ()
2021-06-02 18:50:06 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3547:b6d4:7412:5857) (Ping timeout: 264 seconds)
2021-06-02 18:52:06 +0000nuttingd(~nuttingd@75.164.99.232)
2021-06-02 18:52:44 +0000nuttingd(~nuttingd@75.164.99.232) (Client Quit)
2021-06-02 18:53:11 +0000Deide(~Deide@wire.desu.ga)
2021-06-02 18:53:11 +0000Deide(~Deide@wire.desu.ga) (Changing host)
2021-06-02 18:53:12 +0000Deide(~Deide@user/deide)
2021-06-02 18:53:38 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-06-02 18:54:17 +0000raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-02 18:54:59 +0000kuribas(~user@ptr-25vy0i6y10noc9bho8l.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2021-06-02 18:55:58 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-02 18:56:57 +0000hiruji`(~hiruji@2606:6080:1001:18:8d41:9604:d435:36b6)
2021-06-02 18:58:01 +0000 <gentauro> hey, is it possible to have "more friendly" Aeson parsing messages? For example if the recieved JSON payload is only missing the `type` property? https://pastebin.ubuntu.com/p/PhZ2wz7fRZ/
2021-06-02 18:58:10 +0000hiruji(~hiruji@user/hiruji) (Ping timeout: 272 seconds)
2021-06-02 18:58:40 +0000gentaurolike in an `automated` way so I don't have to write all the boilerplate myself :)
2021-06-02 18:58:49 +0000wenzel(~wenzel@user/wenzel) (Quit: Leaving)
2021-06-02 19:00:42 +0000favonia(~favonia@user/favonia) (Ping timeout: 272 seconds)
2021-06-02 19:00:51 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-02 19:01:07 +0000favonia(~favonia@user/favonia)
2021-06-02 19:01:52 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
2021-06-02 19:03:00 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-02 19:04:17 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
2021-06-02 19:04:48 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-02 19:05:13 +0000 <lyxia> doesn't it already tell you that the `type` property is missing?
2021-06-02 19:06:14 +0000glguy_(x@libera/staff/glguy)
2021-06-02 19:06:32 +0000imdoor(~imdoor@balticom-142-78-50.balticom.lv)
2021-06-02 19:07:33 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
2021-06-02 19:08:48 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-02 19:10:15 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-02 19:10:29 +0000Guest3322(~pera@0541db7e.skybroadband.com) (Ping timeout: 264 seconds)
2021-06-02 19:10:30 +0000ddellacosta(~ddellacos@86.106.121.72)
2021-06-02 19:10:35 +0000glguy_(x@libera/staff/glguy) (Remote host closed the connection)
2021-06-02 19:10:50 +0000favonia(~favonia@user/favonia) (Ping timeout: 272 seconds)
2021-06-02 19:11:15 +0000favonia(~favonia@user/favonia)
2021-06-02 19:11:27 +0000Ariakenom(~Ariakenom@2001:9b1:efb:fc00:8504:3672:14f4:b190)
2021-06-02 19:11:53 +0000imdoor(~imdoor@balticom-142-78-50.balticom.lv) (Quit: imdoor)
2021-06-02 19:12:06 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-02 19:12:54 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
2021-06-02 19:14:17 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-02 19:15:56 +0000 <dminuoso> gentauro: Indeed, (.:) uses ttps://hackage.haskell.org/package/aeson-1.5.6.0/docs/src/Data.Aeson.Types.FromJSON.html#explicitParseField
2021-06-02 19:16:09 +0000 <dminuoso> gentauro: You might be intereted in the generic mechanism with options.
2021-06-02 19:16:27 +0000 <dminuoso> coupled with aeson-deriving its really neat
2021-06-02 19:16:42 +0000 <dminuoso> err deriving-aeson
2021-06-02 19:16:51 +0000 <dminuoso> https://hackage.haskell.org/package/deriving-aeson
2021-06-02 19:16:52 +0000jjhoo_jjhoo
2021-06-02 19:17:14 +0000 <dminuoso> advantage of aeson-deriving is that you get guaranteed coherence between toJSON and toEncoding. :)
2021-06-02 19:17:25 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
2021-06-02 19:18:04 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-02 19:22:21 +0000tose(~tose@ip-85-160-9-136.eurotel.cz)
2021-06-02 19:22:51 +0000myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net) (Ping timeout: 245 seconds)
2021-06-02 19:23:05 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
2021-06-02 19:23:51 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-02 19:26:08 +0000 <gentauro> dminuoso: hmmm, so `(.:)` actually gives me what I'm requesting right?
2021-06-02 19:26:42 +0000 <gentauro> `Nothing -> fail $ "key " ++ show key ++ " not found"`
2021-06-02 19:26:51 +0000Guest9(~Guest9@43.241.144.19) (Quit: Connection closed)
2021-06-02 19:27:01 +0000 <gentauro> that seems usefull
2021-06-02 19:27:07 +0000ru0mad(~ru0mad@82-64-17-144.subs.proxad.net)
2021-06-02 19:27:14 +0000 <gentauro> and the other branch is only used then I'm not getting a JSON.Object type
2021-06-02 19:27:17 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-02 19:27:18 +0000 <gentauro> I think I got it
2021-06-02 19:27:40 +0000 <lyxia> There's also withObject
2021-06-02 19:30:15 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-06-02 19:30:32 +0000tose(~tose@ip-85-160-9-136.eurotel.cz) (Remote host closed the connection)
2021-06-02 19:32:06 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-02 19:32:50 +0000favonia(~favonia@user/favonia) (Ping timeout: 252 seconds)
2021-06-02 19:33:14 +0000favonia(~favonia@user/favonia)
2021-06-02 19:33:49 +0000ordinate(~ordinate@c-68-38-144-3.hsd1.in.comcast.net) (Quit: Leaving)
2021-06-02 19:34:51 +0000bfrk(~Thunderbi@200116b845fca000f97ff890167a6943.dip.versatel-1u1.de)
2021-06-02 19:35:25 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
2021-06-02 19:35:51 +0000Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-06-02 19:35:54 +0000ru0mad(~ru0mad@82-64-17-144.subs.proxad.net) (Ping timeout: 244 seconds)
2021-06-02 19:36:38 +0000ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-06-02 19:36:46 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-02 19:37:08 +0000ukari(~ukari@user/ukari)
2021-06-02 19:37:32 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-02 19:39:20 +0000zmt00(~zmt00@user/zmt00)
2021-06-02 19:39:48 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-06-02 19:40:13 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-02 19:40:56 +0000amahl_(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-02 19:41:14 +0000Scotty_Trees(~Scotty_Tr@162-234-179-169.lightspeed.brhmal.sbcglobal.net)
2021-06-02 19:42:03 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-06-02 19:42:05 +0000learner-monad(~eric@cpe-174-105-47-100.columbus.res.rr.com)
2021-06-02 19:42:19 +0000ru0mad(~ru0mad@82-64-17-144.subs.proxad.net)
2021-06-02 19:43:10 +0000learner-monad(~eric@cpe-174-105-47-100.columbus.res.rr.com) (Client Quit)
2021-06-02 19:44:18 +0000jrm(~jrm@156.34.187.65)
2021-06-02 19:44:30 +0000Baloo_(~Baloo_@141.98.255.153)
2021-06-02 19:44:53 +0000ubert1(~Thunderbi@p200300ecdf259dece6b318fffe838f33.dip0.t-ipconnect.de)
2021-06-02 19:45:50 +0000learner-monad(~eric@cpe-174-105-47-100.columbus.res.rr.com)
2021-06-02 19:46:56 +0000ubert(~Thunderbi@p200300ecdf259da5e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2021-06-02 19:46:56 +0000ubert1ubert
2021-06-02 19:47:47 +0000o1lo01ol1o(~o1lo01ol1@c-73-10-81-85.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-06-02 19:48:21 +0000amahl_(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-06-02 19:49:46 +0000Baloo__(~Baloo_@h-98-128-172-214.A785.priv.bahnhof.se)
2021-06-02 19:50:03 +0000o1lo01ol1o(~o1lo01ol1@c-73-10-81-85.hsd1.nj.comcast.net)
2021-06-02 19:50:37 +0000ub1(~Thunderbi@p200300ecdf259dec656b91086baf35ac.dip0.t-ipconnect.de)
2021-06-02 19:51:28 +0000Baloo__(~Baloo_@h-98-128-172-214.A785.priv.bahnhof.se) (Client Quit)
2021-06-02 19:51:41 +0000ub(~Thunderbi@p200300ecdf259da5656b91086baf35ac.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2021-06-02 19:52:07 +0000Baloo__(~Baloo_@h-98-128-172-214.A785.priv.bahnhof.se)
2021-06-02 19:52:40 +0000reumeth(~reumeth@user/reumeth)
2021-06-02 19:52:54 +0000ub1ub
2021-06-02 19:54:09 +0000Baloo_(~Baloo_@141.98.255.153) (Ping timeout: 268 seconds)
2021-06-02 19:54:46 +0000o1lo01ol1o(~o1lo01ol1@c-73-10-81-85.hsd1.nj.comcast.net) (Ping timeout: 268 seconds)
2021-06-02 19:55:40 +0000ru0mad(~ru0mad@82-64-17-144.subs.proxad.net) (Quit: leaving)
2021-06-02 19:55:56 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3547:b6d4:7412:5857)
2021-06-02 19:55:56 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-02 19:56:25 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-02 19:56:52 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
2021-06-02 19:57:44 +0000myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net)
2021-06-02 19:58:57 +0000dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.1)
2021-06-02 19:59:30 +0000derelict(~winter@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com)
2021-06-02 20:00:08 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-02 20:01:25 +0000lavaman(~lavaman@98.38.249.169)
2021-06-02 20:04:52 +0000ru0mad(~ru0mad@82-64-17-144.subs.proxad.net)
2021-06-02 20:04:56 +0000juhp(~juhp@128.106.188.199) (Ping timeout: 245 seconds)
2021-06-02 20:06:21 +0000tonyday(~user@202-65-93-249.ip4.superloop.com)
2021-06-02 20:06:43 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-02 20:07:18 +0000juhp(~juhp@128.106.188.199)
2021-06-02 20:08:42 +0000otto_s(~user@p5b044eb9.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2021-06-02 20:09:02 +0000wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-02 20:09:41 +0000favonia(~favonia@user/favonia) (Ping timeout: 252 seconds)
2021-06-02 20:10:04 +0000favonia(~favonia@user/favonia)
2021-06-02 20:10:12 +0000otto_s(~user@p4ff27438.dip0.t-ipconnect.de)
2021-06-02 20:11:06 +0000benin0(benin@gateway/vpn/protonvpn/benin)
2021-06-02 20:12:54 +0000ru0mad(~ru0mad@82-64-17-144.subs.proxad.net) (Ping timeout: 272 seconds)
2021-06-02 20:13:12 +0000ddellacosta(~ddellacos@86.106.121.72) (Remote host closed the connection)
2021-06-02 20:13:30 +0000benin(~benin@183.82.205.186) (Ping timeout: 264 seconds)
2021-06-02 20:13:31 +0000benin0benin
2021-06-02 20:13:34 +0000ddellacosta(~ddellacos@86.106.121.72)
2021-06-02 20:14:38 +0000redienhcs(~redienhcs@200.188.238.241)
2021-06-02 20:15:15 +0000ixlun(~matthew@109.249.184.235)
2021-06-02 20:15:43 +0000ru0mad(~ru0mad@82-64-17-144.subs.proxad.net)
2021-06-02 20:16:37 +0000Wally(~Wally@dragonbox/forum-staff/wally) ()
2021-06-02 20:17:17 +0000redienhcs(~redienhcs@200.188.238.241) (Client Quit)
2021-06-02 20:20:08 +0000ru0mad(~ru0mad@82-64-17-144.subs.proxad.net) (Ping timeout: 252 seconds)
2021-06-02 20:20:24 +0000Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-06-02 20:21:18 +0000mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 264 seconds)
2021-06-02 20:22:51 +0000Bartosz(~textual@24.35.90.211)
2021-06-02 20:27:00 +0000tonyday(~user@202-65-93-249.ip4.superloop.com) (Ping timeout: 245 seconds)
2021-06-02 20:27:12 +0000boxscape(~boxscape@user/boxscape) (Quit: Connection closed)
2021-06-02 20:27:53 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-02 20:29:52 +0000boxscape(~boxscape@user/boxscape)
2021-06-02 20:30:16 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-02 20:32:06 +0000danso(~danso@23-233-111-52.cpe.pppoe.ca) (Quit: WeeChat 3.1)
2021-06-02 20:33:59 +0000Wally(~Wally@dragonbox/forum-staff/wally)
2021-06-02 20:37:52 +0000_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-06-02 20:38:09 +0000tonyday(~user@202-65-93-249.ip4.superloop.com)
2021-06-02 20:38:41 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-02 20:39:21 +0000imdoor(~imdoor@balticom-142-78-50.balticom.lv)
2021-06-02 20:41:24 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
2021-06-02 20:42:08 +0000ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-06-02 20:43:11 +0000ukari(~ukari@user/ukari)
2021-06-02 20:45:50 +0000reumeth(~reumeth@user/reumeth) (Ping timeout: 272 seconds)
2021-06-02 20:46:45 +0000Bartosz(~textual@24.35.90.211) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-02 20:50:02 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-02 20:51:05 +0000djb2021(~djb2021@HSI-KBW-091-089-090-070.hsi2.kabelbw.de)
2021-06-02 20:52:23 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-02 20:54:05 +0000benin(benin@gateway/vpn/protonvpn/benin) (Ping timeout: 245 seconds)
2021-06-02 20:59:09 +0000hgolden(~hgolden2@cpe-172-114-84-61.socal.res.rr.com) (Remote host closed the connection)
2021-06-02 21:01:23 +0000 <lbseale> I'm looking for the right data structure to hold an associated list of amounts and dates, I'll want to be able to use a function like "give me all the amounts between these two dates"
2021-06-02 21:01:43 +0000 <lbseale> is a plain Map the right one?
2021-06-02 21:02:22 +0000 <boxscape> lbseale this seems like the right data structure https://hackage.haskell.org/package/IntervalMap-0.6.1.2/docs/Data-IntervalMap-Lazy.html
2021-06-02 21:02:33 +0000 <boxscape> or wait
2021-06-02 21:02:52 +0000 <boxscape> let me make sure I'm actually understanding what interval map does
2021-06-02 21:03:54 +0000lavaman(~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
2021-06-02 21:04:30 +0000 <lbseale> nice, the within function is exactly what I'm thinking
2021-06-02 21:04:37 +0000 <lbseale> thank you boxscape !
2021-06-02 21:04:50 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-06-02 21:05:15 +0000 <boxscape> lbseale yeah, I guess the one downside is each value has to be associated with an interval of dates, so if you actually have points in time, it'd have to be a 0-width interval for each value in the map
2021-06-02 21:05:33 +0000 <boxscape> i.e., amount x goes from date 2021-05-03 to 2021-05-03, or whatever
2021-06-02 21:06:24 +0000 <lbseale> right, is it ok to have a 0-width interval?
2021-06-02 21:06:42 +0000 <boxscape> I don't see why not but I haven't tested it
2021-06-02 21:07:03 +0000Bartosz(~textual@24.35.90.211)
2021-06-02 21:07:06 +0000 <lbseale> ok, I'll look into it
2021-06-02 21:07:06 +0000 <sm[m]> nice lib, boxscape
2021-06-02 21:08:06 +0000 <lbseale> what does the the '|' in this type signature mean class Ord e => Interval i e | i -> e where
2021-06-02 21:08:18 +0000 <hpc> functional dependency
2021-06-02 21:08:25 +0000 <hpc> "i implies e"
2021-06-02 21:08:42 +0000 <boxscape> (more precisely, everything *after* the | is a functional dependency)
2021-06-02 21:09:03 +0000 <boxscape> it means that you can't have two instances with the same i but different e's
2021-06-02 21:09:08 +0000 <hpc> you can have instance Interval A B or instance Interval A C, but not both
2021-06-02 21:09:16 +0000sondre(~sondrelun@cm-84.212.100.140.getinternet.no) (Ping timeout: 272 seconds)
2021-06-02 21:09:36 +0000 <hpc> but not the other way, you can have both instance Interval B A and instance Interval C A
2021-06-02 21:10:18 +0000 <hpc> and this extends to type inference, given (Interval A x) => ..., ghc infers that x = B
2021-06-02 21:10:21 +0000 <lbseale> ok that makes sense
2021-06-02 21:10:50 +0000zebrag(~chris@user/zebrag)
2021-06-02 21:11:38 +0000 <boxscape> it does kind of seem like the regular Map should have a within-like function, doesn't it?
2021-06-02 21:11:47 +0000Bartosz(~textual@24.35.90.211) (Client Quit)
2021-06-02 21:11:49 +0000 <boxscape> given the Ord constraint it should be possible
2021-06-02 21:13:07 +0000alx741(~alx741@181.196.69.176) (Ping timeout: 272 seconds)
2021-06-02 21:14:05 +0000beka(~beka@104.193.170-254.PUBLIC.monkeybrains.net) (Ping timeout: 245 seconds)
2021-06-02 21:15:10 +0000 <lbseale> maybe it would be easier for me to implement within for ordinary Map
2021-06-02 21:15:23 +0000mc47(~yecinem@89.246.239.190) (Remote host closed the connection)
2021-06-02 21:16:08 +0000eight(~eight@user/eight)
2021-06-02 21:16:58 +0000 <boxscape> it's possible, though I don't know if it can be done efficiently without accessing the Map internals (but the Data.Map.Interal module might be good enough for that)
2021-06-02 21:17:30 +0000ukari(~ukari@user/ukari) (Ping timeout: 272 seconds)
2021-06-02 21:17:33 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
2021-06-02 21:18:26 +0000chomwitt(~Pitsikoko@athedsl-20549.home.otenet.gr) (Ping timeout: 252 seconds)
2021-06-02 21:19:30 +0000TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Ping timeout: 264 seconds)
2021-06-02 21:19:32 +0000waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-06-02 21:19:38 +0000 <djb2021> hi, i've put together a minimal non working swagger2 example of which i however think it should work: https://paste.tomsmeding.com/2VlzfDTS. The JSON definition should be ok in my opinion. However, i get an error message when eitherDecode'ing the file, that basically says, that the type "file" is not supported. I am quite sure that OpenAPI 2.0
2021-06-02 21:19:39 +0000 <djb2021> accepts file type there. I have tried to understand the code of swagger2 library here: https://hackage.haskell.org/package/swagger2-2.6/docs/Data-Swagger.html#t:Schema I must say that i am not very familiar with haskell kinds. I didn't understand that very well. Can someone, please, explain that to me? Anyway, my understanding of the definition of
2021-06-02 21:19:39 +0000 <djb2021> the swagger2 Schema type definition is that the type of the HasParamSchema doesn't include SwaggerFile as its type is ParamSchema 'SwaggerKindSchema. Is that correct?
2021-06-02 21:20:59 +0000ixlun(~matthew@109.249.184.235) (Read error: Connection reset by peer)
2021-06-02 21:21:15 +0000_xft0(~root@185.234.208.208.r.toneticgroup.pl) (Quit: leaving)
2021-06-02 21:21:36 +0000haskman(~haskman@223.190.0.187) (Quit: Going to sleep. ZZZzzz…)
2021-06-02 21:25:00 +0000 <dminuoso> djb2021: https://hackage.haskell.org/package/swagger2-2.6/docs/Data-Swagger.html#t:SwaggerType
2021-06-02 21:25:21 +0000 <dminuoso> By the way, swagger2 is very dead, you should switch to openapi3 if you can
2021-06-02 21:25:38 +0000wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com)
2021-06-02 21:25:42 +0000alx741(~alx741@186.178.108.19)
2021-06-02 21:25:51 +0000TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2021-06-02 21:26:50 +0000geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com) (Remote host closed the connection)
2021-06-02 21:26:54 +0000wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Client Quit)
2021-06-02 21:27:43 +0000imdoor(~imdoor@balticom-142-78-50.balticom.lv) (Quit: imdoor)
2021-06-02 21:28:40 +0000 <dminuoso> djb2021: Can you share your haskell code that defines the swagger spec?
2021-06-02 21:28:41 +0000waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Quit: WeeChat 3.1)
2021-06-02 21:29:11 +0000geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com)
2021-06-02 21:29:49 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-02 21:29:50 +0000davidnutting(~nuttingd@75.164.99.232)
2021-06-02 21:30:30 +0000 <djb2021> dminuoso: yes, updating is already planned but not so easy. The SwaggerType spec you sent contains the definition of SwaggerFile as SwaggerType SwaggerKindParamOtherSchema. That limits SwaggerFile only to those cases where ParamSchema is instantiated with kind SwaggerKindParamOtherSchema - right? But that is not the case for ParamSchema in
2021-06-02 21:30:31 +0000 <djb2021> response, right?
2021-06-02 21:31:02 +0000 <dminuoso> Uh..
2021-06-02 21:31:13 +0000 <boxscape> lbseale fwiw I opened an issue in the containers repo https://github.com/haskell/containers/issues/778
2021-06-02 21:31:45 +0000 <lbseale> boxscape: many thanks!
2021-06-02 21:31:54 +0000 <dminuoso> djb2021: That sounds rather confusing, to be honest.
2021-06-02 21:31:55 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-02 21:31:55 +0000waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-06-02 21:32:46 +0000exarkun(~exarkun@user/exarkun) (Remote host closed the connection)
2021-06-02 21:33:05 +0000davidnutting(~nuttingd@75.164.99.232) (Client Quit)
2021-06-02 21:33:19 +0000exarkun(~exarkun@user/exarkun)
2021-06-02 21:33:22 +0000davidnutting(~nuttingd@75.164.99.232)
2021-06-02 21:33:56 +0000 <dminuoso> Ah now I understand.
2021-06-02 21:34:05 +0000 <dminuoso> Yes.
2021-06-02 21:34:23 +0000 <dminuoso> You only get file for SwaggerKindParamOtherSchema
2021-06-02 21:35:04 +0000 <dminuoso> This fact is supported in various places in swagger2
2021-06-02 21:35:07 +0000ddellacosta(~ddellacos@86.106.121.72) (Remote host closed the connection)
2021-06-02 21:35:22 +0000 <dminuoso> More concretely, file is only valid for param
2021-06-02 21:35:36 +0000ddellacosta(~ddellacos@86.106.121.72)
2021-06-02 21:36:50 +0000 <dminuoso> So yeah, because Schema uses `ParamSchema SwaggerKindSchema`, it cant contain a file it looks like
2021-06-02 21:37:08 +0000 <djb2021> Ok, thanks - in other words it is a bug, right?
2021-06-02 21:37:16 +0000 <dminuoso> Not sure, it looks intentional
2021-06-02 21:37:24 +0000 <lbseale> boxscape: Here's an easy solution, use filterWithKey with a function that checks if the key is within a set date range
2021-06-02 21:37:29 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-02 21:37:42 +0000 <boxscape> lbseale yep, that works, but seems slower than necessary
2021-06-02 21:37:59 +0000 <boxscape> since you have to go through all entries
2021-06-02 21:38:50 +0000 <boxscape> lbseale oh, but wait
2021-06-02 21:39:01 +0000 <boxscape> lbseale you can use split
2021-06-02 21:39:14 +0000 <dminuoso> djb2021: looks forbidden in openapi 2.0
2021-06-02 21:39:30 +0000myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net) (Ping timeout: 245 seconds)
2021-06-02 21:39:58 +0000 <boxscape> lbseale if you split at the lower bound, you get everything smaller and larger as two separate maps, and then use split on the latter to get everything between the two bounds and everything larger than the upper bound
2021-06-02 21:40:13 +0000 <dminuoso> Mmm
2021-06-02 21:40:16 +0000 <dminuoso> "A definition of the response structure. It can be a primitive, an array or an object. If this field does not exist, it means no content is returned as part of the response. As an extension to the Schema Object, its root type value may also be "file". This SHOULD be accompanied by a relevant produces mime-type."
2021-06-02 21:40:19 +0000 <boxscape> lbseale or splitLookup if you need values exactly matching the bound as well
2021-06-02 21:40:30 +0000ddellacosta(~ddellacos@86.106.121.72) (Ping timeout: 264 seconds)
2021-06-02 21:40:53 +0000 <lbseale> boxscape: yes! this is exactly what we want
2021-06-02 21:41:05 +0000 <dminuoso> djb2021: Ah https://github.com/GetShopTV/swagger2/issues/76
2021-06-02 21:41:17 +0000tremon(~tremon@217-63-61-89.cable.dynamic.v4.ziggo.nl) (Quit: getting boxed in)
2021-06-02 21:41:30 +0000 <lbseale> get a sub-map with just keys within the given range
2021-06-02 21:42:17 +0000 <djb2021> But, please, look here: https://swagger.io/specification/v2/:' An additional primitive data type "file" is used by the Parameter Object and the Response Object to set the parameter type or the response as being a file.' And then, please, read here: https://hackage.haskell.org/package/swagger2-2.6/docs/src/Data.Swagger.Internal.html#Response, There
2021-06-02 21:42:18 +0000 <djb2021> the "file" is clearly allowed.
2021-06-02 21:42:42 +0000 <djb2021> aah you got it already
2021-06-02 21:44:10 +0000 <djb2021> dminuoso: thank you so much, the bug report makes it clear!
2021-06-02 21:44:12 +0000 <dminuoso> Yeah sorry it took me a moment to cut through the thick typitis.
2021-06-02 21:44:23 +0000 <dminuoso> djb2021: Btw, you mentioned "kinds"
2021-06-02 21:44:36 +0000 <djb2021> oh yes, can you explain that to me?
2021-06-02 21:44:45 +0000 <dminuoso> So none of this is kind stuff, they are actually types
2021-06-02 21:44:55 +0000 <dminuoso> the choice of the word "kind" is just in the english sense
2021-06-02 21:45:35 +0000 <dminuoso> The key facility here is an extension called `DataKinds`, which you can use to lift data constructors to types
2021-06-02 21:45:46 +0000 <dminuoso> % :set -XDataKinds
2021-06-02 21:45:46 +0000 <yahb> dminuoso:
2021-06-02 21:45:52 +0000 <dminuoso> % data Color = Red | Green
2021-06-02 21:45:52 +0000 <yahb> dminuoso:
2021-06-02 21:45:56 +0000 <dminuoso> % :k Red
2021-06-02 21:45:56 +0000 <yahb> dminuoso: Color
2021-06-02 21:46:14 +0000 <dminuoso> See, how `Red` also exists on the type level? That is, there exists a type called `Red`.
2021-06-02 21:46:37 +0000fendor(~fendor@178.115.57.160.wireless.dyn.drei.com) (Remote host closed the connection)
2021-06-02 21:47:19 +0000jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 252 seconds)
2021-06-02 21:47:37 +0000 <hpc> % data Light a where Go :: Light Green; Stop :: Light Red
2021-06-02 21:47:37 +0000 <yahb> hpc:
2021-06-02 21:47:39 +0000 <hpc> :t Go
2021-06-02 21:47:40 +0000 <lambdabot> error:
2021-06-02 21:47:40 +0000 <lambdabot> • Data constructor not in scope: Go
2021-06-02 21:47:40 +0000 <lambdabot> • Perhaps you meant one of these:
2021-06-02 21:47:51 +0000 <dminuoso> % :t Go
2021-06-02 21:47:51 +0000 <yahb> dminuoso: Light 'Green
2021-06-02 21:48:05 +0000 <hpc> whoops, lambdabot habit :D
2021-06-02 21:48:09 +0000 <djb2021> ah - i think i start understanding
2021-06-02 21:48:28 +0000 <dminuoso> djb2021: (And if you are really curious, kinds are to types, as types are to values)
2021-06-02 21:48:30 +0000 <djb2021> so Red and Green (which were constructors) are now types
2021-06-02 21:48:33 +0000 <dminuoso> Yup!
2021-06-02 21:48:42 +0000 <hpc> % :k Light -- and just for completeness
2021-06-02 21:48:42 +0000 <yahb> hpc: Color -> *
2021-06-02 21:48:45 +0000 <dminuoso> You can also refer to them as 'Red and 'Green
2021-06-02 21:48:55 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-02 21:48:58 +0000 <dminuoso> The tick serves to diambiguate, but whenever its unambiguous, the tick is optional
2021-06-02 21:50:18 +0000AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) (Quit: Leaving.)
2021-06-02 21:50:24 +0000habib(~habib@89.38.69.198)
2021-06-02 21:50:35 +0000habib(~habib@89.38.69.198) (Quit: habib)
2021-06-02 21:50:47 +0000o1lo01ol1o(~o1lo01ol1@c-73-10-81-85.hsd1.nj.comcast.net)
2021-06-02 21:50:55 +0000Baloo__(~Baloo_@h-98-128-172-214.A785.priv.bahnhof.se) (Read error: Connection reset by peer)
2021-06-02 21:50:58 +0000 <dminuoso> djb2021: So kinds is an old term for "the types of types", nowadays the type of a type is some other type again.
2021-06-02 21:51:36 +0000 <djb2021> ok, i think i got it, the only thing that confuses me still is the signature as above: Color -> *
2021-06-02 21:51:41 +0000 <dminuoso> Yeah, so
2021-06-02 21:51:41 +0000 <boxscape> (ghc error messages still use "kind" though)
2021-06-02 21:51:48 +0000 <dminuoso> djb2021: * is a very special type
2021-06-02 21:52:06 +0000 <dminuoso> let's replace it with Type (which is a different name for it)
2021-06-02 21:52:07 +0000 <djb2021> how should i read that signature
2021-06-02 21:52:42 +0000 <dminuoso> The type of Light (which itself is a type!) is `Color -> Type`
2021-06-02 21:52:46 +0000 <hpc> djb2021: Light is a type-level function that takes a Color and produces a type
2021-06-02 21:52:51 +0000 <hpc> djb2021: it's like Maybe :: * -> *
2021-06-02 21:52:59 +0000dminuosovotes we should replace * with Type
2021-06-02 21:53:01 +0000 <dminuoso> for sanity
2021-06-02 21:53:02 +0000 <hpc> or Type -> Type
2021-06-02 21:53:23 +0000 <boxscape> % :set -XNoStarIsKind
2021-06-02 21:53:23 +0000 <yahb> boxscape: Some flags have not been recognized: -XNoStarIsKind
2021-06-02 21:53:26 +0000river(~river@tilde.team/user/river) (Read error: Connection reset by peer)
2021-06-02 21:53:31 +0000 <boxscape> % :set -XNoStarIsType
2021-06-02 21:53:31 +0000 <yahb> boxscape:
2021-06-02 21:53:35 +0000 <boxscape> % :k Light
2021-06-02 21:53:35 +0000 <yahb> boxscape: Color -> Type
2021-06-02 21:53:38 +0000 <dminuoso> djb2021: To introduce a relevant term, types can be inhabitable or non-inhabitable
2021-06-02 21:53:54 +0000 <dminuoso> djb2021: a type is said to be inhabitable, if values of that type can exist
2021-06-02 21:54:30 +0000 <dminuoso> 'Red is uninhabitable (that means there exists no values of type Red, not even undefined!)
2021-06-02 21:54:44 +0000 <dminuoso> Similarly Type is uninhabitable
2021-06-02 21:54:51 +0000 <boxscape> what's the difference between uninhabitable and uninhabited?
2021-06-02 21:54:55 +0000o1lo01ol1o(~o1lo01ol1@c-73-10-81-85.hsd1.nj.comcast.net) (Ping timeout: 245 seconds)
2021-06-02 21:55:10 +0000 <djb2021> ah ok, and Light could be called a (parametric) type constructor?
2021-06-02 21:55:25 +0000 <dminuoso> boxscape: I guess there is none, mmm
2021-06-02 21:55:35 +0000 <hpc> djb2021: yep, it's like how Just is a data constructor
2021-06-02 21:56:01 +0000 <dminuoso> djb2021: as a point of interest, one might wonder what makes a "constructor a constructor" - my mind model is, its something you can pattern match on.
2021-06-02 21:56:01 +0000 <djb2021> ah ok
2021-06-02 21:56:11 +0000 <hpc> djb2021: there's another good example if you've gotten into type classes
2021-06-02 21:56:14 +0000 <hpc> % :k Functor
2021-06-02 21:56:14 +0000 <yahb> hpc: (Type -> Type) -> Constraint
2021-06-02 21:56:24 +0000 <dminuoso> djb2021: a data constructor you can pattern match with case-of, a type constructor you can pattern match with a type family (or a typeclass instance)
2021-06-02 21:56:25 +0000 <nitrix> Yeah, if you can construct it, you can deconstruct it.
2021-06-02 21:56:34 +0000 <hpc> Functor takes a parameter that's (Type -> Type) - Maybe, for example
2021-06-02 21:56:45 +0000 <hpc> and produces a Constraint, which is the kind of things that go on the left of =>
2021-06-02 21:56:48 +0000river(~river@tilde.team/user/river)
2021-06-02 21:56:55 +0000 <dminuoso> Though, Functor opens another can of worms
2021-06-02 21:56:57 +0000 <dminuoso> and requires ConstraintKinds
2021-06-02 21:57:02 +0000 <dminuoso> To talk about here
2021-06-02 21:57:06 +0000 <hpc> true
2021-06-02 21:57:13 +0000 <djb2021> very interesting - i had a completely different model -- something that constructs a thing such as data or now types....
2021-06-02 21:57:40 +0000 <dminuoso> djb2021: Inded, `Maybe Int` creates a new type (that has no name other than `Maybe Int` itself)
2021-06-02 21:57:51 +0000 <dminuoso> djb2021: Here's a very simple rule by the way:
2021-06-02 21:58:10 +0000 <dminuoso> A type can only be inhabited, if its type is Type
2021-06-02 21:58:18 +0000 <dminuoso> To check:
2021-06-02 21:58:21 +0000 <dminuoso> % :k Int
2021-06-02 21:58:21 +0000 <yahb> dminuoso: Type
2021-06-02 21:58:28 +0000 <dminuoso> So `Int` is inhabited.
2021-06-02 21:58:32 +0000 <dminuoso> We can ask GHC to verify:
2021-06-02 21:58:38 +0000 <dminuoso> % f :: Int; f = undefined
2021-06-02 21:58:38 +0000 <yahb> dminuoso:
2021-06-02 21:58:53 +0000 <dminuoso> Type checks, we have a value of type Int. So its inhabited.
2021-06-02 21:58:59 +0000 <dminuoso> f :: Maybe; f = undefined
2021-06-02 21:59:02 +0000 <dminuoso> % f :: Maybe; f = undefined
2021-06-02 21:59:02 +0000 <yahb> dminuoso: ; <interactive>:77:6: error:; * Expecting one more argument to `Maybe'; Expected a type, but `Maybe' has kind `Type -> Type'; * In the type signature: f :: Maybe
2021-06-02 21:59:05 +0000 <dminuoso> Fails to type check!
2021-06-02 21:59:10 +0000 <dminuoso> % :k Maybe
2021-06-02 21:59:10 +0000 <yahb> dminuoso: Type -> Type
2021-06-02 21:59:23 +0000 <hpc> % f :: 'Red; f = undefined
2021-06-02 21:59:24 +0000 <yahb> hpc: ; <interactive>:79:6: error:; * Expected a type, but 'Red has kind `Color'; * In the type signature: f :: 'Red
2021-06-02 21:59:39 +0000 <dminuoso> The diagnostic is poor
2021-06-02 21:59:49 +0000 <dminuoso> when GHC says "Expected a type", it really means "a type of kind/type Type"
2021-06-02 22:00:47 +0000 <djb2021> is there a function to transcript this conversation?
2021-06-02 22:00:56 +0000 <dminuoso> djb2021: Check the topic
2021-06-02 22:01:00 +0000 <djb2021> i want to read it tomorrow again
2021-06-02 22:01:06 +0000 <dminuoso> We provide full channel logging
2021-06-02 22:01:12 +0000 <dminuoso> /topic
2021-06-02 22:01:37 +0000 <dminuoso> djb2021: in hpc's example, because the type of 'Red is Color (i.e. 'Red :: Color -- note that both left hand and right hand side are types), there exists no values of type 'Red, not even undefined.
2021-06-02 22:01:46 +0000 <dminuoso> (Because again, the type of 'Red is not Type)
2021-06-02 22:01:50 +0000 <nitrix> dminuoso, Most IRC clients let you escape / with another /, so //topic should work, or you can also do /say /topic which I think is in the RFC.
2021-06-02 22:01:57 +0000 <dminuoso> /foo
2021-06-02 22:02:03 +0000 <dminuoso> nitrix: Ah I was always curious about the syntax :)
2021-06-02 22:02:07 +0000 <nitrix> :)
2021-06-02 22:02:26 +0000 <boxscape> djb2021 these are the logs for today https://ircbrowse.tomsmeding.com/day/lchaskell/2021/06/02
2021-06-02 22:02:39 +0000 <hpc> one final detail is unboxing
2021-06-02 22:02:40 +0000 <dminuoso> djb2021: The main usefulness of this DataKinds, is that we can pattern match on these lifted types *similarly* to how we can pattern match on nullary sum types in the value level
2021-06-02 22:02:53 +0000 <dminuoso> So you could write something like
2021-06-02 22:02:57 +0000 <hpc> which essentially is for values that don't have all the thunk wrapping around them
2021-06-02 22:03:03 +0000 <hpc> % :t 5#
2021-06-02 22:03:03 +0000 <yahb> hpc: Int#
2021-06-02 22:03:07 +0000 <hpc> % :k Int#
2021-06-02 22:03:07 +0000 <yahb> hpc: TYPE 'GHC.Exts.IntRep
2021-06-02 22:03:09 +0000 <djb2021> boxscape: thank you very much
2021-06-02 22:03:22 +0000 <hpc> you don't really get into that unless you're doing FFI or really heavy optimization
2021-06-02 22:03:32 +0000 <hpc> but it's useful to know it's there
2021-06-02 22:04:46 +0000 <hpc> the # there is just part of the identifier name, and used by convention to mark unboxed stuff
2021-06-02 22:05:01 +0000 <hpc> so like you don't get Light# automagically or anything
2021-06-02 22:05:17 +0000 <dminuoso> % type family Value n :: Nat where Value 'Red = 10; Value 'Green = 20
2021-06-02 22:05:17 +0000 <yahb> dminuoso:
2021-06-02 22:05:35 +0000 <dminuoso> djb2021: ^- here. This is a type level equivalent of `\f -> case f of Red -> 10; Green -> 20`
2021-06-02 22:05:45 +0000 <dminuoso> (yes, we can have numbers on the type level too!)
2021-06-02 22:05:54 +0000 <hpc> % :k Value
2021-06-02 22:05:54 +0000 <yahb> hpc: Color -> Nat
2021-06-02 22:06:10 +0000amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 245 seconds)
2021-06-02 22:06:14 +0000ddellacosta(~ddellacos@86.106.121.17)
2021-06-02 22:06:43 +0000 <dminuoso> djb2021: So you see, there's this deep rabbit hole that opens up when you realize this type system lets you pattern match on types, express computations, etc..
2021-06-02 22:06:50 +0000unyu(~pyon@user/pyon) (Ping timeout: 252 seconds)
2021-06-02 22:06:53 +0000 <dminuoso> Next up we have type level lists too..
2021-06-02 22:07:00 +0000dhil(~dhil@195.213.192.85) (Ping timeout: 245 seconds)
2021-06-02 22:07:21 +0000davidnutting(~nuttingd@75.164.99.232) (Quit: WeeChat 3.1)
2021-06-02 22:07:38 +0000davidnutting(~nuttingd@75.164.99.232)
2021-06-02 22:07:42 +0000 <dminuoso> % kind! (Value 'Red)
2021-06-02 22:07:42 +0000 <yahb> dminuoso: ; <interactive>:100:1: error:; * Variable not in scope: kind :: Array i0 e; * Perhaps you meant one of these: `find' (imported from Data.List), `BSL.find' (imported from Data.ByteString.Lazy), `BS.find' (imported from Data.ByteString); <interactive>:100:8: error: Data constructor not in scope: Value :: Name -> i0
2021-06-02 22:07:50 +0000 <dminuoso> % :kind! (Value 'Red)
2021-06-02 22:07:50 +0000 <yahb> dminuoso: Nat; = 10
2021-06-02 22:07:54 +0000 <dminuoso> % :kind! (Value 'Green)
2021-06-02 22:07:54 +0000 <yahb> dminuoso: Nat; = 20
2021-06-02 22:08:21 +0000 <djb2021> wow, currently this blows my mind - but i got a few things the equivalence with match case is clear.
2021-06-02 22:09:38 +0000 <dminuoso> % :set -XPolyKinds
2021-06-02 22:09:38 +0000 <yahb> dminuoso:
2021-06-02 22:09:42 +0000 <dminuoso> % newtype Tagged s b = Tagged b
2021-06-02 22:09:42 +0000 <yahb> dminuoso:
2021-06-02 22:09:59 +0000 <djb2021> the "family" in the definition confuses me a little bit - i never used this before
2021-06-02 22:10:09 +0000 <dminuoso> djb2021: "type family" is just a type level function, nothing more
2021-06-02 22:10:35 +0000 <dminuoso> well, there's some differences, but you can think of them as type level functions
2021-06-02 22:10:38 +0000 <dminuoso> type family is just the name for it
2021-06-02 22:10:42 +0000 <hpc> % class LowerColor (c :: Color) where color :: Color; instance LowerColor Red where color = Red; instanceLowerColor Green where color = Green
2021-06-02 22:10:42 +0000 <yahb> hpc: ; <interactive>:105:53: error: parse error on input `instance'
2021-06-02 22:10:55 +0000Ariakenom(~Ariakenom@2001:9b1:efb:fc00:8504:3672:14f4:b190) (Quit: Leaving)
2021-06-02 22:10:58 +0000 <hpc> % class LowerColor (c :: Color) where color :: Color
2021-06-02 22:10:59 +0000 <yahb> hpc: ; <interactive>:106:37: error:; * Could not deduce (LowerColor c0); from the context: LowerColor c; bound by the type signature for:; color :: forall (c :: Color). LowerColor c => Color; at <interactive>:106:37-50; The type variable `c0' is ambiguous; * In the ambiguity check for `color'; To defer the ambiguity check to use sites, enable AllowAmb
2021-06-02 22:11:20 +0000ddellacosta(~ddellacos@86.106.121.17) (Ping timeout: 272 seconds)
2021-06-02 22:11:21 +0000 <hpc> oh right
2021-06-02 22:12:00 +0000 <hpc> % class LowerColor (c :: Color) where color :: Tagged c Color
2021-06-02 22:12:00 +0000 <yahb> hpc:
2021-06-02 22:12:10 +0000 <hpc> % instance LowerColor Red where color = Tagged Red
2021-06-02 22:12:10 +0000 <yahb> hpc:
2021-06-02 22:12:16 +0000 <hpc> % instance LowerColor Green where color = Tagged Green
2021-06-02 22:12:16 +0000 <yahb> hpc:
2021-06-02 22:12:27 +0000 <hpc> you can do something like that to get your types back to the value level
2021-06-02 22:12:32 +0000 <hpc> and it doesn't have to be so direct
2021-06-02 22:14:29 +0000 <dminuoso> % f :: forall (n :: Nat) (k :: Color) (l :: Color). (KnownNat n, n ~ Value k + Value l) => Tagged k String -> Tagged l String -> (Integer, Int); f (Tagged l) (Tagged r) = (natVal (Proxy @n), length l + length r)
2021-06-02 22:14:29 +0000 <yahb> dminuoso:
2021-06-02 22:15:00 +0000 <dminuoso> % f (Tagged "its red" :: Tagged 'Red String) (Tagged "its green" :: Tagged 'Green String)
2021-06-02 22:15:00 +0000 <yahb> dminuoso: (30,16)
2021-06-02 22:15:37 +0000 <dminuoso> djb2021: Next level now! We can define variables (by using equality constraints), and then we can pull these type level numbers back into the value level
2021-06-02 22:16:21 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-02 22:16:43 +0000 <janus> ok i have made a repo for my project with template haskell that doesn't work with profiling: http://github.com/ysangkok/cabal-profiling-issue
2021-06-02 22:16:45 +0000 <dminuoso> Note in particular
2021-06-02 22:16:56 +0000 <dminuoso> There is a constraint (its left to a =>):
2021-06-02 22:17:00 +0000 <dminuoso> n ~ Value k + Value l
2021-06-02 22:17:13 +0000 <janus> if i remove cabal.project, it compiles, but if it is left there, it doesn't. i don't understand it since i thought profiling shouldn't need source changes
2021-06-02 22:17:29 +0000 <djb2021> wait - i didn't understand your % f :: forall ...
2021-06-02 22:17:40 +0000 <dminuoso> djb2021: ignore the forall bits until the dot.
2021-06-02 22:17:45 +0000 <dminuoso> pretend this reads:
2021-06-02 22:17:48 +0000 <hpc> djb2021: copy it to a text editor and split it into two lines on the ;
2021-06-02 22:17:53 +0000 <dminuoso> (KnownNat n, n ~ Value k + Value l) => Tagged k String -> Tagged l String -> (Integer, Int); f (Tagged l) (Tagged r) = (natVal (Proxy @n), length l + length r)
2021-06-02 22:18:21 +0000 <dminuoso> Think of this as setting the variable `n` to be the type family Value applied to k, plus (this is a type level natural plus) type family Value applied to l
2021-06-02 22:18:25 +0000 <dminuoso> If you recall my above definition
2021-06-02 22:18:31 +0000 <dminuoso> that means `n ~ 30` at the type level
2021-06-02 22:18:34 +0000michalz(~user@185.246.204.60) (Remote host closed the connection)
2021-06-02 22:18:49 +0000 <dminuoso> natVal let's you pull down a type level natural back into the value world (true magic going on!)
2021-06-02 22:19:18 +0000 <hpc> % :t natVal
2021-06-02 22:19:18 +0000 <yahb> hpc: KnownNat n => proxy n -> Integer
2021-06-02 22:19:34 +0000 <hpc> it's like an infinite version of class LowerColor
2021-06-02 22:20:55 +0000 <monochrom> Wait a second, I think I heard that profiling and TH can't mix.
2021-06-02 22:21:46 +0000 <Arsen> can cabal build deps on all cores in cabal install? right now, I'm stuck on a single pandoc build compiling one file at a time, with another 11 cores fully free
2021-06-02 22:22:07 +0000 <dminuoso> djb2021: or maybe a different example
2021-06-02 22:22:09 +0000 <dminuoso> % type family Len s where Len '[] = 0; Len (x ': xs) = 1 + Len xs
2021-06-02 22:22:09 +0000 <yahb> dminuoso:
2021-06-02 22:22:15 +0000 <dminuoso> Here, type level length for type level lists
2021-06-02 22:23:15 +0000ddellacosta(~ddellacos@86.106.121.115)
2021-06-02 22:23:28 +0000 <djb2021> so computations at the type level?
2021-06-02 22:24:05 +0000 <dminuoso> % tyl :: forall (n :: Nat) (s :: [Data.Kind.Type]) a. (KnownNat n, n ~ Len s) => Tagged s a -> Integer; tyl _ = natVal (Proxy @n)
2021-06-02 22:24:05 +0000 <yahb> dminuoso:
2021-06-02 22:24:20 +0000 <janus> monochrom: oh :O but if that is the case, why doesn't ghc immediatly quit once it sees LANGUAGE TemplateHaskell and profiling is on?
2021-06-02 22:24:37 +0000 <dminuoso> % tyl (Tagged "foo" :: Tagged '[Float, Double, Int, 'Red, 'Green] String)
2021-06-02 22:24:37 +0000 <yahb> dminuoso: ; <interactive>:138:29: error:; * Expected a type, but 'Red has kind `Color'; * In the first argument of `Tagged', namely '[Float, Double, Int, 'Red, 'Green]; In an expression type signature: Tagged '[Float, Double, Int, 'Red, 'Green] String; In the first argument of `tyl', namely `(Tagged "foo" :: Tagged '[Float, Double, Int, 'Red, 'Green] String)'
2021-06-02 22:24:44 +0000 <dminuoso> % tyl (Tagged "foo" :: Tagged '[Float, Double, Int] String)
2021-06-02 22:24:44 +0000 <yahb> dminuoso: 3
2021-06-02 22:24:48 +0000 <dminuoso> err bad example
2021-06-02 22:24:56 +0000 <dminuoso> % tyl (Tagged "foo" :: Tagged '[Float, Double, Int, Char, IO ()] String)
2021-06-02 22:24:56 +0000 <yahb> dminuoso: 5
2021-06-02 22:24:59 +0000 <dminuoso> djb2021: Yes!
2021-06-02 22:26:19 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-02 22:26:41 +0000 <dminuoso> djb2021: The beauty of these type level computations, is that the resulting types can be used to type terms with.
2021-06-02 22:26:50 +0000eight(~eight@user/eight) (Quit: Rebooting)
2021-06-02 22:27:23 +0000 <hpc> and that the type-level language closely resembles the value-level language
2021-06-02 22:27:36 +0000 <hpc> if you squint, C++ has been doing type-level programming for ages with templates
2021-06-02 22:27:46 +0000 <dminuoso> servant is a prime example of this. You express an API with a very rich type, and then you use complicated type level computations to turn that rich type into something you can type a function with.
2021-06-02 22:28:15 +0000 <djb2021> that is exactly what i wanted to write but i hesitated because i was not sure if that is blasphemic :)
2021-06-02 22:28:41 +0000 <djb2021> ??
2021-06-02 22:28:42 +0000gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-06-02 22:28:43 +0000 <dminuoso> djb2021: https://hackage.haskell.org/package/servant-0.18.2/docs/Servant-API-Generic.html#t:ToServant
2021-06-02 22:28:55 +0000 <djb2021> i have never used the servant library
2021-06-02 22:28:56 +0000ddellacosta(~ddellacos@86.106.121.115) (Ping timeout: 268 seconds)
2021-06-02 22:28:58 +0000 <hpc> djb2021: now you're getting it :D
2021-06-02 22:29:15 +0000eight(~eight@user/eight)
2021-06-02 22:29:24 +0000 <dminuoso> djb2021: imagine we did this:
2021-06-02 22:29:34 +0000 <dminuoso> data (path :: k) :> (a :: *)
2021-06-02 22:29:36 +0000 <dminuoso> % data (path :: k) :> (a :: *)
2021-06-02 22:29:36 +0000 <yahb> dminuoso: ; <interactive>:141:27: error:; Operator applied to too few arguments: *; With NoStarIsType, `*' is treated as a regular type operator. ; Did you mean to use `Type' from Data.Kind instead?
2021-06-02 22:29:40 +0000 <dminuoso> % data (path :: k) :> (a :: Type)
2021-06-02 22:29:40 +0000 <yahb> dminuoso: ; <interactive>:142:27: error:; Ambiguous occurrence `Type'; It could refer to; either `Language.Haskell.TH.Type', imported from `Language.Haskell.TH' (and originally defined in `Language.Haskell.TH.Syntax'); or `Data.Kind.Type', imported from `Data.Kind' (and originally defined in `GHC.Types')
2021-06-02 22:29:43 +0000 <dminuoso> % data (path :: k) :> (a :: Data.Kind.Type)
2021-06-02 22:29:43 +0000 <yahb> dminuoso:
2021-06-02 22:30:09 +0000 <hpc> there's something morbidly hilarious about "Data.Kind.Type"
2021-06-02 22:30:12 +0000 <dminuoso> djb2021: now next up, you have to accept that strings can exist on the type level too (that is "foo" can be a type!)
2021-06-02 22:30:22 +0000 <dminuoso> djb2021: are you with me so far?
2021-06-02 22:30:48 +0000azeem(~azeem@dynamic-adsl-94-34-34-125.clienti.tiscali.it) (Remote host closed the connection)
2021-06-02 22:30:58 +0000azeem(~azeem@dynamic-adsl-94-34-34-125.clienti.tiscali.it)
2021-06-02 22:31:35 +0000 <djb2021> i didn't understand the servant stuff - what is the goal of the library
2021-06-02 22:31:41 +0000 <dminuoso> you will in a second! :)
2021-06-02 22:31:59 +0000 <dminuoso> next up we will conjure a data kind using what we learned
2021-06-02 22:32:29 +0000 <dminuoso> % data Method = Post | Get
2021-06-02 22:32:29 +0000 <yahb> dminuoso:
2021-06-02 22:32:37 +0000 <dminuoso> Now we have a type level 'Post and 'Get
2021-06-02 22:32:39 +0000tonyday(~user@202-65-93-249.ip4.superloop.com) (Read error: Connection reset by peer)
2021-06-02 22:32:52 +0000 <dminuoso> The above data type :> exists without needing any lifting
2021-06-02 22:32:54 +0000tonyday(~user@202-65-93-249.ip4.superloop.com)
2021-06-02 22:33:53 +0000 <dminuoso> djb2021: if you keep on doing this, you get to have a purely type thing that looks like this:
2021-06-02 22:34:25 +0000 <dminuoso> % type Endpoint = "users" :> Capture "userId" Int :> Get '[JSON] User
2021-06-02 22:34:25 +0000 <yahb> dminuoso: ; <interactive>:145:28: error: Not in scope: type constructor or class `Capture'; <interactive>:145:58: error: Not in scope: type constructor or class `JSON'; <interactive>:145:64: error: Not in scope: type constructor or class `User'
2021-06-02 22:34:30 +0000 <dminuoso> Which is just a pure type
2021-06-02 22:34:37 +0000 <dminuoso> If we can then use type machinery to say:
2021-06-02 22:35:14 +0000wonko(~wjc@62.115.229.50) (Quit: See You Space Cowboy..)
2021-06-02 22:35:17 +0000 <dminuoso> f :: ServerType Endpoint; f userId = loadUserFromDatabase userId
2021-06-02 22:35:24 +0000ru0mad(~ru0mad@82-64-17-144.subs.proxad.net)
2021-06-02 22:36:01 +0000 <dminuoso> The choice `ServerType` is imaginary, but imagine this was a sophisticated type calculation, that would *return* `Int -> IO User`
2021-06-02 22:36:38 +0000 <dminuoso> This machinery lets us derive a router, server handlers, client handlers - all well typed because the shape is communicated through a type
2021-06-02 22:36:43 +0000ru0mad(~ru0mad@82-64-17-144.subs.proxad.net) (Client Quit)
2021-06-02 22:36:54 +0000favonia(~favonia@user/favonia) (Ping timeout: 264 seconds)
2021-06-02 22:37:25 +0000 <hpc> and then you can run "curl http://localhost/users/5" to get that user's data
2021-06-02 22:38:29 +0000davidnutting(~nuttingd@75.164.99.232) (Quit: WeeChat 3.1)
2021-06-02 22:38:34 +0000favonia(~favonia@user/favonia)
2021-06-02 22:39:01 +0000 <dminuoso> djb2021: Concretely, servant lets you a) generate a client automatically (with automatically inferred types!) for each endpoint, b) with the type checker verify that your request handlers match the request/response types exactly (so you cant forget an argument, or falsey assume that the specified userId is of type String), c) you can automatically generate documentation - all from a single type.
2021-06-02 22:39:12 +0000 <dminuoso> All this is driven by complex type level computation
2021-06-02 22:39:26 +0000davidnutting(~nuttingd@75.164.99.232)
2021-06-02 22:39:41 +0000davidnutting(~nuttingd@75.164.99.232) (Client Quit)
2021-06-02 22:40:02 +0000__monty__(~toonn@user/toonn) (Quit: leaving)
2021-06-02 22:41:18 +0000ddellacosta(~ddellacos@86.106.121.77)
2021-06-02 22:41:31 +0000fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-06-02 22:43:04 +0000myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net)
2021-06-02 22:43:07 +0000derelict(~winter@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com) (Ping timeout: 268 seconds)
2021-06-02 22:43:26 +0000tonyday(~user@202-65-93-249.ip4.superloop.com) (ERC (IRC client for Emacs 28.0.50))
2021-06-02 22:44:09 +0000 <djb2021> let me summarize if i understood correctly: i design an API by defining it as a type? where is the difference to the way that is done with swagger-codegen? with this approach (in java) code is generated for the controller and client code generation is possible there too but i have never used it.
2021-06-02 22:45:07 +0000renzhi(~xp@2607:fa49:6500:bc00::e7b)
2021-06-02 22:45:09 +0000 <djb2021> where exactly is the strength
2021-06-02 22:45:20 +0000 <djb2021> of the servant approach?
2021-06-02 22:45:53 +0000ddellacosta(~ddellacos@86.106.121.77) (Ping timeout: 252 seconds)
2021-06-02 22:46:00 +0000 <dminuoso> djb2021: with swagger there is no guarantee your swagger spec is ever in sync with the code. you can simply forget to re-run your code generator.
2021-06-02 22:46:10 +0000 <hpc> the advantage is remaining in-language, rather than having to resort to writing some kind of yaml/json/xml file
2021-06-02 22:46:13 +0000 <dminuoso> and this applies to every part that uses swagger
2021-06-02 22:46:44 +0000 <dminuoso> djb2021: with servant, if the type ever changes and you forget to update your code, it will produce a type error.
2021-06-02 22:47:41 +0000jolly(~jolly@208.180.97.158) (Ping timeout: 272 seconds)
2021-06-02 22:48:02 +0000 <dminuoso> and servant offers hooks to customize behavior in the server for example, allowing you to attach further arbitrary things onto the API
2021-06-02 22:49:16 +0000 <dminuoso> say a full authentication, which automatically communicates the logged in user into the type system, so that the handlers suddenly receive an additional argument for the user - but not because its buitin but because you can extend it this way
2021-06-02 22:49:18 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-02 22:53:07 +0000 <djb2021> ok, i understand that because the definitions are on the type level any missing implementation detail is found during compile time. This is a clear advantage. But isn't the API first approach (think of several teams, some of them for frontends) a good thing? Is it better to define an API in the language?
2021-06-02 22:53:54 +0000 <dminuoso> to be fair, servant was an experiment originally I think
2021-06-02 22:54:27 +0000myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net) (Read error: Connection reset by peer)
2021-06-02 22:54:46 +0000myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net)
2021-06-02 22:54:54 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-06-02 22:55:39 +0000 <dminuoso> servant comes at a steep cost, mistakes result in type errors that can be hard to decipher - especially to someone new to servant. you accumulate a lot of extensions to even express a type, and then you might be confused about what things even mean
2021-06-02 22:56:34 +0000 <dminuoso> Is it good? I think it has good uses, but wouldn't recommend it to everybody. I merely mentioned it to demonstrate what we can do just at the type level, where you might have thought `Int` and `(->)` was the extend of it. :p
2021-06-02 22:56:45 +0000pera(~pera@0541db7e.skybroadband.com)
2021-06-02 22:57:07 +0000peraGuest3714
2021-06-02 22:57:11 +0000 <djb2021> ok, wait, i have been reading a little bit through servant -- with servant i can combine several APIs to a resulting single API, right?
2021-06-02 22:57:25 +0000 <dminuoso> what do you mean?
2021-06-02 22:57:35 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3547:b6d4:7412:5857) (Remote host closed the connection)
2021-06-02 22:58:04 +0000yaroot(~yaroot@6.3.30.125.dy.iij4u.or.jp) (Quit: The Lounge - https://thelounge.chat)
2021-06-02 22:58:53 +0000 <djb2021> ok, this was the description for a union of two apis, get and post
2021-06-02 22:59:00 +0000yaroot(~yaroot@6.3.30.125.dy.iij4u.or.jp)
2021-06-02 22:59:02 +0000 <djb2021> so this is similar to swagger
2021-06-02 22:59:09 +0000 <dminuoso> yeah, with servant you usually describe a set of endpoints
2021-06-02 22:59:13 +0000ddellacosta(~ddellacos@86.106.121.72)
2021-06-02 22:59:15 +0000Guest3714(~pera@0541db7e.skybroadband.com) (Client Quit)
2021-06-02 23:00:07 +0000 <djb2021> and servant supports export of that API to OpenApI / Swagger?
2021-06-02 23:00:27 +0000 <djb2021> and client code generation for test?
2021-06-02 23:00:41 +0000benin0(~benin@183.82.205.186)
2021-06-02 23:00:44 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3547:b6d4:7412:5857)
2021-06-02 23:00:45 +0000dmwit(~dmwit@pool-96-255-233-247.washdc.fios.verizon.net)
2021-06-02 23:00:48 +0000lavaman(~lavaman@98.38.249.169)
2021-06-02 23:00:55 +0000 <dminuoso> there is a package servant-swagger and servant-openapi, yes.
2021-06-02 23:01:11 +0000 <dminuoso> Which automatically generate appropriate swagger specs for you
2021-06-02 23:01:21 +0000 <djb2021> great
2021-06-02 23:01:51 +0000 <dminuoso> You just need to deal with schemas for your types, but you can use generics to automatically boiler plate most of it
2021-06-02 23:02:06 +0000raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds)
2021-06-02 23:02:19 +0000boioioing(~boioioing@cpe-76-84-141-127.neb.res.rr.com)
2021-06-02 23:02:38 +0000 <dminuoso> https://gist.github.com/dminuoso/fde24babea76ad23af01eb650ca185e7
2021-06-02 23:02:40 +0000 <dminuoso> Looks like this
2021-06-02 23:03:19 +0000Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2021-06-02 23:03:54 +0000ddellacosta(~ddellacos@86.106.121.72) (Ping timeout: 272 seconds)
2021-06-02 23:04:55 +0000lavaman(~lavaman@98.38.249.169) (Ping timeout: 245 seconds)
2021-06-02 23:05:33 +0000 <djb2021> i am hoping to implement a service with that soon, i wanted to learn that for a long time, but i never got the time to do that. This year it looks good, however. Let's see.
2021-06-02 23:06:31 +0000 <djb2021> Thank you very much!
2021-06-02 23:06:58 +0000 <djb2021> Have a good day / night.
2021-06-02 23:09:55 +0000dunkeln(~dunkeln@94.129.65.28) (Ping timeout: 245 seconds)
2021-06-02 23:11:58 +0000falafel_(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-02 23:12:17 +0000falafel_(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection)
2021-06-02 23:12:51 +0000djb2021(~djb2021@HSI-KBW-091-089-090-070.hsi2.kabelbw.de) (Quit: Client closed)
2021-06-02 23:16:41 +0000ddellacosta(~ddellacos@86.106.121.100)
2021-06-02 23:17:50 +0000favonia(~favonia@user/favonia) (Ping timeout: 272 seconds)
2021-06-02 23:18:15 +0000favonia(~favonia@user/favonia)
2021-06-02 23:18:46 +0000falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-02 23:20:05 +0000betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Ping timeout: 265 seconds)
2021-06-02 23:20:56 +0000bfrk1(~Thunderbi@200116b8456bb4003c666de9803185e6.dip.versatel-1u1.de)
2021-06-02 23:21:05 +0000bfrk(~Thunderbi@200116b845fca000f97ff890167a6943.dip.versatel-1u1.de) (Ping timeout: 252 seconds)
2021-06-02 23:21:05 +0000bfrk1bfrk
2021-06-02 23:21:09 +0000betelgeuse0(~john2gb@94-225-47-8.access.telenet.be)
2021-06-02 23:21:38 +0000ddellacosta(~ddellacos@86.106.121.100) (Ping timeout: 272 seconds)
2021-06-02 23:22:38 +0000dunkeln(~dunkeln@94.129.65.28)
2021-06-02 23:24:19 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-02 23:24:26 +0000nikoo
2021-06-02 23:27:54 +0000dunkeln(~dunkeln@94.129.65.28) (Ping timeout: 264 seconds)
2021-06-02 23:29:33 +0000ubikium(~ubikium@113x43x248x70.ap113.ftth.arteria-hikari.net) (Quit: Quit)
2021-06-02 23:29:42 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-06-02 23:35:00 +0000ddellacosta(~ddellacos@86.106.121.61)
2021-06-02 23:38:31 +0000beka(~beka@104.193.170-254.PUBLIC.monkeybrains.net)
2021-06-02 23:39:51 +0000waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 268 seconds)
2021-06-02 23:39:54 +0000ddellacosta(~ddellacos@86.106.121.61) (Ping timeout: 264 seconds)
2021-06-02 23:41:13 +0000waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
2021-06-02 23:44:51 +0000bfrk(~Thunderbi@200116b8456bb4003c666de9803185e6.dip.versatel-1u1.de) (Quit: bfrk)
2021-06-02 23:45:13 +0000orion(~orion@user/orion) (Read error: Connection reset by peer)
2021-06-02 23:45:25 +0000orion(~orion@user/orion)
2021-06-02 23:49:30 +0000dpl_(~dpl@77-121-78-163.chn.volia.net) (Ping timeout: 264 seconds)
2021-06-02 23:52:30 +0000ddellacosta(~ddellacos@89.46.62.63)
2021-06-02 23:56:33 +0000 <boxscape> Does anyone use AccumT?
2021-06-02 23:56:46 +0000 <boxscape> I just saw it for the first time, but never saw it listed in lists of Monad Transfomers
2021-06-02 23:56:50 +0000ddellacosta(~ddellacos@89.46.62.63) (Ping timeout: 252 seconds)
2021-06-02 23:57:05 +0000 <boxscape> (or lists of Monads, for that matter)
2021-06-02 23:57:24 +0000 <boxscape> https://hackage.haskell.org/package/transformers/docs/Control-Monad-Trans-Accum.html#t:AccumT