2022/07/18

2022-07-18 00:01:31 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-07-18 00:03:24 +0200gdown(~gavin@h69-11-149-231.kndrid.broadband.dynamic.tds.net)
2022-07-18 00:03:49 +0200ChanServ+o litharge
2022-07-18 00:03:49 +0200litharge-bo $a:pleo litharge
2022-07-18 00:04:50 +0200aweinstock(~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com) (Ping timeout: 240 seconds)
2022-07-18 00:06:52 +0200tdodrlt^(~tdodrlt@12.187.69.131)
2022-07-18 00:06:52 +0200aweinstock(~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com)
2022-07-18 00:07:56 +0200jakalx(~jakalx@base.jakalx.net)
2022-07-18 00:16:56 +0200nate4(~nate@98.45.169.16)
2022-07-18 00:17:10 +0200acidjnk_new3(~acidjnk@p200300d6e705864510d29662a0d17642.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-07-18 00:20:57 +0200hiredman(~hiredman@frontier1.downey.family) (Remote host closed the connection)
2022-07-18 00:22:13 +0200nate4(~nate@98.45.169.16) (Ping timeout: 272 seconds)
2022-07-18 00:22:36 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl)
2022-07-18 00:24:20 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-07-18 00:32:02 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 255 seconds)
2022-07-18 00:32:06 +0200lys(sid194105@user/lys)
2022-07-18 00:34:05 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-18 00:36:23 +0200jmorris(uid537181@id-537181.uxbridge.irccloud.com)
2022-07-18 00:38:02 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 00:39:39 +0200phma(~phma@host-67-44-208-65.hnremote.net) (Read error: Connection reset by peer)
2022-07-18 00:40:35 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
2022-07-18 00:42:38 +0200phma(~phma@2001:5b0:212a:f318:9888:9b59:ea41:c1c)
2022-07-18 00:43:28 +0200hgolden(~hgolden2@cpe-172-251-233-141.socal.res.rr.com) (Ping timeout: 268 seconds)
2022-07-18 00:43:53 +0200Tuplanolla(~Tuplanoll@91-159-69-97.elisa-laajakaista.fi) (Quit: Leaving.)
2022-07-18 00:44:19 +0200Kaiepi(~Kaiepi@156.34.47.253)
2022-07-18 00:47:10 +0200zeenk(~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f)
2022-07-18 00:49:54 +0200YoungFrog(~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) (Ping timeout: 272 seconds)
2022-07-18 00:50:42 +0200hiredman(~hiredman@frontier1.downey.family)
2022-07-18 00:51:06 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 264 seconds)
2022-07-18 00:51:42 +0200YoungFrog(~youngfrog@2a02:a03f:c21b:f900:5132:e9ea:441f:a48f)
2022-07-18 00:56:03 +0200jpds1(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-07-18 00:56:32 +0200jpds1(~jpds@gateway/tor-sasl/jpds)
2022-07-18 00:57:41 +0200YoungFrog(~youngfrog@2a02:a03f:c21b:f900:5132:e9ea:441f:a48f) (Ping timeout: 272 seconds)
2022-07-18 00:59:18 +0200YoungFrog(~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be)
2022-07-18 01:03:39 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 276 seconds)
2022-07-18 01:04:50 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds)
2022-07-18 01:06:38 +0200YoungFrog(~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) (Ping timeout: 244 seconds)
2022-07-18 01:07:04 +0200zeenk(~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f) (Quit: Konversation terminated!)
2022-07-18 01:08:48 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-18 01:09:11 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-07-18 01:09:32 +0200YoungFrog(~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be)
2022-07-18 01:11:24 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl)
2022-07-18 01:14:24 +0200YoungFrog(~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) (Ping timeout: 244 seconds)
2022-07-18 01:15:40 +0200YoungFrog(~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be)
2022-07-18 01:16:31 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-07-18 01:16:56 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-07-18 01:25:39 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:5546:a014:fe40:2124) (Remote host closed the connection)
2022-07-18 01:28:50 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds)
2022-07-18 01:36:02 +0200toluene(~toluene@user/toulene) (Read error: Connection reset by peer)
2022-07-18 01:36:54 +0200 <yin> maerwald: haskell lacks good structural typing?
2022-07-18 01:38:33 +0200 <maerwald> yeah, see typescript or purescript
2022-07-18 01:39:10 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds)
2022-07-18 01:39:13 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2022-07-18 01:40:03 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 276 seconds)
2022-07-18 01:40:18 +0200toluene(~toluene@user/toulene)
2022-07-18 01:40:27 +0200Lord_of_Life_Lord_of_Life
2022-07-18 01:41:15 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-18 01:41:50 +0200dlock(~dlock@213.205.241.187)
2022-07-18 01:42:11 +0200 <dlock> is there a way to run a haskell code snippet in a haskell program?
2022-07-18 01:42:57 +0200 <dlock> like with a Read and Show instance?
2022-07-18 01:42:57 +0200 <geekosaur> strictly speaking, yes. if you expect ot to be able to access the running program, no
2022-07-18 01:43:11 +0200 <geekosaur> (it would run in its own execution context)
2022-07-18 01:43:15 +0200 <dlock> the program is rerun on different snippets
2022-07-18 01:43:18 +0200 <geekosaur> *it to
2022-07-18 01:43:34 +0200 <geekosaur> take a look at the hint library, or Mueval if you want sandboxing
2022-07-18 01:43:35 +0200 <c_wraith> I mean, ghci exists. You can do anything ghci does. That doesn't mean it's *easy*...
2022-07-18 01:43:49 +0200 <dlock> "i can do anything ghci does"
2022-07-18 01:43:54 +0200 <dlock> this sounds promising
2022-07-18 01:44:22 +0200 <geekosaur> working with the ghc api directly is also possible but is noticeably harder than using hint or mueval
2022-07-18 01:45:08 +0200 <dlock> ah, used for lambdabot, perfect
2022-07-18 01:45:33 +0200 <dlock> im not sure if hacking with the GHC tools is a good idea, id rather keep them to a minimal
2022-07-18 01:46:02 +0200 <dlock> i doubt they would be good to work with unless on some really powerful footing, which might bloat them
2022-07-18 01:46:11 +0200 <dlock> i guess these other packages provide user functionality
2022-07-18 01:46:25 +0200 <geekosaur> they're friendlier wrappers for ghc-api
2022-07-18 01:46:49 +0200 <hpc> > "mueval is how lambdabot " ++ "does this"
2022-07-18 01:46:51 +0200 <lambdabot> "mueval is how lambdabot does this"
2022-07-18 01:47:05 +0200 <dlock> so suppose i want not only to save some data inupts and outputs to a function, but also the function that was run to produce the outputs from the inputs
2022-07-18 01:47:43 +0200 <geekosaur> you would only be able to save it in source form; there's no way to serialize or load bytecode
2022-07-18 01:48:00 +0200 <dlock> id expect this to be something like "the Show instance is valid haskell
2022-07-18 01:48:04 +0200 <dlock> "
2022-07-18 01:48:11 +0200 <geekosaur> hypothetically you might be able to do the equivalent of -fobject-code, but that puts you squarely into direct ghc-api territory
2022-07-18 01:48:30 +0200 <dlock> i dont want to have to save whole modules
2022-07-18 01:48:47 +0200 <dlock> and i dont want the interface to incorperating to be done at the linking stage
2022-07-18 01:49:14 +0200 <dlock> basically i just want the program to read the "function" the same way as it reads the "value"
2022-07-18 01:49:37 +0200 <c_wraith> by contrast, hint gives you tools to pass values from your code into and out of evaluated code, but they're rather awkward
2022-07-18 01:49:45 +0200 <dlock> basically because trying to output a module you use to where you want to save them to is difficult
2022-07-18 01:50:31 +0200 <dlock> c_wraith: i cant picture this concept of passing functions through evaluated code?
2022-07-18 01:50:48 +0200 <dlock> or values
2022-07-18 01:51:13 +0200 <dlock> i wouldnt expect it could be evaluated before it recieves input
2022-07-18 01:51:15 +0200 <c_wraith> well, I suppose that's not quite accurate. It's easy to evaluate things which produce functions that run on any value you want.
2022-07-18 01:51:40 +0200 <dlock> ok like some partially evaluated expression stuck awaiting an input arg
2022-07-18 01:51:52 +0200 <dlock> do we lazily consume inputs like that?
2022-07-18 01:52:00 +0200 <c_wraith> I mean.. it's just.. functions.
2022-07-18 01:52:08 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-18 01:52:10 +0200 <dlock> anyway, thats probably not how these libraries are going to have me write it
2022-07-18 01:52:51 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
2022-07-18 01:52:54 +0200 <dlock> ok, so the function in question is eg. either a net or a matrix
2022-07-18 01:53:13 +0200 <dlock> and we dont know, but we want to save matricies with matrix input output pairs, and nets with net input output pairs
2022-07-18 01:53:23 +0200 <dlock> so the user never tries to apply the inputs to the wrong function
2022-07-18 01:54:04 +0200 <dlock> its a version control thing. i cant just save the input output pairs and have the function be part of changing code
2022-07-18 01:54:19 +0200 <dlock> ill never know which function they were for, so i need to save the functions
2022-07-18 01:55:27 +0200 <dlock> imagine if it was the memory state for a markov trading model, and i train something that gives me good matrix and when i uplaod it it tries to parametrise a net with it... must provide actual model encoding along with state
2022-07-18 01:56:01 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 01:56:14 +0200 <dlock> my task seems like its using hint or mueval to express matrix multiplication and net evaluation
2022-07-18 01:56:18 +0200tdodrlt^(~tdodrlt@12.187.69.131) (Ping timeout: 240 seconds)
2022-07-18 01:56:33 +0200 <dlock> and anything else i might want to use as a parametric model but havent yet thought of, which is important
2022-07-18 01:57:26 +0200 <dlock> parametric models is a big thing, might be worth a package of its own seeing how this haskell infrastructure seems particularly well suited
2022-07-18 01:58:19 +0200 <dlock> so can i do something like f = readFromFile "pathToFunction.notHs"
2022-07-18 01:58:42 +0200 <dlock> and get like IO (?)
2022-07-18 02:01:55 +0200califax(~califax@user/califx) (Remote host closed the connection)
2022-07-18 02:02:12 +0200 <dlock> yeah, reading the mueval docs isnt getting me very far
2022-07-18 02:02:59 +0200 <monochrom> Perhaps "let users enter fairly arbitrary Haskell code and I'll run it" is too general for this.
2022-07-18 02:03:22 +0200califax(~califax@user/califx)
2022-07-18 02:03:24 +0200mvk(~mvk@2607:fea8:5ce3:8500::909a)
2022-07-18 02:03:47 +0200 <dlock> its function on one arg of set type to the same type and an output of another type, the normal state function in mapAccumL
2022-07-18 02:03:51 +0200 <dlock> :t mapAccumL
2022-07-18 02:03:52 +0200 <lambdabot> Traversable t => (a -> b -> (a, c)) -> a -> t b -> (a, t c)
2022-07-18 02:04:07 +0200 <dlock> its parametric also though
2022-07-18 02:04:17 +0200chomwitt(~chomwitt@2a02:587:dc00:5a00:c8e4:ebdd:c459:66df) (Ping timeout: 255 seconds)
2022-07-18 02:04:25 +0200 <dlock> im fine with having to write in a restricted subset of haskell
2022-07-18 02:04:28 +0200 <dlock> eg haskell98
2022-07-18 02:04:39 +0200 <dlock> though i can see plenty of things for enabling extensions
2022-07-18 02:05:03 +0200 <dlock> id rather the format of the text file the user works with is less like a haskell module and more like just one function definition
2022-07-18 02:05:14 +0200 <dlock> "enable all extensions and compile!"
2022-07-18 02:05:27 +0200 <dlock> "it typechecks, dont wory!"
2022-07-18 02:05:45 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-07-18 02:05:45 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-07-18 02:05:45 +0200wroathe(~wroathe@user/wroathe)
2022-07-18 02:05:51 +0200 <dlock> oh no, i probably actually want to typecheck it, and certainly ensures it matches up with the rest of the program
2022-07-18 02:06:09 +0200gdown(~gavin@h69-11-149-231.kndrid.broadband.dynamic.tds.net) (Remote host closed the connection)
2022-07-18 02:06:20 +0200 <dlock> now im thinking it should look almost exactly like a haskell module!
2022-07-18 02:06:33 +0200 <dlock> what about backpack?
2022-07-18 02:06:39 +0200 <dlock> i can make signatures there right?
2022-07-18 02:06:57 +0200 <Axman6> have you looked at hint? or the plugins package?
2022-07-18 02:07:19 +0200 <dlock> i also tried reading hint, it seems to be encouraging me to design an interpreter or something?
2022-07-18 02:07:27 +0200 <dlock> im pretty sure i want one out of the box
2022-07-18 02:07:38 +0200 <dlock> i guess it insists i at least tell it about extensions
2022-07-18 02:08:25 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2022-07-18 02:09:32 +0200 <dlock> ok plugins gives me this; https://hackage.haskell.org/package/plugins-1.6.2.1/docs/System-Plugins-Parser.html#t:HsModule
2022-07-18 02:09:37 +0200 <Axman6> https://hackage.haskell.org/package/plugins might be an alternative, but not for the "read text and make programs" case
2022-07-18 02:09:51 +0200 <Axman6> or perhaps it does do that!
2022-07-18 02:10:24 +0200 <dlock> and then underneath the imports and header stuff i give it a list of functions! https://hackage.haskell.org/package/haskell-src-1.0.4/docs/Language-Haskell-Syntax.html#t:HsDecl
2022-07-18 02:10:55 +0200 <dlock> Axman6: after looking at the preceding two options i was going to go with backpack anyway so..
2022-07-18 02:11:02 +0200son0p(~ff@181.136.122.143) (Ping timeout: 268 seconds)
2022-07-18 02:11:41 +0200 <Axman6> does backpack give you what you want? I wouldn't've thought so
2022-07-18 02:11:49 +0200 <Axman6> if it does, please write blog post about it ;)
2022-07-18 02:11:55 +0200 <dlock> not sure which constructor i need for a function without a type signature of 2 args that are not patten matched
2022-07-18 02:12:17 +0200 <dlock> sure, i mean, its at linking stage which i didnt want
2022-07-18 02:12:25 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-07-18 02:12:27 +0200 <dlock> but i get to write a signature and define the module
2022-07-18 02:12:35 +0200 <dlock> so its exactly according to that spec
2022-07-18 02:12:49 +0200 <dlock> i guess i just want live backpack and i can compromise on the liveness
2022-07-18 02:12:50 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds)
2022-07-18 02:13:33 +0200 <dlock> is it this? https://hackage.haskell.org/package/haskell-src-1.0.4/docs/Language-Haskell-Syntax.html#t:HsMatch
2022-07-18 02:14:02 +0200 <dlock> seems very strange to have to write functions like this
2022-07-18 02:14:08 +0200gurkenglas(~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) (Ping timeout: 272 seconds)
2022-07-18 02:14:09 +0200 <dlock> how do i just read one in and evaluate it!?
2022-07-18 02:15:24 +0200 <dlock> basically, i expect the user to cd to some specified directory and edit their snippit, and then the thing that runs it stores it somewhere else incase ever the input output pair on that particular function need to be recalled
2022-07-18 02:15:46 +0200 <dlock> basically allowing a stupid coder to just keep editing their function and having this thing safely store away all the versions
2022-07-18 02:16:12 +0200 <dlock> and they go, "oh no, it was working really well a second ago" and they have that one saved so its ok
2022-07-18 02:16:45 +0200 <dlock> and it means they never try to upload the inputs for one function into the wrong function because they are saved together
2022-07-18 02:16:58 +0200 <dlock> as long as the thing thats running on the server, when this datatype is delivered
2022-07-18 02:17:25 +0200 <dlock> can start running it, even if it has to be, well, not recompiled because theres no compiler on the server, but, er, relinked with nix copy closure
2022-07-18 02:17:34 +0200 <Axman6> You're talking about a statically typed, compiled language, what you're looking to do feels very much like cutting against the grain IMO. It's never going to be easy
2022-07-18 02:17:51 +0200 <dlock> theres a reason its a use case
2022-07-18 02:18:07 +0200 <dlock> we have several good hotswapping things
2022-07-18 02:18:19 +0200 <dlock> i just never actually *needed* the interpreter way before
2022-07-18 02:18:42 +0200 <dlock> and now im quite sure that i want to write "readFunction" like i would "readFile" to get the inputs
2022-07-18 02:18:52 +0200 <dlock> just for that particular line
2022-07-18 02:19:45 +0200 <dlock> i have been *not* doing this for ages, and it results in saved nets that cant be used because the sourcecode they were generated with were not versioned propely
2022-07-18 02:20:25 +0200 <dlock> got to have this standalone compartmentalisation of "saved data along with saved code"
2022-07-18 02:20:39 +0200 <dlock> even if the output code isnt strictly "output" its just whatever the user wrote at the time
2022-07-18 02:21:03 +0200 <dlock> the real problem is trying to mix nets and matricies
2022-07-18 02:21:22 +0200 <dlock> i want to just store a square of numbers, but if i dont know how they are supposed to be evaluated
2022-07-18 02:21:45 +0200 <dlock> i could have like data FType = Matrix | Net, or something, but then id want to extend it
2022-07-18 02:21:52 +0200 <dlock> and so i couldnt save it as a header
2022-07-18 02:22:03 +0200 <dlock> like, the show / read instance would keep changing
2022-07-18 02:22:22 +0200 <dlock> or it would be just a square of numbers and the word Matrix, or something
2022-07-18 02:22:37 +0200 <dlock> but i can envisage a situation where i invent something that cant just be described with one word
2022-07-18 02:22:55 +0200 <dlock> "the kind of deep treelike net thing thats all different over here and stuff"
2022-07-18 02:23:20 +0200 <dlock> so i need to save that... and it was written as a haskell program so...
2022-07-18 02:23:46 +0200 <dlock> i dont mind making the user work in one module for this hotswapping, so backpack really i think might be how to go with this, im not sure
2022-07-18 02:24:35 +0200 <dlock> maybe i could make a wrapper around cabal so when i use cabal run, it secretly handles the module saving as if it were coming from the program as it runs "saving" part of itself
2022-07-18 02:25:08 +0200 <dlock> and obviously it has to retrive the correct module aswell
2022-07-18 02:25:37 +0200 <dlock> "dear cabal, compile it with those really good parameters we had before on whatever that crazy net i was writing was"
2022-07-18 02:26:03 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:5546:a014:fe40:2124)
2022-07-18 02:26:30 +0200 <dlock> i guess i should learn how to use extra source dirs or something for this
2022-07-18 02:26:54 +0200 <dlock> "where are your hotswapping modules stored"
2022-07-18 02:28:10 +0200wroathe(~wroathe@user/wroathe) (Quit: leaving)
2022-07-18 02:28:24 +0200bilegeek(~bilegeek@2600:1008:b05b:4a6c:db72:12cb:b085:4039)
2022-07-18 02:30:20 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:5546:a014:fe40:2124) (Ping timeout: 244 seconds)
2022-07-18 02:36:26 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl)
2022-07-18 02:42:02 +0200dextaa(~DV@user/dextaa) (Read error: Connection reset by peer)
2022-07-18 02:44:16 +0200dextaa(~DV@user/dextaa)
2022-07-18 02:45:02 +0200califax(~califax@user/califx) (Remote host closed the connection)
2022-07-18 02:45:06 +0200dextaa(~DV@user/dextaa) (Read error: Connection reset by peer)
2022-07-18 02:45:29 +0200califax(~califax@user/califx)
2022-07-18 02:47:21 +0200dextaa(~DV@user/dextaa)
2022-07-18 02:50:41 +0200dextaa(~DV@user/dextaa) (Read error: Connection reset by peer)
2022-07-18 02:50:51 +0200lemonsni-(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
2022-07-18 02:51:41 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Ping timeout: 272 seconds)
2022-07-18 02:52:58 +0200dextaa(~DV@user/dextaa)
2022-07-18 02:55:08 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 255 seconds)
2022-07-18 02:55:12 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-18 02:55:48 +0200dextaa(~DV@user/dextaa) (Read error: Connection reset by peer)
2022-07-18 02:58:01 +0200dextaa(~DV@user/dextaa)
2022-07-18 02:58:22 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-18 02:58:51 +0200dextaa(~DV@user/dextaa) (Read error: Connection reset by peer)
2022-07-18 03:01:08 +0200dextaa(~DV@user/dextaa)
2022-07-18 03:01:58 +0200dextaa(~DV@user/dextaa) (Read error: Connection reset by peer)
2022-07-18 03:04:35 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:5546:a014:fe40:2124)
2022-07-18 03:04:40 +0200dextaa(~DV@user/dextaa)
2022-07-18 03:09:26 +0200dlock(~dlock@213.205.241.187) (Remote host closed the connection)
2022-07-18 03:09:43 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 03:09:45 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 276 seconds)
2022-07-18 03:10:47 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-07-18 03:11:35 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-18 03:11:42 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 276 seconds)
2022-07-18 03:16:55 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-07-18 03:21:27 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 272 seconds)
2022-07-18 03:23:07 +0200Infinite(~Infinite@2405:201:6014:10d3:5bda:954e:108a:364)
2022-07-18 03:32:19 +0200mikoto-chan(~mikoto-ch@85-76-65-195-nat.elisa-mobile.fi)
2022-07-18 03:36:50 +0200califax(~califax@user/califx) (Remote host closed the connection)
2022-07-18 03:37:32 +0200califax(~califax@user/califx)
2022-07-18 03:49:00 +0200Infinite(~Infinite@2405:201:6014:10d3:5bda:954e:108a:364) (Ping timeout: 252 seconds)
2022-07-18 03:54:31 +0200frost(~frost@user/frost)
2022-07-18 03:56:10 +0200gleostocha(~runic@c-73-15-32-211.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2022-07-18 03:56:50 +0200tdodrlt^(~tdodrlt@12.187.69.131)
2022-07-18 03:58:24 +0200zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2022-07-18 03:59:02 +0200pgass(~pg@190.247.245.154) (Ping timeout: 255 seconds)
2022-07-18 04:01:45 +0200vst1(~Thunderbi@w118010235.w118010.starhub.net.sg)
2022-07-18 04:01:56 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au)
2022-07-18 04:02:49 +0200vst(~Thunderbi@w118010235.w118010.starhub.net.sg) (Ping timeout: 244 seconds)
2022-07-18 04:02:50 +0200vst1vst
2022-07-18 04:03:00 +0200lemonsni-(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Quit: ZNC 1.8.2 - https://znc.in)
2022-07-18 04:04:53 +0200 <nasosev> is there someway to check why hlint is not working in vscode with my ghc 9.2.2 cabal project ? If i create a stack project with `stack new` it works correctly. The rest of the language server is working in the cabal project, jut not hlint
2022-07-18 04:05:18 +0200 <nasosev> vs code settings are the same in both projects
2022-07-18 04:05:57 +0200 <Axman6> Is there anything in the HLS output?
2022-07-18 04:06:58 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl)
2022-07-18 04:07:02 +0200zaquest(~notzaques@5.130.79.72)
2022-07-18 04:07:27 +0200 <nasosev> Not sure where to check? I n the Output tab of vscode I select Haskell (projectname), and there is a bunch of stuff there but no mention of hlint
2022-07-18 04:10:54 +0200yauhsien(~yauhsien@61-231-46-226.dynamic-ip.hinet.net)
2022-07-18 04:11:00 +0200 <Axman6> hmm, not sure then. I think there's an IRC channel for HLS, possibly #haskell-language-server?
2022-07-18 04:11:48 +0200 <nasosev> it did say "No 'hie.yaml' found. Try to discover the project type!" not sure if this is related
2022-07-18 04:11:51 +0200 <nasosev> ok i'll try thanks
2022-07-18 04:12:24 +0200 <Axman6> sounds possible, I haven't used a hie.yaml file before but it sounds like something I should
2022-07-18 04:14:17 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-07-18 04:14:31 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2022-07-18 04:18:29 +0200nate4(~nate@98.45.169.16)
2022-07-18 04:18:50 +0200yauhsien(~yauhsien@61-231-46-226.dynamic-ip.hinet.net) (Ping timeout: 255 seconds)
2022-07-18 04:20:25 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
2022-07-18 04:23:20 +0200nate4(~nate@98.45.169.16) (Ping timeout: 255 seconds)
2022-07-18 04:27:19 +0200tdodrlt^(~tdodrlt@12.187.69.131) (Ping timeout: 272 seconds)
2022-07-18 04:27:24 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 04:28:11 +0200marcusxavier(~marcusxav@2804:6660:ff12:ef70:c108:521a:bfa4:709f)
2022-07-18 04:28:30 +0200 <marcusxavier> I just finished CIS 194 week 2 exercise
2022-07-18 04:28:36 +0200 <marcusxavier> how can I improve my code
2022-07-18 04:28:38 +0200 <marcusxavier> https://gist.github.com/MarcusXavierr/230bc0a7d56cebcc5d7181e7f7afb235
2022-07-18 04:29:12 +0200 <Axman6> Don;t use head or (!!)
2022-07-18 04:30:09 +0200 <Axman6> createLog ("E":err:b:xs) = LogMessage (Error err) b xs
2022-07-18 04:31:18 +0200 <Axman6> createLog ("E":timestamp:b:xs) = LogMessage (Error (test timestamp) b xs
2022-07-18 04:31:30 +0200 <Axman6> missed the read in there, same with the second arg, whatever that is
2022-07-18 04:31:45 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-18 04:31:55 +0200 <Axman6> if you ever find yourself using (!!), there's almost always a better option that won't throw an error when you mess up
2022-07-18 04:32:38 +0200radhika(uid560836@id-560836.helmsley.irccloud.com)
2022-07-18 04:32:39 +0200 <Axman6> Seems weird that you would just throw away log messages with identical timestamps but I don't know what the requirements are
2022-07-18 04:33:37 +0200 <Axman6> personally I would pass the original message into creatLog: createLog :: String -> LogMessage; createMsg msg = case words of ...; _ -> Unknown msg
2022-07-18 04:33:43 +0200 <dsal> While you're not using stuff, also don't use `error` :)
2022-07-18 04:33:53 +0200 <Axman6> yeah
2022-07-18 04:35:12 +0200 <Axman6> whatWentWrong looks like it could be written using filter and map
2022-07-18 04:37:19 +0200yauhsien(~yauhsien@61-231-46-226.dynamic-ip.hinet.net)
2022-07-18 04:37:21 +0200 <Axman6> alternatively it could be quite clean if you used a list comprehension: whatWentWrong xs = [ msg | LogMessage Error intensity msg <- xs, intensity > 50 ]
2022-07-18 04:38:43 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
2022-07-18 04:39:18 +0200marcusxavier(~marcusxav@2804:6660:ff12:ef70:c108:521a:bfa4:709f) (Ping timeout: 240 seconds)
2022-07-18 04:39:31 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-18 04:40:16 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-07-18 04:40:16 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-07-18 04:40:16 +0200finn_elijaFinnElija
2022-07-18 04:40:50 +0200marcusxavier(~marcusxav@2804:6660:ff12:ef70:c108:521a:bfa4:709f)
2022-07-18 04:41:10 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-07-18 04:47:18 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 04:47:19 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net)
2022-07-18 04:47:19 +0200 <marcusxavier> @Axman6 what does the function "test" do in "createLog ("E":timestamp:b:xs) = LogMessage (Error (test timestamp) b xs"
2022-07-18 04:47:19 +0200 <lambdabot> Unknown command, try @list
2022-07-18 04:47:54 +0200yauhsien(~yauhsien@61-231-46-226.dynamic-ip.hinet.net) (Ping timeout: 276 seconds)
2022-07-18 04:49:09 +0200 <Axman6> uh, that was supposed to be read, no idea how I typed test
2022-07-18 04:49:57 +0200 <albet70> I have a little confused about do block syntax, it has different behavior on different ghc https://paste.tomsmeding.com/7cMfjHqB
2022-07-18 04:50:30 +0200 <albet70> why one do syntax need indent like python, but another doesn't
2022-07-18 04:52:17 +0200 <dsal> There are some indentation rules. It'd be super hard to read the code if you didn't indent it correctly, so I guess it's nice it's also a syntax error.
2022-07-18 04:53:22 +0200 <albet70> "dsal :There are some indentation rules. It'd be super hard to read the code if you didn't indent it correctly, so I guess it's nice it's also a syntax error.", but why there's no syntax error in another ghc?
2022-07-18 04:53:56 +0200 <albet70> systax error is a compile feature or option?
2022-07-18 04:54:31 +0200 <albet70> the interesting thing is they're both on debian
2022-07-18 04:55:17 +0200 <albet70> one is in my remote debian vps, another is in local
2022-07-18 04:55:39 +0200 <dsal> I don't quite understand what you're saying. Do you have an example of code you think should work that doesn't?
2022-07-18 04:57:28 +0200 <Axman6> yeah that sounds like it's very unlikely to be true to me
2022-07-18 04:58:59 +0200td_(~td@94.134.91.33) (Ping timeout: 272 seconds)
2022-07-18 05:00:10 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-07-18 05:00:14 +0200td_(~td@94.134.91.5)
2022-07-18 05:00:36 +0200marcusxavier(~marcusxav@2804:6660:ff12:ef70:c108:521a:bfa4:709f) (Quit: WeeChat 3.6)
2022-07-18 05:01:11 +0200zxx7529(~Thunderbi@user/zxx7529)
2022-07-18 05:01:33 +0200 <albet70> https://past.tomsmeing.com/OZos1jC7
2022-07-18 05:01:48 +0200tdodrlt^(~tdodrlt@12.187.69.131)
2022-07-18 05:02:02 +0200 <albet70> https://past.tomsmeing.com/OZosljC7
2022-07-18 05:02:43 +0200toluene(~toluene@user/toulene) (Read error: Connection reset by peer)
2022-07-18 05:02:49 +0200 <Axman6> can you fix the URL please?
2022-07-18 05:03:07 +0200toluene(~toluene@user/toulene)
2022-07-18 05:03:20 +0200lys(sid194105@user/lys) (Quit: Gone)
2022-07-18 05:03:51 +0200 <albet70> https://paste.tomsmeding.com/OZos1jC7
2022-07-18 05:04:28 +0200 <albet70> those do block syntax work fine in a ghc, but not work in another ghc
2022-07-18 05:04:38 +0200benin0(~benin@183.82.24.82) (Ping timeout: 240 seconds)
2022-07-18 05:04:43 +0200 <Axman6> that first example looks like it shouldn't work in any GHC ever, you have an empty do block followed by two clauses defining the function called get
2022-07-18 05:05:17 +0200 <albet70> "Axman6 :that first example looks like it shouldn't work in any GHC ever, you have an empty do block followed by two clauses defining the function called get", but it did work
2022-07-18 05:05:50 +0200 <Axman6> albet70: you don't need to quote our own words back to us, we can read them already and it makes it hard to find what you are actually saying
2022-07-18 05:06:01 +0200 <albet70> ok
2022-07-18 05:06:30 +0200 <Axman6> "it did work" can you share the whole file? I would be very surprised if it actually works
2022-07-18 05:06:32 +0200nate4(~nate@98.45.169.16)
2022-07-18 05:06:49 +0200jakalx(~jakalx@base.jakalx.net)
2022-07-18 05:07:28 +0200 <Axman6> particularly since trying to run scotty fromt eh top level of a file makes no sense
2022-07-18 05:07:37 +0200frost(~frost@user/frost) (Quit: Client closed)
2022-07-18 05:07:39 +0200 <Axman6> so you're definitely not share enough information for us to help
2022-07-18 05:07:46 +0200 <Axman6> sharing*
2022-07-18 05:08:02 +0200 <albet70> sorry, the code is on my remote vps, and I'm at work, I can't access it now
2022-07-18 05:08:32 +0200bilegeek_(~bilegeek@139.sub-174-209-47.myvzw.com)
2022-07-18 05:10:23 +0200wombat875(~wombat875@pool-141-155-7-175.nycmny.fios.verizon.net) (Ping timeout: 272 seconds)
2022-07-18 05:11:02 +0200bilegeek(~bilegeek@2600:1008:b05b:4a6c:db72:12cb:b085:4039) (Ping timeout: 244 seconds)
2022-07-18 05:11:16 +0200 <monochrom> Alternatively you can create a brand new minimal self-contained reproducible example.
2022-07-18 05:11:28 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-07-18 05:11:35 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 05:12:39 +0200 <qrpnxz> how do i reify GHC's builtin type level lists. Do I need a library? I can I roll my own real quick?
2022-07-18 05:12:39 +0200matthewmosior(~matthewmo@173.170.253.91) (Read error: Connection reset by peer)
2022-07-18 05:13:05 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 05:17:52 +0200frost(~frost@user/frost)
2022-07-18 05:17:59 +0200nate4(~nate@98.45.169.16) (Ping timeout: 272 seconds)
2022-07-18 05:18:26 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 272 seconds)
2022-07-18 05:21:16 +0200 <Axman6> sounds like a job for the singletons package?
2022-07-18 05:21:34 +0200 <Axman6> but I'm not sure how you guarantee all the elements in the type level list are the same type?
2022-07-18 05:28:05 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 244 seconds)
2022-07-18 05:29:19 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-07-18 05:29:55 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-18 05:30:06 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 05:30:25 +0200lys(sid194105@id-194105.uxbridge.irccloud.com)
2022-07-18 05:30:46 +0200lys(sid194105@id-194105.uxbridge.irccloud.com) (Changing host)
2022-07-18 05:30:46 +0200lys(sid194105@user/lys)
2022-07-18 05:31:45 +0200lys(sid194105@user/lys) (Client Quit)
2022-07-18 05:34:24 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-18 05:34:42 +0200 <qrpnxz> they are all the same kind :)
2022-07-18 05:34:44 +0200zxx7529(~Thunderbi@user/zxx7529) (Quit: zxx7529)
2022-07-18 05:35:36 +0200 <qrpnxz> type of kind list of types becomes value of type list of values
2022-07-18 05:36:06 +0200 <qrpnxz> in my use case i have a type level list of bools i want to inspect
2022-07-18 05:36:55 +0200 <qrpnxz> i also have a number kind I look at with natVal, but idk what function to use for lists
2022-07-18 05:37:32 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl)
2022-07-18 05:37:50 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds)
2022-07-18 05:39:32 +0200 <qrpnxz> not sure how the singletons package would help me here
2022-07-18 05:45:46 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net) (Quit: Lost terminal)
2022-07-18 05:46:12 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net)
2022-07-18 05:47:35 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net) (Client Quit)
2022-07-18 05:48:02 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net)
2022-07-18 05:49:58 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 05:53:03 +0200causal(~user@2001:470:ea0f:3:329c:23ff:fe3f:1e0e)
2022-07-18 05:54:26 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-18 05:54:55 +0200mud(~mud@user/kadoban) (Quit: quit)
2022-07-18 06:00:59 +0200nate4(~nate@98.45.169.16)
2022-07-18 06:01:16 +0200yauhsien(~yauhsien@61-231-46-226.dynamic-ip.hinet.net)
2022-07-18 06:01:29 +0200hgolden(~hgolden2@cpe-172-251-233-141.socal.res.rr.com)
2022-07-18 06:01:39 +0200 <qrpnxz> ok figured it out. You create a type class, and then create an instance for empty list and instance for inductive step where the head is true and for when the head is false.
2022-07-18 06:01:41 +0200 <qrpnxz> lol
2022-07-18 06:02:08 +0200hgolden(~hgolden2@cpe-172-251-233-141.socal.res.rr.com) (Client Quit)
2022-07-18 06:02:23 +0200hgolden(~hgolden2@cpe-172-251-233-141.socal.res.rr.com)
2022-07-18 06:07:10 +0200nate4(~nate@98.45.169.16) (Ping timeout: 240 seconds)
2022-07-18 06:07:30 +0200yauhsien(~yauhsien@61-231-46-226.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-07-18 06:09:06 +0200 <qrpnxz> this is so cracked lol, but i'm just amazed by the type safety
2022-07-18 06:10:47 +0200winny(~weechat@user/winny) (Remote host closed the connection)
2022-07-18 06:11:07 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au) (Remote host closed the connection)
2022-07-18 06:11:34 +0200winny(~weechat@user/winny)
2022-07-18 06:11:50 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-07-18 06:14:21 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 06:15:46 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au)
2022-07-18 06:16:10 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 240 seconds)
2022-07-18 06:16:27 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-07-18 06:17:10 +0200mvk(~mvk@2607:fea8:5ce3:8500::909a) (Ping timeout: 240 seconds)
2022-07-18 06:17:12 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-07-18 06:18:50 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-18 06:20:30 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au) (Ping timeout: 264 seconds)
2022-07-18 06:20:46 +0200nate4(~nate@98.45.169.16)
2022-07-18 06:20:59 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-07-18 06:21:29 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-07-18 06:25:18 +0200nate4(~nate@98.45.169.16) (Ping timeout: 264 seconds)
2022-07-18 06:28:54 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-18 06:32:08 +0200EvanR(~EvanR@user/evanr) (Quit: Leaving)
2022-07-18 06:32:50 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds)
2022-07-18 06:33:35 +0200EvanR(~EvanR@user/evanr)
2022-07-18 06:38:45 +0200Infinite(~Infinite@49.36.213.114)
2022-07-18 06:41:16 +0200Infinite(~Infinite@49.36.213.114) (Client Quit)
2022-07-18 06:41:31 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 06:42:17 +0200radhika(uid560836@id-560836.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2022-07-18 06:42:38 +0200dolio(~dolio@130.44.130.54) (Quit: ZNC 1.8.2 - https://znc.in)
2022-07-18 06:44:26 +0200dolio(~dolio@130.44.130.54)
2022-07-18 06:46:05 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-18 06:46:28 +0200dolio(~dolio@130.44.130.54) (Client Quit)
2022-07-18 06:48:00 +0200dolio(~dolio@130.44.130.54)
2022-07-18 06:48:49 +0200redmp(~redmp@mobile-166-177-249-226.mycingular.net)
2022-07-18 06:51:51 +0200wolke(~wolke@2001:871:25e:696f:d97e:f83:15b1:b4ec)
2022-07-18 06:54:01 +0200nate4(~nate@98.45.169.16)
2022-07-18 06:56:30 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-18 06:57:41 +0200yauhsien(~yauhsien@61-231-46-226.dynamic-ip.hinet.net)
2022-07-18 06:59:19 +0200nate4(~nate@98.45.169.16) (Ping timeout: 272 seconds)
2022-07-18 06:59:29 +0200redmp(~redmp@mobile-166-177-249-226.mycingular.net) (Ping timeout: 255 seconds)
2022-07-18 07:02:30 +0200yauhsien(~yauhsien@61-231-46-226.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-07-18 07:03:19 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-07-18 07:03:45 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-07-18 07:04:45 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-07-18 07:08:06 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl)
2022-07-18 07:11:02 +0200lagash(lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
2022-07-18 07:11:10 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-07-18 07:13:23 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-18 07:16:30 +0200mikoto-chan(~mikoto-ch@85-76-65-195-nat.elisa-mobile.fi) (Ping timeout: 240 seconds)
2022-07-18 07:18:22 +0200zxx7529(~Thunderbi@user/zxx7529)
2022-07-18 07:19:32 +0200Infinite(~Infinite@2405:201:6014:10d3:bf50:81ac:ca92:ffdb)
2022-07-18 07:20:45 +0200mbuf(~Shakthi@122.165.55.71)
2022-07-18 07:21:30 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-07-18 07:23:42 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-18 07:27:14 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 07:28:07 +0200 <Axman6> (Asking in here because #ghc seems pretty quiet) Does GHC have an optimisation where it can optimise the evaluation of a case statement where most of the patterns go to the same value? https://paste.tomsmeding.com/NJ5wjf7X
2022-07-18 07:28:10 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-07-18 07:29:30 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-07-18 07:29:57 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-07-18 07:30:06 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-18 07:31:41 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-18 07:34:02 +0200cods(~fred@82-65-232-44.subs.proxad.net) (Ping timeout: 260 seconds)
2022-07-18 07:34:16 +0200cods(~fred@82-65-232-44.subs.proxad.net)
2022-07-18 07:40:18 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds)
2022-07-18 07:40:44 +0200Haskelytic(~Haskelyti@118.179.211.17)
2022-07-18 07:43:01 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
2022-07-18 07:45:07 +0200yauhsien(~yauhsien@61-231-46-226.dynamic-ip.hinet.net)
2022-07-18 07:46:06 +0200gmg(~user@user/gehmehgeh)
2022-07-18 07:52:58 +0200yauhsien(~yauhsien@61-231-46-226.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
2022-07-18 07:53:32 +0200 <albet70> I use hSeek to jump 100000, but hTell say it jump 200000, why? https://paste.tomsmeding.com/k4i6WlpZ
2022-07-18 07:57:37 +0200 <dsal> albet70: do you know how seek works in general?
2022-07-18 07:58:29 +0200 <dsal> You're not doing this in ghci are you?
2022-07-18 07:58:48 +0200 <albet70> cabal run x.hs
2022-07-18 07:59:49 +0200 <albet70> seek use a offset to read file?
2022-07-18 08:00:35 +0200 <dsal> "seek" "use [a] offset" and "read file" are three completely different concepts.
2022-07-18 08:00:44 +0200 <albet70> I used that yield within python to do this, but I'm not familiar with haskell
2022-07-18 08:01:13 +0200 <dsal> I was referring to the way it works in your OS.
2022-07-18 08:01:14 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 08:01:39 +0200 <albet70> then I don't know
2022-07-18 08:02:36 +0200 <dsal> Well, take a look at the manpage: https://www.unix.com/man-page/linux/2/seek/
2022-07-18 08:03:10 +0200 <dsal> Perhaps also this: https://hackage.haskell.org/package/base-4.16.2.0/docs/System-IO.html#t:SeekMode
2022-07-18 08:03:47 +0200califax(~califax@user/califx) (Ping timeout: 268 seconds)
2022-07-18 08:04:39 +0200 <albet70> I used hSeek handle RelativeSeek 100000, it's wrong?
2022-07-18 08:04:48 +0200 <dsal> It's not wrong if that's what you meant.
2022-07-18 08:04:53 +0200 <dsal> Is that what you meant?
2022-07-18 08:04:54 +0200nate4(~nate@98.45.169.16)
2022-07-18 08:05:35 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-07-18 08:05:46 +0200 <albet70> hGet would remember that last position it read and will it read from there when call it again ?
2022-07-18 08:06:34 +0200 <dsal> Your mental model might not be correct.
2022-07-18 08:06:56 +0200 <dsal> hget doesn't remember anything. It just reads from the current file position and increases the offset by however much you read.
2022-07-18 08:06:58 +0200 <dsal> Same as write.
2022-07-18 08:07:30 +0200Infinite(~Infinite@2405:201:6014:10d3:bf50:81ac:ca92:ffdb) (Ping timeout: 252 seconds)
2022-07-18 08:07:49 +0200 <albet70> I thought hGet won't increase the offset, now I see where is wrong
2022-07-18 08:09:38 +0200nate4(~nate@98.45.169.16) (Ping timeout: 240 seconds)
2022-07-18 08:09:56 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-18 08:11:34 +0200califax(~califax@user/califx)
2022-07-18 08:12:34 +0200codaraxis___(~codaraxis@user/codaraxis)
2022-07-18 08:14:30 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
2022-07-18 08:14:52 +0200alternateved(~user@staticline-31-183-144-54.toya.net.pl)
2022-07-18 08:16:43 +0200codaraxis__(~codaraxis@user/codaraxis) (Ping timeout: 268 seconds)
2022-07-18 08:19:04 +0200causal(~user@2001:470:ea0f:3:329c:23ff:fe3f:1e0e) (Quit: WeeChat 3.5)
2022-07-18 08:19:12 +0200 <tomsmeding> monochrom: oxford has "a- (expressing causal effect) + muser ‘stare stupidly’"
2022-07-18 08:19:49 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 08:26:05 +0200redmp(~redmp@mobile-166-177-249-235.mycingular.net)
2022-07-18 08:28:45 +0200johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2022-07-18 08:32:08 +0200acidjnk_new3(~acidjnk@p200300d6e705864121d6c2a2455d2da3.dip0.t-ipconnect.de)
2022-07-18 08:32:48 +0200takuan(~takuan@178.116.218.225)
2022-07-18 08:37:33 +0200michalz(~michalz@185.246.204.93)
2022-07-18 08:38:37 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl)
2022-07-18 08:44:07 +0200kazaf(~kazaf@84.252.147.230)
2022-07-18 08:48:15 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
2022-07-18 08:49:43 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-18 08:54:52 +0200christiansen(~christian@83-95-137-75-dynamic.dk.customer.tdc.net)
2022-07-18 08:56:54 +0200mc47(~mc47@xmonad/TheMC47)
2022-07-18 08:59:16 +0200coot(~coot@213.134.190.95)
2022-07-18 09:00:35 +0200cosimone(~user@93-44-186-171.ip98.fastwebnet.it)
2022-07-18 09:05:28 +0200thyriaen(~thyriaen@80.188.94.74)
2022-07-18 09:08:43 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-07-18 09:12:14 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 255 seconds)
2022-07-18 09:13:18 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 264 seconds)
2022-07-18 09:16:28 +0200ccntrq(~Thunderbi@2a01:c22:8c98:4400:a76:c9d7:ca07:82a4)
2022-07-18 09:20:42 +0200yauhsien(~yauhsien@61-231-46-226.dynamic-ip.hinet.net)
2022-07-18 09:23:09 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-18 09:23:53 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl)
2022-07-18 09:30:34 +0200gurkenglas(~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de)
2022-07-18 09:30:36 +0200thyriaen(~thyriaen@80.188.94.74) (Remote host closed the connection)
2022-07-18 09:31:44 +0200zeenk(~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f)
2022-07-18 09:35:07 +0200MajorBiscuit(~MajorBisc@wlan-145-94-167-213.wlan.tudelft.nl)
2022-07-18 09:36:14 +0200benin0(~benin@183.82.176.5)
2022-07-18 09:36:24 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 09:36:30 +0200yauhsien(~yauhsien@61-231-46-226.dynamic-ip.hinet.net) (Ping timeout: 276 seconds)
2022-07-18 09:36:40 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-18 09:36:42 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-07-18 09:40:22 +0200Tuplanolla(~Tuplanoll@91-159-69-97.elisa-laajakaista.fi)
2022-07-18 09:40:50 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds)
2022-07-18 09:40:59 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-07-18 09:41:44 +0200zxx7529(~Thunderbi@user/zxx7529) (Remote host closed the connection)
2022-07-18 09:42:47 +0200redmp(~redmp@mobile-166-177-249-235.mycingular.net) (Ping timeout: 244 seconds)
2022-07-18 09:44:47 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2022-07-18 09:44:52 +0200ccntrq1(~Thunderbi@2a01:c23:8894:e200:7659:e0b5:7bbc:ffcb)
2022-07-18 09:45:18 +0200lagash(lagash@lagash.shelltalk.net)
2022-07-18 09:46:54 +0200ccntrq(~Thunderbi@2a01:c22:8c98:4400:a76:c9d7:ca07:82a4) (Ping timeout: 276 seconds)
2022-07-18 09:46:54 +0200ccntrq1ccntrq
2022-07-18 09:52:13 +0200Midjak(~Midjak@82.66.147.146)
2022-07-18 09:52:31 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net)
2022-07-18 09:53:19 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 09:54:03 +0200fserucas(~fserucas@36.70.114.89.rev.vodafone.pt)
2022-07-18 09:57:08 +0200Infinite(~Infinite@49.36.213.114)
2022-07-18 09:57:46 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-18 09:59:05 +0200_ht(~quassel@231-169-21-31.ftth.glasoperator.nl)
2022-07-18 09:59:06 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds)
2022-07-18 10:00:10 +0200tdodrlt^(~tdodrlt@12.187.69.131) (Ping timeout: 240 seconds)
2022-07-18 10:00:52 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-18 10:04:08 +0200lys(sid194105@id-194105.uxbridge.irccloud.com)
2022-07-18 10:08:22 +0200ph88(~ph88@2a02:8109:9e00:71d0::347a) (Quit: Leaving)
2022-07-18 10:08:58 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-07-18 10:11:04 +0200acidjnk_new(~acidjnk@p200300d6e7058641ad02090b6b4e37ed.dip0.t-ipconnect.de)
2022-07-18 10:11:11 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-18 10:11:20 +0200lys(sid194105@id-194105.uxbridge.irccloud.com) ()
2022-07-18 10:13:02 +0200acidjnk(~acidjnk@p200300d6e7058641ad02090b6b4e37ed.dip0.t-ipconnect.de)
2022-07-18 10:15:06 +0200acidjnk_new3(~acidjnk@p200300d6e705864121d6c2a2455d2da3.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2022-07-18 10:15:58 +0200acidjnk_new(~acidjnk@p200300d6e7058641ad02090b6b4e37ed.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-07-18 10:16:42 +0200Infinite(~Infinite@49.36.213.114) (Quit: Client closed)
2022-07-18 10:17:14 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au)
2022-07-18 10:17:23 +0200acidjnk_new(~acidjnk@p200300d6e7058641c8a7bb3f61556f24.dip0.t-ipconnect.de)
2022-07-18 10:17:39 +0200kuribas(~user@ptr-17d51eoir4u5diqgim8.18120a2.ip6.access.telenet.be)
2022-07-18 10:18:04 +0200acidjnk_new3(~acidjnk@p200300d6e705864174c175faeeeeaa95.dip0.t-ipconnect.de)
2022-07-18 10:19:47 +0200maroloccio(~marolocci@37.100.36.239)
2022-07-18 10:20:11 +0200chomwitt(~chomwitt@2a02:587:dc00:5a00:576f:713d:f0b0:d7e1)
2022-07-18 10:20:43 +0200acidjnk(~acidjnk@p200300d6e7058641ad02090b6b4e37ed.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2022-07-18 10:21:50 +0200acidjnk_new(~acidjnk@p200300d6e7058641c8a7bb3f61556f24.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-07-18 10:22:00 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au) (Ping timeout: 276 seconds)
2022-07-18 10:24:39 +0200lys(sid194105@id-194105.uxbridge.irccloud.com)
2022-07-18 10:25:18 +0200lys(sid194105@id-194105.uxbridge.irccloud.com) (Changing host)
2022-07-18 10:25:18 +0200lys(sid194105@user/lys)
2022-07-18 10:29:54 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-18 10:30:30 +0200gurkenglas(~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
2022-07-18 10:30:37 +0200mmhat(~mmh@p200300f1c70559c1ee086bfffe095315.dip0.t-ipconnect.de)
2022-07-18 10:31:24 +0200fserucas_(~fserucas@39.64.114.89.rev.vodafone.pt)
2022-07-18 10:31:54 +0200fserucas(~fserucas@36.70.114.89.rev.vodafone.pt) (Ping timeout: 264 seconds)
2022-07-18 10:33:56 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
2022-07-18 10:37:24 +0200vglfr(~vglfr@coupling.penchant.volia.net)
2022-07-18 10:37:35 +0200zxx7529(~Thunderbi@user/zxx7529)
2022-07-18 10:40:22 +0200Vajb(~Vajb@n1zigc3rgo9mpde2w-1.v6.elisa-mobile.fi) (Read error: Connection reset by peer)
2022-07-18 10:41:26 +0200Vajb(~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi)
2022-07-18 10:44:18 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 10:46:36 +0200ccntrq(~Thunderbi@2a01:c23:8894:e200:7659:e0b5:7bbc:ffcb) (Remote host closed the connection)
2022-07-18 10:46:54 +0200ccntrq(~Thunderbi@2a01:c23:8894:e200:11bf:b185:f4bf:b5ca)
2022-07-18 10:48:24 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-18 10:48:49 +0200OscarZ(~oscarz@85.194.207.119) (Quit: Leaving)
2022-07-18 10:49:46 +0200chele(~chele@user/chele)
2022-07-18 10:53:07 +0200cfricke(~cfricke@user/cfricke)
2022-07-18 10:57:17 +0200dunj3(~dunj3@kingdread.de)
2022-07-18 10:57:23 +0200zxx7529(~Thunderbi@user/zxx7529) (Remote host closed the connection)
2022-07-18 10:57:39 +0200zxx7529(~Thunderbi@user/zxx7529)
2022-07-18 10:57:45 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au)
2022-07-18 10:59:10 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au) (Remote host closed the connection)
2022-07-18 11:01:15 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au)
2022-07-18 11:04:00 +0200Vajb(~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-07-18 11:04:21 +0200Vajb(~Vajb@n1zigc3rgo9mpde2w-1.v6.elisa-mobile.fi)
2022-07-18 11:05:31 +0200nate4(~nate@98.45.169.16)
2022-07-18 11:06:51 +0200arahael1(~arahael@118.211.185.62)
2022-07-18 11:07:04 +0200yauhsien(~yauhsien@61-231-46-226.dynamic-ip.hinet.net)
2022-07-18 11:07:07 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au) (Remote host closed the connection)
2022-07-18 11:08:09 +0200arahael(~arahael@14-200-134-141.tpgi.com.au) (Ping timeout: 276 seconds)
2022-07-18 11:08:15 +0200arahael1arahael
2022-07-18 11:08:37 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au)
2022-07-18 11:09:46 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:5546:a014:fe40:2124) (Remote host closed the connection)
2022-07-18 11:10:34 +0200nate4(~nate@98.45.169.16) (Ping timeout: 272 seconds)
2022-07-18 11:12:54 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.5)
2022-07-18 11:13:58 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au) (Remote host closed the connection)
2022-07-18 11:14:07 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au)
2022-07-18 11:16:12 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au) (Remote host closed the connection)
2022-07-18 11:16:52 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au)
2022-07-18 11:17:16 +0200ccntrq(~Thunderbi@2a01:c23:8894:e200:11bf:b185:f4bf:b5ca) (Remote host closed the connection)
2022-07-18 11:17:34 +0200ccntrq(~Thunderbi@2a01:c23:8894:e200:9ac6:8629:8c9:f59a)
2022-07-18 11:18:08 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 11:19:45 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-18 11:20:42 +0200yauhsien(~yauhsien@61-231-46-226.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
2022-07-18 11:21:43 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au) (Ping timeout: 268 seconds)
2022-07-18 11:22:38 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-18 11:23:18 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-07-18 11:24:05 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
2022-07-18 11:27:50 +0200mmhat(~mmh@p200300f1c70559c1ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-07-18 11:28:24 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au)
2022-07-18 11:36:29 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 11:37:54 +0200frost(~frost@user/frost) (Quit: Client closed)
2022-07-18 11:38:37 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 272 seconds)
2022-07-18 11:41:24 +0200mmhat(~mmh@p200300f1c7055987ee086bfffe095315.dip0.t-ipconnect.de)
2022-07-18 11:42:19 +0200ccntrq1(~Thunderbi@2a01:c22:91a8:b500:5243:da60:7eae:237f)
2022-07-18 11:42:36 +0200ccntrq(~Thunderbi@2a01:c23:8894:e200:9ac6:8629:8c9:f59a) (Ping timeout: 276 seconds)
2022-07-18 11:42:36 +0200ccntrq1ccntrq
2022-07-18 11:42:45 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 260 seconds)
2022-07-18 11:44:46 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-18 11:45:50 +0200__monty__(~toonn@user/toonn)
2022-07-18 11:51:45 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au) (Remote host closed the connection)
2022-07-18 11:52:06 +0200cfricke(~cfricke@user/cfricke)
2022-07-18 11:52:24 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au)
2022-07-18 11:52:37 +0200Pickchea(~private@user/pickchea)
2022-07-18 11:56:38 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au) (Ping timeout: 240 seconds)
2022-07-18 11:56:44 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-07-18 11:57:34 +0200thyriaen(~thyriaen@dynamic-002-247-250-157.2.247.pool.telefonica.de)
2022-07-18 12:05:50 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-07-18 12:10:47 +0200ccntrq1(~Thunderbi@2a01:c23:9446:7400:cebe:ce5d:ce60:32ab)
2022-07-18 12:11:26 +0200bilegeek_(~bilegeek@139.sub-174-209-47.myvzw.com) (Quit: Leaving)
2022-07-18 12:11:33 +0200ccntrq(~Thunderbi@2a01:c22:91a8:b500:5243:da60:7eae:237f) (Ping timeout: 272 seconds)
2022-07-18 12:11:33 +0200ccntrq1ccntrq
2022-07-18 12:12:09 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-18 12:15:12 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 244 seconds)
2022-07-18 12:16:10 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds)
2022-07-18 12:23:30 +0200foul_owl(~kerry@174-21-132-202.tukw.qwest.net) (Ping timeout: 240 seconds)
2022-07-18 12:30:02 +0200cfricke(~cfricke@user/cfricke)
2022-07-18 12:32:22 +0200Infinite(~Infinite@2405:201:6014:10d3:78db:d834:b894:3c89)
2022-07-18 12:32:24 +0200vst(~Thunderbi@w118010235.w118010.starhub.net.sg) (Remote host closed the connection)
2022-07-18 12:33:07 +0200thyriaen(~thyriaen@dynamic-002-247-250-157.2.247.pool.telefonica.de) (Quit: Leaving)
2022-07-18 12:33:47 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au)
2022-07-18 12:36:11 +0200jmorris(uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2022-07-18 12:37:22 +0200kazaf(~kazaf@84.252.147.230) (Ping timeout: 252 seconds)
2022-07-18 12:38:47 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au) (Ping timeout: 272 seconds)
2022-07-18 12:39:27 +0200foul_owl(~kerry@23.82.194.107)
2022-07-18 12:39:37 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-18 12:39:55 +0200dcoutts(~duncan@host86-167-206-10.range86-167.btcentralplus.com) (Ping timeout: 260 seconds)
2022-07-18 12:46:00 +0200mickey45(~mickey@115.96.77.44)
2022-07-18 12:47:19 +0200mickey45(~mickey@115.96.77.44) (Client Quit)
2022-07-18 12:49:14 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
2022-07-18 12:49:54 +0200kuribas(~user@ptr-17d51eoir4u5diqgim8.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2022-07-18 12:50:02 +0200yauhsien(~yauhsien@61-231-46-226.dynamic-ip.hinet.net)
2022-07-18 12:52:37 +0200ccntrq(~Thunderbi@2a01:c23:9446:7400:cebe:ce5d:ce60:32ab) (Remote host closed the connection)
2022-07-18 12:53:26 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f) (Ping timeout: 244 seconds)
2022-07-18 12:53:31 +0200iteratee(~kyle@162.218.222.107) (Read error: Connection reset by peer)
2022-07-18 12:54:58 +0200ccntrq(~Thunderbi@2a01:c23:9446:7400:edd1:3c97:f162:bcc2)
2022-07-18 12:55:00 +0200frost(~frost@user/frost)
2022-07-18 12:58:38 +0200iteratee(~kyle@162.218.222.107)
2022-07-18 13:04:40 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-18 13:05:57 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2022-07-18 13:07:30 +0200raym(~raym@user/raym) (Quit: kernel update, rebooting...)
2022-07-18 13:08:30 +0200yauhsien(~yauhsien@61-231-46-226.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2022-07-18 13:09:22 +0200raym(~raym@user/raym)
2022-07-18 13:09:34 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 13:09:38 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 272 seconds)
2022-07-18 13:12:04 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Quit: Reconnecting)
2022-07-18 13:12:11 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl)
2022-07-18 13:13:43 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-18 13:14:41 +0200nasosev(~nasosev@193.116.244.197)
2022-07-18 13:14:48 +0200nasosevnaso
2022-07-18 13:17:42 +0200zxx7529(~Thunderbi@user/zxx7529) (Remote host closed the connection)
2022-07-18 13:17:54 +0200zxx7529(~Thunderbi@user/zxx7529)
2022-07-18 13:30:48 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 13:32:49 +0200toluene(~toluene@user/toulene) (Quit: Ping timeout (120 seconds))
2022-07-18 13:34:21 +0200toluene(~toluene@user/toulene)
2022-07-18 13:35:42 +0200zxx7529(~Thunderbi@user/zxx7529) (Ping timeout: 276 seconds)
2022-07-18 13:35:56 +0200jmorris(uid537181@id-537181.uxbridge.irccloud.com)
2022-07-18 13:37:59 +0200Inst(~Inst@2601:6c4:4080:3f80:d8ab:2e91:63f7:db6e)
2022-07-18 13:38:02 +0200zxx7529(~Thunderbi@user/zxx7529)
2022-07-18 13:38:05 +0200 <Inst> does anyone use Inline-C?
2022-07-18 13:38:08 +0200 <Inst> I want to use it to learn C
2022-07-18 13:39:14 +0200 <merijn> That sounds like a distinctly bad idea
2022-07-18 13:41:48 +0200 <Inst> but is it a hilarious one?
2022-07-18 13:42:24 +0200 <Inst> mainly, I can't get visual studio to work
2022-07-18 13:42:34 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-07-18 13:43:05 +0200 <merijn> Inst: inline-c pretty much relies on you having a decent understanding of both C and Haskell already
2022-07-18 13:43:51 +0200 <Inst> namely template haskell / quasi-quoters
2022-07-18 13:44:07 +0200 <Inst> VSC + HLS is pretty amazing @maerwald
2022-07-18 13:44:23 +0200 <maerwald> Inst: is it?
2022-07-18 13:44:24 +0200 <Inst> meanwhile I'm struggling to figure out how to get VS to work with C
2022-07-18 13:44:51 +0200 <Inst> and eclipse apparently needs me to get mingw and install yet another linux emulator on this windows machine
2022-07-18 13:48:41 +0200 <Inst> fine, it works, but it's really ugly not having a GHCI equivalent
2022-07-18 13:49:26 +0200jespada(~jespada@45.162.228.190)
2022-07-18 13:49:41 +0200 <merijn> Inst: Just install Windows Linux Subsystem
2022-07-18 13:49:53 +0200 <merijn> (wait was it Windows Subsytem for Linux?)
2022-07-18 13:49:57 +0200 <merijn> anyway
2022-07-18 13:50:02 +0200 <merijn> It's pretty great
2022-07-18 13:51:23 +0200 <Inst> okies
2022-07-18 13:51:41 +0200 <Inst> wsl --install -d Debian
2022-07-18 13:51:49 +0200 <Inst> never used that before, was doing Arch when I was playing around with it
2022-07-18 13:51:58 +0200 <Inst> *nix is terrible on laptops
2022-07-18 13:52:50 +0200Lycurgus(~juan@user/Lycurgus)
2022-07-18 13:53:43 +0200 <Lycurgus> Inst did you just start programming?
2022-07-18 13:54:21 +0200 <Inst> why?
2022-07-18 13:54:25 +0200 <Inst> why do you ask?
2022-07-18 13:54:43 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-07-18 13:54:43 +0200jpds1(~jpds@gateway/tor-sasl/jpds) (Read error: Connection reset by peer)
2022-07-18 13:54:43 +0200califax(~califax@user/califx) (Remote host closed the connection)
2022-07-18 13:54:56 +0200 <Lycurgus> because of your comments about learning c and *nix not running on laptops
2022-07-18 13:55:04 +0200 <Inst> *nix runs
2022-07-18 13:55:08 +0200califax(~califax@user/califx)
2022-07-18 13:55:10 +0200 <Inst> I just remember *nix creates terrible battery life
2022-07-18 13:55:12 +0200 <Inst> and then driver support
2022-07-18 13:55:17 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-07-18 13:55:19 +0200jpds1(~jpds@gateway/tor-sasl/jpds)
2022-07-18 13:55:51 +0200 <Lycurgus> well assume you mean unix generally, there's also a thing called nix/nixos though
2022-07-18 13:56:02 +0200 <Lycurgus> it was more the C that caught my attention
2022-07-18 13:56:05 +0200 <Inst> i know, Nix is apparently a distro for Haskell
2022-07-18 13:56:17 +0200 <Inst> C, yes, technically, I just started within the last year or so
2022-07-18 13:56:28 +0200 <Inst> and you do realize that new programmers, if they have a bad background, might not know C
2022-07-18 13:56:29 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-18 13:56:30 +0200 <Inst> Py py py py py
2022-07-18 13:56:37 +0200 <Lycurgus> ok thx for clarifying
2022-07-18 13:56:43 +0200 <Inst> "what's a pointer?"
2022-07-18 13:56:56 +0200 <Lycurgus> i learned C before you were born and mainly on the job at IBM
2022-07-18 13:57:04 +0200 <Inst> 88?
2022-07-18 13:57:39 +0200 <Inst> i mean if you learned it in the 90s, your previous statement isn't technically true
2022-07-18 13:57:47 +0200 <Lycurgus> no before that
2022-07-18 13:57:52 +0200 <Inst> I am crazy enough to try to do Haskell as a first language, though
2022-07-18 13:58:17 +0200 <merijn> Inst: not that crazy, tbh
2022-07-18 13:58:27 +0200 <merijn> Inst: First language my girlfriend learned too
2022-07-18 13:58:44 +0200 <naso> Inst: this is a pretty cool resource https://exercism.org/tracks/haskell
2022-07-18 13:58:47 +0200 <jackdk> I used to TA courses a haskell-first CS program
2022-07-18 13:58:49 +0200 <Inst> i'm sitting in a certain discord somewhere, where my tagline is "i want to pick up girls to teach them haskell"
2022-07-18 13:58:53 +0200 <Lycurgus> the thing is C, as opposed to c++ with which it's almost invariably paired today, is a) super simple and b) probably already largely known to you thru derivates
2022-07-18 13:58:55 +0200 <Inst> it's a dating discord
2022-07-18 13:59:20 +0200 <jackdk> (sorry, it's late, that was incoherent) I used to TA a haskell course that was the intro-to-programming course of a CS program
2022-07-18 13:59:28 +0200 <Inst> iirc, ANU does that
2022-07-18 13:59:34 +0200 <merijn> Lycurgus: What? C is far from simple
2022-07-18 13:59:36 +0200 <Inst> Chicago has it either baseline or in honors
2022-07-18 13:59:43 +0200 <merijn> Haskell2010 is far simpler than C, hands down
2022-07-18 13:59:58 +0200 <Inst> Haskell2010 or Haskell98?
2022-07-18 13:59:59 +0200 <Lycurgus> haskell as a first lang would generally be a bad idea but apparently it isn't your first
2022-07-18 14:00:04 +0200 <Inst> I've done some reading on simple haskell
2022-07-18 14:00:06 +0200 <merijn> Inst: both are
2022-07-18 14:00:08 +0200 <Lycurgus> bad unless you are in a math program
2022-07-18 14:00:13 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 268 seconds)
2022-07-18 14:00:21 +0200 <merijn> Lycurgus: Why would it be a bad idea?
2022-07-18 14:00:55 +0200 <Lycurgus> for the obvious reason merijn
2022-07-18 14:00:57 +0200 <Inst> main drawbacks: I still don't know how to use threepenny-gui
2022-07-18 14:01:00 +0200 <Lycurgus> back to C
2022-07-18 14:01:00 +0200 <merijn> Empirical experience disagrees. People who learn ML-style functional languages as first language seem to have less of a hard time than people with prior experience
2022-07-18 14:01:03 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 276 seconds)
2022-07-18 14:01:05 +0200 <merijn> Lycurgus: What obvious reasons?
2022-07-18 14:01:17 +0200 <Inst> I just set up a client-server architecture using Servant
2022-07-18 14:01:28 +0200 <merijn> I TAed Ocaml for 6 years. People with no prior programming experience struggled far less than people with prior experience
2022-07-18 14:01:28 +0200 <Inst> which is shit, because I don't have a server to test it on, although TBH I could just localhost
2022-07-18 14:01:44 +0200 <Lycurgus> the main things to pick up are the feel for working close to the machine which isn't generally gotten in the langs prevalent these days
2022-07-18 14:01:44 +0200 <Inst> here's one question I have, is my understanding of Haskell functional enough?
2022-07-18 14:01:48 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-07-18 14:02:02 +0200 <Inst> because I'm so annoyed by the fact that it's often just do notation in IO under monad transformers ;_;
2022-07-18 14:02:05 +0200 <merijn> Inst: Renting an personal server is cheap nowadays. Can have a good internet server for sub-5 dollar a month
2022-07-18 14:02:15 +0200 <Lycurgus> when I started i started with machine lang (ibm and cdc assemblers)
2022-07-18 14:02:23 +0200 <Inst> respect from me
2022-07-18 14:02:44 +0200 <Inst> is this the real haskell? Just procedural programming with pure functions attached?
2022-07-18 14:02:45 +0200 <merijn> Inst: Don't worry about using IO everywhere
2022-07-18 14:03:01 +0200 <merijn> Inst: As the age old truism goes: Haskell is my favourite imperative language
2022-07-18 14:03:10 +0200 <Inst> which is why Haskell is a fine first language
2022-07-18 14:03:26 +0200 <Inst> also, I'm finally learning to understand the benefits of imperative programming
2022-07-18 14:03:30 +0200 <Inst> I used to resist assignment whenever possible
2022-07-18 14:03:34 +0200 <Lycurgus> pl/i, fortran, etc were the high level langs then and about a decade in I was a systems programmer in a burroughs shop using algol
2022-07-18 14:03:41 +0200 <Inst> like, make all my code binds if necessary, fuck do notation
2022-07-18 14:03:44 +0200 <merijn> Inst: As you get more experience you will rely less and less on IO, but I feel its a common beginner mistake to "avoid IO too hard" making them unproductive
2022-07-18 14:03:51 +0200 <Lycurgus> which is basically where C came from
2022-07-18 14:04:13 +0200 <Inst> the server program I just set up
2022-07-18 14:04:26 +0200 <Inst> was basically modifying a global variable called a database ;_;
2022-07-18 14:04:38 +0200 <Lycurgus> but if you are a bold soldier, go for it, learn C in the context of inline-c and th
2022-07-18 14:04:40 +0200 <Inst> but assignment, tbh, makes code readable
2022-07-18 14:04:52 +0200 <merijn> Inst: turns out that many/most web programming is simply "modify a database", that's inescapable
2022-07-18 14:05:12 +0200 <Inst> i used to bash will kurt for not playing enough code golf
2022-07-18 14:05:19 +0200 <Inst> but assignment is actually a form of commenting
2022-07-18 14:05:25 +0200 <Inst> i ended up, instead of typing Nothing
2022-07-18 14:05:41 +0200 <Inst> pattern Comment = Nothing
2022-07-18 14:06:25 +0200coot(~coot@213.134.190.95)
2022-07-18 14:06:31 +0200 <Inst> i wonder if an argument can be made for Haskell as, not executable pseudocode as with py
2022-07-18 14:06:34 +0200 <Inst> but definable pseudocode
2022-07-18 14:06:48 +0200 <Inst> you write pseudocode, then you define your terms to make the program work
2022-07-18 14:07:19 +0200 <geekosaur[m]> Someone came close to that
2022-07-18 14:07:54 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-07-18 14:07:57 +0200 <geekosaur[m]> They thought a Haskell program was pseudocode
2022-07-18 14:08:43 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
2022-07-18 14:08:46 +0200Lycurguslooks up will kurt
2022-07-18 14:09:03 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-07-18 14:09:30 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-07-18 14:10:06 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-18 14:10:36 +0200 <Lycurgus> i am reminded of the collected algorithms of the ACM
2022-07-18 14:10:57 +0200 <Lycurgus> which were mostly in algol and read like psuedo code
2022-07-18 14:11:42 +0200 <Inst> from what I've heard, this is actually a common design paradigm in Haskell
2022-07-18 14:11:44 +0200 <jackdk> geekosaur[m]: Haskell vs. Ada vs. C++ vs. Awk vs. ... : https://moodle1.u-bordeaux.fr/pluginfile.php/653695/mod_resource/content/1/haskell-vs-ada.pdf
2022-07-18 14:11:51 +0200 <Inst> write pseudocode, define pseudocode, and your code writes itself
2022-07-18 14:12:11 +0200 <Lycurgus> anyway the c, the lang, is embedded in so many things today, you'll find you prolly already know it
2022-07-18 14:12:37 +0200 <Lycurgus> for the most part
2022-07-18 14:12:41 +0200 <Inst> referential transparency is amazing for this, although you still have issues with whether or not your types check
2022-07-18 14:12:50 +0200 <Inst> and will have to stuff lift and pures into your pseudocode
2022-07-18 14:13:01 +0200 <Lycurgus> ofc C doesn't have that
2022-07-18 14:13:09 +0200 <jackdk> "It is significant that Mr. Domanski, Mr. Banowetz and Dr. Brosgol were all surprised and suspicious when we told them that Haskell prototype P1 is a complete tested executable program. [...] they had studied P1 under the assumption that it was a mixture of requirements specification and top level design. They were convinced it was incomplete because it did not address issues such as data structure design and execution order" (page 14)
2022-07-18 14:13:38 +0200 <geekosaur> that one, yes
2022-07-18 14:13:56 +0200 <geekosaur> was going to grep logs for it but it appears you already have it
2022-07-18 14:14:38 +0200 <geekosaur> and it outperformed the others iirc
2022-07-18 14:14:41 +0200 <Inst> haskell is a troll language @jackdk
2022-07-18 14:14:58 +0200 <jackdk> false
2022-07-18 14:15:08 +0200 <Lycurgus> anyway, yeah good hs reads like psuedocode, that of the circlejerk like strabismic gobbledygook
2022-07-18 14:15:59 +0200 <Inst> jackdk: I mean that Haskell is fun to troll non-Haskellers with
2022-07-18 14:16:16 +0200 <Inst> i personally regard Haskell as smart person' python or ivy-educated python
2022-07-18 14:16:30 +0200 <Lycurgus> *pseudo
2022-07-18 14:16:33 +0200 <jackdk> I prefer to entice non-Haskellers rather than troll them.
2022-07-18 14:19:04 +0200 <Inst> you'll end up trolling them anyways, most haskell instructional material is bad
2022-07-18 14:19:22 +0200 <Inst> holy shit, hudak is dead?
2022-07-18 14:19:32 +0200Lycurguschecks if lyah is still offline
2022-07-18 14:20:13 +0200 <Lycurgus> nope it's back, prolly long time i imagine
2022-07-18 14:20:23 +0200 <Inst> it's back up
2022-07-18 14:21:16 +0200kuribas(~user@silversquare.silversquare.eu)
2022-07-18 14:22:00 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2022-07-18 14:22:48 +0200 <naso> can anyone confirm if hlint works within vscode with ghc 9.2.2 ?
2022-07-18 14:24:46 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-07-18 14:29:45 +0200lortabac(~lortabac@37.101.134.31)
2022-07-18 14:29:51 +0200king_gs(~Thunderbi@187.201.95.222)
2022-07-18 14:31:14 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-07-18 14:31:26 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-07-18 14:31:41 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-07-18 14:38:26 +0200toluene(~toluene@user/toulene) (Read error: Connection reset by peer)
2022-07-18 14:39:10 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 240 seconds)
2022-07-18 14:39:36 +0200toluene(~toluene@user/toulene)
2022-07-18 14:46:43 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-18 14:47:04 +0200jespada(~jespada@45.162.228.190) (Ping timeout: 268 seconds)
2022-07-18 14:47:46 +0200pgass(~pg@190.247.245.154)
2022-07-18 14:49:34 +0200Lycurgus(~juan@user/Lycurgus) (Quit: Exeunt juan@acm.org)
2022-07-18 14:49:47 +0200Infinite(~Infinite@2405:201:6014:10d3:78db:d834:b894:3c89) (Quit: Client closed)
2022-07-18 14:49:58 +0200Infinite(~Infinite@2405:201:6014:10d3:e7dd:bdc9:c7e:b7c2)
2022-07-18 14:50:20 +0200jespada(~jespada@200.123.140.126)
2022-07-18 14:50:59 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 14:51:10 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
2022-07-18 14:53:10 +0200zxx7529(~Thunderbi@user/zxx7529) (Ping timeout: 240 seconds)
2022-07-18 14:58:47 +0200king_gs(~Thunderbi@187.201.95.222) (Read error: Connection reset by peer)
2022-07-18 14:59:01 +0200king_gs(~Thunderbi@2806:103e:29:a1b3:fc5:768a:63a8:5b63)
2022-07-18 15:06:59 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
2022-07-18 15:07:01 +0200nate4(~nate@98.45.169.16)
2022-07-18 15:10:48 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-18 15:12:21 +0200nate4(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-07-18 15:14:13 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
2022-07-18 15:16:36 +0200Infinite(~Infinite@2405:201:6014:10d3:e7dd:bdc9:c7e:b7c2) (Quit: Client closed)
2022-07-18 15:18:30 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f) (Ping timeout: 240 seconds)
2022-07-18 15:20:12 +0200cfricke(~cfricke@user/cfricke)
2022-07-18 15:22:56 +0200yauhsien(~yauhsien@61-231-46-226.dynamic-ip.hinet.net)
2022-07-18 15:30:26 +0200motherfsck(~motherfsc@user/motherfsck)
2022-07-18 15:36:08 +0200dcoutts(~duncan@host86-167-206-10.range86-167.btcentralplus.com)
2022-07-18 15:38:10 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-18 15:38:45 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-07-18 15:38:52 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 15:42:18 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds)
2022-07-18 15:47:14 +0200jpds1(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-07-18 15:47:42 +0200jpds1(~jpds@gateway/tor-sasl/jpds)
2022-07-18 15:49:10 +0200AkechiShiro(~licht@user/akechishiro)
2022-07-18 15:49:54 +0200yauhsien(~yauhsien@61-231-46-226.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
2022-07-18 15:55:19 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-07-18 15:56:55 +0200 <Inst> naso, no clue
2022-07-18 15:57:01 +0200 <Inst> i do get error highlighting, is that hlint?
2022-07-18 15:57:50 +0200king_gs(~Thunderbi@2806:103e:29:a1b3:fc5:768a:63a8:5b63) (Quit: king_gs)
2022-07-18 15:59:37 +0200 <naso> hlint usually suggests refactorings, for example if you wrote `x = id 1` it would tell you to refactor to `x = 1`
2022-07-18 16:02:34 +0200yuv4199(~yuv4199@user/yuv4199) (Quit: Client closed)
2022-07-18 16:03:54 +0200shapr(~user@2600:4040:2d31:7100:8def:886e:cd92:bc2d)
2022-07-18 16:05:53 +0200zxx7529(~Thunderbi@user/zxx7529)
2022-07-18 16:07:55 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.5)
2022-07-18 16:08:15 +0200 <geekosaur> hlint is infos, not warnings, from my experience
2022-07-18 16:10:15 +0200 <geekosaur> but I'm using 8.10.7 still
2022-07-18 16:11:46 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 16:13:05 +0200ccntrq1(~Thunderbi@dynamic-077-006-080-153.77.6.pool.telefonica.de)
2022-07-18 16:13:28 +0200wolke(~wolke@2001:871:25e:696f:d97e:f83:15b1:b4ec) (Quit: Client closed)
2022-07-18 16:13:30 +0200ccntrq(~Thunderbi@2a01:c23:9446:7400:edd1:3c97:f162:bcc2) (Ping timeout: 240 seconds)
2022-07-18 16:13:30 +0200ccntrq1ccntrq
2022-07-18 16:15:43 +0200Sgeo(~Sgeo@user/sgeo)
2022-07-18 16:15:45 +0200jmorris(uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2022-07-18 16:16:54 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 276 seconds)
2022-07-18 16:18:10 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-18 16:18:10 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-18 16:18:26 +0200Pickchea(~private@user/pickchea)
2022-07-18 16:19:34 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 268 seconds)
2022-07-18 16:20:04 +0200 <qrpnxz> Inst: "most haskell instructional material is bad" idk that i'd say bad. More just different. The whitepapers in this space are just awesome and unmatched too. Some good papers end up in ocaml or something and i just cry because it's so ugly lol
2022-07-18 16:20:04 +0200Vajb(~Vajb@n1zigc3rgo9mpde2w-1.v6.elisa-mobile.fi) (Read error: Connection reset by peer)
2022-07-18 16:20:20 +0200Vajb(~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi)
2022-07-18 16:20:21 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 16:20:23 +0200 <Inst> you're assuming that people are capable of reading the documentation
2022-07-18 16:20:38 +0200 <exarkun> What is "bad" supposed to mean here?
2022-07-18 16:20:53 +0200 <Inst> not helpful, i guess
2022-07-18 16:21:15 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-07-18 16:21:23 +0200 <Inst> did you see a Pythonista's review of Haskell?
2022-07-18 16:21:30 +0200 <exarkun> Not helpful to whom?
2022-07-18 16:21:36 +0200 <Inst> "finished Haskellbook, don't feel like I'm ready to produce production-ready code"
2022-07-18 16:21:37 +0200 <qrpnxz> there's a lot of good learning matterial for haskell, but it's not very centralized i suppose?
2022-07-18 16:21:44 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-07-18 16:21:45 +0200 <exarkun> no, I don't know what that is.
2022-07-18 16:21:58 +0200 <qrpnxz> Inst: what is "haskellbook" lol
2022-07-18 16:22:00 +0200 <geekosaur> we've been working on making it more discoverable
2022-07-18 16:22:03 +0200 <Inst> https://bytes.yingw787.com/posts/2020/01/30/a_review_of_haskell/
2022-07-18 16:22:11 +0200 <geekosaur> @where haskellbook
2022-07-18 16:22:11 +0200 <lambdabot> http://haskellbook.com
2022-07-18 16:22:13 +0200 <exarkun> Someone read a book and got to the end and thought they hadn't become an expert in the subject matter?
2022-07-18 16:22:17 +0200 <qrpnxz> ah yeah, good book
2022-07-18 16:22:24 +0200 <exarkun> And was surprised by this?
2022-07-18 16:22:24 +0200 <qrpnxz> exarkun: no kidding lol
2022-07-18 16:22:32 +0200 <merijn> geekosaur: it depends how closely your opinions correspond to Neil's ;)
2022-07-18 16:22:37 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 16:22:48 +0200 <qrpnxz> Headline: Python programmer read one haskell book and not ready for production code base.
2022-07-18 16:22:50 +0200 <qrpnxz> lmao
2022-07-18 16:23:06 +0200 <qrpnxz> python docs are pretty good speaking of
2022-07-18 16:23:22 +0200 <geekosaur> did they even try to do the exercises? just reading does little. (same for python, for that matter. or anything else in my experience)
2022-07-18 16:23:30 +0200 <exarkun> largely because no matter what you do, you can't make a very good Python program
2022-07-18 16:23:41 +0200 <exarkun> so the docs have an easy job preparing you for that :)
2022-07-18 16:23:42 +0200gleostocha(~runic@c-73-15-32-211.hsd1.ca.comcast.net)
2022-07-18 16:23:46 +0200 <qrpnxz> haha
2022-07-18 16:24:19 +0200 <Inst> "felt like brain was melting out"
2022-07-18 16:24:41 +0200 <merijn> exarkun: I've been doing a bunch of python again recently. Which meant diving into the docs and getting tilted all over again by all the people complaining "Haskell's documentation is so bad!"
2022-07-18 16:24:53 +0200 <exarkun> Inst: very selective quote there. How about "My appreciation of programming as an art and as a discipline increased by my learning Haskell" which comes immediately before that?
2022-07-18 16:25:12 +0200 <merijn> exarkun: Man...I *wish* python's documentation was as good as the average Haskell docs I've worked with the past decade
2022-07-18 16:25:18 +0200 <geekosaur> melting out in a bad way, or a good way?
2022-07-18 16:25:22 +0200 <exarkun> merijn: Agree
2022-07-18 16:25:46 +0200 <Inst> it's sort of weird, because once your brain melts out from learning Haskell, you don't really feel it anymore
2022-07-18 16:25:52 +0200 <qrpnxz> i feel this guy on the whitespace thing tbh. Took me a while to get familiar, now it's basically second nature, and i see beginners here also struggle for example with how tightly certain ops bind
2022-07-18 16:25:57 +0200 <merijn> Inst: Oh, you can easily enough
2022-07-18 16:26:00 +0200 <exarkun> Of course "python docs" and "haskell docs" are not uniform things we can talk about very accurately in general
2022-07-18 16:26:07 +0200 <merijn> Inst: You just try to "relearn" ContT
2022-07-18 16:26:12 +0200 <geekosaur> (I found there wa sa lot of "damn, you can do that?!" involved)
2022-07-18 16:26:23 +0200 <merijn> every time I look at/use ContT again my brain leaks out all over
2022-07-18 16:26:26 +0200 <Inst> i sort of expect my brain to melt out every time I encounter a new language feature or implementation
2022-07-18 16:26:38 +0200 <Inst> I'm used to it
2022-07-18 16:26:43 +0200 <exarkun> But I'm totally serious about Python docs having an easier job. If some Python docs gloss over all of the hard parts and make you believe you have understood something, chances are you're going to be able to write your program without much trouble and it'll be a perfectly average, mostly-broken Python program.
2022-07-18 16:26:46 +0200 <dolio> I have a similar feeling about a lot of ancillary stuff people complain about with respect to Haskell.
2022-07-18 16:26:52 +0200 <merijn> exarkun: Yeah, but even stuff like the standard library is just 95% handwaves
2022-07-18 16:26:59 +0200 <exarkun> If you try to take the same approach to Haskell, you'll be buried in compiler errors for a year.
2022-07-18 16:27:12 +0200 <exarkun> is one of these better? That's a personal decision for each programmer to make, I guess.
2022-07-18 16:27:12 +0200 <Inst> quotable
2022-07-18 16:27:20 +0200 <dolio> Like, people complain about build tools, but every other build tool I've used in other languages isn't really any better.
2022-07-18 16:27:23 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-18 16:27:31 +0200 <exarkun> I suspect a lot of people in #haskell decide one way and a lot of people in #python decide another :)
2022-07-18 16:27:33 +0200 <dolio> Mostly worse.
2022-07-18 16:27:37 +0200 <Inst> i love how Haskell is child-safe programming for child Terence Tao
2022-07-18 16:27:43 +0200 <merijn> dolio: I would argue cabal is an order of magnitude better than what I've used in other languages
2022-07-18 16:28:03 +0200 <Inst> TBH
2022-07-18 16:28:05 +0200 <geekosaur> dolio, but those tolols let them get away with more bad practices. much like the languages they're meant for
2022-07-18 16:28:14 +0200 <geekosaur> hm, "tolols"
2022-07-18 16:28:17 +0200 <merijn> dolio: The only thing remotely as pleasant are my own hand-rolled (g)make buildsystems, but those took 2 months of engineering instead of "a 30s copy&paste file job"
2022-07-18 16:28:18 +0200 <qrpnxz> dolio: Go's go command really good
2022-07-18 16:28:19 +0200 <Inst> I was complaining about how bad VSC / GHCup / GHCI felt
2022-07-18 16:28:33 +0200 <Inst> then I tried getting a C IDE working
2022-07-18 16:28:40 +0200 <Inst> on Windows
2022-07-18 16:28:59 +0200 <qrpnxz> "Windows" you already lost
2022-07-18 16:29:29 +0200 <exarkun> Last month I had to debug a CPython bug on Windows
2022-07-18 16:29:38 +0200 <exarkun> I spent 3 weeks just trying to get an environment where I could make a debug build of the interpreter
2022-07-18 16:30:00 +0200 <exarkun> (granted, I am no Windows expert, but it's not like this was my first time ever trying to build software on Windows)
2022-07-18 16:30:08 +0200 <Inst> btw, does Cabal have a working sandbox mode?
2022-07-18 16:30:19 +0200 <geekosaur> cabal *is* a sandbox mode
2022-07-18 16:30:25 +0200 <Inst> I'm annoyed that I'm just using --lib for all libraries and periodically reinstalling all my cabal ilbraries
2022-07-18 16:30:52 +0200 <geekosaur> yeh, that's the backward compatibility "if it breaks you get to keep the pieces" mode
2022-07-18 16:30:52 +0200 <qrpnxz> i just use my system package manager and use cabal for build only :)
2022-07-18 16:31:10 +0200 <geekosaur> cabal 2.x has an explicit sandbox
2022-07-18 16:31:26 +0200 <Inst> I'm on Cabal 3.6.2.0
2022-07-18 16:31:28 +0200 <geekosaur> 3.x you're supposed to let cabal sandbox stuff automatically, and avoid --lib
2022-07-18 16:31:30 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds)
2022-07-18 16:31:40 +0200 <merijn> Inst: NEver use --lib
2022-07-18 16:31:56 +0200 <Inst> merijn: I have no compunction against reinstalling GHCup and Cabal periodically
2022-07-18 16:32:01 +0200 <merijn> Inst: Just use a .cabal for all code you write and let it deal with dependencies
2022-07-18 16:32:11 +0200 <Inst> one .cabal?
2022-07-18 16:32:24 +0200 <merijn> one for each independent bit of code :p
2022-07-18 16:32:29 +0200pgass(~pg@190.247.245.154) (Ping timeout: 272 seconds)
2022-07-18 16:32:40 +0200 <Inst> aka bullshit
2022-07-18 16:32:48 +0200 <merijn> Inst: Why?
2022-07-18 16:32:59 +0200 <geekosaur> --lib has its uses. xmonad is one of them since you really don't want your window manager forcing stuff into a particular cabal context
2022-07-18 16:32:59 +0200 <Inst> okay, here's a student workflow
2022-07-18 16:33:01 +0200 <merijn> Inst: If you just wanna fool around in the repl you can also get cabal to handle that
2022-07-18 16:33:05 +0200 <Inst> one, scratch files for daily messing around
2022-07-18 16:33:09 +0200 <merijn> Inst: "cabal repl -b mypackage"
2022-07-18 16:33:16 +0200 <geekosaur> (that said, I use a buildscript and don't use --lib; it works fine)
2022-07-18 16:33:20 +0200 <Inst> i don't want to set up a cabal file for each file
2022-07-18 16:33:30 +0200 <merijn> Inst: You don't need one per file, though?
2022-07-18 16:33:38 +0200 <Inst> that was what I was asking
2022-07-18 16:33:42 +0200 <merijn> Inst: Cabal package can have arbitrarily many modules/executables
2022-07-18 16:33:57 +0200 <merijn> Inst: "independent bit of code" here = package
2022-07-18 16:34:00 +0200 <Inst> i.e, ability to set a global cabal file with implicit --lib on all libraries
2022-07-18 16:34:05 +0200 <qrpnxz> i've used one cabal file for multiple libraries and executables. I'm guessing you can split that up and still have it all build together?
2022-07-18 16:34:26 +0200 <Inst> my workflow is basically, i have different .hs files for every chapter's exercises from arbitrary books
2022-07-18 16:34:37 +0200 <Inst> and scratch files for mucking around
2022-07-18 16:34:40 +0200 <merijn> qrpnxz: As in "a bunch of libraries that are "independent" but also related?
2022-07-18 16:34:49 +0200 <geekosaur> qrpnxz, with a cabal.project joining it all together into a project, yes
2022-07-18 16:34:50 +0200 <Inst> there should be a managed cabal global environment, tbh
2022-07-18 16:34:57 +0200 <merijn> Inst: We had that
2022-07-18 16:34:57 +0200 <Inst> without a cabal.project hack
2022-07-18 16:35:00 +0200 <qrpnxz> geekosaur:
2022-07-18 16:35:01 +0200 <merijn> Inst: It sucked
2022-07-18 16:35:11 +0200 <Inst> merijn: why?
2022-07-18 16:35:20 +0200 <Inst> was that the notorious cabal hell?
2022-07-18 16:35:22 +0200 <merijn> Inst: It broke non-stop and was super brittle and is why python, ruby, etc. all have "pipenv,pyenv,rubyenv" to sandbox shit
2022-07-18 16:35:25 +0200 <qrpnxz> merijn: usually what happen is that i identify some functionality that i probably want to reuse somewhere else so i just make it a library
2022-07-18 16:35:40 +0200 <qrpnxz> and when i have time i move it to a separate dir
2022-07-18 16:35:48 +0200 <merijn> qrpnxz: So basically, you make a library (possibly unreleased on hackage) and wanna depend on that in your own code?
2022-07-18 16:36:15 +0200 <merijn> Inst: A global environment needs to be consistent, which means over time as you accumulate more installed things it gets really constrained in what you can install
2022-07-18 16:36:41 +0200 <merijn> Inst: The entire point of the current approach is that the environment is curated "per project" so that dependencies from different projects don't interfere
2022-07-18 16:36:46 +0200 <qrpnxz> merijn: and i do, yeah.
2022-07-18 16:36:55 +0200 <merijn> qrpnxz: Yeah, you want cabal.project then
2022-07-18 16:36:57 +0200 <Inst> bleh, i should just learn stack
2022-07-18 16:37:04 +0200 <geekosaur> it does the same thing
2022-07-18 16:37:12 +0200 <geekosaur> it just hides it behind a resolver
2022-07-18 16:37:28 +0200 <naso> Inst: whenever i want to muck around i just 'stack new blah' and everythings ready to go with HLS integration etc
2022-07-18 16:37:29 +0200 <merijn> qrpnxz: See for example: https://github.com/merijn/broadcast-chan
2022-07-18 16:37:33 +0200 <qrpnxz> cabal.project sound useful when the library is a distinct project from the other stuff.
2022-07-18 16:37:54 +0200 <Inst> bleh, back to naval-gazing with inline-c
2022-07-18 16:38:00 +0200 <Inst> but it seems ghci won't recompile the object file ;_;
2022-07-18 16:38:08 +0200 <merijn> qrpnxz: cabal.project is for "I have multiple independent package that I want to develop in tandem (because they dependent on one another, for example)"
2022-07-18 16:38:28 +0200 <qrpnxz> 👍
2022-07-18 16:38:54 +0200 <merijn> qrpnxz: Like in that example broadcast-chan-conduit depends on broadcast-chan, so while I'm working on a version of it for a new release, then it should work with my (unreleased) development version of broadcast-chan (which is obviously not on hackage yet)
2022-07-18 16:39:34 +0200 <merijn> qrpnxz: So cabal.project lets you point your environment/cabal at unreleased packages (either locally or git repos, or even specific git commits in repos) and say "use that version instead of what's on hackage"
2022-07-18 16:40:06 +0200 <merijn> Which works very well for "trying to split this piece of code off into it's own independent library/package"
2022-07-18 16:40:09 +0200 <qrpnxz> huh
2022-07-18 16:40:41 +0200 <qrpnxz> interesting lib btw, bookmarking
2022-07-18 16:42:20 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
2022-07-18 16:45:49 +0200 <turlando> Has anybody ever used monad-parallel? I just need a replacement for replicateM so that a monadic action is repeated N times in parallel rather than sequentially. I swapped my usage of replicateM with the same function provided by the library but it doesn't seem to speed up the computation. I've also tried to wrap it in a forkExec with no luck
2022-07-18 16:46:27 +0200PiDelport(uid25146@id-25146.lymington.irccloud.com)
2022-07-18 16:46:54 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f) (Ping timeout: 264 seconds)
2022-07-18 16:46:54 +0200 <merijn> turlando: How big is N?
2022-07-18 16:47:04 +0200 <merijn> and is N bigger than number of elements?
2022-07-18 16:47:23 +0200 <merijn> eh
2022-07-18 16:47:29 +0200 <merijn> number of elements bigger than N, I mean
2022-07-18 16:47:32 +0200 <turlando> merijn: it's definitely bigger than the amount of cores
2022-07-18 16:48:01 +0200 <merijn> turlando: Yeah, so you want to rate limit the number of parallel executions to be smaller than the full repetition, right?
2022-07-18 16:48:02 +0200 <turlando> Wait, what do you mean by number of elements?
2022-07-18 16:48:17 +0200 <merijn> ah, I read some stuff that's not there
2022-07-18 16:48:26 +0200 <merijn> Basically: You want less parallelism than elements, yes?
2022-07-18 16:48:31 +0200 <geekosaur> also are you making sure they're actually evaluated? parallelizing making thunks that get forced later does ~nothing
2022-07-18 16:48:42 +0200 <merijn> geekosaur: Well he said it was a monadic action
2022-07-18 16:48:57 +0200 <merijn> turlando: async has mapConcurrently, but that runs *everything* in parallel
2022-07-18 16:49:16 +0200 <merijn> turlando: The bad news is, rolling your own parallel IO for a collection is kinda of a pain
2022-07-18 16:49:34 +0200 <merijn> turlando: The good news is, I got so sick of redoing it every time the library we were literally just talking about does it ;)
2022-07-18 16:49:45 +0200 <merijn> turlando: Do you care about the ordering for the repeated actions?
2022-07-18 16:50:16 +0200 <merijn> turlando: https://hackage.haskell.org/package/broadcast-chan-0.2.1.2/docs/BroadcastChan.html#v:parMapM_
2022-07-18 16:50:50 +0200 <turlando> I have this random experiment I'm running N times and collecting the results for each iteration (that's the result of the monadic action). Since they're totally indipendent (other than for the initial call to initStsGen), I'm trying to leverage the different cores I have at disposal to make it possibly faster, ideally by running M iterations per core where M = N / no. of cores
2022-07-18 16:50:53 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-07-18 16:51:11 +0200turlandois reading the backlog
2022-07-18 16:51:18 +0200zeenk(~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f) (Quit: Konversation terminated!)
2022-07-18 16:52:40 +0200MajorBiscuit(~MajorBisc@wlan-145-94-167-213.wlan.tudelft.nl) (Ping timeout: 244 seconds)
2022-07-18 16:55:02 +0200 <turlando> merijn: that looks great, maybe I need parFoldMap given that I need the final result? And the fold function might just be cons?
2022-07-18 16:55:08 +0200 <merijn> turlando: Right, so the stuff I have in broadcast-chan should work. I don't guarantee any ordering on when results are finished, but if that doesn't mater it should be good
2022-07-18 16:55:20 +0200 <turlando> Yeah, ordering is definitely not an issue in my case, fortunately
2022-07-18 16:55:38 +0200 <merijn> turlando: I'd probably use, like a Set or Map as result
2022-07-18 16:55:55 +0200 <merijn> but yeah, cons works too
2022-07-18 16:56:13 +0200 <merijn> turlando: How long is each computation individually? (roughly)
2022-07-18 16:56:42 +0200 <merijn> like, milliseconds, 10s of milliseconds, 100s of milliseconds, even longer?
2022-07-18 16:56:48 +0200 <turlando> Each one is pretty fast, using the very scientifically precise /usr/bin/time it's around 0.02 seconds of wall clock time
2022-07-18 16:57:21 +0200 <merijn> ok, so 10s of milliseconds...hmm
2022-07-18 16:57:59 +0200 <merijn> You can give it a shot, but so far I haven't gottern around to tuning it for super small workloads, so no idea of overhead drowns out any speedup
2022-07-18 16:58:32 +0200 <merijn> I'm mostly using it for IO bound stuff and stuff that has, like 100s of ms times, and there the overhead is insignificant
2022-07-18 16:58:40 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-07-18 16:58:40 +0200 <turlando> I see
2022-07-18 17:00:09 +0200 <merijn> oh, actually
2022-07-18 17:00:09 +0200 <turlando> I have no clue on how threading works in RTS, but I guess in this case the optimal way would be keeping the thread alive and swapping the task rather than creating and killing every time
2022-07-18 17:00:32 +0200 <Inst> btw, quick question about K&R
2022-07-18 17:00:43 +0200 <Inst> "the for statement is a loop, a generalization of the while."
2022-07-18 17:00:51 +0200 <Inst> As a Haskeller in training, this statement is wrong, right?
2022-07-18 17:00:57 +0200mud(~mud@user/kadoban)
2022-07-18 17:00:57 +0200 <qrpnxz> for(;cond;) = while(cond)
2022-07-18 17:01:01 +0200 <geekosaur> for C it is correct
2022-07-18 17:01:05 +0200ccntrq1(~Thunderbi@2a01:c22:8848:d100:7142:5666:5518:c20a)
2022-07-18 17:01:06 +0200 <geekosaur> what qrpnxz said
2022-07-18 17:01:12 +0200 <merijn> turlando: Apparently my speed up test is in much smaller units than I thought, so 10s of milliseconds is probably fine. Worth a shot
2022-07-18 17:01:15 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-18 17:01:28 +0200 <turlando> I will definitely do, thanks a lot merijn
2022-07-18 17:01:30 +0200 <Inst> it pops out because I can't think of a for in an imperative language as a generalization of while
2022-07-18 17:01:35 +0200 <merijn> turlando: That code basically forks of N RTS threads and keeps them around until done
2022-07-18 17:01:39 +0200 <Inst> but rather while is a general case of for, whereas for is specific
2022-07-18 17:01:51 +0200 <merijn> turlando: Note that GHC uses N:M parallelism (or greenthreading or whatever)
2022-07-18 17:01:57 +0200 <Inst> hence why recursion is interchangeable with while, but for is not interchangeable with recursion
2022-07-18 17:02:22 +0200 <turlando> merijn: pthread does the same IIRC so it should be good enough
2022-07-18 17:02:29 +0200 <merijn> turlando: So a program will have M capabilities (i.e. OS threads executing Haskell code) and it will multiplex N (possibly bigger than M) haskell threads onto those M OS threads
2022-07-18 17:02:32 +0200 <qrpnxz> any for can be made into a while and visa versa, which in turn can all be made into a recursive loop
2022-07-18 17:02:54 +0200 <Inst> iirc there are cases, ackermann function springs to mind, which can't be depicted as a for loop
2022-07-18 17:03:01 +0200 <merijn> turlando: So you gotta make sure you have more than 1 capability to actually have multiple Haskell threads computing in parallel
2022-07-18 17:03:23 +0200 <Inst> https://en.wikipedia.org/wiki/Ackermann_function
2022-07-18 17:03:31 +0200ccntrq(~Thunderbi@dynamic-077-006-080-153.77.6.pool.telefonica.de) (Ping timeout: 272 seconds)
2022-07-18 17:03:31 +0200ccntrq1ccntrq
2022-07-18 17:03:32 +0200 <qrpnxz> acherman is an example of a function that is not primitive recursive
2022-07-18 17:03:51 +0200 <merijn> turlando: Can do that either at compile time, at runtime (via "+RTS -N4" or whatever) or in code via: https://hackage.haskell.org/package/base-4.16.2.0/docs/Control-Concurrent.html#v:setNumCapabilities
2022-07-18 17:03:52 +0200 <Inst> but it's depictable by recursion, iirc
2022-07-18 17:04:02 +0200 <merijn> turlando: Also means you have to compile with -threaded for the threaded runtime
2022-07-18 17:04:05 +0200 <Inst> hence for is strictly a subset of while
2022-07-18 17:04:07 +0200 <geekosaur> general recursion, not primitive recursion
2022-07-18 17:04:08 +0200 <Inst> and the statement in K&R is wrong
2022-07-18 17:04:16 +0200gurkenglas(~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de)
2022-07-18 17:04:27 +0200 <Inst> for is a subset of while
2022-07-18 17:04:29 +0200 <geekosaur> but the statement in K&R is correct for C's for loop, which is a while loop with some appendages
2022-07-18 17:04:34 +0200 <qrpnxz> for /= primitive recursive, it just happen that primitive recursive can be expressed as for loop
2022-07-18 17:04:37 +0200 <Inst> ah, i see
2022-07-18 17:04:52 +0200 <Inst> the statement in K&R is that "for is a generalization of while"
2022-07-18 17:04:53 +0200 <turlando> merijn: I was about to ask what did you mean by capabilities. So thread affinity is already set for me by RTS in that way, right?
2022-07-18 17:05:14 +0200 <qrpnxz> K&R is talking about the for statement in C
2022-07-18 17:05:14 +0200pgass(~pg@190.247.245.154)
2022-07-18 17:05:18 +0200 <Inst> I know
2022-07-18 17:05:27 +0200 <Inst> how is adding stuff to while making it a generalization?
2022-07-18 17:05:40 +0200 <geekosaur> because if you omit them you get while
2022-07-18 17:05:54 +0200 <Inst> i'll drop this argument
2022-07-18 17:05:54 +0200 <qrpnxz> while can't define vars and step condition, for can, therefore it's more general
2022-07-18 17:06:01 +0200 <Inst> i still think I caught K&R being loose with terms
2022-07-18 17:06:02 +0200 <qrpnxz> but for can do everything while does
2022-07-18 17:06:03 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 272 seconds)
2022-07-18 17:06:08 +0200 <geekosaur> and for (; cond 😉 is entirely legal C
2022-07-18 17:06:20 +0200yauhsien(~yauhsien@61-231-46-226.dynamic-ip.hinet.net)
2022-07-18 17:06:21 +0200 <geekosaur> bah, overly smart clients
2022-07-18 17:06:22 +0200 <merijn> turlando: Haskell threads can (and do) migrate between capabilities, they use work stealing to balance
2022-07-18 17:06:24 +0200 <qrpnxz> geekosaur: lmao
2022-07-18 17:06:26 +0200 <geekosaur> and for ( ; cond ; ) is entirely legal C
2022-07-18 17:06:43 +0200 <merijn> geekosaur: hell, for(;;) is legal C
2022-07-18 17:06:47 +0200 <geekosaur> yep
2022-07-18 17:07:01 +0200 <Inst> ah, so in C, a for loop isn't a standard for loop in other languages
2022-07-18 17:07:10 +0200 <Inst> hence you can do non-primitive recursion with for in C?
2022-07-18 17:07:20 +0200 <geekosaur> well, a number of other languages borrowed C's for loop
2022-07-18 17:07:21 +0200 <qrpnxz> yes
2022-07-18 17:07:45 +0200 <merijn> turlando: Basically: capability = pthread (plus some data structures for the runtime to manage threads)
2022-07-18 17:08:02 +0200 <kuribas> a C loop isn't recursion.
2022-07-18 17:08:16 +0200 <merijn> and thread generally refers to forkIO (aka haskell's lightweight threads)
2022-07-18 17:08:18 +0200 <kuribas> it's just an imperative sequence of commands.
2022-07-18 17:09:52 +0200 <turlando> merijn: I see, that's pretty neat RTS stuff I didn't know. It's actually my first time attepting at doing parallel (even though not concurrent) stuff in Haskell. Thanks a lot and for the library, it looks very nice and you always provide great help and suggestions here on IRC
2022-07-18 17:11:13 +0200Morrow(~Morrow@147.161.8.250)
2022-07-18 17:11:51 +0200 <merijn> turlando: The GHC user guide has a ton of good stuff on the RTS, parallelism, etc.
2022-07-18 17:15:01 +0200Vajb(~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-07-18 17:15:26 +0200nate4(~nate@98.45.169.16)
2022-07-18 17:16:13 +0200alternat`(~user@staticline-31-183-144-54.toya.net.pl)
2022-07-18 17:16:19 +0200Vajb(~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi)
2022-07-18 17:18:00 +0200alternateved(~user@staticline-31-183-144-54.toya.net.pl) (Ping timeout: 276 seconds)
2022-07-18 17:19:38 +0200Vajb(~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-07-18 17:21:12 +0200Vajb(~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi)
2022-07-18 17:21:44 +0200son0p(~ff@181.136.122.143)
2022-07-18 17:22:44 +0200Vajb(~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-07-18 17:22:50 +0200yauhsien(~yauhsien@61-231-46-226.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2022-07-18 17:23:02 +0200 <Inst> kuribas:
2022-07-18 17:23:05 +0200Vajb(~Vajb@n1zigc3rgo9mpde2w-1.v6.elisa-mobile.fi)
2022-07-18 17:23:23 +0200 <Inst> the point is that a while loop is equivalent to recursion, iirc, Haskell folds many recursive operations into a for loop
2022-07-18 17:24:59 +0200 <dolio> It's not equivalent to recursion on its own. You need memory allocation to track a stack.
2022-07-18 17:25:55 +0200alternat`(~user@staticline-31-183-144-54.toya.net.pl) (ERC 5.4.1 (IRC client for GNU Emacs 29.0.50))
2022-07-18 17:25:59 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-07-18 17:26:35 +0200 <qrpnxz> equivalent in computational power
2022-07-18 17:27:20 +0200 <qrpnxz> i don't have to use the call stack as my stack, i can just malloc one and use it in my while loop
2022-07-18 17:27:41 +0200 <dolio> That's what I said. Without malloc, while is not equivalent to recursion.
2022-07-18 17:28:00 +0200 <qrpnxz> if you don't allow haskell to allocate it's not gonna be useful either lol
2022-07-18 17:28:24 +0200lortabac(~lortabac@37.101.134.31) (Quit: WeeChat 2.8)
2022-07-18 17:28:28 +0200chele(~chele@user/chele) (Remote host closed the connection)
2022-07-18 17:29:30 +0200frost(~frost@user/frost) (Quit: Client closed)
2022-07-18 17:30:42 +0200mvk(~mvk@2607:fea8:5ce3:8500::909a)
2022-07-18 17:30:50 +0200Pickchea(~private@user/pickchea) (Ping timeout: 240 seconds)
2022-07-18 17:32:15 +0200 <raehik> I'm getting funky "unknown symbol"/"lookupSymbol failed in relocateSection" errors when trying to build an FFI project on Mac. I don't own a Mac, using GitHub Actions. would anyone be able to help decipher? https://paste.tomsmeding.com/Pys00dn5
2022-07-18 17:32:20 +0200 <raehik> full log https://github.com/raehik/bytepatch/runs/7392181132?check_suite_focus=true#step:9:750
2022-07-18 17:33:04 +0200 <raehik> getting "GHC runtime linker: fatal error: I found a duplicate definition for symbol" but it then gives me two files which have the same name (or maybe just prefix?)
2022-07-18 17:33:09 +0200 <kuribas> Inst: no, they are very different.
2022-07-18 17:33:28 +0200 <kuribas> Inst: recursion is about applying a function on a subpart.
2022-07-18 17:34:07 +0200 <kuribas> Inst: a while loop means do the side-effect, until another side-effect returns false.
2022-07-18 17:34:48 +0200 <Inst> they're convertible
2022-07-18 17:35:21 +0200 <kuribas> not in general.
2022-07-18 17:35:22 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
2022-07-18 17:35:29 +0200 <kuribas> for specific cases perhaps.
2022-07-18 17:35:33 +0200 <qrpnxz> yes in general
2022-07-18 17:35:33 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-18 17:36:13 +0200 <kuribas> I mean, recursion in haskell doesn't even allow side-effects.
2022-07-18 17:36:48 +0200 <kuribas> well, except for a self-recursive IO monad...
2022-07-18 17:37:21 +0200John_Ivan(~John_Ivan@user/john-ivan/x-1515935) (Quit: Leaving)
2022-07-18 17:37:36 +0200 <qrpnxz> that's a statement about haskell, not so much recursion itself, but yes if you wanna do IO, you gotta be in IO monad
2022-07-18 17:40:22 +0200 <raehik> urgh looks like it
2022-07-18 17:40:42 +0200 <raehik> *it's probably mac homebrew not installing development bits. whatever
2022-07-18 17:41:21 +0200 <kuribas> from wikipedia: "In computer science, recursion is a method of solving a computational problem where the solution depends on solutions to smaller instances of the same problem"
2022-07-18 17:41:32 +0200 <kuribas> a while loop has nothing to do with that.
2022-07-18 17:41:48 +0200 <kuribas> because it has no concept of "smaller instance".
2022-07-18 17:42:38 +0200 <geekosaur> raehik, that doesn't look like missing bits. it looks like either an archive with duplicate symbols/objects or a loader error to me. I would be suspicious of that keystone.a in general, it seems to have both duplicated and missing bits. (also it's C++)
2022-07-18 17:42:59 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds)
2022-07-18 17:44:07 +0200 <raehik> geekosaur: yeah it is suspicious. was confused because I have built the core FFI pkg on Mac already - turns out I built the required library from source instead of using homebrew
2022-07-18 17:44:36 +0200 <raehik> have had similar issues before so I assumed
2022-07-18 17:44:57 +0200 <geekosaur> so it might have two of them? but the paths loook the same
2022-07-18 17:45:05 +0200 <qrpnxz> kuribas: i'm not saying writing something as a while loop is gonna look the same as writing something in a recursive function call style. They are different styles. But I can always rewrite one into the other
2022-07-18 17:45:11 +0200dknite(~dknite@49.37.45.188) (Read error: Connection reset by peer)
2022-07-18 17:45:12 +0200Morrow(~Morrow@147.161.8.250) (Read error: Connection reset by peer)
2022-07-18 17:45:40 +0200dknite(~dknite@110.224.0.191)
2022-07-18 17:46:29 +0200 <raehik> it's not a popular package, may well have homebrew build issues
2022-07-18 17:47:00 +0200 <raehik> those error msgs were opaque to me -- thanks for the help
2022-07-18 17:48:18 +0200 <[Leary]> kuribas: The point is only about expressivity. You can implement stateful while loops using recursion. If you can also implement recursion using stateful while loops, then they're equivalent in strength.
2022-07-18 17:48:22 +0200Morrow(~Morrow@192.114.91.215)
2022-07-18 17:56:05 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f) (Remote host closed the connection)
2022-07-18 17:57:50 +0200mvk(~mvk@2607:fea8:5ce3:8500::909a) (Ping timeout: 255 seconds)
2022-07-18 17:59:57 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-18 18:01:43 +0200mvk(~mvk@2607:fea8:5ce3:8500::909a)
2022-07-18 18:01:45 +0200Haskelytic(~Haskelyti@118.179.211.17) (Quit: Client closed)
2022-07-18 18:04:48 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-07-18 18:09:28 +0200dolio(~dolio@130.44.130.54) (Read error: Connection reset by peer)
2022-07-18 18:09:41 +0200dolio(~dolio@130.44.130.54)
2022-07-18 18:10:27 +0200dolio(~dolio@130.44.130.54) (Client Quit)
2022-07-18 18:10:46 +0200 <naso> how can i create a matrix with elements from a finite field, using hmatrix and the `Mod n x` type under the first heading here 'Elements': https://hackage.haskell.org/package/hmatrix-0.20.2/docs/Numeric-LinearAlgebra-Data.html#t:Z
2022-07-18 18:14:33 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-07-18 18:15:24 +0200dknite(~dknite@110.224.0.191) (Read error: Connection reset by peer)
2022-07-18 18:16:22 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 18:16:27 +0200dolio(~dolio@130.44.130.54)
2022-07-18 18:16:36 +0200alecs(~alecs@151.62.28.16)
2022-07-18 18:17:04 +0200 <naso> • Couldn't match kind ‘*’ with ‘Natural’
2022-07-18 18:17:04 +0200 <naso> Expected kind ‘Nat’, but ‘Fixed 5’ has kind ‘*’
2022-07-18 18:17:04 +0200 <naso> • In the first argument of ‘Mod’, namely ‘(Fixed 5)’
2022-07-18 18:17:06 +0200 <naso> In the type ‘Mod (Fixed 5) Z’
2022-07-18 18:17:08 +0200 <naso> In the type declaration for ‘Ring’
2022-07-18 18:17:10 +0200 <naso> i have tried e.g. `type Ring = Mod (Fixed 5) Z` but get an error :
2022-07-18 18:18:30 +0200nate4(~nate@98.45.169.16) (Ping timeout: 240 seconds)
2022-07-18 18:19:11 +0200 <naso> (my last message should have been the first one)
2022-07-18 18:19:58 +0200 <geekosaur> shouldn't it just be `5`, not `Fixed 5`?
2022-07-18 18:20:25 +0200 <geekosaur> the definition of `Fixed` that I know creates a fixed-precision data type of kind `*`
2022-07-18 18:20:54 +0200acidjnk_new(~acidjnk@p200300d6e705864174c175faeeeeaa95.dip0.t-ipconnect.de)
2022-07-18 18:20:57 +0200 <naso> thank you, that type checks ! i have not used the type level numbers before
2022-07-18 18:21:47 +0200kuribas(~user@silversquare.silversquare.eu) (Quit: ERC (IRC client for Emacs 26.3))
2022-07-18 18:22:30 +0200Morrow(~Morrow@192.114.91.215) (Ping timeout: 240 seconds)
2022-07-18 18:22:49 +0200phma(~phma@2001:5b0:212a:f318:9888:9b59:ea41:c1c) (Read error: Connection reset by peer)
2022-07-18 18:23:47 +0200phma(~phma@2001:5b0:211f:d1f8:9471:1396:f73f:5401)
2022-07-18 18:23:50 +0200acidjnk_new3(~acidjnk@p200300d6e705864174c175faeeeeaa95.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-07-18 18:24:07 +0200foul_owl(~kerry@23.82.194.107) (Ping timeout: 244 seconds)
2022-07-18 18:26:05 +0200dknite(~dknite@49.37.45.188)
2022-07-18 18:27:36 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-07-18 18:28:59 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-07-18 18:29:48 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
2022-07-18 18:32:47 +0200califax(~califax@user/califx) (Ping timeout: 268 seconds)
2022-07-18 18:35:01 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-07-18 18:36:17 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 18:37:45 +0200califax(~califax@user/califx)
2022-07-18 18:39:44 +0200foul_owl(~kerry@23.82.194.109)
2022-07-18 18:40:59 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-07-18 18:42:29 +0200 <qrpnxz> every try to implement something from a paper and it doesn't work? I feel betrayed, but likely i just made a mistake somewhere
2022-07-18 18:42:50 +0200christiansen(~christian@83-95-137-75-dynamic.dk.customer.tdc.net) (Ping timeout: 255 seconds)
2022-07-18 18:43:29 +0200 <merijn> lol, all the time, they're often riddled with mistakes
2022-07-18 18:43:49 +0200 <merijn> I'd be more surprised if it worked the first time, tbh
2022-07-18 18:43:56 +0200 <qrpnxz> lol
2022-07-18 18:44:50 +0200 <Rembane> qrpnxz: Are you having a personal replication crisis?
2022-07-18 18:44:55 +0200alecs(~alecs@151.62.28.16) (Quit: WeeChat 3.6)
2022-07-18 18:46:25 +0200 <qrpnxz> taking a crack rn at translating lambda calc to SK combinators. GADTs have allowed me to translate some of the stuff pretty much directly from the semantic translation which blew my mind. I literally cannot construct an invalid lambda term it's amazing.
2022-07-18 18:46:36 +0200 <qrpnxz> Rembane: idk what's that?
2022-07-18 18:47:30 +0200 <Rembane> qrpnxz: The replication crisis is something that's taking place among papers on psychology, because the findings can't be replicated.
2022-07-18 18:47:45 +0200 <geekosaur> the replication crisis is a recentish thing in scientific and medical circles where papers' results can't be replicated by others
2022-07-18 18:47:59 +0200 <geekosaur> psychology's a big one, yes, but it's all over the place
2022-07-18 18:48:19 +0200 <qrpnxz> ah yeah, for a sec i was thinking that like "bastards, it's not even real!", but i think in this case i really probably did just mess up somewhere
2022-07-18 18:48:27 +0200 <merijn> Don't pretend computer science is any better :p
2022-07-18 18:48:36 +0200 <geekosaur> the hard sciences are slightly less prone to it because te first thing everyone does is try to replicate… but it's in medicine too
2022-07-18 18:48:51 +0200 <merijn> Because I have a major part of chapter dedicated to skewering CS for that :p
2022-07-18 18:49:06 +0200 <qrpnxz> there's other problem too like there's a lot of notation that's never explained and i have no idea where to even learn it, so it takes me like a day to figure out what it's even saying
2022-07-18 18:49:07 +0200 <Rembane> There are some newish papers where they are trying to prove the classical CS proofs using Agda or Coq or something and sometimes failing in interesting ways. :D
2022-07-18 18:49:07 +0200 <geekosaur> now I'm reminded of monochrom's fable from yesterday (in offtopic)
2022-07-18 18:49:53 +0200yauhsien(~yauhsien@61-231-46-226.dynamic-ip.hinet.net)
2022-07-18 18:51:33 +0200 <qrpnxz> thankfully some of this special notation is pretty standard as in it's used in many papers. So more paper i read it gets easier
2022-07-18 18:55:35 +0200alecs(~alecs@151.62.28.16)
2022-07-18 18:56:29 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
2022-07-18 18:58:10 +0200gleostocha(~runic@c-73-15-32-211.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2022-07-18 18:59:05 +0200 <qrpnxz> some detail are missing from the paper i had to fill in, maybe that's where i mess up
2022-07-18 18:59:36 +0200naso(~nasosev@193.116.244.197) ()
2022-07-18 18:59:39 +0200 <geekosaur> now it's sounding like the haskell report re typechecking 😛
2022-07-18 18:59:55 +0200 <qrpnxz> lool
2022-07-18 19:00:17 +0200finsternis(~X@23.226.237.192) (Ping timeout: 244 seconds)
2022-07-18 19:00:48 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f) (Ping timeout: 244 seconds)
2022-07-18 19:01:03 +0200 <qrpnxz> if i figure this out, in an alternate universe i'd make a PR for this paper 🙁
2022-07-18 19:01:12 +0200finsternis(~X@23.226.237.192)
2022-07-18 19:01:12 +0200 <qrpnxz> i meant 🙂
2022-07-18 19:01:48 +0200christiansen(~christian@83-95-137-75-dynamic.dk.customer.tdc.net)
2022-07-18 19:03:29 +0200dcoutts(~duncan@host86-167-206-10.range86-167.btcentralplus.com) (Remote host closed the connection)
2022-07-18 19:03:50 +0200dcoutts(~duncan@host86-167-206-10.range86-167.btcentralplus.com)
2022-07-18 19:03:58 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 19:04:29 +0200yauhsien(~yauhsien@61-231-46-226.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
2022-07-18 19:06:23 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
2022-07-18 19:07:42 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-18 19:08:32 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-18 19:09:23 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 255 seconds)
2022-07-18 19:09:40 +0200ccntrq(~Thunderbi@2a01:c22:8848:d100:7142:5666:5518:c20a) (Remote host closed the connection)
2022-07-18 19:10:39 +0200econo(uid147250@user/econo)
2022-07-18 19:13:24 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-18 19:18:43 +0200zxx7529(~Thunderbi@user/zxx7529) (Remote host closed the connection)
2022-07-18 19:18:56 +0200zxx7529(~Thunderbi@user/zxx7529)
2022-07-18 19:20:18 +0200Raito_Bezarius(~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 240 seconds)
2022-07-18 19:22:14 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 19:26:19 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2022-07-18 19:30:35 +0200andscape(~andscape@ti0185a400-0748.bb.online.no)
2022-07-18 19:31:11 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-07-18 19:33:15 +0200Raito_Bezarius(~Raito@wireguard/tunneler/raito-bezarius)
2022-07-18 19:38:18 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-07-18 19:42:29 +0200dlock(~dlock@213.205.241.187)
2022-07-18 19:43:19 +0200 <dlock> is there a version of cabal init for cabal projects?
2022-07-18 19:44:08 +0200zxx7529(~Thunderbi@user/zxx7529) (Remote host closed the connection)
2022-07-18 19:44:22 +0200 <dlock> and does anyone know of an example of mueval in use, im trying to find an online tutorial
2022-07-18 19:44:25 +0200zebrag(~chris@user/zebrag)
2022-07-18 19:45:53 +0200 <sclv> dlock: cabal configure generates a cabal.project.local file
2022-07-18 19:47:14 +0200 <dlock> ok ill try that, thanks
2022-07-18 19:47:26 +0200 <dlock> for the mueval thing i finally found a thread; https://stackoverflow.com/questions/68641460/how-to-send-a-lambda-function-from-commandline-to-a-h…
2022-07-18 19:48:13 +0200 <dlock> which links to this; https://stackoverflow.com/questions/16679089/how-can-i-parse-a-string-to-a-function-in-haskell
2022-07-18 19:48:21 +0200 <dlock> actually providing an example!
2022-07-18 19:49:50 +0200 <geekosaur> the lambdabot source should provide an example in the eval plugin
2022-07-18 19:50:26 +0200 <dlock> the cabal.project.local just ends up containing; ignore-project: False
2022-07-18 19:50:41 +0200 <dlock> whereas when i set up a cabal project im used to having to specify the path to the project
2022-07-18 19:50:58 +0200 <dlock> well, to the directory of the .cabal file for the component of the project
2022-07-18 19:51:27 +0200 <dlock> geekosaur: i tried to look at the lambdabot source but there was a lot of peripheral stuff for irc and various other platforms
2022-07-18 19:51:29 +0200 <geekosaur> https://github.com/lambdabot/lambdabot/blob/master/lambdabot-haskell-plugins/src/Lambdabot/Plugin/…
2022-07-18 19:52:31 +0200 <dlock> not quite sure what that is doing
2022-07-18 19:54:04 +0200 <dlock> ok i see some stuff on linke 96
2022-07-18 19:54:18 +0200kritzefitz(~kritzefit@debian/kritzefitz) (Ping timeout: 240 seconds)
2022-07-18 19:55:28 +0200kritzefitz(~kritzefit@debian/kritzefitz)
2022-07-18 19:55:46 +0200 <geekosaur> https://github.com/lambdabot/lambdabot/blob/master/lambdabot-haskell-plugins/src/Lambdabot/Plugin/… is the heart of it. the rest maintains a file L.hs of predefined things, constructed from Pristine.hs in the state directory
2022-07-18 19:55:49 +0200 <dlock> i guess id quite like to see an example which imports it and uses it, because i guess how its used by the rest of lambdabot is quite obtuse
2022-07-18 19:57:03 +0200benin0(~benin@183.82.176.5) (Quit: The Lounge - https://thelounge.chat)
2022-07-18 19:57:10 +0200 <geekosaur> and it invokes mueval as a binary, not a library
2022-07-18 19:58:05 +0200 <dlock> hmm
2022-07-18 19:58:11 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-07-18 19:58:26 +0200 <dlock> still, i mean, for incorperating it into my code i would import this module of lambdabot right?
2022-07-18 19:59:20 +0200 <geekosaur> no, it's just an example of how to make use of mueval with a list of trusted imports and predefined things, running on a user-provided expression
2022-07-18 19:59:32 +0200Morrow(~Morrow@192.114.91.213)
2022-07-18 19:59:51 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 276 seconds)
2022-07-18 19:59:53 +0200 <dlock> ah ok i see it there on line 77
2022-07-18 20:02:30 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2022-07-18 20:03:41 +0200 <dlock> is there an advantage over hint?
2022-07-18 20:03:42 +0200 <geekosaur> the earlier linked thing uses hint, which is less sandboxed but gives you a relatively simple function API to use
2022-07-18 20:03:48 +0200 <merijn> dlock: tbh, a "cabal.project" can be (and often is) as simple as merely 1 line "packages: <paths here>"
2022-07-18 20:04:36 +0200jakalx(~jakalx@base.jakalx.net)
2022-07-18 20:04:42 +0200 <dlock> i have each of my projects in their 1 project cabal project dir structure, with libraries seperated so i can merge projects easily
2022-07-18 20:04:59 +0200 <geekosaur> mueval is a fairly tight sandbox, so you know users aren't e.g. using unsafePerformIO behind your back to modify the system or something
2022-07-18 20:05:13 +0200 <merijn> dlock: Just wondering what you'd expect an "init" for cabal.project to do, exactly :)
2022-07-18 20:05:13 +0200 <dlock> i guess it was a bit over hopeful thinking it might set it up in this kind of dir structure for me like cabal init kind of does
2022-07-18 20:05:18 +0200 <geekosaur> if you're running untrusted input, mueval is to be preferred
2022-07-18 20:05:26 +0200cosimone(~user@93-44-186-171.ip98.fastwebnet.it) (Remote host closed the connection)
2022-07-18 20:05:35 +0200 <dlock> geekosuar: nope, this is development code
2022-07-18 20:05:55 +0200 <dlock> i mean, obviously it should compile...
2022-07-18 20:06:28 +0200 <merijn> dlock: "each project in their 1 project cabal project dir structure" <- you mean like 1 directory per project and 1 package per project?
2022-07-18 20:06:29 +0200 <dlock> but its not like opening it up to web users or something that might try and hack with it
2022-07-18 20:06:38 +0200 <geekosaur> I'm not sure what dir structure you'd like, btw. projects are just groups of packages, how you group them is up to you and you use cabal.project to tell that to cabal
2022-07-18 20:07:34 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-07-18 20:07:39 +0200 <dlock> i just have to go through my template changing the string "clean-project" to whatever i want it to be
2022-07-18 20:07:46 +0200 <dlock> its just the dir struct
2022-07-18 20:07:54 +0200 <dlock> ill try and find the zip i was using hang on
2022-07-18 20:08:41 +0200 <merijn> dlock: I mean, my "directory structure" is literally just "the same as cabal init" or "N subdirectories which are just cabal packages"
2022-07-18 20:08:52 +0200 <merijn> I don't really know what there is to automate
2022-07-18 20:10:06 +0200 <tomsmeding> The mueval library on hackage looks incomplete; it can evaluate an expression and _print_ the result on stdout, but since runInterpreter is not exported, one can't use `interpreter` and catch the output in-process
2022-07-18 20:10:13 +0200 <dlock> hmm, sure, i guess you could initialise n packages. basically i had the idea that eventually all the different libs should be merged, like all the different ways each project solves the same thing could eventually be replaced by a MyPrelude style setup
2022-07-18 20:10:47 +0200 <tomsmeding> Just exporting runInterpreter could fix that
2022-07-18 20:10:51 +0200 <dlock> tomsmeding: i need it to produce a type annotated list of outputs
2022-07-18 20:11:00 +0200 <merijn> I don't think I understand that explanation enough to understand what you want it to do
2022-07-18 20:11:04 +0200 <geekosaur> tomsmeding, look at how lambdabot uses it. it's a program that takes an expression and a set of trusted packages on the command line and prints the result to stdout
2022-07-18 20:11:08 +0200acidjnk_new3(~acidjnk@p200300d6e7058641e86f8f8671f06cda.dip0.t-ipconnect.de)
2022-07-18 20:11:08 +0200 <tomsmeding> List of outputs? A single expression has only a single output
2022-07-18 20:11:15 +0200 <geekosaur> it's not really the same setup as hint
2022-07-18 20:11:33 +0200 <tomsmeding> geekosaur: I saw, the mueval package on hackage indeed also produces an executable
2022-07-18 20:11:35 +0200 <dlock> tomsmeding: i use the type signature to indicate otherwise!
2022-07-18 20:11:45 +0200 <dlock> by saying it should output a type annotated list!
2022-07-18 20:11:50 +0200 <tomsmeding> But that executable simply calls into the library directly, in classical haskell style
2022-07-18 20:12:11 +0200 <tomsmeding> What is a "type annotated list"? List of strings?
2022-07-18 20:12:17 +0200 <dlock> i mean, if i were using backpack, it would read strait into the output type in a pure setting
2022-07-18 20:12:37 +0200 <tomsmeding> dlock: what is the ideal type of the function that mueval would give you
2022-07-18 20:12:38 +0200 <dlock> no, its a list with type annotations in a list giving the type of the values stored
2022-07-18 20:13:28 +0200 <dlock> :: String -> (List (xs :: [*]) -> List (ys :: [*]))
2022-07-18 20:13:31 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-18 20:13:40 +0200 <dlock> obviously it could fail to compile to that type
2022-07-18 20:13:43 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-07-18 20:13:47 +0200 <tomsmeding> Where List is a heterogeneous list?
2022-07-18 20:13:53 +0200 <dlock> yes
2022-07-18 20:14:15 +0200 <dlock> Cons :: x -> List xs -> List (x:xs)
2022-07-18 20:14:48 +0200 <dlock> and i have a synonm for this as a MIMO function
2022-07-18 20:14:51 +0200 <tomsmeding> The idea being that if the String represents an expression of type a -> b -> c, then xs ~ [a, b] and ys ~ [c] ?
2022-07-18 20:14:55 +0200acidjnk_new(~acidjnk@p200300d6e705864174c175faeeeeaa95.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-07-18 20:15:08 +0200 <dlock> different from (List xs -> x) (MISO)
2022-07-18 20:15:22 +0200 <tomsmeding> I don't see how ys would be a list with more than 1 element
2022-07-18 20:15:30 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2022-07-18 20:15:35 +0200 <dlock> well eg with a list of MISO functions
2022-07-18 20:15:53 +0200 <dlock> each given the same input, produces a vector of results (List here)
2022-07-18 20:16:12 +0200 <dlock> [MISO] -> MIMO
2022-07-18 20:16:14 +0200 <tomsmeding> Is this necessary? Could you also simulate what you want using a SISO function, that takes and returns e.g. a heterogeneous list?
2022-07-18 20:16:40 +0200 <dlock> no, im piping everything through an architectural bottleneck, it needs to hold this vector
2022-07-18 20:17:06 +0200 <dlock> things are going off in differrent directions depending on if they are in different parts of a pair of Lists at one point
2022-07-18 20:17:06 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-07-18 20:17:14 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 20:17:23 +0200 <dlock> inputs passed in from the left and from above, outputs going down and to the right
2022-07-18 20:17:41 +0200 <dlock> so basically there is "shape" among this grouping, and so a list is required
2022-07-18 20:17:53 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-07-18 20:17:56 +0200 <tomsmeding> I don't see why mueval needs to know about the list
2022-07-18 20:18:04 +0200 <tomsmeding> https://hackage.haskell.org/package/mueval have you read the readme here?
2022-07-18 20:18:06 +0200 <dlock> :t mapAccumL
2022-07-18 20:18:07 +0200qhong(~qhong@rescomp-21-400677.stanford.edu) (Read error: Connection reset by peer)
2022-07-18 20:18:07 +0200 <lambdabot> Traversable t => (a -> b -> (a, c)) -> a -> t b -> (a, t c)
2022-07-18 20:18:13 +0200 <dlock> see how that "outputs a pair"
2022-07-18 20:18:16 +0200qhong(~qhong@rescomp-21-400677.stanford.edu)
2022-07-18 20:18:22 +0200 <dlock> and basically has some curried input pair aswell
2022-07-18 20:18:28 +0200 <tomsmeding> You could just compile that to a binary, and call that binary from your haskell program
2022-07-18 20:18:30 +0200Cale(~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com)
2022-07-18 20:18:43 +0200 <tomsmeding> And use Show and Read to pass in the arguments and parse the outputs
2022-07-18 20:18:53 +0200 <dlock> the problem is that trying to parse the string return from the binary
2022-07-18 20:19:06 +0200 <dlock> id rather compile it into a function that i can actually use to return the type i require of it
2022-07-18 20:19:10 +0200 <tomsmeding> You could require that all the types in the output list implement Read
2022-07-18 20:19:45 +0200 <dlock> but then how do i enusre it compiles
2022-07-18 20:19:50 +0200 <dlock> ill get a read no parse error then
2022-07-18 20:20:00 +0200 <tomsmeding> You cannot compile haskell code at runtime while knowing statically that it will be type-safe
2022-07-18 20:20:04 +0200gleostocha(~runic@c-73-15-32-211.hsd1.ca.comcast.net)
2022-07-18 20:20:13 +0200 <dlock> sure, it should be
2022-07-18 20:20:15 +0200 <tomsmeding> Because ghc is not gadt-typed internally
2022-07-18 20:20:33 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net) (Quit: Lost terminal)
2022-07-18 20:20:51 +0200 <dlock> i can interpret haskell code and ensure that the type matches that required
2022-07-18 20:20:53 +0200 <tomsmeding> So even if you get out ghc itself and just-in-time compile the code, you're going to need to unsafeCoerce the output to the expected type
2022-07-18 20:21:04 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net)
2022-07-18 20:21:08 +0200 <tomsmeding> Then you need to write a type-preserving haskell interpreter
2022-07-18 20:21:12 +0200 <tomsmeding> It doesn't exist yet
2022-07-18 20:21:15 +0200 <dlock> what!?
2022-07-18 20:21:26 +0200 <dlock> i can read the AST
2022-07-18 20:21:30 +0200 <tomsmeding> Haskell interpreters exist
2022-07-18 20:21:35 +0200 <tomsmeding> AST -> Value
2022-07-18 20:21:41 +0200 <tomsmeding> Not AST t -> t
2022-07-18 20:21:45 +0200Morrow(~Morrow@192.114.91.213) (Ping timeout: 272 seconds)
2022-07-18 20:21:47 +0200 <dlock> hmm
2022-07-18 20:21:51 +0200 <dlock> thats so weird though
2022-07-18 20:21:54 +0200 <dlock> why!?
2022-07-18 20:22:01 +0200 <tomsmeding> No, that's pragmatism
2022-07-18 20:22:18 +0200 <dlock> i can compile a function, but not of a specific type
2022-07-18 20:22:23 +0200 <dlock> because thats pragmatic!?
2022-07-18 20:22:30 +0200 <tomsmeding> Writing a full compiler in a type-safe manner is a huge undertaking in addition to the challenges that writing a haskell compiler already presents
2022-07-18 20:22:51 +0200 <tomsmeding> dlock: ghc is intended to be used as an executable that compiles a haskell file to a binary
2022-07-18 20:22:56 +0200 <dlock> i thought it was supposed to expose inner workings of the GHC type checking process to the user
2022-07-18 20:23:06 +0200 <dlock> i wouldnt expect it to massively limmit the compilers capabilities
2022-07-18 20:23:13 +0200Morrow(~Morrow@192.114.91.213)
2022-07-18 20:23:14 +0200 <tomsmeding> Internal gadt types are completely useless to the user then
2022-07-18 20:23:27 +0200 <tomsmeding> Only if you use ghc as a library could you potentially use the gadt-typedness
2022-07-18 20:23:40 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2022-07-18 20:23:44 +0200 <dlock> right, we just want to work on the internal representation, and your saying its not a nice haskell 98 AST datatype
2022-07-18 20:23:45 +0200 <tomsmeding> Well you _can_ interact with the ghc type checker
2022-07-18 20:23:54 +0200 <tomsmeding> But you'll get the types as _values_ in the AST
2022-07-18 20:24:02 +0200 <tomsmeding> Not on the type level
2022-07-18 20:24:23 +0200 <dlock> i need to check at least that the type output matches that its supposed to in the rest of the program
2022-07-18 20:24:24 +0200 <tomsmeding> Like, data AST = Var Type String | Lambda Type String AST | ...
2022-07-18 20:24:36 +0200 <dlock> i need the type signature of the output of the interpreter to be matchable
2022-07-18 20:24:45 +0200 <tomsmeding> data Type = Int | Float | List Type | ...
2022-07-18 20:24:51 +0200 <tomsmeding> Simplified, of course
2022-07-18 20:24:54 +0200 <dlock> sure
2022-07-18 20:24:58 +0200 <tomsmeding> Sure, you can do that
2022-07-18 20:25:08 +0200 <tomsmeding> I thought you needed full gadt typing :p
2022-07-18 20:25:09 +0200 <dlock> ok, and i need to interact with "ghc as a library"
2022-07-18 20:25:26 +0200 <tomsmeding> Which is hard
2022-07-18 20:25:42 +0200 <tomsmeding> It's certainly possible, e.g. HLS does it
2022-07-18 20:25:46 +0200 <dlock> i mean, like the example with hint had a user defining a lambda expression using stdin
2022-07-18 20:25:55 +0200 <dlock> and printing the result to stdout
2022-07-18 20:26:13 +0200 <tomsmeding> I believe that hint only gives you the full front-to-back pipeline, from input haskell code to evaluated result
2022-07-18 20:26:19 +0200 <dlock> id just want the same that bound the type into scope in the module, not using IO
2022-07-18 20:26:35 +0200gleostocha(~runic@c-73-15-32-211.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
2022-07-18 20:26:42 +0200 <dlock> i understand hint cant do that
2022-07-18 20:26:48 +0200 <dlock> nor mueval from the command line
2022-07-18 20:27:06 +0200 <dlock> and i dont think the wrapper for reeproviding stripped types sounds good either
2022-07-18 20:27:28 +0200 <dlock> so let me see if i can find this HLS thing, hang on
2022-07-18 20:27:48 +0200 <tomsmeding> dlock: here you see what hint does https://hackage.haskell.org/package/hint-0.9.0.6/docs/src/Hint.Typecheck.html#typeOf
2022-07-18 20:28:09 +0200 <tomsmeding> typeChecksWithDetails returns the type-checked type... as a String
2022-07-18 20:28:21 +0200 <tomsmeding> But that String is produced using typeOf, defined above
2022-07-18 20:28:24 +0200 <dlock> yeah, as a string
2022-07-18 20:28:40 +0200 <dlock> ok so i can at least throw an error if it doesnt typecheck
2022-07-18 20:28:41 +0200 <tomsmeding> That type_ variable is a GHC.Type
2022-07-18 20:28:44 +0200 <dlock> but i cant actually use the type
2022-07-18 20:29:00 +0200 <dlock> ok, so i can just *insist* the read instance wont fail
2022-07-18 20:29:15 +0200 <tomsmeding> If you'd reimplement that typeOf function yourself, skipping the typeToString, you could inspect the GHC.Type
2022-07-18 20:29:19 +0200 <dlock> im sure i could pass in the intended type it should match
2022-07-18 20:30:09 +0200 <dlock> well, im sure the euqlity of GHC.Type and the corresponding show output should be equivalent for typechecking
2022-07-18 20:30:10 +0200 <geekosaur> you couldn't anyway. it might return a type butit'd be in the context of that environment, it won't compare to a type in your program (which won't even exist unless you e.g. require Typeable dictionaries all over the place)
2022-07-18 20:30:14 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-07-18 20:30:30 +0200 <geekosaur> fingerprints etc. will differ
2022-07-18 20:30:37 +0200nightbreak[Away](~nightbrea@2600:1700:70d1:d800:38ac:cd9e:758c:fd93) (Ping timeout: 272 seconds)
2022-07-18 20:30:50 +0200 <dlock> hmm, definately worse than my "backpack does it and its pure!" comparison
2022-07-18 20:31:30 +0200 <dlock> actually though, typable constraints are basically the exact thing youd want for this though...
2022-07-18 20:31:36 +0200nightbreak(~nightbrea@2600:1700:70d1:d800:4c68:423:c75b:c148)
2022-07-18 20:31:38 +0200 <geekosaur> backpack uses some poorly documented internals
2022-07-18 20:31:51 +0200 <dlock> it breaks nix too so i dont think i can use it in deployment
2022-07-18 20:32:05 +0200 <dlock> which id actually forgotten about and is a good save!
2022-07-18 20:32:15 +0200 <geekosaur> there's already been a "document this or it gets removed next version" warning issued
2022-07-18 20:32:21 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 276 seconds)
2022-07-18 20:32:31 +0200 <dlock> doesnt seem maintained, and it should be because its a good feature
2022-07-18 20:33:00 +0200 <dlock> and would need to be eg for the nix team to get it working, but i think we basically abandoned that because apparently nobody knew what backpack was doing
2022-07-18 20:33:00 +0200 <geekosaur> it very badly needs docs
2022-07-18 20:33:25 +0200 <geekosaur> and stack doesn't and apparently won't support it, which excludes something like half the haskell userbase
2022-07-18 20:33:59 +0200 <dlock> spent ages getting the syntax for mixins working!
2022-07-18 20:34:00 +0200Vajb(~Vajb@n1zigc3rgo9mpde2w-1.v6.elisa-mobile.fi) (Read error: Connection reset by peer)
2022-07-18 20:34:02 +0200 <geekosaur> the only documentation is ezyang's thesis, which sadly is rather less readable than most haskell papers
2022-07-18 20:34:04 +0200 <monochrom> This is what happens to PhD theses.
2022-07-18 20:34:13 +0200 <dlock> there was some rotate example i had
2022-07-18 20:34:24 +0200 <monochrom> On the bright side, Dependent Haskell also started as a PhD thesis. There is still hope. >:)
2022-07-18 20:34:27 +0200 <dlock> ages ago, ill dig it out, its basically what you can and cant do with backpack
2022-07-18 20:34:46 +0200Vajb(~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi)
2022-07-18 20:34:57 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-07-18 20:35:09 +0200 <monochrom> Actually ezyang's thesis has a chapter that's very readable examples, and I read just that.
2022-07-18 20:35:31 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 20:35:46 +0200nehsou^(~nehsou@12.187.69.131)
2022-07-18 20:36:20 +0200 <dlock> https://github.com/fog-hs/rotateRecombined/tree/master/rotateRecombined/rotate/rotate/src
2022-07-18 20:36:53 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-07-18 20:36:59 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 20:37:01 +0200CAT_Siamgarp
2022-07-18 20:37:31 +0200Vajb(~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-07-18 20:37:42 +0200Vajb(~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi)
2022-07-18 20:37:56 +0200hasbae(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2022-07-18 20:38:04 +0200 <dlock> syntax for mixins like this; https://github.com/fog-hs/rotateRecombined/blob/master/rotateRecombined/rotateRecombined.cabal
2022-07-18 20:39:40 +0200 <hasbae> Why doesn't the type Integer declare itself to be an instance of Semigroup?
2022-07-18 20:39:42 +0200 <dlock> anyway, i cant use that, i have a solution which involves mueval cmd with string or GHC.Types to ensure i can Read the output safely
2022-07-18 20:39:52 +0200 <geekosaur> hasbae, which Semigroup?
2022-07-18 20:39:58 +0200 <hasbae> Is it beacuse + and * could be <>?
2022-07-18 20:40:05 +0200 <geekosaur> there are two primary ones
2022-07-18 20:40:06 +0200 <geekosaur> yes
2022-07-18 20:40:09 +0200 <dlock> its a ring and we have Num instead for some reason
2022-07-18 20:40:14 +0200 <geekosaur> so they're both on newtypes
2022-07-18 20:40:15 +0200 <monochrom> Because there are like 4 competing semigroup candidates, and no one has a better claim than others.
2022-07-18 20:40:24 +0200 <dlock> **
2022-07-18 20:40:25 +0200 <monochrom> Game Of Semigroup Throne
2022-07-18 20:40:35 +0200kenran(~kenran@200116b82b64080076695fb43fedb5f1.dip.versatel-1u1.de)
2022-07-18 20:40:36 +0200kenran(~kenran@200116b82b64080076695fb43fedb5f1.dip.versatel-1u1.de) (Client Quit)
2022-07-18 20:40:44 +0200 <dlock> er ^ sry
2022-07-18 20:40:51 +0200 <hasbae> what are the four competing candidates?
2022-07-18 20:40:52 +0200 <monochrom> So instead, please use the Sum, Product, Min, and Max newtype wrappers.
2022-07-18 20:40:55 +0200 <dlock> % :t (^) @Int
2022-07-18 20:40:55 +0200 <yahb2> (^) @Int :: Integral b => Int -> b -> Int
2022-07-18 20:41:03 +0200mbuf(~Shakthi@122.165.55.71) (Quit: Leaving)
2022-07-18 20:41:05 +0200 <dlock> % :t (^) @Int @Int
2022-07-18 20:41:06 +0200 <yahb2> (^) @Int @Int :: Int -> Int -> Int
2022-07-18 20:41:23 +0200alecs(~alecs@151.62.28.16) (Quit: WeeChat 3.6)
2022-07-18 20:41:38 +0200 <dlock> i think theres also an algebra so you can have expressions like (\x y -> x*2 +y^x)
2022-07-18 20:41:49 +0200 <dlock> still a monoid right?
2022-07-18 20:41:52 +0200 <monochrom> I might be able to argue for 4 more, if we also recall that Integers is also an instance of Bits or something...
2022-07-18 20:41:53 +0200 <geekosaur> mm, I wouldn't have thought of Min and Max as primary candidates
2022-07-18 20:42:03 +0200 <geekosaur> but I'm not a mathematician
2022-07-18 20:42:19 +0200 <dlock> what like rightShift or something
2022-07-18 20:42:41 +0200 <hasbae> these ideas of semigroup, monoid, rings, etc... are from abstract algebra?
2022-07-18 20:42:47 +0200 <monochrom> yes
2022-07-18 20:43:06 +0200 <dlock> i think they call it a vocabulary
2022-07-18 20:43:23 +0200 <hasbae> anyone have a good link close to "Abstract Algebra for haskell programmers"?
2022-07-18 20:43:25 +0200 <dlock> probably they need type signatures
2022-07-18 20:43:39 +0200 <monochrom> No. Would be overrated.
2022-07-18 20:43:55 +0200 <dlock> hmm, i think the programatic proffs are useful?
2022-07-18 20:44:00 +0200 <monochrom> Haskell is not big about rings and beyond.
2022-07-18 20:44:19 +0200 <monochrom> Monoids and semigroups are almost trivial to communicate and learn.
2022-07-18 20:44:23 +0200 <geekosaur> more to the point it can't really describe them
2022-07-18 20:44:31 +0200 <geekosaur> (rings and beyond that is)
2022-07-18 20:44:42 +0200 <dlock> yeah, but like, constructing an algebra using a datatype is pretty much like, idiomatic
2022-07-18 20:44:56 +0200 <dlock> the A in GADT
2022-07-18 20:45:11 +0200 <monochrom> They're literally just one short web page. Here: http://www.cs.utoronto.ca/~trebla/CSCC24-2022-Summer/05-haskell-fold.html#semigroup-and-monoid
2022-07-18 20:45:26 +0200 <monochrom> It would take just 1 minute on TikTok or Youtube Shorts.
2022-07-18 20:45:30 +0200 <dlock> what do you mean it cant express them, the class system does it beautifully
2022-07-18 20:45:32 +0200 <hasbae> ha
2022-07-18 20:45:41 +0200 <dlock> extensible axiomatic constructions
2022-07-18 20:45:42 +0200 <geekosaur> I'm sure someone's done an hour on them though
2022-07-18 20:46:11 +0200 <hasbae> I haven't gotten around to GADTs yet.
2022-07-18 20:46:41 +0200 <monochrom> Oh there is a huge market for spectator sport long drawn-out "explaining" every trivial concept, yeah.
2022-07-18 20:46:42 +0200 <dlock> everyone always asks why we have Num instead of some Edkmett style Cat stuff, and i think basically it nenver got standardised and had frequent avenues towards bloat
2022-07-18 20:47:10 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2022-07-18 20:47:26 +0200 <dlock> hasbae: there is a kind of duality between datatypes and classes, where if you put all the class function types as datatype fields you basically "make an object that instantiates the class"
2022-07-18 20:47:51 +0200 <dlock> it a tuatology though, but understanding it can be useful in deciding when you need a class and when you need a datatype
2022-07-18 20:48:16 +0200 <geekosaur[m]> Num is about pragmatism not mathematical purity
2022-07-18 20:48:26 +0200 <dlock> we even had reflection at one point for trying to make function arguments order agnostic and do constant time scope access and stuff
2022-07-18 20:48:34 +0200 <hasbae> off the top of my head, i'd say you need a class when you have an interface for more than one datatype
2022-07-18 20:48:55 +0200 <dlock> i was arguing it was more a case of extensibility
2022-07-18 20:49:04 +0200codaraxis__(~codaraxis@user/codaraxis)
2022-07-18 20:49:16 +0200 <hasbae> ok, that makes sense
2022-07-18 20:49:19 +0200 <dlock> this is where all the lesnses stuff starts coming in since you try making compositional algebras for record accessors and stuff
2022-07-18 20:50:10 +0200 <dlock> the rift between the two approaches we were advocating sperately for was that the lesnses way overlooked the existence of a canonical formalism
2022-07-18 20:50:37 +0200 <dlock> it allowed the expression of it in an abstract formalism, but since the canonical approach is available i argued for this instead
2022-07-18 20:51:02 +0200 <dlock> so i was just trying to do generics basically
2022-07-18 20:51:26 +0200 <monochrom> I just argue for KISS.
2022-07-18 20:51:28 +0200codaraxis___(~codaraxis@user/codaraxis) (Read error: Connection reset by peer)
2022-07-18 20:51:33 +0200 <dlock> anyway, there ends up being 3 approaches, lenses are very well supported, everyone ignored my efforts, and generics are pretty much complete
2022-07-18 20:51:49 +0200 <hasbae> and in your definition, the canonical approach is putting the function types in the datatype?
2022-07-18 20:51:55 +0200 <dlock> but my canonical extensible datatype i was quite proud of
2022-07-18 20:52:23 +0200codaraxis(~codaraxis@user/codaraxis)
2022-07-18 20:52:31 +0200 <dlock> hasbae: oh, re classes vs datatypes, no, using classes and reflection was a hack of epic proportions
2022-07-18 20:52:38 +0200 <dlock> it was more for the constant time access
2022-07-18 20:53:11 +0200 <dlock> so yes a datatype for the extensible thing is kind of less insane
2022-07-18 20:53:27 +0200 <dlock> point is that because its canonical you dont need lesnses
2022-07-18 20:53:31 +0200 <dlock> since records are not used
2022-07-18 20:53:43 +0200 <dlock> it presents index algebras then as a kind of alternative to lenses
2022-07-18 20:53:52 +0200 <dlock> this is what the "seti" stuff was, imo
2022-07-18 20:54:30 +0200 <dlock> bascially, with name dereferencing using records you define a graph that can use index algebra formalism to preserve linearity of construction
2022-07-18 20:54:38 +0200 <hasbae> when you guys keep mentioning algebra, is algebra in this context mean: set of elements, and set of functions over those elements?
2022-07-18 20:54:43 +0200 <dlock> this basically uses the traversal instance of the thing to give an ordering to the elements
2022-07-18 20:54:56 +0200 <monochrom> yes
2022-07-18 20:55:01 +0200 <dlock> as well as structure specific directing information (how to navigate around a tree essentially)
2022-07-18 20:55:19 +0200codaraxis__(~codaraxis@user/codaraxis) (Ping timeout: 272 seconds)
2022-07-18 20:55:26 +0200 <hasbae> so index algebra = indices (like 0..100) and then functions on indicies?
2022-07-18 20:55:28 +0200 <monochrom> actually I didn't bring up algebra, so meh
2022-07-18 20:55:32 +0200 <dlock> so you get the zipper on the extensible thing as a suspended traversal as a for of "pointer" over it, all instead of a record graph
2022-07-18 20:56:07 +0200 <dlock> interestingly, the zipper over the tree of () then serves as the index. like how an int is a zipper on the line of integers
2022-07-18 20:56:29 +0200 <dlock> this is something to do with its comonadicity, which we get for free by our seti efforts
2022-07-18 20:56:42 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-07-18 20:57:00 +0200 <dlock> index algebra is saaying like, if you tell me how to point somewhere, and then how to change that pointer to somewhere else
2022-07-18 20:57:06 +0200 <dlock> then i have a morphism on the pointer
2022-07-18 20:57:22 +0200 <dlock> and if monoidal then its algebraic iiuc
2022-07-18 20:57:36 +0200 <hasbae> ah, cool!
2022-07-18 20:57:40 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
2022-07-18 20:57:45 +0200 <dlock> instead of records to tell you where stuff is?
2022-07-18 20:57:53 +0200 <dlock> makes sense cos the tree just has a standardised shape
2022-07-18 20:58:14 +0200 <dlock> the central theorom is something like "everythings a tree" because free lists something something
2022-07-18 20:58:14 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
2022-07-18 20:59:15 +0200 <dlock> its like "why use an algebraic approach to records when the algebra *is* that of graph pointer navigation"
2022-07-18 20:59:23 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f) (Remote host closed the connection)
2022-07-18 20:59:27 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-18 20:59:32 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
2022-07-18 20:59:35 +0200 <dlock> i think it was considered "too theoretical"
2022-07-18 21:00:03 +0200 <dlock> anyway, everyone seems to like lenses, since they like naming how to locate things in the datatype themselves
2022-07-18 21:00:08 +0200Vajb(~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-07-18 21:00:18 +0200 <dlock> instead of saying things like "3 down two along, down again until the leaf"
2022-07-18 21:00:24 +0200Vajb(~Vajb@n1zigc3rgo9mpde2w-1.v6.elisa-mobile.fi)
2022-07-18 21:00:35 +0200 <hasbae> came for Semigroup, stayed to learn some index algebra. Thanks for the help!
2022-07-18 21:00:46 +0200 <dlock> thanks for understanding!
2022-07-18 21:01:30 +0200 <dlock> but really like, i have one traversable default, and he has an abstraction over the notion of traversability, or something insane
2022-07-18 21:01:52 +0200 <dlock> i cant remember quite where biplate enters lenses, but its there
2022-07-18 21:02:13 +0200coot(~coot@213.134.190.95)
2022-07-18 21:02:44 +0200 <dlock> basically what i wanted to do which his cant is use routines for foraging for data in the tree, like nearest neighbours on a square grid
2022-07-18 21:02:59 +0200 <dlock> this is much more obviously where you want an algebra on the index instead of a string
2022-07-18 21:03:24 +0200 <dlock> this leads to the "pointer comonad" which turns out to be really central
2022-07-18 21:03:49 +0200 <dlock> replacing the values to pointers to those values that can be repositioned with the index algebra
2022-07-18 21:03:49 +0200Cale(~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com) (Read error: Connection reset by peer)
2022-07-18 21:03:58 +0200 <dlock> then you can do like
2022-07-18 21:04:01 +0200 <dlock> :t map extract
2022-07-18 21:04:03 +0200 <lambdabot> error: Variable not in scope: extract :: a -> b
2022-07-18 21:04:11 +0200 <dlock> % :t fmap extract
2022-07-18 21:04:11 +0200 <yahb2> <interactive>:1:6: error: Variable not in scope: extract :: a -> b
2022-07-18 21:04:14 +0200 <dlock> eh?
2022-07-18 21:04:39 +0200 <merijn> Why would that be in scope?
2022-07-18 21:04:47 +0200 <dlock> isnt that from comonad?
2022-07-18 21:04:48 +0200 <merijn> % import Control.Comonad
2022-07-18 21:04:48 +0200 <yahb2> <no location info>: error: ; Could not find module ‘Control.Comonad’ ; Perhaps you meant Control.Monad (from base-4.14.3.0)
2022-07-18 21:04:51 +0200 <geekosaur> @let import Control.Comonad
2022-07-18 21:04:52 +0200 <lambdabot> Defined.
2022-07-18 21:04:56 +0200 <dlock> thanks
2022-07-18 21:05:01 +0200 <dlock> Pointer (p :: * -> *) => p a -> a
2022-07-18 21:05:06 +0200 <merijn> :t extract
2022-07-18 21:05:06 +0200 <dlock> % :t fmap extract
2022-07-18 21:05:07 +0200 <yahb2> <interactive>:1:6: error: Variable not in scope: extract :: a -> b
2022-07-18 21:05:08 +0200 <lambdabot> Comonad w => w a -> a
2022-07-18 21:05:28 +0200 <dlock> :t fmap extract
2022-07-18 21:05:29 +0200 <lambdabot> (Comonad w, Functor f) => f (w b) -> f b
2022-07-18 21:06:00 +0200 <dlock> > duplicate [1]
2022-07-18 21:06:02 +0200 <lambdabot> error:
2022-07-18 21:06:02 +0200 <lambdabot> • Could not deduce (Comonad []) arising from a use of ‘duplicate’
2022-07-18 21:06:02 +0200 <lambdabot> from the context: Num a
2022-07-18 21:06:07 +0200 <dlock> ok nvm
2022-07-18 21:06:20 +0200 <dlock> anyway, lists comonad instance should be default
2022-07-18 21:06:23 +0200 <dlock> er, no nvm
2022-07-18 21:06:30 +0200 <dlock> you only get a pointer default for the zipper
2022-07-18 21:06:42 +0200 <dlock> i guess you could use the tails version
2022-07-18 21:07:16 +0200 <dlock> > fmap extract $ tails [1,2,3]
2022-07-18 21:07:18 +0200 <lambdabot> error:
2022-07-18 21:07:18 +0200 <lambdabot> • Could not deduce (Comonad []) arising from a use of ‘extract’
2022-07-18 21:07:18 +0200 <lambdabot> from the context: Num b
2022-07-18 21:07:36 +0200 <dlock> > fmap head $ tails [1,2,3]
2022-07-18 21:07:38 +0200 <lambdabot> [1,2,3,*Exception: Prelude.head: empty list
2022-07-18 21:08:08 +0200 <dlock> so where i used head there i could have also had access to the neighbours in the tail
2022-07-18 21:08:17 +0200 <dlock> which is how to do "convolutions"
2022-07-18 21:08:33 +0200 <dlock> which is what this neighbour access of pointer comonad duplication enables
2022-07-18 21:09:24 +0200 <dlock> > fmap (\(x:y:_) -> (x+y) / 2) $ tails [1,2,3]
2022-07-18 21:09:26 +0200 <lambdabot> [1.5,2.5,*Exception: <interactive>:3:7-27: Non-exhaustive patterns in lambda
2022-07-18 21:10:04 +0200 <dlock> this is much more cool when you have the actual tree zipper as the pointer
2022-07-18 21:10:17 +0200 <dlock> then you can get nd euclidean grid neighbours etc
2022-07-18 21:11:11 +0200 <dlock> i really wanted to try and write up the project with someone, but i ended up running out of time
2022-07-18 21:11:47 +0200NaturalNumber(~monadam@137.229.82.64)
2022-07-18 21:11:47 +0200 <dlock> probably people would be more enticed if i could do the paperwork to release research funding
2022-07-18 21:12:08 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 21:12:36 +0200 <dlock> problem is with the "theres a phd in it for someone", is its just my phd that i never wrote up!
2022-07-18 21:12:44 +0200 <dlock> its not like they would actually do the resaech
2022-07-18 21:12:55 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-07-18 21:13:25 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2022-07-18 21:13:43 +0200 <dlock> but idk how edkmett gets like half the haskell comunity to consolodate his code deep within the compiler, and mine gets used in list compilers and pretty much nowhere else
2022-07-18 21:14:01 +0200 <dlock> like, even haskell seems to have forgotten the theoretical foundations of turing machines and stuff
2022-07-18 21:14:19 +0200 <dlock> "we listen to church, only church, none of his other colluges were doing anything like this"
2022-07-18 21:14:58 +0200 <dlock> so list gets built around it, and haskell as an alternative to lisp like languages (like rust?)
2022-07-18 21:15:28 +0200 <dlock> totally forgets all the seti stuff, as if, just having list concatination and lazy evaluation as central concepts will somehow forge its reverse engineering
2022-07-18 21:15:53 +0200 <dlock> which obviously worked like a charm, but like, theres still nothing more than the clock implementation of it to actually use
2022-07-18 21:16:17 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-18 21:16:38 +0200 <dlock> i have a real problem getting people to help, because some of them are boud by some weird form of conflict of interest
2022-07-18 21:17:16 +0200 <dlock> "because we are supposed to encourage you to have good ideas, not insert ideas of our own"
2022-07-18 21:17:27 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-07-18 21:17:51 +0200 <dlock> so when i actually need help writing up a project or getting it on hackage there are some people that it would be great if they could help but they seem to cant
2022-07-18 21:18:42 +0200 <dlock> im not sure how ed managed to direct so much resources to lenses
2022-07-18 21:18:45 +0200 <dlock> and im glad they work
2022-07-18 21:18:58 +0200 <merijn> He didn't, he just build it first and people showed up :p
2022-07-18 21:19:19 +0200 <geekosaur> he didn;t even build it first, he just built it better
2022-07-18 21:19:20 +0200 <dlock> right, but i walked you all through this seti stuff over the course of like, half my life, and what?
2022-07-18 21:19:23 +0200 <geekosaur> fclabels was first
2022-07-18 21:19:28 +0200 <monochrom> At this point this is just becoming sour grape.
2022-07-18 21:19:40 +0200 <merijn> geekosaur: Well, profunctor optics was a first
2022-07-18 21:19:48 +0200 <dlock> im not right to be astonished by this?
2022-07-18 21:20:01 +0200 <merijn> geekosaur: the earlier Van Laarhoven lenses were hardly as powerful or comparable
2022-07-18 21:20:10 +0200 <dlock> i mean, sure lisp is groovy etc
2022-07-18 21:20:22 +0200 <dlock> i dont mean to sound bummed out
2022-07-18 21:20:28 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f) (Remote host closed the connection)
2022-07-18 21:20:34 +0200 <dlock> just my results get likke strewn
2022-07-18 21:20:44 +0200 <Bulby[m]> wdym lisp is groovy, they are completely different langs
2022-07-18 21:21:04 +0200 <dlock> and i think dismissing this significant indicator for a treasure hunt, well, might just be how i ended up sour about it
2022-07-18 21:21:42 +0200 <dlock> Bulby: im not really sure of how lisp arose, but it has an interesting history with the development of lambda calculus and the stuff to do with list comprehensions
2022-07-18 21:22:02 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
2022-07-18 21:22:20 +0200 <monochrom> I also want to submit a rectification.
2022-07-18 21:22:29 +0200 <Bulby[m]> that was a joke but it wasn't very funny 🥲
2022-07-18 21:22:30 +0200 <monochrom> s/walked you all through/monologued/
2022-07-18 21:22:54 +0200 <dlock> acknowledged
2022-07-18 21:23:02 +0200 <dlock> im not sure if this is supposed to sound disparaging
2022-07-18 21:23:06 +0200 <int-e> . o O ( The Rectifier, the upcoming TV series )
2022-07-18 21:23:17 +0200 <dlock> im aware of certain constraints
2022-07-18 21:23:21 +0200 <monochrom> edk is engaging, you are not. edk is coherent, you are not.
2022-07-18 21:23:36 +0200 <dlock> as above
2022-07-18 21:23:50 +0200 <merijn> monochrom: You forgot "edk has been doing this for over 2 decades"
2022-07-18 21:24:02 +0200 <dlock> he had a good supervising prof too
2022-07-18 21:24:12 +0200 <dlock> but yeah, having a decade headstart
2022-07-18 21:24:16 +0200 <dlock> ontop of mine...
2022-07-18 21:24:24 +0200 <monochrom> Wait what? He doesn't have a Phd, never went to grad school, no?
2022-07-18 21:24:35 +0200 <dlock> sorry, i get the ideas all backwards
2022-07-18 21:24:56 +0200 <dlock> wait, really, but hes super smart, id presume he had like enough phds for everyone
2022-07-18 21:25:15 +0200 <monochrom> There's where he's also wise, not just smart.
2022-07-18 21:25:25 +0200 <monochrom> Don't bother with PhD.
2022-07-18 21:25:42 +0200 <dlock> yeah, but, to entice, with the funding, and the survival etc
2022-07-18 21:26:04 +0200 <monochrom> He has a real industrial job.
2022-07-18 21:26:07 +0200 <dlock> i told my phd supervisor id get better assistance on welfare, he was like "good"
2022-07-18 21:26:26 +0200 <dlock> the IP dispute put me in hospital
2022-07-18 21:27:15 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
2022-07-18 21:27:16 +0200 <dlock> so then i give away all this valuvle, or like, invalble stuff into the public arena, and its described as a nuisance
2022-07-18 21:27:37 +0200 <dlock> given what i saw from the industry, i dont see it as in good faith
2022-07-18 21:28:11 +0200 <geekosaur> this is not really the place for that kind of discussion
2022-07-18 21:28:18 +0200 <dlock> sure
2022-07-18 21:28:20 +0200 <dlock> appologies
2022-07-18 21:28:27 +0200geekosaurlooks back for the last place actual haskell was mentioned…
2022-07-18 21:28:37 +0200 <maerwald[m]> IP dispute?
2022-07-18 21:28:40 +0200 <dlock> interestingly, it was thanks to that phd
2022-07-18 21:28:59 +0200 <dlock> maerwald: a younger version of myself didnt understand you cant own the canonical algorithm
2022-07-18 21:29:14 +0200 <monochrom> Ugh maerwald[m], please don't restart that...
2022-07-18 21:29:29 +0200 <maerwald[m]> Oops
2022-07-18 21:29:31 +0200 <monochrom> At this point the only way to win is not to play.
2022-07-18 21:29:44 +0200 <dlock> yeah, thanks mate
2022-07-18 21:30:03 +0200 <monochrom> Pretend you never saw that monologue.
2022-07-18 21:30:13 +0200 <dlock> burn your moniter
2022-07-18 21:30:31 +0200 <maerwald[m]> I only have one, yikes
2022-07-18 21:30:41 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-18 21:31:24 +0200 <dlock> did anyone see the film with charlie sheen doing the search for extra-terrestrials?
2022-07-18 21:31:40 +0200 <geekosaur> --> offtopic, I think
2022-07-18 21:31:41 +0200 <monochrom> Are you done?
2022-07-18 21:31:52 +0200 <dlock> yikes! ofc!
2022-07-18 21:33:42 +0200 <maerwald[m]> Getting too invested in open source or academia isn't good for mental health
2022-07-18 21:33:43 +0200 <int-e> Oh was there a mueval question... I don't know whether this has been said, but one important reason for using an external process apart from better sandboxing is catching runaway computations (infinite loops); doing that in Haskell inside the lambdabot process is rather unreliable. (It would require -fno-omit-yields or whatever that's called). It also decouples lambdabot's own GC from whatever...
2022-07-18 21:33:49 +0200 <int-e> ...people throw at @run.
2022-07-18 21:34:04 +0200 <geekosaur> that's the flag, yes
2022-07-18 21:34:15 +0200 <geekosaur> and as you noted, still isn't very reliable
2022-07-18 21:34:31 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-07-18 21:35:02 +0200 <monochrom> "no-omit" is just one typo away from "no-emit" :)
2022-07-18 21:35:02 +0200mc47(~mc47@xmonad/TheMC47)
2022-07-18 21:35:17 +0200 <monochrom> I think it's why I keep misreading it. (Not that I need it often.)
2022-07-18 21:36:05 +0200 <monochrom> oh hey maybe I can call myself okmott and confuse everyone :)
2022-07-18 21:36:24 +0200Pickchea(~private@user/pickchea)
2022-07-18 21:36:40 +0200jumper149(~jumper149@base.felixspringer.xyz)
2022-07-18 21:36:49 +0200 <int-e> monochrom: or you could do what I did and anticipate somebody picking a very similar nick years later.
2022-07-18 21:37:17 +0200 <int-e> @seen int-index
2022-07-18 21:37:17 +0200 <lambdabot> I haven't seen int-index.
2022-07-18 21:37:29 +0200 <int-e> oh. been a while then :-/
2022-07-18 21:37:39 +0200 <geekosaur> not been seen on libera
2022-07-18 21:37:46 +0200 <monochrom> Maybe they didn't make it to libera, yeah.
2022-07-18 21:38:04 +0200 <dlock> int-e: thats interesting thanks
2022-07-18 21:38:18 +0200 <dlock> id like to try to put together a working mueval example
2022-07-18 21:38:22 +0200Morrow(~Morrow@192.114.91.213) (Ping timeout: 244 seconds)
2022-07-18 21:38:29 +0200 <monochrom> Some #haskell-tw regulars haven't shown up on libera either.
2022-07-18 21:38:32 +0200 <dlock> but there isnt much i can share my time constraints over
2022-07-18 21:40:12 +0200 <int-e> There's the mueval executable that comes in the same package. I forgot how much code that is though. (I also didn't catch up on the discussion above, I only saw the keyword pop up)
2022-07-18 21:43:46 +0200coot(~coot@213.134.190.95)
2022-07-18 21:44:27 +0200 <dlock> id like to express something that i would normally with a backpack signature
2022-07-18 21:44:46 +0200 <dlock> i actually have the type i need, though it is parametric in nats
2022-07-18 21:45:23 +0200 <dlock> (List (n::Nat) Double,List (n::Nat) Double) -> (List (n::Nat) Double,List (n::Nat) Double)
2022-07-18 21:45:53 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 21:46:17 +0200 <dlock> the user should implement this as if it were a class or more like if it were a signature, in a seperate module
2022-07-18 21:46:35 +0200 <dlock> which is read in as a text file to interpret the function
2022-07-18 21:46:51 +0200jmorris(uid537181@id-537181.uxbridge.irccloud.com)
2022-07-18 21:47:03 +0200 <dlock> and typechecked to ensure it has the correct type, so that a read instance will not result in error
2022-07-18 21:47:44 +0200 <dlock> eg they should not have used the wrong n
2022-07-18 21:48:39 +0200 <dlock> for a simple example just interpreting an implementation of the identity function would do
2022-07-18 21:50:03 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net) (Remote host closed the connection)
2022-07-18 21:50:15 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-18 21:50:29 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net)
2022-07-18 21:53:00 +0200nightbreaknightbreak[Away]
2022-07-18 21:55:18 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 264 seconds)
2022-07-18 21:56:38 +0200 <dlock> somthing like this; https://paste.tomsmeding.com/sd4WMNSv
2022-07-18 21:56:51 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-18 21:57:57 +0200 <dlock> except without importing the package, hang on
2022-07-18 22:00:17 +0200 <dlock> more like this; https://paste.tomsmeding.com/pKzvnD2m
2022-07-18 22:01:37 +0200 <dlock> i think i will have trouble with the readFunction function?
2022-07-18 22:02:29 +0200 <dlock> does it need to read it into some intermediate type that isnt a pure function type?
2022-07-18 22:03:20 +0200Morrow(~Morrow@192.114.91.213)
2022-07-18 22:03:35 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 22:03:39 +0200 <dlock> like this? https://paste.tomsmeding.com/F8FFbqhj
2022-07-18 22:07:52 +0200 <dlock> or this? https://paste.tomsmeding.com/POhP2z6m
2022-07-18 22:11:04 +0200nightbreak[Away]nightbreak
2022-07-18 22:12:10 +0200chronon(~chronon@user/chronon)
2022-07-18 22:12:12 +0200 <dlock> ok, excelent! i find this; https://kseo.github.io/posts/2017-01-19-fun-with-hint.html
2022-07-18 22:15:59 +0200nate4(~nate@98.45.169.16)
2022-07-18 22:21:05 +0200nate4(~nate@98.45.169.16) (Ping timeout: 255 seconds)
2022-07-18 22:22:51 +0200maroloccio(~marolocci@37.100.36.239) (Quit: WeeChat 3.0)
2022-07-18 22:23:06 +0200Kaiepi(~Kaiepi@156.34.47.253) (Read error: Connection reset by peer)
2022-07-18 22:30:15 +0200_ht(~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
2022-07-18 22:32:13 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
2022-07-18 22:40:02 +0200notzmv(~zmv@user/notzmv)
2022-07-18 22:40:29 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-07-18 22:41:29 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-07-18 22:44:23 +0200jumper149(~jumper149@base.felixspringer.xyz) (Quit: WeeChat 3.5)
2022-07-18 22:48:32 +0200christiansen(~christian@83-95-137-75-dynamic.dk.customer.tdc.net) (Ping timeout: 255 seconds)
2022-07-18 22:51:41 +0200zeenk(~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f)
2022-07-18 22:58:01 +0200coot(~coot@213.134.190.95)
2022-07-18 22:58:54 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl)
2022-07-18 22:59:08 +0200hasbae(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (WeeChat 3.5)
2022-07-18 22:59:33 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-07-18 22:59:40 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 23:00:37 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-07-18 23:02:44 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 23:03:38 +0200 <yin> how do the gloss and brick libraries compare? has anyone used both?
2022-07-18 23:05:10 +0200 <qrpnxz> the two seem nothing to do with one another?
2022-07-18 23:05:11 +0200 <geekosaur> that's an … odd comparison
2022-07-18 23:05:17 +0200nightbreaknightbreak[Away]
2022-07-18 23:05:25 +0200 <geekosaur> they're both UI libraries but gloss is OpenGL and brick is tty
2022-07-18 23:05:36 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 272 seconds)
2022-07-18 23:06:22 +0200Kaiepi(~Kaiepi@156.34.47.253)
2022-07-18 23:06:36 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-07-18 23:07:01 +0200 <qrpnxz> i wouldn't call gloss a UI lib. Seems to be a a graphics lib
2022-07-18 23:07:34 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2022-07-18 23:08:24 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-18 23:08:52 +0200marcusxavier(~marcusxav@2804:6660:ff12:ef70:7969:d3db:8f91:5149)
2022-07-18 23:08:54 +0200 <marcusxavier> Hi
2022-07-18 23:09:06 +0200 <qrpnxz> ugh, is there no way to 'pattern" match on Succ of type level Nat?
2022-07-18 23:09:07 +0200 <Rembane> Hi marcusxavier!
2022-07-18 23:09:13 +0200 <qrpnxz> marcusxavier: hello
2022-07-18 23:09:35 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 272 seconds)
2022-07-18 23:09:44 +0200 <marcusxavier> I tried to improve my code using the tips that Axman6 gave me. Is still something that I can improve in this code? https://gist.github.com/MarcusXavierr/a91253b0fccf5ae2684bf4bfa7771c21
2022-07-18 23:11:46 +0200Katarushisu(~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net)
2022-07-18 23:11:52 +0200 <qrpnxz> can't immediately think of anything
2022-07-18 23:12:34 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 23:12:44 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-07-18 23:17:03 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-18 23:17:34 +0200pavonia(~user@user/siracusa)
2022-07-18 23:19:11 +0200enteente`
2022-07-18 23:19:53 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-18 23:21:02 +0200coot(~coot@213.134.190.95)
2022-07-18 23:22:03 +0200coot(~coot@213.134.190.95) (Client Quit)
2022-07-18 23:22:28 +0200Cale(~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com)
2022-07-18 23:29:29 +0200cosimone(~user@93-44-186-171.ip98.fastwebnet.it)
2022-07-18 23:30:31 +0200nehsou^(~nehsou@12.187.69.131) (Remote host closed the connection)
2022-07-18 23:30:38 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-18 23:32:34 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 244 seconds)
2022-07-18 23:37:21 +0200John_Ivan(~John_Ivan@user/john-ivan/x-1515935)
2022-07-18 23:38:23 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
2022-07-18 23:39:56 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2022-07-18 23:40:47 +0200 <dlock> here is the thing! https://paste.tomsmeding.com/grDaqD1t
2022-07-18 23:43:17 +0200y04nn(~y04nn@2001:ac8:28:95::a17e)
2022-07-18 23:44:12 +0200michalz(~michalz@185.246.204.93) (Read error: Connection reset by peer)
2022-07-18 23:44:42 +0200rodental(~rodental@38.146.5.222) (Remote host closed the connection)
2022-07-18 23:44:57 +0200codaraxis__(~codaraxis@user/codaraxis)
2022-07-18 23:45:07 +0200rodental(~rodental@38.146.5.222)
2022-07-18 23:46:14 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl)
2022-07-18 23:47:30 +0200marcusxavier(~marcusxav@2804:6660:ff12:ef70:7969:d3db:8f91:5149) (Ping timeout: 240 seconds)
2022-07-18 23:47:58 +0200codaraxis(~codaraxis@user/codaraxis) (Ping timeout: 240 seconds)
2022-07-18 23:48:30 +0200takuan(~takuan@178.116.218.225) (Remote host closed the connection)
2022-07-18 23:50:38 +0200merijn(~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 244 seconds)
2022-07-18 23:51:59 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2022-07-18 23:57:09 +0200yauhsien(~yauhsien@61-231-22-68.dynamic-ip.hinet.net)
2022-07-18 23:58:17 +0200 <qrpnxz> had to bite the bullet and just define my own naturals from scratch :/ wasn't too bad tho
2022-07-18 23:58:30 +0200 <dlock> sorry, that had a typo; https://paste.tomsmeding.com/aWYc9QtL
2022-07-18 23:58:57 +0200 <dlock> qrpnxz: yes, the Nats packaged with GHC cant be easily matched on in classes
2022-07-18 23:59:23 +0200 <dlock> data Nat = S Nat | Z
2022-07-18 23:59:33 +0200 <geekosaur> there are some plugins that can help, I think