2021/05/31

2021-05-31 00:00:39 +0200 <Philonous> Thanks!
2021-05-31 00:01:01 +0200hendursaga(~weechat@user/hendursaga) (Remote host closed the connection)
2021-05-31 00:01:13 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-05-31 00:01:49 +0200hendursaga(~weechat@user/hendursaga)
2021-05-31 00:02:01 +0200xff0x(~xff0x@2001:1a81:5252:9d00:7ae5:3b91:ab39:a8b6) (Remote host closed the connection)
2021-05-31 00:02:18 +0200xff0x(~xff0x@2001:1a81:5252:9d00:f476:7d38:9d5:54c9)
2021-05-31 00:05:47 +0200geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com) (Remote host closed the connection)
2021-05-31 00:06:31 +0200dudek(~dudek@185.150.236.112) (Quit: Leaving)
2021-05-31 00:07:23 +0200geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com)
2021-05-31 00:07:27 +0200 <danso> how would you design a compiler in haskell with a module system?
2021-05-31 00:07:48 +0200 <danso> a compiler is maybe the classic example of a program as a pure function
2021-05-31 00:07:59 +0200 <danso> source code input -> program output, no side effects
2021-05-31 00:08:14 +0200 <danso> but i just realized mine will need to read the filesystem at some point if i'm going to implement modules :^/
2021-05-31 00:09:26 +0200space-shell(~space-she@88.98.247.38) (Quit: Connection closed)
2021-05-31 00:10:43 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-05-31 00:10:48 +0200 <dminuoso> danso: You could of course preload everything before-hand, but that might not scale well.
2021-05-31 00:11:20 +0200 <danso> yeah, it seems not ideal to keep all the source code in memory at all times
2021-05-31 00:11:20 +0200 <[exa]> danso: that's a highly impure view of pure functions
2021-05-31 00:11:24 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-05-31 00:11:51 +0200 <danso> it also would mean the parser would have to do IO, or at least use the IO monad
2021-05-31 00:11:51 +0200 <dminuoso> danso: Even in GHC there's a lot of IO going on, except the simplifer. The simplifier is really just a pipeline of `Core -> Core` functions :)
2021-05-31 00:12:48 +0200 <lucky> top level part could be impure, handle each bit loaded purely, proceed to next step depending
2021-05-31 00:12:54 +0200 <[exa]> danso: like, I see how you meant it, but really pure practical compilers are hard to find
2021-05-31 00:13:09 +0200 <dminuoso> danso: Also, just because IO is present doesnt mean its pervasive.
2021-05-31 00:13:16 +0200 <lucky> all of the impurity in my toy compiler is in a few dozen lines in Main.hs
2021-05-31 00:13:27 +0200 <dminuoso> By necessity all Haskell programas have IO by virtue of main having type `IO a`
2021-05-31 00:13:36 +0200 <dminuoso> But that doesnt mean you cant have pure parts in your program
2021-05-31 00:13:38 +0200 <lucky> i load up stuff, throw it off to pure fns, collect it and proceed conditionally based on that in the top level IO
2021-05-31 00:14:09 +0200 <danso> lucky, does yours support a module system?
2021-05-31 00:14:18 +0200 <lucky> so I do have a function that goes Text -> Program whech Program is the unchecked AST after parsing
2021-05-31 00:14:21 +0200 <lucky> which is pretty :)
2021-05-31 00:14:33 +0200 <lucky> danso: no sir, can't offer specfic advice there, sorry
2021-05-31 00:14:45 +0200 <danso> it sounds like yours and mine are in about the same place
2021-05-31 00:14:57 +0200 <danso> a glorious place it is, but this feature threatens everything
2021-05-31 00:15:32 +0200 <lucky> i'd just parse the module stuff, pass it up to top level as part of the result, and handle the conditional ugly real world there and try to contain it :)
2021-05-31 00:15:50 +0200Lycurgusis not sure a module system makes sense in hs world
2021-05-31 00:16:19 +0200 <lucky> a compiler *in* haskell, i don't know that it's *for* haskell
2021-05-31 00:16:25 +0200 <dminuoso> danso: So what GHC roughly does is this: Each module gets compiled into an object file and an interface file. The object file can be linked, and the interface file contains all the useful information for dependent modules.
2021-05-31 00:16:30 +0200 <lucky> mine compiles C (ish)
2021-05-31 00:17:02 +0200 <dminuoso> danso: So when GHC first generates an object and interface file for module A, and then processes a module B that depends on A, it then loads the interface file of A
2021-05-31 00:18:03 +0200 <dminuoso> (And the interface file would contain information like what what values are exported, their types, etc)
2021-05-31 00:18:24 +0200 <danso> dminuoso, that is helpful
2021-05-31 00:18:36 +0200 <danso> so compile each file totally separately, and leave an object file that can be linked
2021-05-31 00:19:19 +0200 <danso> and my small `main :: IO a` can load up only the relevant .hi files instead of loading the source code for every imported module and compiling it
2021-05-31 00:19:36 +0200 <dminuoso> Indeed. This is also how C works, except the preprocessor is used with coding conventions (header files) to implement what GHC uses interface files for
2021-05-31 00:19:41 +0200 <dminuoso> Right.
2021-05-31 00:20:09 +0200 <danso> golly those ghc authors are smart
2021-05-31 00:21:06 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-05-31 00:21:12 +0200egoist(~egoist@186.235.82.52)
2021-05-31 00:21:56 +0200 <danso> i guess this still means i need to parse at least the first lines of every source code file within IO
2021-05-31 00:22:05 +0200 <danso> that, or use unsafePerformIO ;^)
2021-05-31 00:23:03 +0200 <danso> but i can live with that
2021-05-31 00:23:13 +0200 <danso> thanks to everyone who contributed, this has been interesting
2021-05-31 00:24:56 +0200chisui(~chisui@200116b86647790081989979d16794a1.dip.versatel-1u1.de)
2021-05-31 00:25:57 +0200 <dminuoso> danso: Dont be afraid of using IO.
2021-05-31 00:26:19 +0200 <dminuoso> It's very normal to structure large parts in IO, but calling pure code from that IO spine.
2021-05-31 00:26:40 +0200 <dminuoso> Wide access to IO lets you do stuff like logging more keeping mutable references around more easily
2021-05-31 00:27:25 +0200myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net)
2021-05-31 00:27:29 +0200 <dminuoso> GHC has IO present everywhere, even in the simplifier. But most passes actually have the type `Core -> Core`, so GHC embeds them with something like:
2021-05-31 00:27:36 +0200 <dminuoso> doPass :: (CoreProgram -> CoreProgram) -> ModGuts -> CoreM ModGuts
2021-05-31 00:27:58 +0200 <dminuoso> Which lifts this pure function into the (impure) simplifier.
2021-05-31 00:28:41 +0200 <dminuoso> The logging alone should make you want IO present in large parts. :p
2021-05-31 00:30:13 +0200ddellacosta(~ddellacos@89.46.62.248)
2021-05-31 00:32:17 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 268 seconds)
2021-05-31 00:32:40 +0200imdoor(~imdoor@balticom-142-78-50.balticom.lv) (Quit: imdoor)
2021-05-31 00:34:07 +0200alex3(~Chel@BSN-77-82-41.static.siol.net) (Ping timeout: 268 seconds)
2021-05-31 00:35:21 +0200ddellacosta(~ddellacos@89.46.62.248) (Ping timeout: 268 seconds)
2021-05-31 00:36:57 +0200kadoban(~mud@user/kadoban) (Quit: quit)
2021-05-31 00:39:03 +0200guest0123(~aaron@2601:602:a080:fa0:21da:7ddc:2cc6:a10c) (Ping timeout: 268 seconds)
2021-05-31 00:39:06 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-05-31 00:39:38 +0200kadoban(~mud@user/kadoban)
2021-05-31 00:39:49 +0200alex3(~Chel@BSN-77-82-41.static.siol.net)
2021-05-31 00:42:39 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-05-31 00:44:49 +0200hexfive(~eric@50.35.83.177)
2021-05-31 00:47:41 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2021-05-31 00:48:19 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds)
2021-05-31 00:50:08 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-05-31 00:51:13 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2021-05-31 00:51:41 +0200hexfive(~eric@50.35.83.177) (Quit: WeeChat 3.0)
2021-05-31 00:52:33 +0200allbery_b(~geekosaur@069-135-003-034.biz.spectrum.com)
2021-05-31 00:52:56 +0200geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com) (Killed (NickServ (GHOST command used by allbery_b)))
2021-05-31 00:53:02 +0200allbery_bgeekosaur
2021-05-31 00:53:36 +0200vicfred(~vicfred@user/vicfred)
2021-05-31 00:54:44 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-05-31 00:55:06 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 268 seconds)
2021-05-31 00:55:58 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com) (Ping timeout: 264 seconds)
2021-05-31 01:00:34 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-05-31 01:02:41 +0200tremon_(~tremon@217-63-61-89.cable.dynamic.v4.ziggo.nl) (Quit: getting boxed in)
2021-05-31 01:02:42 +0200alx741(~alx741@181.196.68.165) (Ping timeout: 264 seconds)
2021-05-31 01:05:35 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4) (Ping timeout: 268 seconds)
2021-05-31 01:06:04 +0200ddellacosta(~ddellacos@86.106.121.222)
2021-05-31 01:16:58 +0200alx741(~alx741@186.178.108.160)
2021-05-31 01:18:04 +0200lavaman(~lavaman@98.38.249.169)
2021-05-31 01:18:54 +0200dpl(~dpl@77-121-78-163.chn.volia.net) (Ping timeout: 264 seconds)
2021-05-31 01:22:50 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-05-31 01:23:51 +0200bfrk1(~Thunderbi@200116b84534a60005aeadf137ee420f.dip.versatel-1u1.de)
2021-05-31 01:24:58 +0200jjhoo(jahakala@dsl-trebng21-58c18f-56.dhcp.inet.fi)
2021-05-31 01:25:56 +0200bfrk(~Thunderbi@200116b845d00f006a2925a261e5e856.dip.versatel-1u1.de) (Ping timeout: 268 seconds)
2021-05-31 01:25:56 +0200bfrk1bfrk
2021-05-31 01:25:58 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:f131:7ff:d61f:7340) (Remote host closed the connection)
2021-05-31 01:26:26 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:f131:7ff:d61f:7340)
2021-05-31 01:31:29 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:f131:7ff:d61f:7340) (Ping timeout: 268 seconds)
2021-05-31 01:32:22 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-05-31 01:32:52 +0200bitmapper(uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity)
2021-05-31 01:38:23 +0200shiraeeshi(~shiraeesh@109.166.58.176) (Ping timeout: 272 seconds)
2021-05-31 01:38:49 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-05-31 01:39:11 +0200lavaman(~lavaman@98.38.249.169)
2021-05-31 01:39:39 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-05-31 01:40:07 +0200waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 268 seconds)
2021-05-31 01:42:14 +0200pbrisbin(~patrick@pool-72-92-38-164.phlapa.fios.verizon.net)
2021-05-31 01:45:03 +0200pera(~pera@user/pera) (Ping timeout: 268 seconds)
2021-05-31 01:47:39 +0200shapr(~user@2607:fb90:a90e:1723:1429:b6ec:2d1d:b192)
2021-05-31 01:49:25 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-05-31 01:50:41 +0200hylisper(~yaaic@111.119.208.67)
2021-05-31 01:51:42 +0200winter(~winter@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com) (Killed (NickServ (GHOST command used by winter_!~quassel@user/winter)))
2021-05-31 01:52:06 +0200winter(~winter@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com)
2021-05-31 01:52:33 +0200winter(~winter@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com) (Killed (NickServ (GHOST command used by winter_!~quassel@user/winter)))
2021-05-31 01:52:56 +0200winter(~winter@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com)
2021-05-31 01:54:56 +0200hylisper(~yaaic@111.119.208.67) (Ping timeout: 252 seconds)
2021-05-31 01:56:00 +0200winter(~winter@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com) (Killed (NickServ (GHOST command used by winter_!~quassel@user/winter)))
2021-05-31 01:56:24 +0200winter(~winter@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com)
2021-05-31 01:56:48 +0200winterGuest417
2021-05-31 01:57:02 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-05-31 02:00:59 +0200myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net) (Ping timeout: 252 seconds)
2021-05-31 02:05:47 +0200ku(~ku@2601:280:c780:7ea0:a15d:a611:c59d:5265)
2021-05-31 02:06:17 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-05-31 02:07:35 +0200hyiltiz(~quassel@31.220.5.250)
2021-05-31 02:08:16 +0200 <hyiltiz> hello haskell@libera
2021-05-31 02:08:47 +0200 <hyiltiz> noticed I got banned/kicked from tons of channels from freenode or channels just got silent
2021-05-31 02:09:02 +0200 <hyiltiz> Guess I was behind the pace of the world
2021-05-31 02:09:15 +0200hyiltizYourNick
2021-05-31 02:09:53 +0200 <shapr> hello
2021-05-31 02:09:54 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-05-31 02:10:08 +0200 <shapr> yeah, freenode imploded, too bad
2021-05-31 02:10:16 +0200YourNickhyiltiz
2021-05-31 02:10:43 +0200moet(~moet@172.58.35.191)
2021-05-31 02:12:17 +0200 <hyiltiz> now gotta register here I guess
2021-05-31 02:14:49 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-05-31 02:16:07 +0200hyiltiz(~quassel@31.220.5.250) (Quit: hyiltiz)
2021-05-31 02:16:55 +0200hyiltiz(~quassel@31.220.5.250)
2021-05-31 02:18:27 +0200 <sm[m]> welcome hyiltiz
2021-05-31 02:20:10 +0200lavaman(~lavaman@98.38.249.169)
2021-05-31 02:22:05 +0200sajith(~sajith@user/sajith) (Quit: Gone)
2021-05-31 02:22:05 +0200nonzen(~nonzen@user/nonzen) (Quit: Gone)
2021-05-31 02:22:20 +0200nonzen(~nonzen@user/nonzen)
2021-05-31 02:22:52 +0200Deide(~Deide@user/deide) (Quit: Seeee yaaaa)
2021-05-31 02:22:52 +0200sajith(~sajith@user/sajith)
2021-05-31 02:22:55 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-05-31 02:24:01 +0200 <chisui> Is there a good writeup of what actually went down? I only read bits and peaces.
2021-05-31 02:24:43 +0200 <sm[m]> chisui: search for freenode in recent hacker news stories
2021-05-31 02:24:56 +0200 <pavonia> chisui: https://gist.github.com/joepie91/df80d8d36cd9d1bde46ba018af497409 though this doesn't include the "offcial" view
2021-05-31 02:29:19 +0200 <chisui> Thanks. What a clusterfuck
2021-05-31 02:30:54 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-05-31 02:34:23 +0200dhil(~dhil@195.213.192.85) (Ping timeout: 268 seconds)
2021-05-31 02:34:46 +0200satai(~satai@static-84-42-172-253.net.upcbroadband.cz) (Read error: Connection reset by peer)
2021-05-31 02:37:22 +0200moet(~moet@172.58.35.191) (Quit: leaving)
2021-05-31 02:38:14 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:f131:7ff:d61f:7340)
2021-05-31 02:40:46 +0200nonzen(~nonzen@user/nonzen) (Quit: Gone)
2021-05-31 02:40:46 +0200sajith(~sajith@user/sajith) (Quit: Gone)
2021-05-31 02:41:00 +0200nonzen(~nonzen@user/nonzen)
2021-05-31 02:41:33 +0200sajith(~sajith@user/sajith)
2021-05-31 02:42:10 +0200Athas(athas@sigkill.dk) (Ping timeout: 264 seconds)
2021-05-31 02:42:22 +0200Athas(athas@2a01:7c8:aaac:1cf:885f:6d75:b55f:82a8)
2021-05-31 02:48:03 +0200shapr(~user@2607:fb90:a90e:1723:1429:b6ec:2d1d:b192) (Remote host closed the connection)
2021-05-31 02:48:20 +0200shapr(~user@2607:fb90:a90e:1723:c496:c7fd:8ebe:11ee)
2021-05-31 02:51:01 +0200bfrk(~Thunderbi@200116b84534a60005aeadf137ee420f.dip.versatel-1u1.de) (Ping timeout: 268 seconds)
2021-05-31 02:52:13 +0200arson(~arson@pool-100-36-47-118.washdc.fios.verizon.net)
2021-05-31 02:53:01 +0200 <arson> hello everyone :) first time on irc - would this be a place to ask some questions about if a function I have is similar or related in any way to something that already exists?
2021-05-31 02:54:23 +0200 <pavonia> Welcome! If it is about a Haskell function, sure
2021-05-31 02:55:58 +0200shapr(~user@2607:fb90:a90e:1723:c496:c7fd:8ebe:11ee) (Ping timeout: 268 seconds)
2021-05-31 02:59:08 +0200hmmmas(~chenqisu1@183.217.202.217)
2021-05-31 03:00:04 +0200 <arson> Thanks! I have this function, called `tw` for treewalk, which has the basic behavior of allowing you to recurse down a tree (such as an AST), but the caller also passes a function which looks at every node in the tree and can either have `tw` continue processing it, or do it's own processing and return a new node to use in place. This is further
2021-05-31 03:00:05 +0200 <arson> complicated by the fact that the function tw takes in, takes in a callback which is equal to `tw <the function argument>`, to allow for further recursion once it's made it's own new node. I know that makes zero sense, so there's two examples of how you would use the `tw` function at the bottom for manipulating ASTs. For sake of example I have a
2021-05-31 03:00:05 +0200 <arson> couple different ways of implementing this function. code: https://paste.tomsmeding.com/tYODlusU
2021-05-31 03:00:34 +0200 <arson> I'm looking for information about a similar function or concept, or even just a similar typeclass to `TWable` that's used in some way already.
2021-05-31 03:02:23 +0200ubikium(~ubikium@113x43x248x70.ap113.ftth.arteria-hikari.net) (Read error: Connection reset by peer)
2021-05-31 03:03:21 +0200renzhi(~xp@2607:fa49:6500:bc00::e7b) (Ping timeout: 268 seconds)
2021-05-31 03:04:28 +0200ubikium(~ubikium@113x43x248x70.ap113.ftth.arteria-hikari.net)
2021-05-31 03:06:39 +0200 <davean> arson: Look at recursion schemes
2021-05-31 03:07:03 +0200wagle(~wagle@quassel.wagle.io) (Ping timeout: 272 seconds)
2021-05-31 03:07:14 +0200 <pavonia> It somewhat reminds me of what the uniplate package does
2021-05-31 03:07:24 +0200 <davean> I mean it should because uniplate is based on ...
2021-05-31 03:08:05 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 252 seconds)
2021-05-31 03:08:17 +0200Guest417(~winter@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com) (Ping timeout: 268 seconds)
2021-05-31 03:09:05 +0200 <pavonia> Based on what?
2021-05-31 03:09:43 +0200fosskers(~colin@S0106f0f249642f53.vn.shawcable.net) (Remote host closed the connection)
2021-05-31 03:09:47 +0200 <arson> funny how uniplate also has simple asts as their main example
2021-05-31 03:12:37 +0200 <davean> pavonia: the thing I'd said
2021-05-31 03:13:03 +0200 <davean> https://github.com/passy/awesome-recursion-schemes for a bunch of links
2021-05-31 03:13:30 +0200wagle(~wagle@quassel.wagle.io)
2021-05-31 03:14:17 +0200 <arson> heh, guess it's not haskell if you don't `{-# LANGUAGE DeriveFunctor, DeriveFoldable, DeriveTraversable, TemplateHaskell, TypeFamilies #-}`
2021-05-31 03:16:03 +0200pbrisbin(~patrick@pool-72-92-38-164.phlapa.fios.verizon.net) (Ping timeout: 265 seconds)
2021-05-31 03:16:04 +0200 <pavonia> Hhm, I'd say the whole language is more or less based on recursion schemes :p
2021-05-31 03:16:28 +0200 <davean> That seems an odd way to think about it, but you do you
2021-05-31 03:19:16 +0200 <davean> Yah, pretty sure i can't even stretch that to be true
2021-05-31 03:23:43 +0200wagle(~wagle@quassel.wagle.io) (Ping timeout: 268 seconds)
2021-05-31 03:25:11 +0200wagle(~wagle@quassel.wagle.io)
2021-05-31 03:27:35 +0200bontaq(~user@ool-18e47f8d.dyn.optonline.net) (Remote host closed the connection)
2021-05-31 03:28:56 +0200fosskers(~colin@S0106f0f249642f53.vn.shawcable.net)
2021-05-31 03:30:12 +0200hylisper(~yaaic@111.119.208.67)
2021-05-31 03:33:27 +0200sh9(~sh9@softbank060116136158.bbtec.net) (Read error: Connection reset by peer)
2021-05-31 03:37:17 +0200xff0x(~xff0x@2001:1a81:5252:9d00:f476:7d38:9d5:54c9) (Ping timeout: 268 seconds)
2021-05-31 03:38:30 +0200xff0x(~xff0x@2001:1a81:528f:3900:ab23:5f87:bcb1:2783)
2021-05-31 03:43:28 +0200Guest417(~winter@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com)
2021-05-31 03:46:25 +0200wei2912(~wei2912@112.199.250.21)
2021-05-31 03:46:30 +0200sh9(~sh9@softbank060116136158.bbtec.net)
2021-05-31 03:48:50 +0200myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net)
2021-05-31 03:49:11 +0200renzhi(~xp@2607:fa49:6500:bc00::e7b)
2021-05-31 04:00:30 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-05-31 04:01:50 +0200arson(~arson@pool-100-36-47-118.washdc.fios.verizon.net) (Quit: Client closed)
2021-05-31 04:03:07 +0200egoist(~egoist@186.235.82.52) (Quit: WeeChat 3.1)
2021-05-31 04:05:24 +0200hydroxonium(uid500654@id-500654.stonehaven.irccloud.com)
2021-05-31 04:08:16 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-05-31 04:12:09 +0200gbd_628(~gbd_628@c-73-160-244-80.hsd1.nj.comcast.net)
2021-05-31 04:15:50 +0200 <gbd_628> Hi all, I'm getting an odd error when I try to build the latest version of `glib` from Hackage: "Lexical error! The character '#' does not fit here." Full error message: https://paste.tomsmeding.com/EcjZdm60.
2021-05-31 04:16:06 +0200 <gbd_628> I get the same problem with the `cairo` package. Googling led to the recommendation that I try compiling with LANG=C in the shell environment, but that didn't change anything for me.
2021-05-31 04:16:46 +0200 <gbd_628> (Sorry if this isn't really a Haskell question, but I'm not sure what's causing the problem so I don't know where else to ask)
2021-05-31 04:17:05 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 264 seconds)
2021-05-31 04:17:30 +0200 <davean> With no particular knowlege I'd bet thats something like a c2hs issue
2021-05-31 04:17:40 +0200 <davean> check if your c2hs is old maybe?
2021-05-31 04:18:51 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-05-31 04:19:50 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 268 seconds)
2021-05-31 04:21:33 +0200 <gbd_628> Sorry, what's c2hs? I have a program called `hsc2hs` as part of my ghc distribution; is that the same thing? It's on version 0.68.7
2021-05-31 04:22:38 +0200 <gbd_628> Which is the most recent version of it on hackage. I don't have any program called c2hs as part of my haskell installation, it doesn't look liek
2021-05-31 04:23:30 +0200chisui(~chisui@200116b86647790081989979d16794a1.dip.versatel-1u1.de) (Ping timeout: 250 seconds)
2021-05-31 04:29:25 +0200koishi_(~koishi_@67.209.186.120.16clouds.com)
2021-05-31 04:29:56 +0200 <geekosaur> that's a c2hs error but the real problem is too new a gcc
2021-05-31 04:30:56 +0200 <geekosaur> https://github.com/haskell/c2hs/issues/268
2021-05-31 04:32:41 +0200 <geekosaur> and the gtk stuff comes with its own fork of c2hs (gtk2hsc2hs) which it uses to build API descriptions from gtk/glib include files
2021-05-31 04:32:47 +0200td_(~td@94.134.91.12) (Ping timeout: 252 seconds)
2021-05-31 04:34:33 +0200td_(~td@muedsl-82-207-238-238.citykom.de)
2021-05-31 04:35:22 +0200 <gbd_628> Hmm, okay, I'll downgrade to version 10.x of gcc, hopefully that'll work. Thanks!
2021-05-31 04:37:43 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-05-31 04:41:00 +0200koishi_(~koishi_@67.209.186.120.16clouds.com) (Quit: /ragequit)
2021-05-31 04:41:07 +0200forell(~forell@host-178-216-90-220.sta.tvknaszapraca.pl) (Ping timeout: 265 seconds)
2021-05-31 04:41:20 +0200forell(~forell@host-178-216-90-220.sta.tvknaszapraca.pl)
2021-05-31 04:42:02 +0200geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com) (Ping timeout: 268 seconds)
2021-05-31 04:42:39 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
2021-05-31 04:45:07 +0200Guest417(~winter@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com) (Ping timeout: 268 seconds)
2021-05-31 04:47:32 +0200sheepduck(~sheepduck@2607:fea8:2a60:b700::5d55) (Read error: Connection reset by peer)
2021-05-31 04:49:37 +0200 <Axman6> davean: That recursion schemes link... the first link got me
2021-05-31 04:49:45 +0200sheepduck(~sheepduck@2607:fea8:2a60:b700::5d55)
2021-05-31 04:50:18 +0200 <davean> Axman6: :) stuck in a loop?
2021-05-31 04:51:08 +0200 <Axman6> I cannot get out D:
2021-05-31 04:51:20 +0200 <Axman6> I just keep learning about recursion schemes!
2021-05-31 04:52:04 +0200 <int-e> to learn about recursion schemes you first have to lear about recusion schemes?
2021-05-31 04:52:29 +0200int-ekeeps dropping letters recently, meh.
2021-05-31 04:53:02 +0200 <dy> Axman6: from a Scala library but this chart is language agnostic and neat
2021-05-31 04:53:04 +0200 <dy> https://github.com/precog/matryoshka/blob/master/resources/recursion-schemes.pdf
2021-05-31 04:53:53 +0200 <dy> Stolen from one of edwardk's blog posts
2021-05-31 04:55:04 +0200AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) (Quit: Leaving.)
2021-05-31 05:00:32 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 268 seconds)
2021-05-31 05:02:39 +0200 <arahael> Is there an easy way for me to list all the licenses that my project uses?
2021-05-31 05:02:41 +0200lbseale(~lbseale@ip72-194-54-201.sb.sd.cox.net)
2021-05-31 05:02:55 +0200 <arahael> Including transitively.
2021-05-31 05:03:42 +0200 <Axman6> There are definitely ways to do that... there's a package for command line args and configuration handling which does it automatically, I'll find it
2021-05-31 05:06:20 +0200justsomeguy(~justsomeg@user/justsomeguy) (WeeChat 3.0.1)
2021-05-31 05:08:06 +0200myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net) (Remote host closed the connection)
2021-05-31 05:08:17 +0200 <davean> Axman6: yes, cabal license check
2021-05-31 05:08:24 +0200myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net)
2021-05-31 05:09:24 +0200 <arahael> davean: That's not a recognised command.
2021-05-31 05:09:26 +0200Guest417(~winter@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com)
2021-05-31 05:10:20 +0200 <Axman6> https://hackage.haskell.org/package/configuration-tools is what I've used in the past, it's much more than just alicense check, but you could just use it for that
2021-05-31 05:11:08 +0200 <Axman6> if you scroll to the bottom you can see the output it gives
2021-05-31 05:11:31 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-05-31 05:12:18 +0200doyougnu(~user@c-67-168-253-231.hsd1.or.comcast.net)
2021-05-31 05:12:56 +0200vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2021-05-31 05:16:33 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 268 seconds)
2021-05-31 05:18:17 +0200otto_s_(~user@p5de2fbac.dip0.t-ipconnect.de)
2021-05-31 05:18:32 +0200ru0mad(~ruomad@176.164.105.224)
2021-05-31 05:18:59 +0200lbseale(~lbseale@ip72-194-54-201.sb.sd.cox.net) (Read error: Connection reset by peer)
2021-05-31 05:19:36 +0200ru0mad(~ruomad@176.164.105.224) (Client Quit)
2021-05-31 05:20:04 +0200ru0mad(~ruomad@176.164.105.224)
2021-05-31 05:20:18 +0200ikex(~ash@user/ikex)
2021-05-31 05:21:21 +0200koishi_(~koishi_@67.209.186.120.16clouds.com)
2021-05-31 05:21:43 +0200otto_s(~user@p5de2f103.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2021-05-31 05:21:45 +0200dyeplexer(~dyeplexer@user/dyeplexer)
2021-05-31 05:23:57 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds)
2021-05-31 05:24:11 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-05-31 05:25:15 +0200Lord_of_Life_Lord_of_Life
2021-05-31 05:28:34 +0200smitop(uid328768@user/smitop) (Quit: Connection closed for inactivity)
2021-05-31 05:31:21 +0200Erutuon(~Erutuon@71-34-10-193.mpls.qwest.net) (Ping timeout: 268 seconds)
2021-05-31 05:31:25 +0200koishi_(~koishi_@67.209.186.120.16clouds.com) (Quit: /ragequit)
2021-05-31 05:32:28 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-05-31 05:33:34 +0200a6a45081-2b83(~aditya@106.212.79.20)
2021-05-31 05:37:46 +0200bilegeek(~bilegeek@2600:1008:b06d:65ed:93d7:e6a:a06d:9e4)
2021-05-31 05:39:50 +0200mnrmnaugh(~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) (Ping timeout: 264 seconds)
2021-05-31 05:40:30 +0200hexology(~hexology@user/hexology)
2021-05-31 05:41:00 +0200Erutuon(~Erutuon@71-34-10-193.mpls.qwest.net)
2021-05-31 05:42:18 +0200radw(~radw@user/radw) (Ping timeout: 264 seconds)
2021-05-31 05:44:05 +0200ru0mad(~ruomad@176.164.105.224) (Ping timeout: 264 seconds)
2021-05-31 05:45:03 +0200ru0mad(~ruomad@176.164.105.224)
2021-05-31 05:48:31 +0200 <edwardk> dy: is it just me or is the fact that that chart substitutes things with arrows in themon the left hand side of the arrow without respect for precedence disturbing? the algebras are all things that in that position would be pairs but are shown as arrows. (f a -> a) -> (f ~> f) -- etc.
2021-05-31 05:49:37 +0200radw(~radw@user/radw)
2021-05-31 05:52:23 +0200alx741(~alx741@186.178.108.160) (Quit: alx741)
2021-05-31 05:52:39 +0200ru0mad(~ruomad@176.164.105.224) (Ping timeout: 265 seconds)
2021-05-31 05:54:52 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com)
2021-05-31 05:56:25 +0200 <dy> edwardk: not just you haha
2021-05-31 05:56:38 +0200renzhi(~xp@2607:fa49:6500:bc00::e7b) (Ping timeout: 268 seconds)
2021-05-31 05:56:41 +0200 <dy> But it's Scala what do you expect :^p
2021-05-31 06:02:19 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-05-31 06:02:38 +0200hendursaga(~weechat@user/hendursaga) (Remote host closed the connection)
2021-05-31 06:03:05 +0200hendursaga(~weechat@user/hendursaga)
2021-05-31 06:06:59 +0200 <arahael> Axman6: Thanks for that.
2021-05-31 06:07:34 +0200 <arahael> Axman6: Unfortunately a bit raw, I think I'll do it by hand this time. (It's just a quick weekend script, effectively)
2021-05-31 06:07:54 +0200rk04(~rk04@user/rajk)
2021-05-31 06:08:56 +0200ru0mad(~ruomad@176.164.105.224)
2021-05-31 06:09:35 +0200 <hololeap> I think you know that you're in the weeds when you start making type-level rose trees and type families that can map over them
2021-05-31 06:10:02 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com) (Read error: Connection reset by peer)
2021-05-31 06:13:57 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-05-31 06:20:13 +0200noddy(~user@user/noddy) (Quit: WeeChat 3.1)
2021-05-31 06:20:32 +0200noddy(~user@user/noddy)
2021-05-31 06:25:00 +0200ru0mad(~ruomad@176.164.105.224) (Ping timeout: 268 seconds)
2021-05-31 06:25:48 +0200koishi_(~koishi_@67.209.186.120.16clouds.com)
2021-05-31 06:31:35 +0200ryantrinkle(~ryan@24.229.199.25.res-cmts.sm.ptd.net) (Ping timeout: 252 seconds)
2021-05-31 06:31:39 +0200ru0mad(~ruomad@176.164.105.224)
2021-05-31 06:33:02 +0200ikex(~ash@user/ikex) (Ping timeout: 268 seconds)
2021-05-31 06:33:35 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-05-31 06:36:32 +0200ru0mad(~ruomad@176.164.105.224) (Ping timeout: 252 seconds)
2021-05-31 06:36:43 +0200lu(~lu@user/lu)
2021-05-31 06:39:21 +0200nerdynp
2021-05-31 06:39:33 +0200vicfred(~vicfred@user/vicfred)
2021-05-31 06:40:07 +0200ddellacosta(~ddellacos@86.106.121.222) (Remote host closed the connection)
2021-05-31 06:42:30 +0200rk04(~rk04@user/rajk) (Quit: Client closed)
2021-05-31 06:42:47 +0200 <hololeap> I'm trying to make a class function `toFieldTree :: Data.Tree.Tree (n -> s -> Brick.Forms.FormFieldState s e n)`
2021-05-31 06:42:51 +0200rk04(~rk04@user/rajk)
2021-05-31 06:43:03 +0200 <hololeap> the problem is that the `s` and `n` type variables are unique in each node of the tree, but need to compose with their parents
2021-05-31 06:43:13 +0200 <hololeap> the only way that I can see to do this is to have a heterogeneous Tree which carries type-level Trees for both `s` and `n`. this way each node has its own `s` and `n` and also knows that of its children, etc.
2021-05-31 06:43:56 +0200xkapastel(uid17782@id-17782.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2021-05-31 06:44:48 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-05-31 06:45:05 +0200siraben(~siraben@user/siraben) (Quit: node-irc says goodbye)
2021-05-31 06:45:25 +0200siraben(~siraben@user/siraben)
2021-05-31 06:45:53 +0200hmmmas(~chenqisu1@183.217.202.217) (Quit: Leaving.)
2021-05-31 06:46:25 +0200fosskers(~colin@S0106f0f249642f53.vn.shawcable.net) (Remote host closed the connection)
2021-05-31 06:51:45 +0200leeb(~leeb@KD111239155018.au-net.ne.jp)
2021-05-31 06:56:28 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 268 seconds)
2021-05-31 06:57:06 +0200ornxka(~ornxka@user/ornxka) (Quit: ornxka)
2021-05-31 06:57:21 +0200favonia_(~favonia@user/favonia)
2021-05-31 07:04:16 +0200petersen(~juhp@bb219-75-40-154.singnet.com.sg)
2021-05-31 07:05:17 +0200hexology(~hexology@user/hexology) (Quit: hex on you ...)
2021-05-31 07:05:55 +0200hexology(~hexology@user/hexology)
2021-05-31 07:08:47 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-05-31 07:09:51 +0200ru0mad(~ruomad@176.164.105.224)
2021-05-31 07:11:00 +0200ru0mad(~ruomad@176.164.105.224) (Client Quit)
2021-05-31 07:11:26 +0200ru0mad(~ruomad@176.164.105.224)
2021-05-31 07:16:08 +0200ddellacosta(~ddellacos@86.106.143.209)
2021-05-31 07:17:13 +0200mnrmnaugh(~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net)
2021-05-31 07:18:40 +0200favonia_(~favonia@user/favonia) (Ping timeout: 268 seconds)
2021-05-31 07:18:46 +0200ru0mad(~ruomad@176.164.105.224) (Ping timeout: 264 seconds)
2021-05-31 07:19:05 +0200favonia_(~favonia@user/favonia)
2021-05-31 07:19:17 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-05-31 07:19:46 +0200rk04(~rk04@user/rajk) (Quit: Client closed)
2021-05-31 07:20:17 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2021-05-31 07:20:34 +0200ddellacosta(~ddellacos@86.106.143.209) (Ping timeout: 264 seconds)
2021-05-31 07:22:32 +0200favonia_(~favonia@user/favonia) (Client Quit)
2021-05-31 07:23:50 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 252 seconds)
2021-05-31 07:24:49 +0200hylisper(~yaaic@111.119.208.67) (Ping timeout: 268 seconds)
2021-05-31 07:28:00 +0200favonia_(~favonia@user/favonia)
2021-05-31 07:28:19 +0200favonia_(~favonia@user/favonia) (Client Quit)
2021-05-31 07:29:06 +0200favonia_(~favonia@user/favonia)
2021-05-31 07:30:22 +0200Bartosz(~textual@24.35.90.211)
2021-05-31 07:31:21 +0200hylisper(~yaaic@2409:4040:e89:1bc::94b:8209)
2021-05-31 07:31:29 +0200bilegeek(~bilegeek@2600:1008:b06d:65ed:93d7:e6a:a06d:9e4) (Quit: Leaving)
2021-05-31 07:32:06 +0200favonia_(~favonia@user/favonia) (Client Quit)
2021-05-31 07:32:16 +0200favonia_(~favonia@user/favonia)
2021-05-31 07:32:35 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-05-31 07:35:58 +0200lu(~lu@user/lu) (Remote host closed the connection)
2021-05-31 07:37:27 +0200a6a45081-2b83(~aditya@106.212.79.20) (Remote host closed the connection)
2021-05-31 07:41:07 +0200chomwitt(~Pitsikoko@2a02:587:dc02:b00:b16c:5166:feb8:97d5)
2021-05-31 07:43:05 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 252 seconds)
2021-05-31 07:44:19 +0200holy_(~h01y_b4z0@2400:adc1:178:c800:9e45:76a9:57f2:1665)
2021-05-31 07:44:34 +0200dut(~dut@user/dut)
2021-05-31 07:50:54 +0200doyougnu(~user@c-67-168-253-231.hsd1.or.comcast.net) (Remote host closed the connection)
2021-05-31 07:54:27 +0200arrowd(~arr@2.94.203.147)
2021-05-31 07:55:02 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-05-31 07:55:24 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-05-31 07:55:34 +0200 <siraben> What happens if you join #haskell on Freenode? Is it now closed?
2021-05-31 07:55:47 +0200 <arrowd> edwardk: Hello. I'm OP of #haskell-freebsd on Freenode and I want to migrate the channel to Libera. I need OP for #haskell-freebsd there, but someont already created the channel.
2021-05-31 07:55:56 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-05-31 07:56:15 +0200ddellacosta(~ddellacos@86.106.121.222)
2021-05-31 07:58:15 +0200ikex(~ash@user/ikex)
2021-05-31 07:59:22 +0200Guest64(~Guest64@2601:140:8a00:2230:d9be:6461:1c65:81f0)
2021-05-31 07:59:46 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
2021-05-31 07:59:59 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 268 seconds)
2021-05-31 08:00:54 +0200ddellacosta(~ddellacos@86.106.121.222) (Ping timeout: 264 seconds)
2021-05-31 08:06:55 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-05-31 08:08:17 +0200favonia_(~favonia@user/favonia) (Quit: Leaving)
2021-05-31 08:08:18 +0200pe200012(~pe200012@119.131.208.84) (Read error: Connection reset by peer)
2021-05-31 08:08:44 +0200pe200012(~pe200012@218.107.17.245)
2021-05-31 08:09:07 +0200hmmmas(~chenqisu1@183.217.202.217)
2021-05-31 08:10:16 +0200 <glguy> arrowd, could you ask in #haskell-ops please? one of the #haskell group contacts can help
2021-05-31 08:11:16 +0200Bartosz(~textual@24.35.90.211) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-05-31 08:12:13 +0200Bartosz(~textual@24.35.90.211)
2021-05-31 08:12:51 +0200 <arrowd> I'll try, thanks.
2021-05-31 08:12:58 +0200 <dy> Bartosz: I have a question regarding the Functorio post
2021-05-31 08:13:10 +0200hylisper2(~yaaic@111.119.208.67)
2021-05-31 08:13:12 +0200 <dy> Are you happy with what you've done :^p?
2021-05-31 08:13:39 +0200 <dy> It's only a matter of time until someone does actually add proper functors to Factorio now.
2021-05-31 08:13:57 +0200 <dy> And before you know it we'll have conveyer built systems producing abstract proofs of proportions rather than any concrete good.
2021-05-31 08:14:12 +0200ornxka(~ornxka@user/ornxka)
2021-05-31 08:14:54 +0200 <dy> More pressingly: how do we visualize higher order functorial belts? (e.g. Belt Belt Belt Belt ... at
2021-05-31 08:15:01 +0200 <dy> Belt Belt Belt Belt ... T*
2021-05-31 08:15:18 +0200 <dy> Is this probably equivalent to higher dimensional belt systems?
2021-05-31 08:15:22 +0200 <hmmmas> williang123#
2021-05-31 08:15:22 +0200 <dy> provably*
2021-05-31 08:17:52 +0200hylisper(~yaaic@2409:4040:e89:1bc::94b:8209) (Ping timeout: 268 seconds)
2021-05-31 08:23:10 +0200aforemny(~aforemny@static.248.158.34.188.clients.your-server.de) (Quit: ZNC 1.8.2 - https://znc.in)
2021-05-31 08:23:31 +0200aforemny(~aforemny@static.248.158.34.188.clients.your-server.de)
2021-05-31 08:25:26 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 252 seconds)
2021-05-31 08:25:35 +0200prite(~pritam@user/pritambaral)
2021-05-31 08:26:13 +0200kosmikus[m](~andresloe@2001:470:69fc:105::95d)
2021-05-31 08:29:52 +0200aforemny(~aforemny@static.248.158.34.188.clients.your-server.de) (Quit: ZNC 1.8.2 - https://znc.in)
2021-05-31 08:30:13 +0200aforemny(~aforemny@static.248.158.34.188.clients.your-server.de)
2021-05-31 08:30:14 +0200ddellacosta(~ddellacos@89.46.62.183)
2021-05-31 08:30:53 +0200Guest64(~Guest64@2601:140:8a00:2230:d9be:6461:1c65:81f0) (Quit: Client closed)
2021-05-31 08:33:15 +0200coot(~coot@37.30.49.19.nat.umts.dynamic.t-mobile.pl)
2021-05-31 08:33:20 +0200dut(~dut@user/dut) (Quit: Leaving)
2021-05-31 08:34:57 +0200sondre(~sondrelun@eduroam-193-157-245-37.wlan.uio.no)
2021-05-31 08:35:07 +0200ddellacosta(~ddellacos@89.46.62.183) (Ping timeout: 272 seconds)
2021-05-31 08:35:54 +0200favonia(~favonia@38.54.72.34.bc.googleusercontent.com)
2021-05-31 08:36:09 +0200favonia(~favonia@38.54.72.34.bc.googleusercontent.com) (Client Quit)
2021-05-31 08:36:28 +0200 <koishi_> hi, i'm trying to use lazy IO to get a stream of lines, which works as expected (code: https://pastebin.com/L0GmUPSd)
2021-05-31 08:36:46 +0200 <koishi_> but what is not expected is the constant memory usage!
2021-05-31 08:37:13 +0200 <koishi_> i'm curious how ghc does that?
2021-05-31 08:37:33 +0200favonia(~favonia@user/favonia)
2021-05-31 08:37:46 +0200favonia(~favonia@user/favonia) (Client Quit)
2021-05-31 08:37:50 +0200wonko(~wjc@62.115.229.50)
2021-05-31 08:38:02 +0200 <koishi_> (this code keeps a list of 100 most recent lines)
2021-05-31 08:38:13 +0200wonko(~wjc@62.115.229.50) (Changing host)
2021-05-31 08:38:13 +0200wonko(~wjc@user/wonko)
2021-05-31 08:39:36 +0200favonia(~favonia@user/favonia)
2021-05-31 08:40:41 +0200mib_lfiwfw(a0ee4bcb@ircip1.mibbit.com)
2021-05-31 08:41:20 +0200michalz(~user@185.246.204.55)
2021-05-31 08:41:34 +0200enzotib(~enzotib@user/enzotib)
2021-05-31 08:42:52 +0200favonia(~favonia@user/favonia) (Client Quit)
2021-05-31 08:43:46 +0200 <mib_lfiwfw> https://paste.tomsmeding.com/wC5mbV9Q is this correct syntax and program. I got no clue what is happening
2021-05-31 08:44:27 +0200 <dibblego> what does the compiler say?
2021-05-31 08:44:47 +0200Bartosz(~textual@24.35.90.211) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-05-31 08:44:50 +0200 <mib_lfiwfw> dibblego: not using it I got it from a video
2021-05-31 08:45:07 +0200 <dminuoso> mib_lfiwfw: Yeah, so this is a cute (but inefficient) way of expressing quicksort.
2021-05-31 08:45:07 +0200 <dibblego> compile it
2021-05-31 08:45:30 +0200 <mib_lfiwfw> dminuoso: ineeficient as in performance?
2021-05-31 08:45:58 +0200 <mib_lfiwfw> dibblego: I will do later slowly
2021-05-31 08:46:00 +0200 <dminuoso> mib_lfiwfw: Yeah, this is not in place.
2021-05-31 08:46:14 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds)
2021-05-31 08:46:21 +0200 <dminuoso> I used to think this was a good example, but Im slowly changing my mind on this.
2021-05-31 08:47:21 +0200favonia(~favonia@user/favonia)
2021-05-31 08:47:36 +0200 <mib_lfiwfw> dminuoso: hmm
2021-05-31 08:47:45 +0200 <dminuoso> mib_lfiwfw: One could think of a sorted list as one where each element is placed in between the lower sorted elements and the greater sorted elements.
2021-05-31 08:48:04 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:c68c:4252:bd9f:2d01)
2021-05-31 08:48:04 +0200favonia_(~favonia@user/favonia)
2021-05-31 08:48:06 +0200 <dminuoso> With that view, you can think this of declarative programming
2021-05-31 08:48:10 +0200favonia_(~favonia@user/favonia) (Client Quit)
2021-05-31 08:48:48 +0200 <mib_lfiwfw> dminuoso: I am curious how you would write quicksort in haskell
2021-05-31 08:48:55 +0200 <mib_lfiwfw> just to compare
2021-05-31 08:49:01 +0200 <dminuoso> I wouldn't to begin with. :p
2021-05-31 08:49:03 +0200vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2021-05-31 08:49:06 +0200 <dminuoso> There's better sorts
2021-05-31 08:49:12 +0200cfricke(~cfricke@user/cfricke)
2021-05-31 08:49:15 +0200 <koishi_> hoare's trick is indeed ingenious, but perhaps it's not what makes it quicksort
2021-05-31 08:49:35 +0200 <mib_lfiwfw> dminuoso: ok
2021-05-31 08:49:36 +0200 <koishi_> there are parallel quicksort algorithms, and they are not in-place
2021-05-31 08:49:36 +0200 <dminuoso> But roughly the same you'd write it in any language (except the mutation is hidden away with ST)
2021-05-31 08:50:53 +0200 <dminuoso> But with inplace partitioning inside ST, the code doesn't look cute and pretty anymore.. so nobody shows you that.
2021-05-31 08:51:15 +0200the-coot[m](~the-cootm@2001:470:69fc:105::95f)
2021-05-31 08:51:16 +0200 <dminuoso> Which is why I think this is a terrible example, at worst it might suggest to users that Haskell cant implement efficient quicksort.
2021-05-31 08:51:37 +0200 <mib_lfiwfw> dminuoso: Igot that snippet form some haskell intro video
2021-05-31 08:51:53 +0200 <mib_lfiwfw> I liked its syntax and style
2021-05-31 08:53:18 +0200holy_(~h01y_b4z0@2400:adc1:178:c800:9e45:76a9:57f2:1665) (Remote host closed the connection)
2021-05-31 08:53:46 +0200holy_(~h01y_b4z0@103.244.176.36)
2021-05-31 08:54:42 +0200anandprabhu(~anandprab@87.201.97.214)
2021-05-31 08:54:54 +0200oniko
2021-05-31 08:56:04 +0200solomon(~solomon@165.227.48.175) (Ping timeout: 250 seconds)
2021-05-31 09:00:06 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-05-31 09:00:16 +0200Cubic(~hannesste@ip5f5be453.dynamic.kabel-deutschland.de)
2021-05-31 09:01:02 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-05-31 09:01:27 +0200chaosite(~chaosite@user/chaosite)
2021-05-31 09:04:13 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-05-31 09:04:25 +0200mib_lfiwfw(a0ee4bcb@ircip1.mibbit.com) (Quit: https://mibbit.com Online IRC Client)
2021-05-31 09:04:59 +0200ddellacosta(~ddellacos@89.45.224.118)
2021-05-31 09:05:10 +0200 <phma> Is there a way to set up an out-of-source build in Cabal?
2021-05-31 09:06:46 +0200chaosite(~chaosite@user/chaosite) (Ping timeout: 264 seconds)
2021-05-31 09:07:52 +0200 <sclv> what means out of source
2021-05-31 09:08:23 +0200 <dminuoso> "out-of-source" refers to keeping build artifacts separate from source code
2021-05-31 09:08:33 +0200 <dminuoso> e.g. intermediate object files, final artifacts
2021-05-31 09:08:55 +0200 <dminuoso> At least that's the terminology used in the C/C++ world
2021-05-31 09:09:20 +0200 <sclv> cabal does that by default
2021-05-31 09:09:44 +0200 <sclv> all its artifacts go in dist-newstyle
2021-05-31 09:09:46 +0200ddellacosta(~ddellacos@89.45.224.118) (Ping timeout: 264 seconds)
2021-05-31 09:09:47 +0200 <phma> I have the source in ~/src/foo/. I'd like the built binary to be in ~/build/foo/, where I keep data files I run the program on.
2021-05-31 09:10:06 +0200 <phma> but dist-newstyle is inside the source directory
2021-05-31 09:10:51 +0200 <sclv> you can cabal install the package and pass the —install-dir flag
2021-05-31 09:11:23 +0200 <sclv> and it symlinks (or copies depending on flag) the exe to the target
2021-05-31 09:11:46 +0200 <phma> I'm not installing it yet, I'm still working on it
2021-05-31 09:12:11 +0200 <sclv> install just copies or symlinks the product to the specified dir
2021-05-31 09:12:38 +0200 <sclv> if its an executable that is
2021-05-31 09:13:06 +0200ell(~ellie@user/ellie) (Quit: The Lounge - https://thelounge.chat)
2021-05-31 09:13:59 +0200 <phma> in my C++ projects I have ~/build/foo/grel, ~/build/foo/cdbg, etc. according to which compiler I use and whether it's a release, install, debug, or fuzzing build
2021-05-31 09:14:36 +0200 <phma> and the binary goes in that file, with build artifacts in subdirectories of it
2021-05-31 09:14:59 +0200 <sclv> ok thats dist-newstyle for cabal
2021-05-31 09:15:19 +0200 <sclv> it just so happens to be in the project dir
2021-05-31 09:15:43 +0200 <phma> but the dist-newstyle directory is inside the source directory, not the build directory
2021-05-31 09:15:49 +0200 <phma> and I don't see the binary
2021-05-31 09:17:10 +0200chaosite(~chaosite@user/chaosite)
2021-05-31 09:17:43 +0200 <sclv> the binary is hidden in it
2021-05-31 09:18:42 +0200 <sclv> https://cabal.readthedocs.io/en/3.4/nix-local-build.html#where-are-my-build-products
2021-05-31 09:19:27 +0200 <phma> is there a way to tell cabal to put the binary in the build directory? and I'm not installing it because I'm still working on it
2021-05-31 09:20:08 +0200 <sclv> install is that command. that’s literally all it does. If you don’t like the name... sorry
2021-05-31 09:22:10 +0200 <phma> is there a way to run cabal in the build directory and tell it where the source directory is? that's how cmake works
2021-05-31 09:22:25 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-05-31 09:22:37 +0200chaosite(~chaosite@user/chaosite) (Ping timeout: 268 seconds)
2021-05-31 09:22:53 +0200 <sclv> not that i know of. its a different tool, it has different flags and conventions. *shrug*
2021-05-31 09:25:42 +0200arrowd(~arr@2.94.203.147) ()
2021-05-31 09:25:51 +0200 <phma> what does "nix-style" mean?
2021-05-31 09:25:58 +0200riatre(~quassel@2001:310:6000:f::5198:1) (Ping timeout: 264 seconds)
2021-05-31 09:26:45 +0200 <phma> where can I submit a feature request for cabal?
2021-05-31 09:26:46 +0200riatre(~quassel@h203-145-233-111.ablenetvps.ne.jp)
2021-05-31 09:26:57 +0200dpl(~dpl@77-121-78-163.chn.volia.net)
2021-05-31 09:27:24 +0200 <sclv> ok first please explain why you want this
2021-05-31 09:27:33 +0200 <sclv> other than “cmake does it”
2021-05-31 09:27:43 +0200 <sclv> but also just go to the github
2021-05-31 09:33:05 +0200holy_(~h01y_b4z0@103.244.176.36) (Ping timeout: 268 seconds)
2021-05-31 09:33:23 +0200 <tomsmeding> sclv: install does more, it also does a clean rebuild, right?
2021-05-31 09:33:50 +0200 <sclv> yes, i was simplifying a bit
2021-05-31 09:34:38 +0200 <tomsmeding> phma: nix-style means that it automatically builds and caches dependencies in the user-wide store in ~/.cabal when you mention them in the dependency list in your .cabal file
2021-05-31 09:35:11 +0200mc47(~yecinem@89.246.239.190)
2021-05-31 09:35:31 +0200 <tomsmeding> nix is a tool that did this for other applications, and is somewhat used/known in the haskell world, and people chose this name to distinguish the behaviour from what cabal previously did
2021-05-31 09:35:38 +0200 <sclv> this is all explained in The Fine Manual i linked
2021-05-31 09:36:05 +0200 <dminuoso> 09:19:27 phma | is there a way to tell cabal to put the binary in the build directory? and I'm not installing it because I'm still working on it
2021-05-31 09:36:21 +0200 <dminuoso> phma: There's a plumbing command in cabal 3.4.0.0 called `list-bin`
2021-05-31 09:36:37 +0200 <dminuoso> For older versions, you can use `cabal-plan`. With those you can extract the build artifact with something like
2021-05-31 09:36:48 +0200tomsmedingis delighted
2021-05-31 09:36:56 +0200 <dminuoso> $ cp $(cabal -v0 list-bin <target>) ./
2021-05-31 09:37:22 +0200cheater1__(~Username@user/cheater)
2021-05-31 09:37:24 +0200cheater(~Username@user/cheater) (Ping timeout: 268 seconds)
2021-05-31 09:37:34 +0200cheater1__cheater
2021-05-31 09:39:15 +0200ddellacosta(~ddellacos@86.106.121.235)
2021-05-31 09:40:11 +0200 <dminuoso> phma: If you want a different directory for dist-newstyle, you can pass one of: --builddir, --distdir, --distpref DIR
2021-05-31 09:42:43 +0200cheater1__(~Username@user/cheater)
2021-05-31 09:42:57 +0200cheater(~Username@user/cheater) (Ping timeout: 268 seconds)
2021-05-31 09:44:11 +0200ddellacosta(~ddellacos@86.106.121.235) (Ping timeout: 268 seconds)
2021-05-31 09:45:09 +0200bilegeek(~bilegeek@2600:1008:b06d:65ed:93d7:e6a:a06d:9e4)
2021-05-31 09:45:30 +0200holy_(~h01y_b4z0@2400:adc1:178:c800:9e45:76a9:57f2:1665)
2021-05-31 09:47:23 +0200beka(~beka@104.193.170-254.PUBLIC.monkeybrains.net)
2021-05-31 09:47:33 +0200cheater1__(~Username@user/cheater) (Ping timeout: 265 seconds)
2021-05-31 09:49:22 +0200 <phma> can I tell it --sourcedir?
2021-05-31 09:52:08 +0200 <dminuoso> What are you trying to do exactly?
2021-05-31 09:56:32 +0200jjhoo(jahakala@dsl-trebng21-58c18f-56.dhcp.inet.fi) (Ping timeout: 268 seconds)
2021-05-31 09:57:24 +0200 <phma> I put data files in the build directory, and I'd like to run "cabal new-run" or the like in the build directory. I don't want my data files in the repo, so I put them in the build directory.
2021-05-31 09:58:16 +0200jjhoo(jahakala@dsl-trebng21-58c18f-56.dhcp.inet.fi)
2021-05-31 09:59:11 +0200 <phma> So cabal has to know where the source is. Also if I load the program in ghci, and I want to do this in the build directory so that I can run it on the datafiles, ghci has to know where the source is.
2021-05-31 09:59:48 +0200 <phma> So it may need to be an option not just for cabal.
2021-05-31 10:02:05 +0200holy_(~h01y_b4z0@2400:adc1:178:c800:9e45:76a9:57f2:1665) (Ping timeout: 268 seconds)
2021-05-31 10:03:18 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-05-31 10:08:54 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-05-31 10:08:59 +0200 <sclv> sounds like you should just put (or symlink) the datafiles in the project directory and use a .gitignore to exclude them from the repo. or just teach your lib or executable to take a flag specifying the data file directory
2021-05-31 10:09:17 +0200gehmehgeh(~user@user/gehmehgeh)
2021-05-31 10:09:40 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 252 seconds)
2021-05-31 10:10:20 +0200kuribas(~user@ptr-25vy0i7o5gw6tky01tr.18120a2.ip6.access.telenet.be)
2021-05-31 10:10:28 +0200cheater(~Username@user/cheater)
2021-05-31 10:11:35 +0200 <phma> I found the repo on github and am thinking about how to word the feature request.
2021-05-31 10:12:06 +0200 <kuribas> I read on an article how some database libraries aren't good because they don't prove their correctness in the type system. That makes me wonder, don't they test the code they write? I always test any code I write, even just quickly in the REPL.
2021-05-31 10:12:14 +0200 <phma> It doesn't make sense to put data files in .gitignore, because if other people work on the same project, they'll have different data files.
2021-05-31 10:12:29 +0200 <c_wraith> kuribas: I'm not sure that's a good argument
2021-05-31 10:12:51 +0200 <kuribas> c_wraith: mine or his? :-)
2021-05-31 10:12:59 +0200Sgeo(~Sgeo@user/sgeo) (Quit: Leaving)
2021-05-31 10:13:09 +0200ddellacosta(~ddellacos@86.106.143.209)
2021-05-31 10:13:37 +0200 <c_wraith> The one to which you are responding. (You can't really express a lot of what SQL can do in a way that's easy to use in Haskell)
2021-05-31 10:14:05 +0200 <kuribas> the article seemed to favor opaleye
2021-05-31 10:14:28 +0200rahguzar(~rahguzar@dynamic-adsl-84-220-228-254.clienti.tiscali.it)
2021-05-31 10:14:40 +0200 <kuribas> personally, I'd prefer a library to be close to SQL, rather than another abstraction to learn on top.
2021-05-31 10:14:51 +0200 <nitrix> kuribas, A static type system can catch bugs earlier in the development phase, but it's not perfect. Even if you were to encode all your invariants, you could still accidently get the requirements wrong.
2021-05-31 10:14:55 +0200 <c_wraith> Opaleye doesn't even verify that the database schema matches the queries. :P
2021-05-31 10:15:22 +0200 <kuribas> c_wraith: heh :)
2021-05-31 10:15:39 +0200 <kuribas> My library does :)
2021-05-31 10:15:43 +0200 <c_wraith> terrible that it leaves so many bugs for runtime!
2021-05-31 10:15:59 +0200 <nitrix> kuribas, Tests get you a little further, but only so much. When people talk about proof and correctness, it's a lot more rigorous than that and often impossible for an application of a moderate size.
2021-05-31 10:16:23 +0200 <kuribas> nitrix: true, and I don't think a lot of haskell code is really "proven" correct.
2021-05-31 10:16:50 +0200hendursaga(~weechat@user/hendursaga)
2021-05-31 10:17:41 +0200ddellacosta(~ddellacos@86.106.143.209) (Ping timeout: 264 seconds)
2021-05-31 10:17:49 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-05-31 10:17:58 +0200 <kuribas> c_wraith: I am more interested in having a library checking for mismatched columns rather than checking if the SQL is semantically sound SQL.
2021-05-31 10:18:13 +0200 <kuribas> c_wraith: because that will help in refactoring database tables.
2021-05-31 10:18:22 +0200 <kuribas> and adding new functionality.
2021-05-31 10:18:45 +0200 <kuribas> assuming I know how to write SQL, and possibly test it in the SQL REPL first.
2021-05-31 10:20:05 +0200 <nitrix> One way that people have been doing this, back in the 70s, is with metaprogramming/macros. You connect to the database and generate code for the application, knowing that they will fully correspond (assuming no bad manipulation in production).
2021-05-31 10:20:38 +0200zmt00(~zmt00@user/zmt00) (Ping timeout: 264 seconds)
2021-05-31 10:20:49 +0200 <kuribas> There are two options: 1. a library which just translates to SQL, and doesn't try to be much in the way. 2. a library which implements it's own sound model on top of SQL, but it will also limit the possible queries (persistent).
2021-05-31 10:20:53 +0200tomboy64(~tomboy64@2a02:2454:416:db00:ba27:ebff:fe58:73c2) (Read error: Connection reset by peer)
2021-05-31 10:21:10 +0200xkb(~xkb@a80-100-6-16.adsl.xs4all.nl)
2021-05-31 10:21:12 +0200 <kuribas> nitrix: that's nice until you want to compose your queries.
2021-05-31 10:21:25 +0200 <kuribas> nitrix: add sort keys, cursors, etc...
2021-05-31 10:21:42 +0200 <nitrix> I don't see the issue.
2021-05-31 10:22:01 +0200 <kuribas> nitrix: how would you compose the query if the macro is predefined?
2021-05-31 10:22:45 +0200 <nitrix> The metaprogram is just translating the databases and tables into equivalent types. You then worth with those types to make your queries like you normally would.
2021-05-31 10:22:53 +0200 <nitrix> s/worth/work
2021-05-31 10:24:54 +0200 <nitrix> You can have any sort of ORM around this, it's completely orthogonal.
2021-05-31 10:25:13 +0200 <unyu> Presumably the metaprogram runs at compile-time, so every time you want to add a new query, you need to recompile the thing, even if the actual tables have not changed.
2021-05-31 10:25:18 +0200 <xkb> Hi all, I'm trying to solve a hackerRank exercise called minimum swaps. Challenge is to determine the minmum nr of swaps needed to sort an array. I've written a (naive) Haskell solution using a graph cycle algorithm, Code is here: https://paste.tomsmeding.com/azzuoitj This solves the problem for the first 4 sample cases + 1 other but fails on
2021-05-31 10:25:19 +0200 <xkb> others. I probably made some really stupid mistake but can't see it, so would appreciate some eyes at the code. Next to this I need to optimise it, probably by fixing the hasCycle function so I don't repeatedly sort.. Just to be clear: this is not a work assessment or anything, it's one of the practice exercises from HackerRank.
2021-05-31 10:26:02 +0200 <nitrix> unyu, Not every time you add a new query, just every time you change the database structure (new tables, new columns, etc).
2021-05-31 10:26:02 +0200 <xkb> `Minimum Swaps 2` to be exact
2021-05-31 10:26:27 +0200 <unyu> Oh, then that is good.
2021-05-31 10:26:28 +0200 <kuribas> nitrix: that's what my library does, it reads the information schema and outputs template haskell with corresponding types.
2021-05-31 10:26:40 +0200 <nitrix> kuribas, Then you're set :)
2021-05-31 10:29:21 +0200Topsi(~Tobias@dyndsl-095-033-095-132.ewe-ip-backbone.de)
2021-05-31 10:31:11 +0200holy_(~h01y_b4z0@2400:adc1:178:c800:9e45:76a9:57f2:1665)
2021-05-31 10:31:42 +0200z0k(~z0k@101.50.108.132)
2021-05-31 10:31:51 +0200feliix42(~felix@gibbs.uberspace.de)
2021-05-31 10:39:21 +0200chaosite(~chaosite@user/chaosite)
2021-05-31 10:40:21 +0200bfrk(~Thunderbi@200116b84534a60005aeadf137ee420f.dip.versatel-1u1.de)
2021-05-31 10:41:30 +0200dhil(~dhil@195.213.192.85)
2021-05-31 10:41:48 +0200bfrk(~Thunderbi@200116b84534a60005aeadf137ee420f.dip.versatel-1u1.de) ()
2021-05-31 10:41:48 +0200z0k(~z0k@101.50.108.132) (Quit: WeeChat 3.0)
2021-05-31 10:42:30 +0200charukiewicz(~quassel@irouteince04.i.subnet.rcn.com) (Remote host closed the connection)
2021-05-31 10:43:40 +0200charukiewicz(~quassel@irouteince04.i.subnet.rcn.com)
2021-05-31 10:46:50 +0200fendor(~fendor@178.115.56.93.wireless.dyn.drei.com)
2021-05-31 10:49:33 +0200Guest417(~winter@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com) (Ping timeout: 268 seconds)
2021-05-31 10:54:02 +0200comerijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-05-31 10:54:29 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-05-31 10:55:10 +0200 <arahael> I'm trying to get 'newEnv' from Network.AWS.Env, which should be in https://github.com/brendanhay/amazonka/blob/a266fc686cdddb48ac791261b73798c2ed8a6097/amazonka/src/…
2021-05-31 10:55:35 +0200 <arahael> However... when I compile, I get a 'Could not find module ‘Network.AWS.Env’', what must I be doing wrong? It's in amazonka-core, right?
2021-05-31 10:56:46 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-05-31 10:58:21 +0200 <fendor> arahael, looks like it is in amazonka
2021-05-31 10:58:24 +0200 <fendor> https://hackage.haskell.org/package/amazonka
2021-05-31 10:59:17 +0200Guest58(~Guest58@125-227-78-46.HINET-IP.hinet.net)
2021-05-31 10:59:25 +0200 <arahael> fendor: Oh, so I have to get the whole thing? I can't just build-depends amazonka-core or something?
2021-05-31 10:59:47 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-05-31 10:59:49 +0200 <fendor> arahael, to me it looks like amazonka-core does not expose that module.
2021-05-31 10:59:58 +0200xprlgjf(~gavin@60.27.93.209.dyn.plus.net) (Remote host closed the connection)
2021-05-31 11:00:07 +0200 <fendor> so maybe? Don't know about amazonka otherwise
2021-05-31 11:00:09 +0200 <arahael> Hmm... Very curious.
2021-05-31 11:00:33 +0200 <arahael> So I'm now build-depending amazonka, amazonka-core, and amazonka-s3, lets see if that works...
2021-05-31 11:00:39 +0200beka(~beka@104.193.170-254.PUBLIC.monkeybrains.net) (Ping timeout: 268 seconds)
2021-05-31 11:01:10 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:f131:7ff:d61f:7340) (Remote host closed the connection)
2021-05-31 11:01:39 +0200 <dhouthoo> arahael: i just depend on amazonka and amazonka-s3
2021-05-31 11:01:43 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:7549:f26f:981e:10ae)
2021-05-31 11:01:48 +0200fendor(~fendor@178.115.56.93.wireless.dyn.drei.com) (Remote host closed the connection)
2021-05-31 11:02:05 +0200 <arahael> dhouthoo: Thanks for the tip.
2021-05-31 11:02:17 +0200 <arahael> For my learning, how do you guys figure that out?
2021-05-31 11:02:48 +0200 <dhouthoo> browsing hackage
2021-05-31 11:02:51 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-05-31 11:03:59 +0200 <arahael> Ahd observing that the amazonka package does contain a Network.AWS.Env and that that does contain a newEnv, ok that works. :)
2021-05-31 11:04:04 +0200berberman_(~berberman@user/berberman)
2021-05-31 11:04:29 +0200shiraeeshi(~shiraeesh@109.166.58.176)
2021-05-31 11:04:48 +0200tremon(~tremon@217-63-61-89.cable.dynamic.v4.ziggo.nl)
2021-05-31 11:04:59 +0200berberman(~berberman@user/berberman) (Ping timeout: 268 seconds)
2021-05-31 11:05:06 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.1)
2021-05-31 11:05:37 +0200Guest417(~winter@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com)
2021-05-31 11:06:49 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:7549:f26f:981e:10ae) (Ping timeout: 268 seconds)
2021-05-31 11:07:54 +0200 <arahael> Thanks :)
2021-05-31 11:08:44 +0200xprlgjf(~gavin@60.27.93.209.dyn.plus.net)
2021-05-31 11:09:54 +0200ubikium(~ubikium@113x43x248x70.ap113.ftth.arteria-hikari.net) (Ping timeout: 268 seconds)
2021-05-31 11:10:14 +0200ubikium(~ubikium@2400:2200:4f2:4b71:94bf:c634:be62:7c0d)
2021-05-31 11:12:23 +0200xprlgjf(~gavin@60.27.93.209.dyn.plus.net) (Remote host closed the connection)
2021-05-31 11:13:19 +0200xprlgjf(~gavin@60.27.93.209.dyn.plus.net)
2021-05-31 11:14:31 +0200ubikium(~ubikium@2400:2200:4f2:4b71:94bf:c634:be62:7c0d) (Read error: Connection reset by peer)
2021-05-31 11:14:45 +0200ubikium(~ubikium@113x43x248x70.ap113.ftth.arteria-hikari.net)
2021-05-31 11:20:13 +0200Topsi(~Tobias@dyndsl-095-033-095-132.ewe-ip-backbone.de) (Quit: Leaving.)
2021-05-31 11:20:26 +0200Topsi(~Tobias@dyndsl-095-033-095-132.ewe-ip-backbone.de)
2021-05-31 11:21:42 +0200guest0123(~aaron@2601:602:a080:fa0:21da:7ddc:2cc6:a10c)
2021-05-31 11:22:52 +0200Erutuon(~Erutuon@71-34-10-193.mpls.qwest.net) (Ping timeout: 268 seconds)
2021-05-31 11:24:26 +0200xprlgjf(~gavin@60.27.93.209.dyn.plus.net) (Remote host closed the connection)
2021-05-31 11:27:13 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-05-31 11:27:46 +0200holy_(~h01y_b4z0@2400:adc1:178:c800:9e45:76a9:57f2:1665) (Ping timeout: 264 seconds)
2021-05-31 11:28:38 +0200tomboy64(~tomboy64@2a02:2454:416:db00:ba27:ebff:fe58:73c2)
2021-05-31 11:29:23 +0200xprlgjf(~gavin@60.27.93.209.dyn.plus.net)
2021-05-31 11:31:11 +0200fendor(~fendor@178.115.56.93.wireless.dyn.drei.com)
2021-05-31 11:31:29 +0200shiraeeshi(~shiraeesh@109.166.58.176) (Ping timeout: 264 seconds)
2021-05-31 11:31:29 +0200rahguzar(~rahguzar@dynamic-adsl-84-220-228-254.clienti.tiscali.it) (Ping timeout: 264 seconds)
2021-05-31 11:33:59 +0200xkb(~xkb@a80-100-6-16.adsl.xs4all.nl) (Quit: Ping timeout (120 seconds))
2021-05-31 11:34:30 +0200jonathanclarke(~jonathanc@202.51.76.55) (Ping timeout: 264 seconds)
2021-05-31 11:34:47 +0200guest531(~user@49.5.6.87)
2021-05-31 11:36:28 +0200disconsis(~disconsis@103.212.147.213)
2021-05-31 11:36:42 +0200 <disconsis> hi guys
2021-05-31 11:36:50 +0200 <disconsis> i'm trying to solve a sorta simple problem
2021-05-31 11:37:12 +0200 <tdammers> sorta simple problems are the worst
2021-05-31 11:37:21 +0200 <disconsis> I have an AstF type:
2021-05-31 11:37:24 +0200 <disconsis> data AstF a b
2021-05-31 11:37:26 +0200 <disconsis> = Assign { var :: Text, value :: ArithExpr, label :: a }
2021-05-31 11:37:28 +0200 <disconsis> ...
2021-05-31 11:37:57 +0200 <disconsis> I would assume that (Assign{ label :: a}) :: forall b . AstF a b
2021-05-31 11:38:59 +0200 <opqdonut> I think the record update syntax might be monomorphic
2021-05-31 11:39:49 +0200 <disconsis> I was trying to indicate that label has type 'a'
2021-05-31 11:40:02 +0200 <disconsis> Sorry, that's not actual code
2021-05-31 11:40:06 +0200 <disconsis> I'm trying to do this:
2021-05-31 11:40:07 +0200shiraeeshi(~shiraeesh@109.166.58.176)
2021-05-31 11:40:08 +0200 <disconsis> apply :: (i -> a -> (i, b)) -> i -> AstF a (Ast b) -> (i, AstF b (Ast b))
2021-05-31 11:40:10 +0200 <disconsis> apply f i ast =
2021-05-31 11:40:12 +0200 <disconsis> let (i', label') = f i (label ast)
2021-05-31 11:40:14 +0200 <disconsis> in (i', ast {label = label'})
2021-05-31 11:40:16 +0200 <disconsis> recurse :: (i -> a -> (i, b)) -> i -> Ast a -> (i, Ast b)
2021-05-31 11:40:18 +0200 <disconsis> recurse f i = \case
2021-05-31 11:40:20 +0200 <disconsis> Ast ast@Assign {..} -> apply f i ast
2021-05-31 11:40:28 +0200 <opqdonut> oh nevermind I was reading the code all wrong anyway
2021-05-31 11:40:43 +0200 <disconsis> Oh shit this is also relevat
2021-05-31 11:40:45 +0200 <disconsis> newtype Ast a = Ast (AstF a (Ast a))
2021-05-31 11:40:46 +0200tomboy64(~tomboy64@2a02:2454:416:db00:ba27:ebff:fe58:73c2) (Changing host)
2021-05-31 11:40:46 +0200tomboy64(~tomboy64@user/tomboy64)
2021-05-31 11:41:02 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-05-31 11:41:15 +0200 <disconsis> Sorry this looks a bit complicated, but the basic problem is that in 'recurse', ast :: AstF a (Ast a)
2021-05-31 11:41:30 +0200 <disconsis> But I'm trying to use it as a value of type AstF a (Ast b)
2021-05-31 11:41:44 +0200 <disconsis> I feel like I should be able to do that, since the Assign constructor doesn't use 'b'
2021-05-31 11:42:55 +0200 <disconsis> (there's a mistake here, it should really be `Ast ast@Assign {..} -> second Ast $ apply f i ast` in 'recurse')
2021-05-31 11:43:09 +0200tomboy64(~tomboy64@user/tomboy64) (Quit: Off to see the wizard.)
2021-05-31 11:43:33 +0200 <disconsis> However, if I do ast' = ast { label = label } then I can use ast' as a value of type AstF a (Ast b)
2021-05-31 11:43:35 +0200tomboy64(~tomboy64@user/tomboy64)
2021-05-31 11:44:00 +0200 <disconsis> This feels unneccessary to me. any way to fix this?
2021-05-31 11:44:31 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:c68c:4252:bd9f:2d01) (Ping timeout: 265 seconds)
2021-05-31 11:44:42 +0200xprlgjf(~gavin@60.27.93.209.dyn.plus.net) (Remote host closed the connection)
2021-05-31 11:45:02 +0200madnight(~madnight@static.59.103.201.195.clients.your-server.de)
2021-05-31 11:45:10 +0200Dusk[m](~bb010gmat@2001:470:69fc:105::9a5)
2021-05-31 11:45:16 +0200Dusk[m]bb010g
2021-05-31 11:45:17 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-05-31 11:46:20 +0200 <disconsis> In all, this is the code:
2021-05-31 11:46:22 +0200 <disconsis> data AstF a b
2021-05-31 11:46:24 +0200 <disconsis> = Assign { var :: Text, value :: ArithExpr, label :: a }
2021-05-31 11:46:26 +0200 <disconsis> newtype Ast a = Ast (AstF a (Ast a))
2021-05-31 11:46:28 +0200 <disconsis> apply :: (i -> a -> (i, b)) -> i -> AstF a (Ast b) -> (i, AstF b (Ast b))
2021-05-31 11:46:30 +0200 <disconsis> apply f i ast =
2021-05-31 11:46:32 +0200 <disconsis> let (i', label') = f i (label ast)
2021-05-31 11:46:34 +0200 <disconsis> in (i', ast {label = label'})
2021-05-31 11:46:36 +0200 <disconsis> recurse :: (i -> a -> (i, b)) -> i -> Ast a -> (i, Ast b)
2021-05-31 11:46:38 +0200 <disconsis> recurse f i = \case
2021-05-31 11:46:38 +0200tomboy64(~tomboy64@user/tomboy64) (Client Quit)
2021-05-31 11:46:40 +0200 <disconsis> Ast ast@Assign {..} ->
2021-05-31 11:46:42 +0200 <disconsis> -- second Ast $ apply f i ast -- doesn't work
2021-05-31 11:46:44 +0200 <disconsis> second Ast $ apply f i (ast { var = var }) -- does work
2021-05-31 11:46:53 +0200bilegeek(~bilegeek@2600:1008:b06d:65ed:93d7:e6a:a06d:9e4) (Quit: Leaving)
2021-05-31 11:47:38 +0200 <disconsis> i'm not explaining this amazingly well, but please feel free to ask for any clarifications :P
2021-05-31 11:48:38 +0200koishi_(~koishi_@67.209.186.120.16clouds.com) (Remote host closed the connection)
2021-05-31 11:49:07 +0200leeb(~leeb@KD111239155018.au-net.ne.jp) (Quit: WeeChat 3.1)
2021-05-31 11:52:10 +0200 <opqdonut> disconsis: the problem is that since `ast` came out of an `Ast a`, it has type `AstF a (Ast a)`
2021-05-31 11:53:18 +0200 <disconsis> opqdonut: any idea how i can get the same value to be of type `AstF a (Ast b)` without doing the hacky `ast { var = var}`?
2021-05-31 11:54:18 +0200fabfianda(~fabfianda@net-93-148-125-174.cust.dsl.teletu.it) (Ping timeout: 268 seconds)
2021-05-31 11:54:26 +0200 <opqdonut> no, not really, unless you can change the definition of Ast
2021-05-31 11:54:41 +0200fabfianda(~fabfianda@mob-5-90-246-225.net.vodafone.it)
2021-05-31 11:54:49 +0200 <opqdonut> you can of course give a nice name to the function `AstF a b -> AstF a c`
2021-05-31 11:56:25 +0200 <disconsis> Hmm..
2021-05-31 11:56:43 +0200 <disconsis> One problem is that AstF contains more constructors, of which some do use the 'b'
2021-05-31 11:56:52 +0200 <opqdonut> of course
2021-05-31 11:56:57 +0200 <disconsis> So it's not possible to white `AstF a b -> AstF a c` in general
2021-05-31 11:56:59 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-05-31 11:57:09 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 272 seconds)
2021-05-31 11:57:14 +0200 <opqdonut> yeah I think you should just stick with the {} hack
2021-05-31 11:57:19 +0200 <disconsis> I guess I'll just pattern match and create a new value
2021-05-31 11:57:32 +0200 <opqdonut> I'd probably prefer fully destructuring the input Assign, and constructing a new Assign explicitly
2021-05-31 11:57:36 +0200 <opqdonut> yeah
2021-05-31 11:57:40 +0200 <disconsis> Yeah that's what I'm going with
2021-05-31 11:57:42 +0200 <disconsis> thanks!
2021-05-31 11:57:51 +0200hyiltiz(~quassel@31.220.5.250)
2021-05-31 11:58:20 +0200 <opqdonut> I wonder if you could get further with GADTs
2021-05-31 11:59:07 +0200 <opqdonut> data AstF a b where Assign :: Text -> ArithExpr -> a -> AstF a b, SomethingElse :: Text -> a -> b -> AstF a b
2021-05-31 11:59:30 +0200 <opqdonut> no, probably not, even they don't let you generalize an input that has been given a narrower type
2021-05-31 12:01:24 +0200 <disconsis> yeah, the problem really comes from the function signature
2021-05-31 12:01:35 +0200 <disconsis> but this is an okay solution
2021-05-31 12:01:43 +0200chomwitt(~Pitsikoko@2a02:587:dc02:b00:b16c:5166:feb8:97d5) (Ping timeout: 268 seconds)
2021-05-31 12:01:48 +0200 <disconsis> it's pretty unexpected though
2021-05-31 12:01:58 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 264 seconds)
2021-05-31 12:02:15 +0200 <opqdonut> https://gitlab.haskell.org/ghc/ghc/-/issues/7658 <-- related
2021-05-31 12:02:18 +0200 <disconsis> i feel like i've worked with other functional langs that let you do this, but i can't remember them
2021-05-31 12:04:33 +0200fabfianda(~fabfianda@mob-5-90-246-225.net.vodafone.it) (Ping timeout: 272 seconds)
2021-05-31 12:04:40 +0200 <disconsis> ah interesting
2021-05-31 12:04:44 +0200fabfianda(~fabfianda@net-93-148-125-174.cust.vodafonedsl.it)
2021-05-31 12:04:55 +0200 <disconsis> 'phantom types' is exactly what I was trying to think of
2021-05-31 12:07:11 +0200igghibu(~igghibu@37.120.201.126)
2021-05-31 12:07:59 +0200lavaman(~lavaman@98.38.249.169)
2021-05-31 12:08:56 +0200 <tdammers> I was going to say, the fact that the foralled "b" does not appear anywhere in the actual type can be problematic
2021-05-31 12:09:53 +0200sondre(~sondrelun@eduroam-193-157-245-37.wlan.uio.no) (Ping timeout: 264 seconds)
2021-05-31 12:12:35 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-05-31 12:13:11 +0200sondre(~sondrelun@eduroam-193-157-245-37.wlan.uio.no)
2021-05-31 12:14:48 +0200holy_(~h01y_b4z0@2400:adc1:178:c800:9e45:76a9:57f2:1665)
2021-05-31 12:15:16 +0200involans(~alex@cpc92718-cmbg20-2-0-cust157.5-4.cable.virginm.net) (Ping timeout: 268 seconds)
2021-05-31 12:16:09 +0200Guest417(~winter@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com) (Quit: WeeChat 3.1)
2021-05-31 12:18:03 +0200sondre(~sondrelun@eduroam-193-157-245-37.wlan.uio.no) (Ping timeout: 272 seconds)
2021-05-31 12:18:07 +0200Guest58(~Guest58@125-227-78-46.HINET-IP.hinet.net) (Quit: Client closed)
2021-05-31 12:21:42 +0200rahguzar(~rahguzar@212.189.140.214)
2021-05-31 12:24:02 +0200ru0mad(~ruomad@176.164.105.224)
2021-05-31 12:26:21 +0200sondre(~sondrelun@eduroam-193-157-245-37.wlan.uio.no)
2021-05-31 12:26:26 +0200ru0mad(~ruomad@176.164.105.224) (Client Quit)
2021-05-31 12:26:55 +0200ru0mad(~ruomad@176.164.105.224)
2021-05-31 12:28:29 +0200orhan89(~orhan89@151.91.188.35.bc.googleusercontent.com)
2021-05-31 12:31:18 +0200sondre(~sondrelun@eduroam-193-157-245-37.wlan.uio.no) (Ping timeout: 268 seconds)
2021-05-31 12:31:29 +0200ru0mad(~ruomad@176.164.105.224) (Client Quit)
2021-05-31 12:31:47 +0200kawzeg_(kawzeg@2a01:7e01::f03c:92ff:fee2:ec34) (Quit: WeeChat 3.1)
2021-05-31 12:31:58 +0200kawzeg(kawzeg@2a01:7e01::f03c:92ff:fee2:ec34)
2021-05-31 12:32:35 +0200ruomad(~ruomad@82-64-17-144.subs.proxad.net) (Quit: leaving)
2021-05-31 12:32:59 +0200atwm(~andrew@178.197.235.239)
2021-05-31 12:34:03 +0200ru0mad(~ru0mad@82-64-17-144.subs.proxad.net)
2021-05-31 12:34:46 +0200wei2912(~wei2912@112.199.250.21) (Quit: Lost terminal)
2021-05-31 12:36:27 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-05-31 12:37:29 +0200shiraeeshi(~shiraeesh@109.166.58.176) (Ping timeout: 272 seconds)
2021-05-31 12:38:04 +0200ru0mad(~ru0mad@82-64-17-144.subs.proxad.net) (Client Quit)
2021-05-31 12:38:05 +0200xff0x(~xff0x@2001:1a81:528f:3900:ab23:5f87:bcb1:2783) (Ping timeout: 268 seconds)
2021-05-31 12:38:40 +0200xff0x(~xff0x@2001:1a81:528f:3900:63a6:c05a:b177:6450)
2021-05-31 12:38:44 +0200ru0mad(~ru0mad@82-64-17-144.subs.proxad.net)
2021-05-31 12:39:00 +0200aforemny(~aforemny@static.248.158.34.188.clients.your-server.de) (Quit: ZNC 1.8.2 - https://znc.in)
2021-05-31 12:39:20 +0200aforemny(~aforemny@static.248.158.34.188.clients.your-server.de)
2021-05-31 12:39:59 +0200sondre(~sondrelun@eduroam-193-157-245-37.wlan.uio.no)
2021-05-31 12:40:06 +0200shiraeeshi(~shiraeesh@109.166.58.176)
2021-05-31 12:41:43 +0200ru0mad(~ru0mad@82-64-17-144.subs.proxad.net) ()
2021-05-31 12:42:43 +0200ru0mad(~ru0mad@82-64-17-144.subs.proxad.net)
2021-05-31 12:43:14 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-05-31 12:44:50 +0200ru0mad(~ru0mad@82-64-17-144.subs.proxad.net) (Client Quit)
2021-05-31 12:44:51 +0200francesco_(~francesco@host-80-180-196-134.pool80180.interbusiness.it)
2021-05-31 12:44:59 +0200Techcable(~Techcable@168.235.93.147) (Quit: ZNC - https://znc.in)
2021-05-31 12:45:18 +0200shiraeeshi(~shiraeesh@109.166.58.176) (Ping timeout: 264 seconds)
2021-05-31 12:45:33 +0200francesco_(~francesco@host-80-180-196-134.pool80180.interbusiness.it) (Client Quit)
2021-05-31 12:47:43 +0200ru0mad(~ru0mad@82-64-17-144.subs.proxad.net)
2021-05-31 12:48:02 +0200Techcable(~Techcable@168.235.93.147)
2021-05-31 12:48:34 +0200ru0mad[m](~ru0madmat@2001:470:69fc:105::9b2)
2021-05-31 12:48:46 +0200zeenk(~zeenk@2a02:2f04:a310:b600:b098:bf18:df4d:4c41)
2021-05-31 12:53:19 +0200tcard(~tcard@p2307053-ipngn17101hodogaya.kanagawa.ocn.ne.jp) (Leaving)
2021-05-31 12:54:10 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:7d39:eb90:ba7d:df66)
2021-05-31 12:54:38 +0200ru0mad(~ru0mad@82-64-17-144.subs.proxad.net) (Quit: leaving)
2021-05-31 12:55:58 +0200hmmmas(~chenqisu1@183.217.202.217) (Quit: Leaving.)
2021-05-31 12:55:59 +0200comerijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-05-31 12:56:35 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-05-31 12:56:49 +0200tcard(~tcard@p2307053-ipngn17101hodogaya.kanagawa.ocn.ne.jp)
2021-05-31 12:57:01 +0200disconsis(~disconsis@103.212.147.213) (Quit: Disconnected by BOFL)
2021-05-31 12:57:49 +0200atwm(~andrew@178.197.235.239) (Ping timeout: 268 seconds)
2021-05-31 13:00:02 +0200favonia(~favonia@user/favonia) (Quit: The Lounge - https://thelounge.chat)
2021-05-31 13:01:26 +0200mc47(~yecinem@89.246.239.190) (Quit: Leaving)
2021-05-31 13:01:32 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-05-31 13:01:37 +0200curiousgay(~quassel@178.217.208.8) (Read error: Connection reset by peer)
2021-05-31 13:01:46 +0200curiousgay(~quassel@178.217.208.8)
2021-05-31 13:02:20 +0200xsperry(~as@user/xsperry) (Ping timeout: 265 seconds)
2021-05-31 13:02:29 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-05-31 13:03:07 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:7549:f26f:981e:10ae)
2021-05-31 13:03:40 +0200mc47(~yecinem@89.246.239.190)
2021-05-31 13:03:46 +0200danidiaz(~ESDPC@148.3.54.112)
2021-05-31 13:05:47 +0200whez(sid470288@id-470288.tooting.irccloud.com)
2021-05-31 13:07:42 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:7549:f26f:981e:10ae) (Ping timeout: 268 seconds)
2021-05-31 13:08:44 +0200argento(~argent0@168.227.96.53)
2021-05-31 13:08:50 +0200guest531(~user@49.5.6.87) (Read error: Connection reset by peer)
2021-05-31 13:09:09 +0200sciencentistguy(~sciencent@194.110.13.3)
2021-05-31 13:10:47 +0200holy_(~h01y_b4z0@2400:adc1:178:c800:9e45:76a9:57f2:1665) (Ping timeout: 268 seconds)
2021-05-31 13:12:05 +0200rahguzar(~rahguzar@212.189.140.214) (Quit: Connection closed)
2021-05-31 13:12:28 +0200rahguzar(~rahguzar@212.189.140.214)
2021-05-31 13:12:52 +0200favonia(~favonia@user/favonia)
2021-05-31 13:12:53 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-05-31 13:13:45 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-05-31 13:16:56 +0200smitop(uid328768@user/smitop)
2021-05-31 13:21:38 +0200neceve(~quassel@2a02:c7f:607e:d600:a95a:ecd2:e57a:3130)
2021-05-31 13:22:18 +0200ruomad(~ruomad@176.164.105.224)
2021-05-31 13:22:58 +0200ruomad(~ruomad@176.164.105.224) (Client Quit)
2021-05-31 13:24:04 +0200Topsi1(~Tobias@dyndsl-095-033-095-132.ewe-ip-backbone.de)
2021-05-31 13:24:21 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-05-31 13:24:35 +0200hmmmas(~chenqisu1@183.217.202.217)
2021-05-31 13:24:42 +0200ru0mad(~ru0mad@176.164.105.224)
2021-05-31 13:24:57 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-05-31 13:26:12 +0200Topsi(~Tobias@dyndsl-095-033-095-132.ewe-ip-backbone.de) (Ping timeout: 268 seconds)
2021-05-31 13:26:34 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 252 seconds)
2021-05-31 13:26:37 +0200jpds1(~jpds@gateway/tor-sasl/jpds)
2021-05-31 13:28:48 +0200Guest31(~textual@cpc146410-hari22-2-0-cust124.20-2.cable.virginm.net)
2021-05-31 13:29:52 +0200ru0mad(~ru0mad@176.164.105.224) (Quit: Sayonara)
2021-05-31 13:29:53 +0200cheater(~Username@user/cheater) (Ping timeout: 268 seconds)
2021-05-31 13:30:08 +0200cheater(~Username@user/cheater)
2021-05-31 13:30:10 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-05-31 13:30:12 +0200ru0mad(~ru0mad@82-64-17-144.subs.proxad.net)
2021-05-31 13:30:29 +0200ru0mad(~ru0mad@82-64-17-144.subs.proxad.net) (Client Quit)
2021-05-31 13:30:30 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-05-31 13:30:46 +0200atwm(~andrew@178.197.235.239)
2021-05-31 13:31:41 +0200tomboy64(~tomboy64@user/tomboy64)
2021-05-31 13:32:08 +0200Topsi(~Tobias@dyndsl-095-033-095-132.ewe-ip-backbone.de)
2021-05-31 13:33:16 +0200GIANTWORLDKEEPER(~pjetcetal@2.95.204.25) (Ping timeout: 265 seconds)
2021-05-31 13:34:56 +0200ru0mad(~ru0mad@82-64-17-144.subs.proxad.net)
2021-05-31 13:35:19 +0200Topsi1(~Tobias@dyndsl-095-033-095-132.ewe-ip-backbone.de) (Ping timeout: 272 seconds)
2021-05-31 13:35:34 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-05-31 13:35:34 +0200hmmmas(~chenqisu1@183.217.202.217) (Quit: Leaving.)
2021-05-31 13:36:03 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-05-31 13:36:12 +0200ru0mad(~ru0mad@82-64-17-144.subs.proxad.net) (Client Quit)
2021-05-31 13:37:18 +0200atwm(~andrew@178.197.235.239) (Ping timeout: 268 seconds)
2021-05-31 13:37:21 +0200ru0mad(~ru0mad@82-64-17-144.subs.proxad.net)
2021-05-31 13:37:37 +0200ru0mad(~ru0mad@82-64-17-144.subs.proxad.net) (Client Quit)
2021-05-31 13:39:26 +0200xsperry(~as@user/xsperry)
2021-05-31 13:47:22 +0200 <arahael> When I run 'cabal run', I often get the error 'Warning: Couldn't figure out C compiler information! Make sure you're using GNU gcc, or clang' on macos. Is there anything I can do to fix that?
2021-05-31 13:49:55 +0200 <arahael> Hmm, I have to get to bed - I'll ask another time.
2021-05-31 13:50:14 +0200 <arahael> tdammers: Oh, managed to catch you! Before I go, wanted to think you for Ginger. :) Using it for a small personal site that isn't online yet. :)
2021-05-31 13:50:45 +0200zebrag(~chris@user/zebrag)
2021-05-31 13:50:50 +0200Dynom(~niels@80-114-12-206.cable.dynamic.v4.ziggo.nl)
2021-05-31 13:51:14 +0200atwm(~andrew@178.197.235.239)
2021-05-31 13:56:07 +0200chisui(~chisui@200116b86662dd0045dcdbf42fb73e43.dip.versatel-1u1.de)
2021-05-31 13:56:13 +0200 <xerox> arahael: I wonder what's that about as well
2021-05-31 13:57:02 +0200atwm(~andrew@178.197.235.239) (Ping timeout: 268 seconds)
2021-05-31 13:57:05 +0200jpds1jpds
2021-05-31 13:57:12 +0200 <arahael> xerox: Not just me, then? Sweet. I'll have to get back in and ask about it again another day.
2021-05-31 13:57:22 +0200 <xerox> arahael: which version are you using?
2021-05-31 13:58:00 +0200 <arahael> xerox: Seems to be 8.8.4, using cabal-install 3.2.0.0
2021-05-31 13:58:06 +0200 <arahael> xerox: On an M1.
2021-05-31 13:58:19 +0200 <xerox> me 8.10.4 on an m1
2021-05-31 13:58:28 +0200 <arahael> I probably should upgrade - another time.
2021-05-31 14:02:34 +0200benin(~benin@183.82.177.19) (Ping timeout: 268 seconds)
2021-05-31 14:06:13 +0200benin(~benin@183.82.177.19)
2021-05-31 14:07:30 +0200gbd_628(~gbd_628@c-73-160-244-80.hsd1.nj.comcast.net) (Quit: Client closed)
2021-05-31 14:07:30 +0200sondre(~sondrelun@eduroam-193-157-245-37.wlan.uio.no) (Ping timeout: 264 seconds)
2021-05-31 14:07:33 +0200dunkeln(~dunkeln@94.129.65.28)
2021-05-31 14:09:21 +0200lavaman(~lavaman@98.38.249.169)
2021-05-31 14:09:43 +0200 <merijn> arahael, xerox: The C compiler is handled by GHC's configure script
2021-05-31 14:09:47 +0200 <merijn> but it's hacky as fuck
2021-05-31 14:09:56 +0200 <merijn> It breaks a lot
2021-05-31 14:10:50 +0200 <merijn> Things that have broke it for me: Having a stupid ancient clang that gets identified as gcc (and then breaks, because it considers clang 3.4 to have a bug that applies to gcc sub 4.4)
2021-05-31 14:11:08 +0200 <merijn> Having CUDA's nvcc installed changes clang's output on macOS, which also breaks it
2021-05-31 14:14:18 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-05-31 14:15:47 +0200bfrk1(~Thunderbi@200116b84534a60005aeadf137ee420f.dip.versatel-1u1.de)
2021-05-31 14:16:05 +0200sondre(~sondrelun@eduroam-193-157-245-37.wlan.uio.no)
2021-05-31 14:18:00 +0200ubikium(~ubikium@113x43x248x70.ap113.ftth.arteria-hikari.net) (Ping timeout: 268 seconds)
2021-05-31 14:18:08 +0200bfrk1bfrk
2021-05-31 14:18:28 +0200ubikium(~ubikium@2400:2200:4f2:4b71:94bf:c634:be62:7c0d)
2021-05-31 14:18:30 +0200schuelermine(~schuelerm@2a02:3032:403:c9bf:a3eb:b0ef:ce:fa31)
2021-05-31 14:19:52 +0200ubikium(~ubikium@2400:2200:4f2:4b71:94bf:c634:be62:7c0d) (Read error: Connection reset by peer)
2021-05-31 14:20:06 +0200ubikium(~ubikium@113x43x248x70.ap113.ftth.arteria-hikari.net)
2021-05-31 14:21:45 +0200xprlgjf(~gavin@60.27.93.209.dyn.plus.net)
2021-05-31 14:22:52 +0200AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net)
2021-05-31 14:24:43 +0200ubikium(~ubikium@113x43x248x70.ap113.ftth.arteria-hikari.net) (Ping timeout: 272 seconds)
2021-05-31 14:25:10 +0200ubikium(~ubikium@2400:2200:4f2:4b71:94bf:c634:be62:7c0d)
2021-05-31 14:30:37 +0200lavaman(~lavaman@98.38.249.169)
2021-05-31 14:31:58 +0200 <schuelermine> Hello
2021-05-31 14:32:32 +0200 <schuelermine> Does anybody know if GHC have any plans to add full dependent typing?
2021-05-31 14:33:07 +0200 <schuelermine> It’s kinda sad that most Optics need Template Haskell…
2021-05-31 14:33:59 +0200 <maerwald> schuelermine: https://github.com/ghc-proposals/ghc-proposals/pull/378 was accepted, but that isn't full dependent types
2021-05-31 14:34:08 +0200 <maerwald> and I hope we don't get it
2021-05-31 14:34:16 +0200 <merijn> Yeah
2021-05-31 14:34:24 +0200 <merijn> Dependent Haskell is a terrible idea, imo
2021-05-31 14:34:42 +0200 <merijn> I'm not super optimistic about Linear Haskell either
2021-05-31 14:35:38 +0200 <schuelermine> Isn’t linear Haskell basically implemented?
2021-05-31 14:35:50 +0200 <kuribas> merijn: better have a good compiler for idris then?
2021-05-31 14:35:58 +0200 <schuelermine> 8.10 has -XLinearTypes (or similar)
2021-05-31 14:36:08 +0200 <opqdonut> kuribas: that's my opinion, at least
2021-05-31 14:36:18 +0200 <opqdonut> I'd also rather have a haskell2020 standard than yet more experiments
2021-05-31 14:36:25 +0200 <opqdonut> oh well
2021-05-31 14:36:30 +0200benin(~benin@183.82.177.19) (Ping timeout: 268 seconds)
2021-05-31 14:36:34 +0200 <schuelermine> Also, why do you think dependent Haskell is a bad idea?
2021-05-31 14:36:44 +0200 <maerwald> a language that's designed from the ground up with dependent types in mind sounds like a better idea
2021-05-31 14:36:52 +0200 <schuelermine> true
2021-05-31 14:36:59 +0200 <opqdonut> yeah, that's pretty much it
2021-05-31 14:37:04 +0200 <maerwald> ppl are just turning haskell into C++
2021-05-31 14:37:24 +0200 <schuelermine> Agda’s mixfix is fun
2021-05-31 14:38:39 +0200 <maerwald> also, why not have a language that compiles to haskell and has dependent types? Do you really want all of the features in one language? What's wrong with inter-operability?
2021-05-31 14:38:40 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-05-31 14:39:34 +0200 <maerwald> intellectual complexity is also a concern... I don't want to think about dependent types most of the time, unless I'm doing something rather odd and complicated
2021-05-31 14:39:40 +0200 <merijn> schuelermine: Haskell as-is isn't designed for dependent times and I expect retrofitting will make the user interface considerably worse
2021-05-31 14:39:54 +0200 <merijn> s/times/types
2021-05-31 14:39:55 +0200 <beaky> nice i like agda
2021-05-31 14:40:05 +0200 <beaky> agda is implemented in haskell i think
2021-05-31 14:40:10 +0200 <merijn> And big libraries moving to -XKitchenSink will force it on the entire ecosystem
2021-05-31 14:40:17 +0200 <maerwald> yes
2021-05-31 14:40:19 +0200 <schuelermine> hm
2021-05-31 14:40:27 +0200 <maerwald> ecosystem effects aren't considered in that proposal at all
2021-05-31 14:40:32 +0200brandonh(~brandonh@151.38.202.252)
2021-05-31 14:40:43 +0200 <the-coot[m]> maerwald: Agda can be compiled to Haskell; the problem is that in some way you loose control over the low level code (Haskell in this case).
2021-05-31 14:40:48 +0200 <merijn> schuelermine: I *like* dependent typs, I just don't like the as ad hoc, backwards incompatible change bolted onto a language not designed for it
2021-05-31 14:41:14 +0200 <beaky> i think agda has a ghc backend too that lets you compile agda as executables or libraries and use between haskell modules
2021-05-31 14:41:31 +0200 <maerwald> so, why don't we explore that, instead of mudding up Haskell
2021-05-31 14:41:48 +0200 <merijn> schuelermine: The appeal of, say, Idris and Agda is that there is only one syntax for type and value level that's identical
2021-05-31 14:41:55 +0200igghibu(~igghibu@37.120.201.126) (Quit: Textual IRC Client: www.textualapp.com)
2021-05-31 14:42:05 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-05-31 14:42:14 +0200 <schuelermine> I actually feel bolting it in ad hoc could help make it more discoverable
2021-05-31 14:42:17 +0200ksqsf(~textual@67.209.186.120.16clouds.com)
2021-05-31 14:42:19 +0200koishi_(~koishi_@67.209.186.120.16clouds.com)
2021-05-31 14:42:19 +0200ksqsf(~textual@67.209.186.120.16clouds.com) (Client Quit)
2021-05-31 14:42:30 +0200 <schuelermine> excuse me
2021-05-31 14:42:32 +0200 <merijn> Haskell pretty explicitly has *different* type and value level syntax, and mixing them now is confusion where some things are correct, some aren't and some mean something different from what you expect
2021-05-31 14:42:43 +0200 <schuelermine> yeah
2021-05-31 14:43:04 +0200 <merijn> schuelermine: Have you looked at something like Idris before? Type level programming in Idris is *much* easier to learn/understand than Hasochism, imo
2021-05-31 14:43:17 +0200sondre(~sondrelun@eduroam-193-157-245-37.wlan.uio.no) (Ping timeout: 268 seconds)
2021-05-31 14:43:25 +0200 <schuelermine> Is Idris better than Agda?
2021-05-31 14:44:37 +0200 <schuelermine> actually no wait
2021-05-31 14:44:37 +0200 <schuelermine> Does Idris have the same provable productiveness or termination restriction as Agda?
2021-05-31 14:45:12 +0200 <beaky> yes idris is more designed to be 'pacman complete' as edwin brady would say while also haveing the nice depdnendent types like agda (although it uses a different theory i think)
2021-05-31 14:45:24 +0200 <schuelermine> I have to leave, my battery is dead
2021-05-31 14:45:29 +0200 <schuelermine> Thanks
2021-05-31 14:45:45 +0200 <tomsmeding> rip battery
2021-05-31 14:45:52 +0200sondre(~sondrelun@eduroam-193-157-245-37.wlan.uio.no)
2021-05-31 14:47:18 +0200koishi_(~koishi_@67.209.186.120.16clouds.com) (Remote host closed the connection)
2021-05-31 14:50:06 +0200schuelermine(~schuelerm@2a02:3032:403:c9bf:a3eb:b0ef:ce:fa31) (Ping timeout: 264 seconds)
2021-05-31 14:50:41 +0200sondre(~sondrelun@eduroam-193-157-245-37.wlan.uio.no) (Ping timeout: 264 seconds)
2021-05-31 14:51:17 +0200koishi_(~koishi_@67.209.186.120.16clouds.com)
2021-05-31 14:51:42 +0200Guest31(~textual@cpc146410-hari22-2-0-cust124.20-2.cable.virginm.net) (Quit: Textual IRC Client: www.textualapp.com)
2021-05-31 14:52:42 +0200koishi_(~koishi_@67.209.186.120.16clouds.com) (Remote host closed the connection)
2021-05-31 14:53:19 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:7d39:eb90:ba7d:df66) (Quit: WeeChat 2.8)
2021-05-31 14:53:54 +0200koishi_(~koishi_@185.209.85.134)
2021-05-31 14:54:24 +0200eightball(~eight@162-226-201-119.lightspeed.tukrga.sbcglobal.net)
2021-05-31 14:58:08 +0200argento(~argent0@168.227.96.53) (Ping timeout: 252 seconds)
2021-05-31 14:58:42 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 268 seconds)
2021-05-31 15:01:15 +0200alx741(~alx741@186.178.108.160)
2021-05-31 15:01:19 +0200sondre(~sondrelun@eduroam-193-157-245-37.wlan.uio.no)
2021-05-31 15:01:32 +0200Guest43oreosplas(~Guest43or@ip5b40c0d8.dynamic.kabel-deutschland.de)
2021-05-31 15:01:40 +0200Guest43oreosplas(~Guest43or@ip5b40c0d8.dynamic.kabel-deutschland.de) (Client Quit)
2021-05-31 15:01:58 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds)
2021-05-31 15:02:05 +0200eightball(~eight@162-226-201-119.lightspeed.tukrga.sbcglobal.net) (Quit: Leaving)
2021-05-31 15:02:22 +0200eightball(~eight@162-226-201-119.lightspeed.tukrga.sbcglobal.net)
2021-05-31 15:03:22 +0200gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-05-31 15:04:04 +0200gentauro(~gentauro@user/gentauro)
2021-05-31 15:04:53 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:7549:f26f:981e:10ae)
2021-05-31 15:05:53 +0200sondre(~sondrelun@eduroam-193-157-245-37.wlan.uio.no) (Ping timeout: 272 seconds)
2021-05-31 15:06:45 +0200koishi_(~koishi_@185.209.85.134) (Quit: /ragequit)
2021-05-31 15:07:25 +0200eightball(~eight@162-226-201-119.lightspeed.tukrga.sbcglobal.net) (Quit: Leaving)
2021-05-31 15:09:44 +0200ku(~ku@2601:280:c780:7ea0:a15d:a611:c59d:5265) (Read error: Connection reset by peer)
2021-05-31 15:09:47 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:7549:f26f:981e:10ae) (Ping timeout: 268 seconds)
2021-05-31 15:09:47 +0200dunkeln(~dunkeln@94.129.65.28) (Ping timeout: 268 seconds)
2021-05-31 15:15:14 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-05-31 15:23:16 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no)
2021-05-31 15:23:22 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 268 seconds)
2021-05-31 15:23:43 +0200argento(~argent0@168.227.96.53)
2021-05-31 15:28:44 +0200hyiltiz(~quassel@31.220.5.250)
2021-05-31 15:30:17 +0200geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com)
2021-05-31 15:31:16 +0200shryke(~shryke@91.103.43.254)
2021-05-31 15:33:53 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no) (Ping timeout: 264 seconds)
2021-05-31 15:34:35 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
2021-05-31 15:35:14 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-05-31 15:37:47 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no)
2021-05-31 15:39:30 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 244 seconds)
2021-05-31 15:42:08 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no) (Ping timeout: 252 seconds)
2021-05-31 15:42:08 +0200pe200012(~pe200012@218.107.17.245) (Ping timeout: 252 seconds)
2021-05-31 15:42:27 +0200geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com) (Remote host closed the connection)
2021-05-31 15:43:14 +0200chaosite(~chaosite@user/chaosite) (Ping timeout: 252 seconds)
2021-05-31 15:43:18 +0200 <tdammers> arahael: I think you missed me by mere minutes, but I usually leave my server idling, so you can just ping me and I'll read later, most of the time. Anyway, glad you like ginger.
2021-05-31 15:43:18 +0200pe200012(~pe200012@218.107.17.245)
2021-05-31 15:44:09 +0200geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com)
2021-05-31 15:45:51 +0200 <kuribas> I think idris is more for practical programming, less for proving stuff.
2021-05-31 15:46:25 +0200 <kuribas> At least, I tried to prove stuff in idris, and I found it not very convenient.
2021-05-31 15:46:34 +0200 <tdammers> well yeah, that's its mission, isn't it - bring dependent types to a practical programming language. or, if you prefer, bring practical programming to a dependently typed language.
2021-05-31 15:47:04 +0200 <kuribas> A disadvantage is that you give up on HM type inference.
2021-05-31 15:47:44 +0200 <tdammers> Haskell doesn't do HM either
2021-05-31 15:48:54 +0200lbseale(~lbseale@ip72-194-54-201.sb.sd.cox.net)
2021-05-31 15:51:04 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no)
2021-05-31 15:51:36 +0200cheater1__(~Username@user/cheater)
2021-05-31 15:51:44 +0200cheater(~Username@user/cheater) (Ping timeout: 268 seconds)
2021-05-31 15:51:48 +0200cheater1__cheater
2021-05-31 15:54:23 +0200chaosite(~chaosite@user/chaosite)
2021-05-31 15:55:22 +0200dunkeln(~dunkeln@94.129.65.28)
2021-05-31 15:55:25 +0200kiwi_33(~00000000@selfhost1.threedot14.com) (Ping timeout: 268 seconds)
2021-05-31 15:56:02 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no) (Ping timeout: 268 seconds)
2021-05-31 15:59:07 +0200chaosite(~chaosite@user/chaosite) (Ping timeout: 268 seconds)
2021-05-31 16:00:21 +0200dunkeln(~dunkeln@94.129.65.28) (Ping timeout: 268 seconds)
2021-05-31 16:04:39 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no)
2021-05-31 16:06:02 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:7d39:eb90:ba7d:df66)
2021-05-31 16:08:19 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-05-31 16:09:17 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no) (Ping timeout: 264 seconds)
2021-05-31 16:11:17 +0200dunkeln(~dunkeln@94.129.65.28)
2021-05-31 16:11:42 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-05-31 16:12:45 +0200connrs(~connrs@s1.connrs.uk) (Changing host)
2021-05-31 16:12:45 +0200connrs(~connrs@user/connrs)
2021-05-31 16:13:48 +0200atwm(~andrew@178.197.235.239)
2021-05-31 16:14:12 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-05-31 16:14:16 +0200jmcarthur(~textual@c-73-29-224-10.hsd1.nj.comcast.net)
2021-05-31 16:15:42 +0200nschoe(~quassel@178.251.84.79)
2021-05-31 16:17:29 +0200wonko(~wjc@user/wonko) (Remote host closed the connection)
2021-05-31 16:18:13 +0200ixlun(~user@109.249.184.235)
2021-05-31 16:18:47 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no)
2021-05-31 16:19:01 +0200favonia(~favonia@user/favonia) (Quit: Ping timeout (120 seconds))
2021-05-31 16:19:03 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 265 seconds)
2021-05-31 16:19:07 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Excess Flood)
2021-05-31 16:19:24 +0200favonia(~favonia@user/favonia)
2021-05-31 16:19:33 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2021-05-31 16:20:29 +0200cheater1__(~Username@user/cheater)
2021-05-31 16:20:35 +0200 <ixlun> Hi all, I've got a Parsec parser and I'm trying to build a parsec parser. I've got the following: (<>) <$> option "" $ string "a" <*> option
2021-05-31 16:20:43 +0200cheater(~Username@user/cheater) (Ping timeout: 268 seconds)
2021-05-31 16:20:50 +0200allbery_b(~geekosaur@069-135-003-034.biz.spectrum.com)
2021-05-31 16:20:51 +0200cheater1__cheater
2021-05-31 16:20:55 +0200geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com) (Killed (NickServ (GHOST command used by allbery_b)))
2021-05-31 16:21:01 +0200allbery_bgeekosaur
2021-05-31 16:21:08 +0200 <ixlun> (<>) <$> option "" $ string "a" <*> option "" $ string "b" <*> option "" $ string "c"
2021-05-31 16:21:26 +0200jmcarthur(~textual@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: Textual IRC Client: www.textualapp.com)
2021-05-31 16:21:49 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-05-31 16:21:52 +0200 <ixlun> So I want to concatenate whatever string is parsed. Problem is (<>) only takes two strings to it's a type error.
2021-05-31 16:22:18 +0200 <ixlun> Is the best way to fix this to do something like: (<> . <>)?
2021-05-31 16:23:01 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-05-31 16:23:35 +0200 <hpc> :t (<>)
2021-05-31 16:23:35 +0200 <lambdabot> Semigroup a => a -> a -> a
2021-05-31 16:23:38 +0200 <hpc> :t mconcat
2021-05-31 16:23:39 +0200 <lambdabot> Monoid a => [a] -> a
2021-05-31 16:23:47 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no) (Ping timeout: 272 seconds)
2021-05-31 16:23:52 +0200kiweun(~sheepduck@2607:fea8:2a60:b700::5d55)
2021-05-31 16:23:54 +0200 <hpc> you probably want mconcat
2021-05-31 16:23:55 +0200 <river> :t (<> . <>)
2021-05-31 16:23:56 +0200 <lambdabot> error: parse error on input ‘.’
2021-05-31 16:24:05 +0200 <Hecate> river: nice emoji
2021-05-31 16:24:16 +0200 <ixlun> :t ((<>) . (<>))
2021-05-31 16:24:17 +0200 <lambdabot> Semigroup a => a -> (a -> a) -> a -> a
2021-05-31 16:24:22 +0200igghibu(~igghibu@37.120.201.126)
2021-05-31 16:24:25 +0200hughjfchen(~hughjfche@vmi556545.contaboserver.net)
2021-05-31 16:24:36 +0200 <hpc> mconcat [a, b, c, d] = a <> b <> c <> d <> mempty
2021-05-31 16:24:51 +0200jmcarthu_(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-05-31 16:25:05 +0200aighearach_(~paris@c-71-63-160-210.hsd1.or.comcast.net)
2021-05-31 16:25:22 +0200 <Hecate> % :t (\y -> (\x -> x <> y . y <> x))
2021-05-31 16:25:23 +0200 <yahb> Hecate: Semigroup a => (a -> a) -> (a -> a) -> a -> a
2021-05-31 16:25:37 +0200 <Hecate> ah, you were faster ixlun
2021-05-31 16:25:51 +0200cheater1__(~Username@user/cheater)
2021-05-31 16:26:03 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Killed (NickServ (GHOST command used by jmcarthu_)))
2021-05-31 16:26:13 +0200jmcarthu_jmcarthur
2021-05-31 16:26:20 +0200 <ixlun> The type of ((<>) . (<>)) isn't what I expected!
2021-05-31 16:26:31 +0200Megant_(megant@user/megant)
2021-05-31 16:26:55 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-05-31 16:27:04 +0200 <ixlun> My intuition would have been: a -> a ->a
2021-05-31 16:27:17 +0200sheepduck(~sheepduck@2607:fea8:2a60:b700::5d55) (Read error: Connection reset by peer)
2021-05-31 16:27:17 +0200atwm(~andrew@178.197.235.239) (Ping timeout: 268 seconds)
2021-05-31 16:27:17 +0200cheater(~Username@user/cheater) (Ping timeout: 268 seconds)
2021-05-31 16:27:17 +0200xff0x(~xff0x@2001:1a81:528f:3900:63a6:c05a:b177:6450) (Ping timeout: 268 seconds)
2021-05-31 16:27:18 +0200Megant(megant@user/megant) (Ping timeout: 268 seconds)
2021-05-31 16:27:18 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Read error: Connection reset by peer)
2021-05-31 16:27:18 +0200otto_s_(~user@p5de2fbac.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2021-05-31 16:27:23 +0200cheater1__cheater
2021-05-31 16:27:28 +0200hughjfchen(~hughjfche@vmi556545.contaboserver.net) (Remote host closed the connection)
2021-05-31 16:27:42 +0200favonia(~favonia@user/favonia) (Ping timeout: 268 seconds)
2021-05-31 16:27:42 +0200wagle(~wagle@quassel.wagle.io) (Ping timeout: 268 seconds)
2021-05-31 16:27:56 +0200xff0x(~xff0x@port-92-195-46-148.dynamic.as20676.net)
2021-05-31 16:27:58 +0200otto_s(~user@p5de2fbac.dip0.t-ipconnect.de)
2021-05-31 16:28:12 +0200aighearach(~paris@c-71-63-160-210.hsd1.or.comcast.net) (Ping timeout: 268 seconds)
2021-05-31 16:28:55 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Ping timeout: 268 seconds)
2021-05-31 16:28:55 +0200berberman_(~berberman@user/berberman) (Ping timeout: 268 seconds)
2021-05-31 16:28:55 +0200jjhoo(jahakala@dsl-trebng21-58c18f-56.dhcp.inet.fi) (Ping timeout: 268 seconds)
2021-05-31 16:28:59 +0200jjhoo_(~jahakala@dsl-trebng21-58c18f-56.dhcp.inet.fi)
2021-05-31 16:29:12 +0200Lord_of_Life_Lord_of_Life
2021-05-31 16:29:21 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-05-31 16:29:21 +0200smitop(uid328768@user/smitop) (Ping timeout: 268 seconds)
2021-05-31 16:29:21 +0200neceve(~quassel@2a02:c7f:607e:d600:a95a:ecd2:e57a:3130) (Ping timeout: 268 seconds)
2021-05-31 16:29:21 +0200riatre(~quassel@h203-145-233-111.ablenetvps.ne.jp) (Ping timeout: 268 seconds)
2021-05-31 16:29:22 +0200hughjfchen(~hughjfche@vmi556545.contaboserver.net)
2021-05-31 16:29:23 +0200riatre_(~quassel@2001:310:6000:f::5198:1)
2021-05-31 16:29:58 +0200ruffy_(~jonas@2a03:b0c0:3:d0::162e:a001) (Ping timeout: 268 seconds)
2021-05-31 16:30:07 +0200neceve(~quassel@2a02:c7f:607e:d600:a95a:ecd2:e57a:3130)
2021-05-31 16:30:24 +0200hughjfchen(~hughjfche@vmi556545.contaboserver.net) (Remote host closed the connection)
2021-05-31 16:30:36 +0200wagle(~wagle@quassel.wagle.io)
2021-05-31 16:30:40 +0200tremon(~tremon@217-63-61-89.cable.dynamic.v4.ziggo.nl) (Ping timeout: 268 seconds)
2021-05-31 16:31:11 +0200involans(~alex@cpc92718-cmbg20-2-0-cust157.5-4.cable.virginm.net)
2021-05-31 16:31:11 +0200smitop(uid328768@user/smitop)
2021-05-31 16:31:19 +0200hughjfchen(~hughjfche@vmi556545.contaboserver.net)
2021-05-31 16:31:20 +0200brandonh(~brandonh@151.38.202.252) (Ping timeout: 268 seconds)
2021-05-31 16:31:30 +0200hughjfchen(~hughjfche@vmi556545.contaboserver.net) (Client Quit)
2021-05-31 16:31:49 +0200AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) (Ping timeout: 268 seconds)
2021-05-31 16:31:50 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no)
2021-05-31 16:32:26 +0200 <tdammers> :t mconcat <$> mapM (option "" . string) [ "a", "b", "c" ]
2021-05-31 16:32:27 +0200 <lambdabot> error:
2021-05-31 16:32:27 +0200 <lambdabot> • Variable not in scope: option :: [Char] -> b0 -> f b
2021-05-31 16:32:27 +0200 <lambdabot> • Perhaps you meant ‘optional’ (imported from Control.Applicative)
2021-05-31 16:32:30 +0200koishi_(~koishi_@67.209.186.120.16clouds.com)
2021-05-31 16:32:30 +0200ornxka(~ornxka@user/ornxka) (Ping timeout: 268 seconds)
2021-05-31 16:32:47 +0200 <tdammers> something like that?
2021-05-31 16:32:48 +0200tremon(~tremon@217-63-61-89.cable.dynamic.v4.ziggo.nl)
2021-05-31 16:33:00 +0200berberman(~berberman@user/berberman)
2021-05-31 16:33:10 +0200atwm(~andrew@178.197.235.239)
2021-05-31 16:33:12 +0200bfrk(~Thunderbi@200116b84534a60005aeadf137ee420f.dip.versatel-1u1.de) (Ping timeout: 268 seconds)
2021-05-31 16:33:12 +0200dyeplexer(~dyeplexer@user/dyeplexer) (Ping timeout: 268 seconds)
2021-05-31 16:33:23 +0200brandonh(~brandonh@151.38.202.252)
2021-05-31 16:33:29 +0200dyeplexer(~dyeplexer@user/dyeplexer)
2021-05-31 16:33:43 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-05-31 16:33:44 +0200anandprabhu(~anandprab@87.201.97.214) (Quit: Leaving)
2021-05-31 16:33:51 +0200 <ski> @type (fmap mconcat . sequenceA) [Text.Parsec.option "" (Text.Parsec.string "a"),Text.Parsec.option "" (Text.Parsec.string "b"),Text.Parsec.option "" (Text.Parsec.string "c")]
2021-05-31 16:33:53 +0200 <lambdabot> Text.Parsec.Prim.Stream s m Char => Text.Parsec.Prim.ParsecT s u m [Char]
2021-05-31 16:34:00 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-05-31 16:34:09 +0200whaletechho(~whaletech@user/whaletechno)
2021-05-31 16:34:25 +0200ornxka(~ornxka@user/ornxka)
2021-05-31 16:34:50 +0200ruffy_(~jonas@2a03:b0c0:3:d0::162e:a001)
2021-05-31 16:34:51 +0200AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net)
2021-05-31 16:35:14 +0200kuribas(~user@ptr-25vy0i7o5gw6tky01tr.18120a2.ip6.access.telenet.be) (Ping timeout: 268 seconds)
2021-05-31 16:35:14 +0200gawen(~gawen@user/gawen) (Ping timeout: 268 seconds)
2021-05-31 16:35:46 +0200gawen(~gawen@user/gawen)
2021-05-31 16:36:03 +0200kuribas``(~user@ptr-25vy0i7o5gw6tky01tr.18120a2.ip6.access.telenet.be)
2021-05-31 16:36:08 +0200michalz(~user@185.246.204.55) (Ping timeout: 268 seconds)
2021-05-31 16:36:50 +0200 <ixlun> I like it! I didn't think of putting the parsing steps into an array and useing concat!
2021-05-31 16:37:04 +0200 <ski> s/array/list/
2021-05-31 16:37:41 +0200atwm(~andrew@178.197.235.239) (Ping timeout: 252 seconds)
2021-05-31 16:37:52 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-05-31 16:38:01 +0200 <ski> (if all your parsing actions there are of that form, then something like tdammers' version would be nicer)
2021-05-31 16:38:52 +0200sifu(~marek@219.244.200.146.dyn.plus.net)
2021-05-31 16:38:52 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-05-31 16:39:20 +0200koishi_(~koishi_@67.209.186.120.16clouds.com) (Ping timeout: 252 seconds)
2021-05-31 16:40:08 +0200 <jmcarthur> A semimodule over a semiring consists of a commutative monoid. Does anybody know if the commutativity of the monoid is inevitable from the other axioms or if it's just an extra property? If the latter, is there a name for a semimodule where the monoid is not commutative?
2021-05-31 16:40:12 +0200 <ixlun> I have to say, having written a full C parser with Bison, using Haskell for writing parsers is a dream!
2021-05-31 16:41:14 +0200michalz(~user@185.246.204.45)
2021-05-31 16:41:31 +0200 <jmcarthur> I have seen a proof that commutativity is inevitable in a module, but it made use of additive inverses.
2021-05-31 16:41:52 +0200kuribas``(~user@ptr-25vy0i7o5gw6tky01tr.18120a2.ip6.access.telenet.be) (*.net *.split)
2021-05-31 16:41:52 +0200AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) (*.net *.split)
2021-05-31 16:41:52 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (*.net *.split)
2021-05-31 16:41:52 +0200otto_s(~user@p5de2fbac.dip0.t-ipconnect.de) (*.net *.split)
2021-05-31 16:41:52 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (*.net *.split)
2021-05-31 16:41:52 +0200Dynom(~niels@80-114-12-206.cable.dynamic.v4.ziggo.nl) (*.net *.split)
2021-05-31 16:41:52 +0200werneta(~werneta@mobile-166-176-57-108.mycingular.net) (*.net *.split)
2021-05-31 16:41:52 +0200whaletechno(~whaletech@user/whaletechno) (*.net *.split)
2021-05-31 16:41:52 +0200farn(~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505) (*.net *.split)
2021-05-31 16:41:52 +0200np(znc@user/nerdypepper) (*.net *.split)
2021-05-31 16:42:05 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-05-31 16:43:19 +0200Dynom(~niels@80-114-12-206.cable.dynamic.v4.ziggo.nl)
2021-05-31 16:43:22 +0200 <tdammers> ixlun: there is a little itty bitty caveat, which is that recursive-descent parsers such as those you write in Parsec tend to perform worse than the kind of parsers you can build with bison/flex (or yacc/lex or whatever)
2021-05-31 16:43:44 +0200 <hpc> (or in haskell, alex/happy)
2021-05-31 16:43:45 +0200 <tdammers> though IMO the developer ergonomics you gain are almost always worth it
2021-05-31 16:43:46 +0200werneta(~werneta@mobile-166-176-57-108.mycingular.net)
2021-05-31 16:43:50 +0200 <tdammers> right, yeah
2021-05-31 16:44:02 +0200bfrk(~Thunderbi@200116b84534a60005aeadf137ee420f.dip.versatel-1u1.de)
2021-05-31 16:44:08 +0200 <jmcarthur> I'm asking because I'm trying to work out a notion of "thickness" in alpha compositing, and I want to try to find a reasonable algebraic structure for it. Alpha compositing is not commutative, but I am looking something module-like to talk about thickness.
2021-05-31 16:44:18 +0200nerdypepper(znc@152.67.162.71)
2021-05-31 16:45:19 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-05-31 16:46:12 +0200 <jmcarthur> e.g. A thicker layer will be less transparent than a thinner one of the same material. Layering two sheets of equal thickness should be the same as one sheet of twice the thickness.
2021-05-31 16:46:22 +0200 <ixlun> tdammers: Agreed, I suppose each use case is different but the gains I get with writing a parser in this way far outweighs the performance loss.
2021-05-31 16:46:36 +0200mnrmnaugh(~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) (Ping timeout: 268 seconds)
2021-05-31 16:46:51 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-05-31 16:46:55 +0200bfrk(~Thunderbi@200116b84534a60005aeadf137ee420f.dip.versatel-1u1.de) ()
2021-05-31 16:47:19 +0200 <tdammers> ixlun: absolutely. I generally use (mega-)parsec myself, all else being equal
2021-05-31 16:47:37 +0200cheater1__(~Username@user/cheater)
2021-05-31 16:47:47 +0200 <tdammers> frankly, I have yet to be in a situation where I can't get a recursive-descent parser to perform well enough for my needs. though those situations certainly do exist.
2021-05-31 16:47:51 +0200 <ixlun> One other question I've got. I've noticed that whenever I use (<|>), I almost always need to prefix the lhs with 'try' so that the rhs parser runs. Why doesn't (<|>) imply try on the lhs, or what is the case where you wouldn't want a try on the lhs?
2021-05-31 16:47:51 +0200cheater(~Username@user/cheater) (Ping timeout: 272 seconds)
2021-05-31 16:47:59 +0200cheater1__cheater
2021-05-31 16:48:45 +0200 <tdammers> excessive use of "try" leads to useless error messages
2021-05-31 16:49:03 +0200 <jmcarthur> FWIW, the need to use try is kind of a quirk (not necessarily a flaw) of Parsec. Not all parser combinator libraries require it.
2021-05-31 16:49:17 +0200 <tdammers> and it can also make parsers more difficult to debug, and lead to performance drains
2021-05-31 16:49:21 +0200kuribas``(~user@ptr-25vy0i7o5gw6tky01tr.18120a2.ip6.access.telenet.be)
2021-05-31 16:49:21 +0200AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net)
2021-05-31 16:49:21 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-05-31 16:49:21 +0200otto_s(~user@p5de2fbac.dip0.t-ipconnect.de)
2021-05-31 16:49:21 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-05-31 16:49:21 +0200farn(~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505)
2021-05-31 16:49:41 +0200 <tdammers> you should only wrap in "try" those parts of your parsers that you need to backtrack on in case they don't succeed
2021-05-31 16:50:18 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 268 seconds)
2021-05-31 16:50:24 +0200pavonia(~user@user/siracusa)
2021-05-31 16:50:43 +0200 <tdammers> for example, if you have a parser like string "{{" *> someExpression <* string "}}", then you don't want to wrap the whole thing in try, but rather just the first bit (the string "{{") part, because once you have seen a "{{", you are committed to parsing a {{ }} block
2021-05-31 16:50:44 +0200 <jmcarthur> You can sometimes avoid using try, or at least avoid backtracking really far, with some thoughtful refactoring.
2021-05-31 16:50:55 +0200 <jmcarthur> ^^ yeah like that
2021-05-31 16:52:22 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-05-31 16:52:28 +0200 <ixlun> Right, so 'try' gives you control over when to backtrack.
2021-05-31 16:52:32 +0200 <tdammers> megaparsec, unlike parsec, implicitly wraps more constructs in try, so you don't need to explicitly try very often, at least if your parser is structured somewhat nicely, and the grammar isn't insane
2021-05-31 16:52:43 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no) (Ping timeout: 272 seconds)
2021-05-31 16:53:08 +0200 <tdammers> yes. "try" means "if the argument fails, undo any consuming the argument may have done, and then fail"
2021-05-31 16:53:49 +0200 <ixlun> One thing that would be nice to see is if you could pass a set of megaparsec combinators to a program and it spits out the grammar for you. I know Bison gives you a really nice print out of your grammar in debug mode.
2021-05-31 16:54:00 +0200gehmehgeh(~user@user/gehmehgeh) (Remote host closed the connection)
2021-05-31 16:54:16 +0200 <tdammers> so, say you write a parser like so: string "hello" <|> string "world". And now you feed it the input "helo". The lhs is tried first, and it starts consuming things as long as they match: h, e, l, but then it sees "o" where it expects "l", and fails
2021-05-31 16:54:37 +0200 <tdammers> but at that point, it has already consumed 3 characters from the input, and that isn't undone as you head into the rhs of the <|>
2021-05-31 16:54:50 +0200gehmehgeh(~user@user/gehmehgeh)
2021-05-31 16:54:58 +0200 <tdammers> so the rhs now starts working on the remaining input, "o", instead of the whole thing, "helo", as it should have
2021-05-31 16:55:00 +0200mnrmnaugh(~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net)
2021-05-31 16:55:28 +0200 <jmcarthur> In order to spit out a grammar like that, the interface could not be monadic, at least not in the way parsec is. It's more plausible for a less powerful combinator library to do this, though.
2021-05-31 16:55:32 +0200 <tdammers> however, wrap the lhs in "try", and it will backtrack when it fails, rolling back to the input reading "helo", and the rhs operates on that
2021-05-31 16:56:33 +0200 <hpc> in other words, (string "hello" <|> string "world") will successfully parse "helworld"
2021-05-31 16:57:30 +0200 <jmcarthur> Hmm... maybe there are other problems with my semimodule idea. It's not clear to me that thickness*(a + b) should be the same as thickness*a + thickness*b.
2021-05-31 16:58:08 +0200 <ixlun> Ah interesting. so by not using 'try' you may parse inputs that you aren't expecting too
2021-05-31 16:58:52 +0200 <hpc> jmcarthur: think of it as sequencing operations, maybe?
2021-05-31 16:59:16 +0200notzmv(~zmv@user/notzmv)
2021-05-31 17:00:35 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no)
2021-05-31 17:00:38 +0200 <ski> % parse (string "hello" <|> string "world") "" "helworld"
2021-05-31 17:00:38 +0200 <yahb> ski: Left (line 1, column 1):; unexpected "w"; expecting "hello"
2021-05-31 17:00:58 +0200favonia(~favonia@user/favonia)
2021-05-31 17:01:11 +0200 <jmcarthur> hpc: If thickness was restricted to natural numbers, sure, and I could just stick with a monoid for the whole thing, but I am trying to come up with an approach that allows thicknesses to be nonnegative reals.
2021-05-31 17:01:28 +0200 <jmcarthur> My plan is to try to define that (*) operation, once I figure out what its properties should be.
2021-05-31 17:02:05 +0200cheater(~Username@user/cheater) (Ping timeout: 264 seconds)
2021-05-31 17:02:12 +0200cheater1__(~Username@user/cheater)
2021-05-31 17:02:14 +0200cheater1__cheater
2021-05-31 17:02:16 +0200 <jmcarthur> Maybe even negative reals if that happens to work out nicely, but it's not a requirement.
2021-05-31 17:02:39 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-05-31 17:05:05 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no) (Ping timeout: 264 seconds)
2021-05-31 17:06:07 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:7549:f26f:981e:10ae)
2021-05-31 17:06:56 +0200aditya(~aditya@106.212.79.20)
2021-05-31 17:06:58 +0200Shaeto(~Shaeto@94.25.234.55)
2021-05-31 17:08:12 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com)
2021-05-31 17:09:40 +0200nschoe(~quassel@178.251.84.79) (Remote host closed the connection)
2021-05-31 17:09:55 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-05-31 17:11:06 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:7549:f26f:981e:10ae) (Ping timeout: 264 seconds)
2021-05-31 17:12:54 +0200nschoe(~quassel@178.251.84.79)
2021-05-31 17:12:59 +0200chomwitt(~Pitsikoko@athedsl-20549.home.otenet.gr)
2021-05-31 17:13:52 +0200geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com) (Remote host closed the connection)
2021-05-31 17:14:17 +0200geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com)
2021-05-31 17:16:16 +0200Shaeto(~Shaeto@94.25.234.55) (Quit: WeeChat 3.1)
2021-05-31 17:16:35 +0200atwm(~andrew@178.197.235.239)
2021-05-31 17:18:33 +0200sh9(~sh9@softbank060116136158.bbtec.net) (Quit: WeeChat 3.0.1)
2021-05-31 17:21:48 +0200nschoe(~quassel@178.251.84.79) (Ping timeout: 244 seconds)
2021-05-31 17:22:35 +0200nschoe(~quassel@178.251.84.79)
2021-05-31 17:23:12 +0200aditya(~aditya@106.212.79.20) (Read error: Connection reset by peer)
2021-05-31 17:23:15 +0200 <jmcarthur> I think this stackoverflow question is basically about what I'm looking for https://mathoverflow.net/questions/208412/what-are-some-examples-of-non-commutative-mathbbq-monoid…
2021-05-31 17:23:44 +0200Shaeto(~Shaeto@94.25.234.55)
2021-05-31 17:24:59 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-05-31 17:25:56 +0200lbseale_(~lbseale@ip72-194-54-201.sb.sd.cox.net)
2021-05-31 17:26:19 +0200 <opqdonut> mmmmh... mathbbq
2021-05-31 17:26:41 +0200dunkeln(~dunkeln@94.129.65.28) (Ping timeout: 264 seconds)
2021-05-31 17:27:01 +0200holy_(~h01y_b4z0@2400:adc1:178:c800:9e45:76a9:57f2:1665)
2021-05-31 17:27:46 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no)
2021-05-31 17:27:51 +0200atwm(~andrew@178.197.235.239) (Quit: WeeChat 3.1)
2021-05-31 17:28:49 +0200sifu(~marek@219.244.200.146.dyn.plus.net) (Remote host closed the connection)
2021-05-31 17:29:06 +0200lbseale(~lbseale@ip72-194-54-201.sb.sd.cox.net) (Ping timeout: 264 seconds)
2021-05-31 17:29:31 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com)
2021-05-31 17:30:35 +0200argento(~argent0@168.227.96.53) (Ping timeout: 265 seconds)
2021-05-31 17:31:01 +0200xkapastel(uid17782@id-17782.tinside.irccloud.com)
2021-05-31 17:31:34 +0200brandonh(~brandonh@151.38.202.252) (Quit: brandonh)
2021-05-31 17:32:05 +0200nschoe(~quassel@178.251.84.79) (Ping timeout: 264 seconds)
2021-05-31 17:32:15 +0200nschoe(~quassel@2a04:cec0:118b:9ec7:c878:346:7ebb:d0f1)
2021-05-31 17:32:40 +0200boioioing(~boioioing@cpe-76-84-141-127.neb.res.rr.com)
2021-05-31 17:32:51 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no) (Ping timeout: 268 seconds)
2021-05-31 17:33:26 +0200dunkeln(~dunkeln@94.129.65.28)
2021-05-31 17:33:46 +0200pe200012_(~pe200012@120.236.162.14)
2021-05-31 17:33:46 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:7d39:eb90:ba7d:df66) (Ping timeout: 264 seconds)
2021-05-31 17:33:54 +0200pe200012(~pe200012@218.107.17.245) (Ping timeout: 264 seconds)
2021-05-31 17:35:11 +0200imdoor(~imdoor@balticom-142-78-50.balticom.lv)
2021-05-31 17:35:12 +0200rahguzar(~rahguzar@212.189.140.214) (Quit: Connection closed)
2021-05-31 17:35:18 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-05-31 17:35:35 +0200rahguzar(~rahguzar@212.189.140.214)
2021-05-31 17:36:18 +0200lbseale(~lbseale@ip72-194-54-201.sb.sd.cox.net)
2021-05-31 17:36:33 +0200lbseale_(~lbseale@ip72-194-54-201.sb.sd.cox.net) (Ping timeout: 268 seconds)
2021-05-31 17:39:54 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 264 seconds)
2021-05-31 17:40:28 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no)
2021-05-31 17:41:20 +0200boioioing(~boioioing@cpe-76-84-141-127.neb.res.rr.com) (Quit: Gorn... bye...)
2021-05-31 17:41:29 +0200holy_(~h01y_b4z0@2400:adc1:178:c800:9e45:76a9:57f2:1665) (Ping timeout: 268 seconds)
2021-05-31 17:41:54 +0200chddr(~Thunderbi@31.148.23.125)
2021-05-31 17:42:21 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-05-31 17:44:10 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-05-31 17:44:14 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:3866:f955:de69:46b2)
2021-05-31 17:44:33 +0200poljar1(~poljar@78-2-43-255.adsl.net.t-com.hr) (Remote host closed the connection)
2021-05-31 17:44:48 +0200bor0(~boro@77.28.64.72)
2021-05-31 17:44:57 +0200poljar1(~poljar@78-2-43-255.adsl.net.t-com.hr)
2021-05-31 17:45:18 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no) (Ping timeout: 264 seconds)
2021-05-31 17:45:29 +0200imdoor(~imdoor@balticom-142-78-50.balticom.lv) (Quit: imdoor)
2021-05-31 17:48:17 +0200boioioing(~boioioing@cpe-76-84-141-127.neb.res.rr.com)
2021-05-31 17:48:47 +0200 <bor0> Hi. I have a sort of mathematical question, but it has to do with my implementation of a number theory in Haskell. Suppose we have a formula `A = B` and a rule that converts `x = y` to `S x = S y`. Now, applying this rule to `A = B` makes sense, we get as output `S A = S B`. But, what about applying rules to subformulas? Are there any restrictions? E.g. applying `S x = S y` to `A = B` within `A = B /\ C = D`. My system is currently broken in that it can convert
2021-05-31 17:48:47 +0200 <bor0> a formula from `A=B /\ Exists B:(B=C)` to `A=B /\ B=C`, so likely I'm missing some restriction around bound variables or something. Happy to elaborate further on the question!
2021-05-31 17:49:05 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:3866:f955:de69:46b2) (Ping timeout: 272 seconds)
2021-05-31 17:49:51 +0200rahguzar(~rahguzar@212.189.140.214) (Quit: Connection closed)
2021-05-31 17:49:59 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-05-31 17:50:14 +0200 <river> > what about applying rules to subformulas? Are there any restrictions?
2021-05-31 17:50:15 +0200 <lambdabot> <hint>:1:70: error:
2021-05-31 17:50:15 +0200 <lambdabot> parse error (possibly incorrect indentation or mismatched brackets)
2021-05-31 17:50:31 +0200rahguzar(~rahguzar@212.189.140.214)
2021-05-31 17:50:34 +0200Shaeto(~Shaeto@94.25.234.55) (Quit: WeeChat 3.1)
2021-05-31 17:50:39 +0200 <river> a subformula can be defined as a context with a hole
2021-05-31 17:50:54 +0200 <river> and if x = y then C[x] = C[y]
2021-05-31 17:51:01 +0200 <river> so you can rewrite in subformulas
2021-05-31 17:51:18 +0200Shaeto(~Shaeto@94.25.234.55)
2021-05-31 17:51:40 +0200 <tomsmeding> are you asking how to do rewriting in general in terms with bound variables?
2021-05-31 17:51:46 +0200 <bor0> Yes!
2021-05-31 17:51:56 +0200 <tomsmeding> anything more specific would require knowledge about how you're representing things :p
2021-05-31 17:52:03 +0200 <ski> yes
2021-05-31 17:52:18 +0200 <tomsmeding> is this perhaps a case where you want capture-avoiding substitution? (that might be a good web-search term)
2021-05-31 17:52:51 +0200 <bor0> It's all in https://github.com/bor0/hoare-imp/blob/master/src, though I don't expect anyone to go through the 500 LoC to just answer my question :)
2021-05-31 17:52:55 +0200 <tomsmeding> i.e. if you're substituting a variable x with an expression E, then you are not allowed to substitute under a binder that binds x
2021-05-31 17:53:00 +0200 <ski> bor0 : how is it elimianting the existential, in that example ?
2021-05-31 17:53:43 +0200 <bor0> Hey ski! Basically it's the Path traversal function, if you recall. Right now it just ignores quantifiers https://github.com/bor0/hoare-imp/blob/master/src/TNT.hs#L66-L67 and I am sure that's the error
2021-05-31 17:54:02 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no)
2021-05-31 17:54:36 +0200 <bor0> Thanks, tomsmeding. That's helpful, I'll dig more into that
2021-05-31 17:54:40 +0200 <tomsmeding> what does FOL stand for?
2021-05-31 17:54:49 +0200 <bor0> "First-Order Logic"
2021-05-31 17:54:58 +0200 <tomsmeding> oh right
2021-05-31 17:54:59 +0200 <ski> you could have a rule that says that if `phi0' implies `phi1', and `psi0' implies `psi1', then `phi0 /\ psi0' implies `phi1 /\ psi1'
2021-05-31 17:55:33 +0200 <ski> (and ditto for other connectives)
2021-05-31 17:56:33 +0200 <bor0> So from GEB there was this restriction which kinda patched another similar issue - https://github.com/bor0/hoare-imp/blob/master/src/TNT.hs#L219. This is why I'm suspecting around bound variables. What you suggested might work, though it'd probably require a bigger refactor..
2021-05-31 17:57:14 +0200boioioing(~boioioing@cpe-76-84-141-127.neb.res.rr.com) (Quit: Gorn... bye...)
2021-05-31 17:57:52 +0200ku(~ku@2601:280:c780:7ea0:a15d:a611:c59d:5265)
2021-05-31 17:57:59 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-05-31 17:58:04 +0200 <tomsmeding> bor0: can you give an example call of that function applyFOLRule that goes wrong?
2021-05-31 17:58:19 +0200ku(~ku@2601:280:c780:7ea0:a15d:a611:c59d:5265) (Max SendQ exceeded)
2021-05-31 17:58:45 +0200prite(~pritam@user/pritambaral) (Ping timeout: 268 seconds)
2021-05-31 17:58:52 +0200ku(~ku@2601:280:c780:7ea0:a15d:a611:c59d:5265)
2021-05-31 17:58:55 +0200 <tomsmeding> to me it kind of looks like applyFOLRule in itself is quite fine, but it lays some restrictions on what Paths are fine
2021-05-31 17:59:05 +0200 <bor0> Sure: it's in https://github.com/bor0/hoare-imp/commit/d891212a5f7cbf26483f8051fab57e36ab6641f2
2021-05-31 17:59:37 +0200brandonh(~brandonh@151.38.151.222)
2021-05-31 17:59:41 +0200 <bor0> Though, e.g. `applyFOLRule [GoLeft] ruleAddS (A = B /\ C = D)` (pseudo-code) works fine - S A = S B /\ C = D
2021-05-31 17:59:53 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2021-05-31 17:59:56 +0200holy_(~h01y_b4z0@2400:adc1:178:c800:9e45:76a9:57f2:1665)
2021-05-31 18:00:08 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net)
2021-05-31 18:00:40 +0200 <bor0> So basically `applyFOLRule` within `applyFOLRule` easily exploits it
2021-05-31 18:00:53 +0200boioioing(~boioioing@cpe-76-84-141-127.neb.res.rr.com)
2021-05-31 18:01:11 +0200schuelermine(~anselmsch@ip5b409cba.dynamic.kabel-deutschland.de)
2021-05-31 18:01:12 +0200 <bor0> Or maybe the problem is `applyFOLRule` within `applyFOLRule` on the _same_ formula...
2021-05-31 18:02:00 +0200dunkeln(~dunkeln@94.129.65.28) (Ping timeout: 265 seconds)
2021-05-31 18:02:04 +0200boioioing(~boioioing@cpe-76-84-141-127.neb.res.rr.com) ()
2021-05-31 18:02:23 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 252 seconds)
2021-05-31 18:02:24 +0200 <tomsmeding> bor0: what does it even mean to have a path [GoLeft,GoRight] for a formula that has only one And?
2021-05-31 18:02:34 +0200hyiltiz(~quassel@31.220.5.250)
2021-05-31 18:03:21 +0200 <bor0> Here's the full definition of it: https://github.com/bor0/hoare-imp/blob/master/src/TNT.hs#L61-L76. In this case, it will just apply the function at the "bottom"
2021-05-31 18:03:39 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-05-31 18:04:00 +0200 <tomsmeding> that sounds like a convenience laxness that you'd not want in a logic system
2021-05-31 18:04:10 +0200 <tomsmeding> but maybe that's me :)
2021-05-31 18:04:47 +0200 <bor0> Yeah, I should make that stricter and make it return either an error or a proof like others
2021-05-31 18:05:30 +0200ku(~ku@2601:280:c780:7ea0:a15d:a611:c59d:5265) (Remote host closed the connection)
2021-05-31 18:05:56 +0200boioioing(~boioioing@cpe-76-84-141-127.neb.res.rr.com)
2021-05-31 18:05:59 +0200ku(~ku@2601:280:c780:7ea0:a15d:a611:c59d:5265)
2021-05-31 18:06:08 +0200dpl(~dpl@77-121-78-163.chn.volia.net) (Remote host closed the connection)
2021-05-31 18:06:09 +0200xkapastel(uid17782@id-17782.tinside.irccloud.com) (Quit: .)
2021-05-31 18:06:29 +0200dpl(~dpl@77-121-78-163.chn.volia.net)
2021-05-31 18:06:39 +0200prite(~pritam@user/pritambaral)
2021-05-31 18:06:49 +0200 <tomsmeding> yeah so in terms of logic, what's going wrong there is that you have a proof prfAeqB that claims A=B, and you're applying that under an 'exists B' binder
2021-05-31 18:06:58 +0200 <tomsmeding> which of course defines a different B
2021-05-31 18:07:16 +0200schuelermine(~anselmsch@ip5b409cba.dynamic.kabel-deutschland.de) (Quit: WeeChat 3.1)
2021-05-31 18:07:53 +0200 <tomsmeding> one different way to approach this might be to adopt a convention that bound variables never shadow a free variable
2021-05-31 18:07:55 +0200favonia(~favonia@user/favonia) (Quit: The Lounge - https://thelounge.chat)
2021-05-31 18:08:45 +0200zebrag(~chris@user/zebrag) (Remote host closed the connection)
2021-05-31 18:09:01 +0200 <tomsmeding> I believe that's called the Barendregt convention, but I may be mistaken
2021-05-31 18:09:22 +0200 <tomsmeding> as long as you always ensure that this is the case, you can rewrite freely and you'll never shadow anything
2021-05-31 18:09:30 +0200Ariakenom(~Ariakenom@2001:9b1:efb:fc00:84c1:f198:927e:8e8c)
2021-05-31 18:09:51 +0200 <tomsmeding> but I'm not sure if that's practical to achieve in your system
2021-05-31 18:10:53 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 244 seconds)
2021-05-31 18:10:56 +0200 <tomsmeding> bor0: this function that gets passed to applyFOLRule, does that really need to be a full Haskell function? Could it perhaps also be some kind of expression with a hole?
2021-05-31 18:11:23 +0200 <bor0> It's a full Haskell function, but limited to rule*. E.g. https://github.com/bor0/hoare-imp/blob/master/src/TNT.hs#L255
2021-05-31 18:11:24 +0200cheater(~Username@user/cheater) (Ping timeout: 244 seconds)
2021-05-31 18:11:46 +0200 <tomsmeding> if you could inspect that "function" inside applyFOLRule, then when you descend below a binder, you could check whether the bound variable name exists anywhere within the function, and if so, first rename the binder to something fresh
2021-05-31 18:11:59 +0200 <tomsmeding> but you can't look inside a Haskell function, so you can't currently do that
2021-05-31 18:12:03 +0200cheater(~Username@user/cheater)
2021-05-31 18:12:10 +0200Bartosz(~textual@24.35.90.211)
2021-05-31 18:12:34 +0200 <bor0> I'm okay to just error on it e.g. like https://github.com/bor0/hoare-imp/blob/master/src/TNT.hs#L237. But I am unsure about the condition on which to error...
2021-05-31 18:12:40 +0200 <tomsmeding> will the output of that function always be a single equality?
2021-05-31 18:13:10 +0200 <bor0> well you can applyFOLRule ruleSymmetry within A=B/\B=C/\D=E to get A=C/\D=E
2021-05-31 18:13:17 +0200 <bor0> This is the case where it works :)
2021-05-31 18:13:26 +0200 <tomsmeding> the condition is that the function f itself, without its parameter, contains a reference to a variable with the same name as the binder you're descending under in applyFOLRule
2021-05-31 18:13:38 +0200 <tomsmeding> but you can't currently check that criterion because Haskell function
2021-05-31 18:14:10 +0200 <tomsmeding> bor0: but then the output of 'f' (here ruleSymmetry) will still be a single equality, right?
2021-05-31 18:14:41 +0200 <tomsmeding> oh wait no it's more general
2021-05-31 18:15:32 +0200 <tomsmeding> bor0: am I at least kind of clear in what I mean when I say that f does or doesn't contain a reference to a variable? :p
2021-05-31 18:17:14 +0200 <tomsmeding> in the example from that commit, you're descending under a binder that binds B, but the function f is basically (\expr -> rewrite B to A in expr)
2021-05-31 18:17:41 +0200chddr(~Thunderbi@31.148.23.125) (Ping timeout: 264 seconds)
2021-05-31 18:17:48 +0200 <tomsmeding> so f mentions the free B, but the binder now shadows that B, hence the wrong answer
2021-05-31 18:18:14 +0200 <bor0> Yeah, right now `f` does not have any knowledge about variables. :)
2021-05-31 18:18:23 +0200 <bor0> It's just getting blindly applied
2021-05-31 18:19:29 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4) (Remote host closed the connection)
2021-05-31 18:19:44 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
2021-05-31 18:20:02 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-05-31 18:20:09 +0200jess(~jess@libera/staff/jess) ()
2021-05-31 18:20:24 +0200jess(~jess@libera/staff/jess)
2021-05-31 18:20:35 +0200o1lo01ol1o(~o1lo01ol1@cpe-74-72-45-166.nyc.res.rr.com)
2021-05-31 18:21:50 +0200 <tomsmeding> I wonder how much of your code would still work if your applyFOLRule gets reduced to taking a variable name A, an expression F, and an expression E, where it replaces all free occurrences of A with F in E
2021-05-31 18:22:18 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
2021-05-31 18:22:54 +0200 <tomsmeding> that's a well-understood function where you can easily check, when going under a binder for B in E, whether A=B (and if so, stop recursing), or if B is free in F (and if so, first rename the binder of B to a fresh variable, and then continue recursing)
2021-05-31 18:23:01 +0200 <tomsmeding> that's capture-avoiding substitution
2021-05-31 18:23:12 +0200 <tomsmeding> but it only works if you can inspect A and F
2021-05-31 18:24:13 +0200 <tomsmeding> alternative: use "partial De Bruijn" indices, which is a name I just thought up
2021-05-31 18:24:31 +0200 <tomsmeding> represent free variables like you do now, but use De Bruijn indices for all bound variables
2021-05-31 18:24:43 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4) (Ping timeout: 265 seconds)
2021-05-31 18:24:52 +0200 <tomsmeding> then you kind of automatically have to adhere to the Barendregt convention
2021-05-31 18:25:08 +0200 <bor0> Hey! I was working on this example and just when I was about to paste it I saw that you are actually hosting the pastebin, lol! <3
2021-05-31 18:25:20 +0200cootthe-coot
2021-05-31 18:25:30 +0200 <tomsmeding> working with De Bruijn indices does make some things quite a bit more difficult, but those are exactly the points where you should watch out with shadowing anyway :p
2021-05-31 18:25:33 +0200 <bor0> https://paste.tomsmeding.com/2MU96uol this is an answer to "but then the output of 'f' (here ruleSymmetry) will still be a single equality, right?"
2021-05-31 18:25:37 +0200 <tomsmeding> bor0: :)
2021-05-31 18:26:51 +0200 <bor0> I am okay with even a simpler solution - don't do any variable replacement, just crash when the programmer tries to prove something using it
2021-05-31 18:26:57 +0200geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com) (Remote host closed the connection)
2021-05-31 18:27:17 +0200geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com)
2021-05-31 18:27:22 +0200 <tomsmeding> but then you still have to detect the problem!
2021-05-31 18:27:28 +0200 <tomsmeding> and you need the same things for that
2021-05-31 18:27:43 +0200holy_(~h01y_b4z0@2400:adc1:178:c800:9e45:76a9:57f2:1665) (Ping timeout: 272 seconds)
2021-05-31 18:28:21 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no) (Ping timeout: 272 seconds)
2021-05-31 18:29:04 +0200 <tomsmeding> bor0: ok right good example, you really use the generality of a full Haskell function
2021-05-31 18:29:10 +0200 <bor0> I had similar problem with `ruleGeneralize`. The way I solved it was to accept a list of variables (in the premise): https://github.com/bor0/hoare-imp/blob/master/src/TNT.hs#L219-L225
2021-05-31 18:29:37 +0200rahguzar(~rahguzar@212.189.140.214) (Ping timeout: 272 seconds)
2021-05-31 18:29:38 +0200 <bor0> When we are not in a fantasy (within implication really) this is how we use it: https://github.com/bor0/hoare-imp/blob/fdb70a94a7e49ddff4e12c4096996f9c619a204c/examples/ExampleTN… When we are in a fantasy, we have to pass the premise `(Just premise)`. https://github.com/bor0/hoare-imp/blob/fdb70a94a7e49ddff4e12c4096996f9c619a204c/examples/ExampleTN…
2021-05-31 18:30:11 +0200 <ski> (why the `fromRight's in the example ?)
2021-05-31 18:30:42 +0200nschoe(~quassel@2a04:cec0:118b:9ec7:c878:346:7ebb:d0f1) (Remote host closed the connection)
2021-05-31 18:30:58 +0200 <bor0> It's a dirty hack to avoid nested `whenRight`s https://github.com/bor0/hoare-imp/blob/master/src/Common.hs#L6-L12
2021-05-31 18:31:56 +0200nschoe(~quassel@2a04:cec0:118b:9ec7:45a:fcee:e159:4f31)
2021-05-31 18:32:21 +0200 <tomsmeding> I'm not sure how to solve your problem in a nice way tbh; what I would do, probably, is encode the axioms of my logic in a data type instead of Haskell functions, and work with that
2021-05-31 18:32:32 +0200 <tomsmeding> hence ensuring you can always inspect everything
2021-05-31 18:32:38 +0200myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net) (Ping timeout: 252 seconds)
2021-05-31 18:32:40 +0200chomwitt(~Pitsikoko@athedsl-20549.home.otenet.gr) (Ping timeout: 268 seconds)
2021-05-31 18:32:45 +0200 <tomsmeding> you also get the ability to print out proofs that way :)
2021-05-31 18:33:05 +0200 <bor0> Ah! :) Yeah.. Proofs right now are just basically Haskell functions
2021-05-31 18:33:18 +0200 <bor0> I get to use all the fancy stuff like let = ... etc for free
2021-05-31 18:33:26 +0200 <tomsmeding> Maybe there's a way to ensure your implementation never goes wrong, but I think it's a very risky endeavour :)
2021-05-31 18:33:29 +0200 <bor0> But it seems it isn't really for free..
2021-05-31 18:33:36 +0200 <tomsmeding> yeah
2021-05-31 18:33:51 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-05-31 18:34:08 +0200 <tomsmeding> I have to go though; good luck :)
2021-05-31 18:34:35 +0200 <bor0> Thank you! Discussion was great. I will look into the bits you suggested earlier and see if it's easy to incorporate some of them with small refactors :)
2021-05-31 18:35:22 +0200whaletechho(~whaletech@user/whaletechno) (Quit: ha det bra)
2021-05-31 18:35:23 +0200myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net)
2021-05-31 18:36:53 +0200Topsi(~Tobias@dyndsl-095-033-095-132.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2021-05-31 18:36:59 +0200 <ski> bor0 : `whenRight' is called `(>>=)'
2021-05-31 18:37:29 +0200 <ski> @src Either (>>=)
2021-05-31 18:37:29 +0200 <lambdabot> Left l >>= _ = Left l
2021-05-31 18:37:29 +0200 <lambdabot> Right r >>= k = k r
2021-05-31 18:37:36 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no)
2021-05-31 18:38:05 +0200oxide(~lambda@user/oxide) (Ping timeout: 264 seconds)
2021-05-31 18:38:07 +0200 <bor0> Hah. I now need to rewrite all the examples! :D Thanks ski. That's definitely an improvement!
2021-05-31 18:39:18 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2021-05-31 18:39:24 +0200schuelermine(~anselmsch@user/schuelermine)
2021-05-31 18:39:38 +0200oxide(~lambda@user/oxide)
2021-05-31 18:40:30 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-05-31 18:40:48 +0200Jeanne-Kamikaze(~Jeanne-Ka@static-198-54-133-134.cust.tzulo.com)
2021-05-31 18:41:00 +0200 <ski> it seems like `applyFOLRule' should perhaps allow its callback to possibly fail .. if it's going to be an arbitrary (uninspectable) Haskell function
2021-05-31 18:41:53 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no) (Ping timeout: 244 seconds)
2021-05-31 18:45:19 +0200imdoor(~imdoor@balticom-142-78-50.balticom.lv)
2021-05-31 18:45:27 +0200notzmv(~zmv@user/notzmv) (Read error: Connection reset by peer)
2021-05-31 18:46:55 +0200 <kuribas``> Why does cassava have so crappy error handling?
2021-05-31 18:46:56 +0200 <bor0> What if `go` keeps track of the bound variables, and if one of those appear in `x` within https://github.com/bor0/hoare-imp/blob/master/src/TNT.hs#L65 then just error?
2021-05-31 18:47:03 +0200Bartosz(~textual@24.35.90.211) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-05-31 18:47:41 +0200 <bor0> That's probably too strict...
2021-05-31 18:48:12 +0200Deide(~Deide@wire.desu.ga)
2021-05-31 18:48:12 +0200Deide(~Deide@wire.desu.ga) (Changing host)
2021-05-31 18:48:12 +0200Deide(~Deide@user/deide)
2021-05-31 18:50:18 +0200igghibu(~igghibu@37.120.201.126) (Quit: Textual IRC Client: www.textualapp.com)
2021-05-31 18:50:22 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-05-31 18:51:10 +0200the-coot(~coot@37.30.49.19.nat.umts.dynamic.t-mobile.pl) (Quit: the-coot)
2021-05-31 18:51:11 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no)
2021-05-31 18:51:13 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2021-05-31 18:52:41 +0200mononote(~mononote@user/mononote)
2021-05-31 18:55:19 +0200rahguzar(~rahguzar@dynamic-adsl-84-220-228-254.clienti.tiscali.it)
2021-05-31 18:56:05 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no) (Ping timeout: 264 seconds)
2021-05-31 18:58:20 +0200mononote(~mononote@user/mononote) (Quit: Quit)
2021-05-31 18:58:47 +0200brandonh(~brandonh@151.38.151.222) (Read error: Connection reset by peer)
2021-05-31 18:59:15 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no)
2021-05-31 19:01:29 +0200sciencentistguy(~sciencent@194.110.13.3) (Ping timeout: 264 seconds)
2021-05-31 19:02:25 +0200 <ski> bor0 : fwiw, i dunno why "Using `applyFOLRule` within `applyFOLRule` is not allowed."
2021-05-31 19:02:45 +0200 <bor0> It's a temporary patch to avoid this error :)
2021-05-31 19:02:58 +0200 <ski> it seems to me it would naturally satisfy a distributive law
2021-05-31 19:03:01 +0200 <bor0> (Until I/we get it right xD)
2021-05-31 19:03:17 +0200 <dminuoso> kuribas``: No idea, but it's a recurring theme.
2021-05-31 19:03:23 +0200 <dminuoso> Perhaps you can help and improve it?
2021-05-31 19:03:56 +0200 <kuribas``> dminuoso: if they don't mind breaking changes...
2021-05-31 19:04:08 +0200shiraeeshi(~shiraeesh@109.166.59.30)
2021-05-31 19:04:26 +0200 <ski> bor0 : a minor thing, there's no need to pass `f' as a parameter to `go'
2021-05-31 19:04:43 +0200 <ski> (since it never changes)
2021-05-31 19:04:58 +0200bfrk(~Thunderbi@200116b84534a60005aeadf137ee420f.dip.versatel-1u1.de)
2021-05-31 19:05:00 +0200 <kuribas``> dminuoso: for example, FromNamedRecord returning a structured error, with column and row information
2021-05-31 19:05:17 +0200 <dminuoso> kuribas``: I suspect the poor diagnostics is from ruthless usage of attoparsec. :-)
2021-05-31 19:05:34 +0200 <ski> (you will need `ScopedTypeVariables' to have a type signature on `go', though, if you go for that)
2021-05-31 19:06:00 +0200 <kuribas``> dminuoso: that could be it...
2021-05-31 19:06:46 +0200nschoe(~quassel@2a04:cec0:118b:9ec7:45a:fcee:e159:4f31) (Ping timeout: 265 seconds)
2021-05-31 19:07:19 +0200econo(uid147250@user/econo)
2021-05-31 19:07:22 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 264 seconds)
2021-05-31 19:08:02 +0200 <ski> bor0 : where's `PropCalc' and `FOL' (and `Arith') defined ?
2021-05-31 19:08:26 +0200cheater(~Username@user/cheater) (Ping timeout: 268 seconds)
2021-05-31 19:08:29 +0200dpl_(~dpl@77-121-78-163.chn.volia.net)
2021-05-31 19:08:30 +0200 <bor0> https://github.com/bor0/hoare-imp/blob/master/src/Gentzen.hs and https://github.com/bor0/hoare-imp/blob/master/src/TNT.hs
2021-05-31 19:08:40 +0200cheater(~Username@user/cheater)
2021-05-31 19:08:44 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-05-31 19:09:15 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-05-31 19:09:18 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-05-31 19:09:25 +0200 <dminuoso> kuribas``: Realistically the only thing you can do in attoparsec, is decorate stuff with (<?>)
2021-05-31 19:09:56 +0200notzmv(~zmv@user/notzmv)
2021-05-31 19:09:59 +0200 <kuribas``> dminuoso: still, adding column and row info seems very doable...
2021-05-31 19:10:16 +0200 <kuribas``> dminuoso: as attoparsec only needs to split the rows into columns.
2021-05-31 19:10:32 +0200peach(sid482179@id-482179.charlton.irccloud.com)
2021-05-31 19:10:46 +0200 <dminuoso> kuribas``: column/row info?
2021-05-31 19:10:55 +0200 <dminuoso> How can you even track that?
2021-05-31 19:11:12 +0200 <dminuoso> This is not megaparsec where you can add some monadic state
2021-05-31 19:11:31 +0200dpl(~dpl@77-121-78-163.chn.volia.net) (Ping timeout: 268 seconds)
2021-05-31 19:11:48 +0200 <kuribas``> dminuoso: parse in two steps, step one is split row into fields
2021-05-31 19:11:54 +0200 <kuribas``> as a list
2021-05-31 19:11:58 +0200 <bor0> ski, Interestingly, applyPropRule doesn't seem to have the same defect https://github.com/bor0/hoare-imp/blob/master/src/Gentzen.hs#L31. Likely because it doesn't have any support for quantifiers
2021-05-31 19:12:01 +0200 <kuribas``> then parse each list
2021-05-31 19:12:03 +0200brandonh(~brandonh@151.38.139.116)
2021-05-31 19:12:06 +0200 <kuribas``> list element
2021-05-31 19:12:21 +0200 <dminuoso> kuribas``: I suspect this drastically impact performance
2021-05-31 19:12:35 +0200 <dminuoso> Since you'd be running many tiny attoparsec parsers for each row
2021-05-31 19:12:55 +0200 <kuribas``> I would care more about good errors than blazing performance
2021-05-31 19:13:53 +0200 <dminuoso> Then your goals are incompatible with cassavas goal, which strives to be competitive with pythons 'cvs'
2021-05-31 19:13:55 +0200 <dminuoso> *csv
2021-05-31 19:14:45 +0200 <dminuoso> kuribas``: What one could do, is rework `cassava` to work with `parsers` perhaps, so you can re-parse with trifecta and generate better error messages?
2021-05-31 19:14:51 +0200 <dminuoso> Im not sure how viable this is, though.
2021-05-31 19:15:25 +0200 <kuribas``> I suppose I could parse into (Vector (Vector ByteString)), then use my own parser ByteString -> a
2021-05-31 19:15:38 +0200 <kuribas``> that would not be so hard to implement
2021-05-31 19:15:47 +0200imdoor(~imdoor@balticom-142-78-50.balticom.lv) (Quit: imdoor)
2021-05-31 19:15:50 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-05-31 19:16:26 +0200nerdypepper(znc@152.67.162.71) (Changing host)
2021-05-31 19:16:26 +0200nerdypepper(znc@user/nerdypepper)
2021-05-31 19:17:24 +0200shiraeeshi(~shiraeesh@109.166.59.30) (Ping timeout: 265 seconds)
2021-05-31 19:17:40 +0200danidiaz(~ESDPC@148.3.54.112) (Quit: Leaving.)
2021-05-31 19:18:53 +0200werneta(~werneta@mobile-166-176-57-108.mycingular.net) (Ping timeout: 264 seconds)
2021-05-31 19:18:54 +0200ikex(~ash@user/ikex) (Ping timeout: 264 seconds)
2021-05-31 19:19:32 +0200bfrk(~Thunderbi@200116b84534a60005aeadf137ee420f.dip.versatel-1u1.de) (Ping timeout: 268 seconds)
2021-05-31 19:20:27 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-05-31 19:21:26 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-05-31 19:22:14 +0200AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) (Quit: Leaving.)
2021-05-31 19:22:48 +0200Megant_Megant
2021-05-31 19:23:17 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-05-31 19:24:40 +0200 <kuribas``> dminuoso: maybe megaparsec is a better parser for such a case?
2021-05-31 19:25:26 +0200 <kuribas``> "Attoparsec is sometimes faster but not that feature-rich. It should be used when you want to process large amounts of data where performance matters more than quality of error messages."
2021-05-31 19:28:06 +0200Guest8311(~Guest83@187.83.249.216.dyn.smithville.net)
2021-05-31 19:28:55 +0200wonko(~wjc@62.115.229.50)
2021-05-31 19:29:13 +0200shiraeeshi(~shiraeesh@109.166.59.30)
2021-05-31 19:29:57 +0200chomwitt(~Pitsikoko@athedsl-20549.home.otenet.gr)
2021-05-31 19:31:23 +0200lavaman(~lavaman@98.38.249.169)
2021-05-31 19:34:00 +0200 <nshepperd> I don't think I've ever used cassava's fancy record parsing. i always parse a vector of vectors of text then convert
2021-05-31 19:34:08 +0200AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net)
2021-05-31 19:34:52 +0200 <nshepperd> or Vector (Map Text Text) when i want named columns
2021-05-31 19:35:19 +0200dminuosouses the record parsing
2021-05-31 19:35:37 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 244 seconds)
2021-05-31 19:37:25 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-05-31 19:39:43 +0200pbrisbin(~patrick@pool-72-92-38-164.phlapa.fios.verizon.net)
2021-05-31 19:41:59 +0200 <johnw> I use megaparsec for all my parsing needs these days; it's quite good
2021-05-31 19:42:58 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 268 seconds)
2021-05-31 19:43:18 +0200 <Hecate> idem
2021-05-31 19:43:35 +0200wenzel(~wenzel@user/wenzel)
2021-05-31 19:44:37 +0200waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
2021-05-31 19:44:44 +0200UpstreamSalmon(uid12077@id-12077.stonehaven.irccloud.com)
2021-05-31 19:45:13 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-05-31 19:45:27 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:3866:f955:de69:46b2)
2021-05-31 19:45:47 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-05-31 19:48:09 +0200shryke(~shryke@91.103.43.254) (Ping timeout: 272 seconds)
2021-05-31 19:50:06 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:3866:f955:de69:46b2) (Ping timeout: 264 seconds)
2021-05-31 19:50:11 +0200neceve(~quassel@2a02:c7f:607e:d600:a95a:ecd2:e57a:3130) (Ping timeout: 252 seconds)
2021-05-31 19:50:20 +0200ddellacosta(~ddellacos@86.106.143.131)
2021-05-31 19:50:27 +0200solomon(~solomon@165.227.48.175)
2021-05-31 19:51:47 +0200 <kuribas``> nshepperd: I'll do that then
2021-05-31 19:53:15 +0200dunkeln(~dunkeln@94.129.65.28)
2021-05-31 19:56:29 +0200jneira(~jneira@166.red-81-39-172.dynamicip.rima-tde.net) (Quit: Connection closed)
2021-05-31 19:57:33 +0200vicfred(~vicfred@user/vicfred)
2021-05-31 20:01:16 +0200kuribas``(~user@ptr-25vy0i7o5gw6tky01tr.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-05-31 20:04:33 +0200myShoggoth(~myShoggot@97-120-89-117.ptld.qwest.net) (Ping timeout: 268 seconds)
2021-05-31 20:05:00 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-05-31 20:06:02 +0200argento(~argent0@168.227.96.53)
2021-05-31 20:06:54 +0200dunkeln(~dunkeln@94.129.65.28) (Ping timeout: 264 seconds)
2021-05-31 20:10:59 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-05-31 20:11:03 +0200dunkeln(~dunkeln@94.129.65.28)
2021-05-31 20:12:30 +0200 <johnw> hmmm.. i'll have to look into the fancy record parsing; I'm using vectors of vectors of text right now, but end up needing to convert most of it anyway
2021-05-31 20:12:36 +0200 <johnw> just found https://hackage.haskell.org/package/tapioca
2021-05-31 20:13:01 +0200danidiaz(~ESDPC@148.3.54.112)
2021-05-31 20:13:51 +0200pbrisbin(~patrick@pool-72-92-38-164.phlapa.fios.verizon.net) (Ping timeout: 244 seconds)
2021-05-31 20:14:28 +0200Shaeto_(~Shaeto@94.25.234.213)
2021-05-31 20:15:39 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 268 seconds)
2021-05-31 20:16:02 +0200dunkeln(~dunkeln@94.129.65.28) (Quit: leaving)
2021-05-31 20:16:48 +0200Sgeo(~Sgeo@user/sgeo)
2021-05-31 20:17:06 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2021-05-31 20:17:27 +0200AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) (Quit: Leaving.)
2021-05-31 20:17:29 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:3866:f955:de69:46b2)
2021-05-31 20:17:55 +0200Shaeto(~Shaeto@94.25.234.55) (Ping timeout: 272 seconds)
2021-05-31 20:19:02 +0200 <johnw> although the latter doesn't seem to be much better than the Generic stuff in cassava itself
2021-05-31 20:19:21 +0200cheater(~Username@user/cheater) (Ping timeout: 268 seconds)
2021-05-31 20:19:30 +0200cheater(~Username@user/cheater)
2021-05-31 20:19:43 +0200megaTherion(~therion@unix.io)
2021-05-31 20:19:48 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-05-31 20:19:49 +0200dyeplexer(~dyeplexer@user/dyeplexer) (Remote host closed the connection)
2021-05-31 20:20:42 +0200ixlun(~user@109.249.184.235) (Read error: Connection reset by peer)
2021-05-31 20:20:55 +0200ixlun(~user@109.249.184.235)
2021-05-31 20:21:57 +0200bor0(~boro@77.28.64.72) (Quit: This computer has gone to sleep)
2021-05-31 20:26:00 +0200ddellacosta(~ddellacos@86.106.143.131) (Remote host closed the connection)
2021-05-31 20:26:10 +0200ddellacosta(~ddellacos@86.106.143.131)
2021-05-31 20:27:38 +0200ubikium(~ubikium@2400:2200:4f2:4b71:94bf:c634:be62:7c0d) (Read error: Connection reset by peer)
2021-05-31 20:27:53 +0200ubikium(~ubikium@113x43x248x70.ap113.ftth.arteria-hikari.net)
2021-05-31 20:28:43 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-05-31 20:30:31 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-05-31 20:30:57 +0200pbrisbin(~patrick@pool-72-92-38-164.phlapa.fios.verizon.net)
2021-05-31 20:31:15 +0200favonia(~favonia@user/favonia)
2021-05-31 20:33:53 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2021-05-31 20:34:29 +0200favonia(~favonia@user/favonia) (Client Quit)
2021-05-31 20:35:17 +0200favonia(~favonia@user/favonia)
2021-05-31 20:37:21 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-05-31 20:37:24 +0200newtoliberachat2(~xyz@1.39.167.172)
2021-05-31 20:38:14 +0200favonia(~favonia@user/favonia) (Client Quit)
2021-05-31 20:38:15 +0200holy_(~h01y_b4z0@2400:adc1:178:c800:9e45:76a9:57f2:1665)
2021-05-31 20:39:33 +0200newtoliberachat2(~xyz@1.39.167.172) ()
2021-05-31 20:43:21 +0200brandonh(~brandonh@151.38.139.116) (Quit: brandonh)
2021-05-31 20:45:26 +0200solomon(~solomon@165.227.48.175) (Ping timeout: 250 seconds)
2021-05-31 20:48:16 +0200Erutuon(~Erutuon@71-34-10-193.mpls.qwest.net)
2021-05-31 20:54:31 +0200 <maerwald> johnw: heh, my former work colleague wrote it... it's less boilerplate
2021-05-31 20:55:57 +0200favonia(~favonia@user/favonia)
2021-05-31 20:56:11 +0200Guest81(~Guest81@040-194-158-163.dynamic.caiway.nl)
2021-05-31 20:56:29 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2021-05-31 20:56:42 +0200 <Guest81> Question, are Haskell `Functor`s, "positive" functors?
2021-05-31 20:57:03 +0200 <monochrom> Yes. covariant.
2021-05-31 20:57:04 +0200favonia(~favonia@user/favonia) (Client Quit)
2021-05-31 20:57:18 +0200 <Guest81> But not strictly-positive
2021-05-31 20:57:40 +0200 <Guest81> positive and covariant are the same thing?
2021-05-31 20:57:45 +0200 <monochrom> I don't know what that is.
2021-05-31 20:58:21 +0200__monty__(~toonn@user/toonn)
2021-05-31 20:58:39 +0200pbrisbin(~patrick@pool-72-92-38-164.phlapa.fios.verizon.net) (Ping timeout: 272 seconds)
2021-05-31 20:58:48 +0200favonia(~favonia@user/favonia)
2021-05-31 20:59:08 +0200 <monochrom> Since you put "positive" in quotes I take it that you acknowledge you only have a feeling not a rigorous definition so I filled in the closest widely-known rigorous definition which is covariant.
2021-05-31 20:59:50 +0200hololeap(~hololeap@user/hololeap) (Read error: Connection reset by peer)
2021-05-31 21:00:50 +0200favonia(~favonia@user/favonia) (Client Quit)
2021-05-31 21:01:34 +0200favonia(~favonia@user/favonia)
2021-05-31 21:01:37 +0200cheater(~Username@user/cheater) (Ping timeout: 272 seconds)
2021-05-31 21:01:46 +0200schuelermine(~anselmsch@user/schuelermine) (Quit: WeeChat 3.1)
2021-05-31 21:01:49 +0200cheater(~Username@user/cheater)
2021-05-31 21:01:52 +0200 <Guest81> I see
2021-05-31 21:05:38 +0200eggplant_(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-05-31 21:05:45 +0200favonia(~favonia@user/favonia) (Client Quit)
2021-05-31 21:06:13 +0200boioioing(~boioioing@cpe-76-84-141-127.neb.res.rr.com) (Ping timeout: 268 seconds)
2021-05-31 21:06:20 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-05-31 21:07:03 +0200favonia(~favonia@user/favonia)
2021-05-31 21:07:49 +0200chaosite(~chaosite@user/chaosite)
2021-05-31 21:08:06 +0200zebrag(~chris@user/zebrag)
2021-05-31 21:09:13 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:3866:f955:de69:46b2) (Ping timeout: 272 seconds)
2021-05-31 21:11:10 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-05-31 21:12:47 +0200eightball(~eight@86.106.121.164)
2021-05-31 21:13:27 +0200favonia(~favonia@user/favonia) (Quit: The Lounge - https://thelounge.chat)
2021-05-31 21:17:50 +0200favonia(~favonia@user/favonia)
2021-05-31 21:21:49 +0200 <dmj`> Guest81: positive just means the type variable is in the codomain (input / arg), negative means its in the domain (output / return type)
2021-05-31 21:21:51 +0200sedeki(~textual@user/sedeki)
2021-05-31 21:21:56 +0200 <dmj`> :t fmap
2021-05-31 21:21:57 +0200 <lambdabot> Functor f => (a -> b) -> f a -> f b
2021-05-31 21:21:58 +0200 <dmj`> :t contramap
2021-05-31 21:21:59 +0200 <lambdabot> Contravariant f => (a -> b) -> f b -> f a
2021-05-31 21:22:24 +0200 <dmj`> er, I flipped them, positive is output, negative is input
2021-05-31 21:22:28 +0200favonia(~favonia@user/favonia) (Client Quit)
2021-05-31 21:23:24 +0200favonia(~favonia@user/favonia)
2021-05-31 21:25:53 +0200boioioing(~boioioing@cpe-76-84-141-127.neb.res.rr.com)
2021-05-31 21:26:34 +0200nerdypepper(znc@user/nerdypepper) (Ping timeout: 268 seconds)
2021-05-31 21:27:25 +0200rahguzar(~rahguzar@dynamic-adsl-84-220-228-254.clienti.tiscali.it) (Ping timeout: 265 seconds)
2021-05-31 21:27:59 +0200nerdypepper(znc@152.67.162.71)
2021-05-31 21:28:39 +0200nfnii
2021-05-31 21:28:54 +0200Guest8311(~Guest83@187.83.249.216.dyn.smithville.net) (Quit: Client closed)
2021-05-31 21:29:01 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-05-31 21:30:10 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Client Quit)
2021-05-31 21:30:52 +0200niinf
2021-05-31 21:31:06 +0200eggplant_(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-05-31 21:31:37 +0200chaosite(~chaosite@user/chaosite) (Read error: Connection reset by peer)
2021-05-31 21:32:32 +0200 <dmwit> That's... sort of right.
2021-05-31 21:32:34 +0200Jeanne-Kamikaze(~Jeanne-Ka@static-198-54-133-134.cust.tzulo.com) (Ping timeout: 264 seconds)
2021-05-31 21:32:37 +0200 <dmwit> And sort of not.
2021-05-31 21:32:37 +0200jneira(~jneira@166.red-81-39-172.dynamicip.rima-tde.net)
2021-05-31 21:33:03 +0200 <dmwit> I have some writing on positive vs. negative here: https://stackoverflow.com/a/9243982/791604
2021-05-31 21:33:23 +0200schuelermine(~schuelerm@user/schuelermine)
2021-05-31 21:33:28 +0200 <dmwit> (There's some other stuff about MonadIO in there that you can ignore.)
2021-05-31 21:33:46 +0200 <schuelermine> hi
2021-05-31 21:36:51 +0200 <schuelermine> one thing that baffles me about Haskell's design is why the syntax sugar for enumFromTo isn't an infix operator
2021-05-31 21:37:03 +0200 <schuelermine> why isn't (..) just an alias for it
2021-05-31 21:37:14 +0200 <schuelermine> Why is it [a..b]?
2021-05-31 21:37:17 +0200holy_(~h01y_b4z0@2400:adc1:178:c800:9e45:76a9:57f2:1665) (Ping timeout: 272 seconds)
2021-05-31 21:37:35 +0200shapr(~user@pool-108-28-144-11.washdc.fios.verizon.net)
2021-05-31 21:37:53 +0200 <ski> how to do `enumFromThenTo', then ?
2021-05-31 21:38:08 +0200 <ski> (and `enumFromThen')
2021-05-31 21:38:10 +0200 <schuelermine> you could even make
2021-05-31 21:38:10 +0200 <schuelermine> (x1, x2) ... xi = enumFromThenTo x1 x2 xi
2021-05-31 21:38:28 +0200 <cdsmith> schuelermine: It sort of fits into a bunch of other sugar around list comprehensions, lists with step, etc. There may be a simpler for that one case, but it would stick out from the rest
2021-05-31 21:38:40 +0200 <schuelermine> true
2021-05-31 21:39:16 +0200skiidly notes `@undo' doesn't undo enumerations
2021-05-31 21:40:12 +0200brandonh(~brandonh@151.38.169.228)
2021-05-31 21:41:33 +0200danidiaz(~ESDPC@148.3.54.112) (Quit: Leaving.)
2021-05-31 21:41:34 +0200 <monochrom> "x .. y" being sometimes enumFromTo and some other times enumFromThenTo, depending on the type of x, is very complicating to implement.
2021-05-31 21:42:07 +0200 <schuelermine> monochrom my suggestion had three dots for enumFromThenTo
2021-05-31 21:42:08 +0200 <ski> i suppose mixfix could possibly do it
2021-05-31 21:42:16 +0200 <monochrom> Fine.
2021-05-31 21:42:19 +0200 <monochrom> "x ... y" being sometimes enumFromTo and some other times enumFromThenTo, depending on the type of x, is very complicating to implement.
2021-05-31 21:42:43 +0200 <ski> heh
2021-05-31 21:42:46 +0200cheater(~Username@user/cheater) (Ping timeout: 264 seconds)
2021-05-31 21:42:52 +0200 <schuelermine> No, .. vs ... distinguishes them
2021-05-31 21:42:59 +0200 <monochrom> Ah sorry.
2021-05-31 21:43:03 +0200cheater(~Username@user/cheater)
2021-05-31 21:43:25 +0200 <ski> any corresponding suggestion for `enumFrom' and `enumFromThen' ?
2021-05-31 21:43:29 +0200 <schuelermine> no
2021-05-31 21:44:23 +0200dmj`reads dmwit's SO post
2021-05-31 21:44:42 +0200 <monochrom> I don't care either way, but my impression is that more people like [x .. y] and [x, x2 .. y]
2021-05-31 21:45:10 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-05-31 21:45:50 +0200 <monochrom> As for the real "why", some committee wanted it this way, and they had the final say.
2021-05-31 21:46:35 +0200 <c_wraith> the committee got the Enum instance for Float and Double completely wrong, though. There were two useful things it could have done, they chose neither.
2021-05-31 21:47:07 +0200 <monochrom> In fact my recollection is that they had this exact rule against spending infinite time on syntax hairsplitting: on syntactic matters, the first proposal passes automatically.
2021-05-31 21:47:23 +0200Guest81(~Guest81@040-194-158-163.dynamic.caiway.nl) (Quit: Client closed)
2021-05-31 21:47:36 +0200 <monochrom> So yes it is supposed to be arbitary.
2021-05-31 21:47:49 +0200sedeki(~textual@user/sedeki) (Quit: Textual IRC Client: www.textualapp.com)
2021-05-31 21:49:40 +0200 <monochrom> Where is the Wadler quote about "programmers spend all days picking on syntax and no time thinking about semantics"?
2021-05-31 21:50:05 +0200 <monochrom> Anyway one more data point for that.
2021-05-31 21:50:16 +0200 <yushyin> https://wiki.haskell.org/Wadler%27s_Law ?
2021-05-31 21:50:30 +0200chaosite(~chaosite@user/chaosite)
2021-05-31 21:51:00 +0200 <monochrom> Yeah that thanks :)
2021-05-31 21:52:07 +0200 <monochrom> I need to bookmark it so next time it is my answer to every syntactic why question.
2021-05-31 21:52:20 +0200 <monochrom> To bad there isn't one for library why question.
2021-05-31 21:52:32 +0200 <monochrom> But really the same nature.
2021-05-31 21:52:52 +0200GIANTWORLDKEEPER(~pjetcetal@2.95.204.25)
2021-05-31 21:53:07 +0200 <yushyin> you can see that law in actions in various ghc proposal threads :D
2021-05-31 21:53:50 +0200 <monochrom> Very encouraging to those who have high hopes for human nature.
2021-05-31 21:54:30 +0200UpstreamSalmon(uid12077@id-12077.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-05-31 21:55:16 +0200Jeanne-Kamikaze(~Jeanne-Ka@static-198-54-133-102.cust.tzulo.com)
2021-05-31 21:55:48 +0200 <Las[m]> I'm trying to build a project that depends on haskell-src-exts with cabal, and I get this odd error: cabal: The program 'happy' version >=1.19 is required but the version of <path>/bin/happy could not be determined.
2021-05-31 21:55:54 +0200mjs2600_(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2021-05-31 21:55:58 +0200 <Las[m]> The file is there, and it works fine, I'm not sure why this happens
2021-05-31 21:56:12 +0200 <Las[m]> in the path it says happy-1.20.0 too
2021-05-31 21:57:21 +0200 <dmj`> Las[m]: can you paste your build output, but turn on verbosity (-v)
2021-05-31 21:58:35 +0200 <Las[m]> Thanks, will do, waiting for it to give me the error again
2021-05-31 21:59:45 +0200shiraeeshi(~shiraeesh@109.166.59.30) (Remote host closed the connection)
2021-05-31 21:59:57 +0200geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com) (Remote host closed the connection)
2021-05-31 22:00:38 +0200mjs2600_(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
2021-05-31 22:01:19 +0200wonko(~wjc@62.115.229.50) (Ping timeout: 244 seconds)
2021-05-31 22:04:48 +0200geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com)
2021-05-31 22:05:25 +0200Guest3(~Guest3@187.83.249.216.dyn.smithville.net)
2021-05-31 22:05:58 +0200pavonia(~user@user/siracusa) (Read error: Connection reset by peer)
2021-05-31 22:06:25 +0200Guest3(~Guest3@187.83.249.216.dyn.smithville.net) (Client Quit)
2021-05-31 22:12:20 +0200pavonia(~user@user/siracusa)
2021-05-31 22:17:20 +0200beka(~beka@104.193.170-254.PUBLIC.monkeybrains.net)
2021-05-31 22:17:43 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-05-31 22:19:27 +0200mc47(~yecinem@89.246.239.190) (Read error: Connection reset by peer)
2021-05-31 22:20:31 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:5878:fcfd:e07b:ffd9)
2021-05-31 22:20:42 +0200ixlun(~user@109.249.184.235) (Read error: Connection reset by peer)
2021-05-31 22:20:50 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.1)
2021-05-31 22:21:33 +0200ixlun(~user@109.249.184.235)
2021-05-31 22:21:50 +0200Dynom(~niels@80-114-12-206.cable.dynamic.v4.ziggo.nl) (Quit: WeeChat 3.1)
2021-05-31 22:22:41 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-05-31 22:25:21 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-05-31 22:26:08 +0200ddellacosta(~ddellacos@86.106.143.131) (Remote host closed the connection)
2021-05-31 22:28:09 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-05-31 22:29:31 +0200beka(~beka@104.193.170-254.PUBLIC.monkeybrains.net) (Remote host closed the connection)
2021-05-31 22:31:03 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2021-05-31 22:31:58 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-05-31 22:32:00 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Client Quit)
2021-05-31 22:35:05 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 264 seconds)
2021-05-31 22:35:21 +0200chomwitt(~Pitsikoko@athedsl-20549.home.otenet.gr) (Ping timeout: 272 seconds)
2021-05-31 22:37:35 +0200ixlun`(~user@109.249.184.235)
2021-05-31 22:38:46 +0200ixlun`(~user@109.249.184.235) (Client Quit)
2021-05-31 22:39:40 +0200favonia(~favonia@user/favonia) (Quit: The Lounge - https://thelounge.chat)
2021-05-31 22:40:55 +0200favonia(~favonia@user/favonia)
2021-05-31 22:41:07 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:5878:fcfd:e07b:ffd9) (Remote host closed the connection)
2021-05-31 22:41:14 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 252 seconds)
2021-05-31 22:42:29 +0200brandonh(~brandonh@151.38.169.228) (Quit: brandonh)
2021-05-31 22:45:22 +0200pe200012(~pe200012@119.131.208.84)
2021-05-31 22:45:40 +0200tonyz(~tonyz@user/tonyz)
2021-05-31 22:45:43 +0200pe200012_(~pe200012@120.236.162.14) (Ping timeout: 265 seconds)
2021-05-31 22:46:20 +0200rahguzar(~rahguzar@dynamic-adsl-84-220-228-254.clienti.tiscali.it)
2021-05-31 22:47:25 +0200brandonh(~brandonh@151.38.169.228)
2021-05-31 22:47:58 +0200gehmehgeh(~user@user/gehmehgeh)
2021-05-31 22:49:49 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 268 seconds)
2021-05-31 22:49:51 +0200favonia(~favonia@user/favonia) (Quit: The Lounge - https://thelounge.chat)
2021-05-31 22:50:27 +0200tonyz(~tonyz@user/tonyz) ()
2021-05-31 22:51:01 +0200zeenk(~zeenk@2a02:2f04:a310:b600:b098:bf18:df4d:4c41) (Quit: Konversation terminated!)
2021-05-31 22:52:07 +0200favonia(~favonia@user/favonia)
2021-05-31 22:55:58 +0200favonia(~favonia@user/favonia) (Client Quit)
2021-05-31 22:57:14 +0200favonia(~favonia@user/favonia)
2021-05-31 22:57:15 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-05-31 22:58:13 +0200ddellacosta(~ddellacos@89.45.224.183)
2021-05-31 22:58:42 +0200boxscape(~boxscape@user/boxscape)
2021-05-31 22:59:26 +0200Shaeto_(~Shaeto@94.25.234.213) (Quit: WeeChat 3.1)
2021-05-31 22:59:47 +0200Bartosz(~textual@24.35.90.211)
2021-05-31 23:00:01 +0200favonia(~favonia@user/favonia) (Client Quit)
2021-05-31 23:02:41 +0200ddellacosta(~ddellacos@89.45.224.183) (Ping timeout: 252 seconds)
2021-05-31 23:03:09 +0200favonia(~favonia@user/favonia)
2021-05-31 23:04:06 +0200dhil(~dhil@195.213.192.85) (Quit: Leaving)
2021-05-31 23:04:22 +0200brandonh(~brandonh@151.38.169.228) (Quit: brandonh)
2021-05-31 23:04:39 +0200favonia(~favonia@user/favonia) (Client Quit)
2021-05-31 23:04:58 +0200brandonh(~brandonh@151.38.169.228)
2021-05-31 23:06:51 +0200favonia(~favonia@user/favonia)
2021-05-31 23:09:00 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-05-31 23:12:17 +0200sondre(~sondrelun@eduroam-193-157-203-145.wlan.uio.no) (Ping timeout: 264 seconds)
2021-05-31 23:14:05 +0200rahguzar(~rahguzar@dynamic-adsl-84-220-228-254.clienti.tiscali.it) (Ping timeout: 264 seconds)
2021-05-31 23:15:26 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-05-31 23:16:45 +0200sqrt2(~ben@tunnel330957-pt.tunnel.tserv6.fra1.ipv6.he.net)
2021-05-31 23:17:32 +0200argento(~argent0@168.227.96.53) (Ping timeout: 252 seconds)
2021-05-31 23:19:16 +0200argento(~argent0@168.227.96.53)
2021-05-31 23:20:01 +0200geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com) (Remote host closed the connection)
2021-05-31 23:21:16 +0200Jeanne-Kamikaze(~Jeanne-Ka@static-198-54-133-102.cust.tzulo.com) (Quit: Leaving)
2021-05-31 23:22:22 +0200geekosaur(~geekosaur@069-135-003-034.biz.spectrum.com)
2021-05-31 23:23:59 +0200prite(~pritam@user/pritambaral) (Ping timeout: 244 seconds)
2021-05-31 23:25:28 +0200mekeor(~user@2001:a61:3a45:d101:3a96:2c15:924e:ebf9)
2021-05-31 23:27:31 +0200Guest41(~Guest41@187.83.249.216.dyn.smithville.net)
2021-05-31 23:28:42 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-05-31 23:30:38 +0200ddellacosta(~ddellacos@86.106.121.222)
2021-05-31 23:32:42 +0200chisui(~chisui@200116b86662dd0045dcdbf42fb73e43.dip.versatel-1u1.de) (Ping timeout: 250 seconds)
2021-05-31 23:33:00 +0200lavaman(~lavaman@98.38.249.169)
2021-05-31 23:35:01 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2-dev)
2021-05-31 23:35:27 +0200ddellacosta(~ddellacos@86.106.121.222) (Ping timeout: 268 seconds)
2021-05-31 23:36:52 +0200Ariakenom(~Ariakenom@2001:9b1:efb:fc00:84c1:f198:927e:8e8c) (Read error: Connection reset by peer)
2021-05-31 23:37:25 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 244 seconds)
2021-05-31 23:40:22 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 264 seconds)
2021-05-31 23:41:28 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:5878:fcfd:e07b:ffd9)
2021-05-31 23:41:46 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-05-31 23:44:57 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2021-05-31 23:46:10 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:5878:fcfd:e07b:ffd9) (Remote host closed the connection)
2021-05-31 23:46:17 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:5878:fcfd:e07b:ffd9)
2021-05-31 23:46:41 +0200chaosite(~chaosite@user/chaosite) (Ping timeout: 252 seconds)
2021-05-31 23:47:38 +0200eddiemundo[m](~jshenmatr@2001:470:69fc:105::a80)
2021-05-31 23:49:32 +0200Erutuon(~Erutuon@71-34-10-193.mpls.qwest.net) (Changing host)
2021-05-31 23:49:32 +0200Erutuon(~Erutuon@user/erutuon)
2021-05-31 23:49:46 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-05-31 23:49:55 +0200Erutuon(~Erutuon@user/erutuon) (Quit: WeeChat 2.8)
2021-05-31 23:50:05 +0200Erutuon(~Erutuon@user/erutuon)
2021-05-31 23:51:02 +0200Erutuon(~Erutuon@user/erutuon) (Client Quit)
2021-05-31 23:51:13 +0200Erutuon(~Erutuon@user/erutuon)
2021-05-31 23:51:42 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-05-31 23:52:27 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-05-31 23:54:17 +0200ddellacosta(~ddellacos@86.106.143.66)
2021-05-31 23:58:25 +0200chaosite(~chaosite@user/chaosite)
2021-05-31 23:59:32 +0200 <eddiemundo[m]> a
2021-05-31 23:59:51 +0200o1lo01ol1o(~o1lo01ol1@cpe-74-72-45-166.nyc.res.rr.com) (Remote host closed the connection)