Home liberachat/#haskell: Logs Calendar

Logs on 2022-07-18 (liberachat/#haskell)

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

All times are in UTC on 2022-07-18.