2024/12/06

2024-12-06 00:02:41 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 252 seconds)
2024-12-06 00:02:49 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2024-12-06 00:04:13 +0100cyanteeth(~cyanteeth@user/cyanteeth) cyanteeth
2024-12-06 00:04:40 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-12-06 00:07:57 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 00:09:29 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 260 seconds)
2024-12-06 00:10:36 +0100cyanteeth(~cyanteeth@user/cyanteeth) (Quit: Client closed)
2024-12-06 00:11:01 +0100cyanteeth(~cyanteeth@user/cyanteeth) cyanteeth
2024-12-06 00:12:45 +0100Smiles(uid551636@id-551636.lymington.irccloud.com) Smiles
2024-12-06 00:12:57 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-12-06 00:13:00 +0100cyanteeth(~cyanteeth@user/cyanteeth) (Client Quit)
2024-12-06 00:13:47 +0100cyanteeth(~cyanteeth@user/cyanteeth) cyanteeth
2024-12-06 00:14:31 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-12-06 00:14:39 +0100falafel(~falafel@2603:8000:b4f0:62a0:e8b3:b69f:e70f:bca9) (Ping timeout: 272 seconds)
2024-12-06 00:15:24 +0100cyanteeth(~cyanteeth@user/cyanteeth) (Client Quit)
2024-12-06 00:19:17 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-12-06 00:21:59 +0100sonolin(~michael@user/sonolin) (Read error: Connection reset by peer)
2024-12-06 00:22:24 +0100sonolin(~michael@174-26-31-216.phnx.qwest.net)
2024-12-06 00:23:34 +0100sonolin(~michael@174-26-31-216.phnx.qwest.net) (Changing host)
2024-12-06 00:23:34 +0100sonolin(~michael@user/sonolin) sonolin
2024-12-06 00:23:46 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 00:23:50 +0100supercode(~supercode@user/supercode) (Quit: Client closed)
2024-12-06 00:24:19 +0100KicksonButt(~quassel@187.21.174.221) (Ping timeout: 252 seconds)
2024-12-06 00:28:44 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-12-06 00:29:07 +0100voonij(~voonij@163.123.195.138)
2024-12-06 00:29:10 +0100voonij(~voonij@163.123.195.138) (Remote host closed the connection)
2024-12-06 00:30:26 +0100 <iqubic> Why does Containers have such a weird Graph API?
2024-12-06 00:30:32 +0100homo(~homo@user/homo) (Quit: homo)
2024-12-06 00:30:45 +0100homo(~homo@82-128-196-26.bb.dnainternet.fi)
2024-12-06 00:31:03 +0100homo(~homo@82-128-196-26.bb.dnainternet.fi) (Changing host)
2024-12-06 00:31:03 +0100homo(~homo@user/homo) homo
2024-12-06 00:31:17 +0100 <iqubic> It's awkward to work with. Even just creating a graph and topographically sorting it it is a pain with that API.
2024-12-06 00:34:07 +0100 <Axman6> last I heard, fgl was the way to go
2024-12-06 00:37:11 +0100 <iqubic> Yeah. fgl is so much better for working with graphs, I find.
2024-12-06 00:39:31 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 00:41:08 +0100 <probie> Is it actually that bad? It seems more unsafe than the average Haskell API, but the specific case of making a graph and topographically sorting the vertices seems straightforward
2024-12-06 00:44:09 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-12-06 00:45:04 +0100xff0x(~xff0x@2405:6580:b080:900:2aec:ff1e:1898:31f2) (Ping timeout: 260 seconds)
2024-12-06 00:53:14 +0100eL_Bart0(eL_Bart0@dietunichtguten.org) (Ping timeout: 260 seconds)
2024-12-06 00:55:17 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 00:55:43 +0100 <iqubic> Well, it's just that Data.Graph from Containers uses essentially arbitary integers to label the nodes and I can't really give the nodes and edges their own labels.
2024-12-06 00:56:31 +0100 <iqubic> fgl lets me label the nodes and edges. It also lets me assign my own data to the edges.
2024-12-06 00:57:24 +0100 <iqubic> *assign my own data to the nodes
2024-12-06 00:57:56 +0100 <jackdk> algebraic-graphs
2024-12-06 00:58:16 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-12-06 00:58:40 +0100 <iqubic> Is that better than fgl?
2024-12-06 00:59:19 +0100 <jackdk> it has a cleaner model imho; whether it's better for your problem isn't for me to decide
2024-12-06 01:00:00 +0100 <iqubic> Is there a guide to using algebraic-graphs that I can look at? I don't know how that API works.
2024-12-06 01:00:21 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-12-06 01:07:16 +0100tdammers(~tdammers@82-150-212-87.ftth.glasoperator.nl)
2024-12-06 01:07:46 +0100xff0x(~xff0x@2405:6580:b080:900:585d:f11d:d292:5d16)
2024-12-06 01:08:04 +0100sprotte24(~sprotte24@p200300d16f0cca009d8994f8fb036ac7.dip0.t-ipconnect.de) (Quit: Leaving)
2024-12-06 01:09:00 +0100tomboy64(~tomboy64@user/tomboy64) (Ping timeout: 265 seconds)
2024-12-06 01:11:03 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 01:13:42 +0100econo_(uid147250@id-147250.tinside.irccloud.com)
2024-12-06 01:16:02 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-12-06 01:18:19 +0100tdammers(~tdammers@82-150-212-87.ftth.glasoperator.nl) (Ping timeout: 260 seconds)
2024-12-06 01:19:07 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b105:e5ae:be6:818e)
2024-12-06 01:20:08 +0100haskellbridge(~hackager@syn-024-093-192-219.res.spectrum.com) (Remote host closed the connection)
2024-12-06 01:20:52 +0100haskellbridge(~hackager@syn-024-093-192-219.res.spectrum.com) hackager
2024-12-06 01:20:52 +0100ChanServ+v haskellbridge
2024-12-06 01:21:08 +0100acidjnk_new3(~acidjnk@p200300d6e7283f313597cdba6c3bdfe2.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2024-12-06 01:22:20 +0100tomboy64(~tomboy64@user/tomboy64) tomboy64
2024-12-06 01:26:52 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 01:28:37 +0100troojg(~troojg@user/troojg) troojg
2024-12-06 01:31:05 +0100 https://www.reddit.com/r/haskell | Admin: #haskell-ops | Offtopic: #haskell-offtopic | https://downloads.haskell.org | https://play.haskell.org/ | Paste code/errors: https://paste.tomsmeding.com | Logs: https://ircbrowse.tomsmeding.com/browse/lchaskell | AoC: 43100-84040706
2024-12-06 01:31:35 +0100 <glguy> If anyone's doing AoC in Haskell this year you're welcome to join the leaderboard in the topic
2024-12-06 01:31:45 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-12-06 01:31:54 +0100 <hammond> AoC?
2024-12-06 01:31:59 +0100 <glguy> adventofcode.co
2024-12-06 01:32:00 +0100 <glguy> m
2024-12-06 01:32:46 +0100 <hammond> oh cool
2024-12-06 01:34:06 +0100 <glguy> about 45 people are have finished the 5 days so far; a pretty good start
2024-12-06 01:34:23 +0100 <glguy> (specifically on the leaderboard I advertise in here each year)
2024-12-06 01:42:40 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 01:45:40 +0100 <geekosaur> comment from elsewhere: "watching welltyped folks doing advent of code live is like a live sports occasion for Haskellers"
2024-12-06 01:46:52 +0100 <monochrom> heh
2024-12-06 01:48:06 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
2024-12-06 01:48:40 +0100sindu(~sindu@176.75.224.1) (Ping timeout: 252 seconds)
2024-12-06 01:50:28 +0100 <jackdk> An equivalent to the excel championship streams could be fun
2024-12-06 01:53:23 +0100 <probie> I'm doing them in Haskell this year, but only after I initially do them in BQN
2024-12-06 01:53:24 +0100ftzm0(~ftzm@085081054140.dynamic.telenor.dk) ftzm
2024-12-06 01:54:39 +0100 <glguy> admire-only-programming :)
2024-12-06 01:55:02 +0100ftzm(~ftzm@085080252164.dynamic.telenor.dk) (Ping timeout: 255 seconds)
2024-12-06 01:55:02 +0100ftzm0ftzm
2024-12-06 01:58:10 +0100 <probie> Why write readable Haskell when you can vomit out things like {+´(𝕩⊸=¨"MAS")⊸{m‿a‿s←𝕏¨𝕨⋄+´⥊s∧««s∧»˘»˘m∧»»m∧«˘«a}¨⟨⊢⋄⌽˘⋄⍉⋄⌽˘∘⍉⟩}
2024-12-06 01:58:27 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 01:58:47 +0100 <glguy> I give up; why?
2024-12-06 01:59:20 +0100Buliarous(~gypsydang@46.232.210.139) (Quit: leaving)
2024-12-06 01:59:39 +0100Buliarous(~gypsydang@46.232.210.139) Buliarous
2024-12-06 02:02:47 +0100tdammers(~tdammers@82-150-212-87.ftth.glasoperator.nl) tdammers
2024-12-06 02:03:19 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
2024-12-06 02:03:21 +0100 <monochrom> because it's 2-in-1 usable code and xmas decoration? :)
2024-12-06 02:03:48 +0100 <iqubic> jackdk: Does algebraic-graphs have a way to do a topographical sort?
2024-12-06 02:03:58 +0100 <monochrom> hot take: I can see "xmas" spelt in it, so it's readable >:)
2024-12-06 02:05:31 +0100 <glguy> iqubic: when you're looking at the haddocks press 's' and you can live-search
2024-12-06 02:05:46 +0100 <iqubic> Oh, that's handy to know.
2024-12-06 02:09:08 +0100AlexNoo(~AlexNoo@5.139.233.9) (Read error: Connection reset by peer)
2024-12-06 02:09:31 +0100AlexNoo(~AlexNoo@5.139.233.9)
2024-12-06 02:10:22 +0100_xor(~xor@ip-66-42-132-175.dynamic.fuse.net) (Quit: Ping timeout (120 seconds))
2024-12-06 02:10:30 +0100Fijxu(~Fijxu@user/fijxu) (Quit: XD!!)
2024-12-06 02:11:01 +0100_xor(~xor@ip-66-42-132-175.dynamic.fuse.net) _xor
2024-12-06 02:11:19 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2024-12-06 02:11:36 +0100img(~img@user/img) img
2024-12-06 02:12:19 +0100Fijxu(~Fijxu@user/fijxu) fijxu
2024-12-06 02:12:33 +0100 <Axman6> probie: I had no idea BQN shilled x.com
2024-12-06 02:14:08 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 02:14:28 +0100Brett90(~Brett@cpc91312-watf11-2-0-cust1213.15-2.cable.virginm.net)
2024-12-06 02:15:38 +0100 <Brett90> does anyone use nvim and haskell-tools? i can't get hardly anything to work
2024-12-06 02:16:15 +0100 <probie> glguy: If I'm serious for a moment; because it's a different way of looking at things. Some people doing AoC in Haskell have never written much Haskell and are going to write janky solutions to the problems, and will then look at how "simply" other people solved them and will learn something
2024-12-06 02:16:51 +0100 <Brett90> alexandria ocasio-cortez?
2024-12-06 02:17:44 +0100 <glguy> Brett90: no
2024-12-06 02:18:33 +0100 <glguy> probie: I do try my best to write my Haskell "simply", but we can't tell ourselves that Haskell solutions will be simple by default. It's quite easy to write unreadable Haskell
2024-12-06 02:19:40 +0100Smiles(uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2024-12-06 02:21:06 +0100 <probie> glguy: Perhaps "simply" was the wrong word. How about "and will then learn something new from comparing their solutions to more "idiomatic" solutions"?
2024-12-06 02:23:13 +0100 <geekosaur> evolution of a haskell programmer, aoc edition
2024-12-06 02:23:56 +0100youthlic(~Thunderbi@user/youthlic) youthlic
2024-12-06 02:24:07 +0100 <glguy> probie: yeah, I think it can be valuable to solve the problems and see how other people did it. That's my favorite part of the who exercise :)
2024-12-06 02:24:49 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-12-06 02:24:58 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-12-06 02:25:50 +0100 <glguy> whole*
2024-12-06 02:31:09 +0100 <glguy> (and it's why I have a repo of solutions from 2015-today https://github.com/glguy/advent/tree/main/solutions/src/2024 )
2024-12-06 02:32:15 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:b105:e5ae:be6:818e) (Read error: Connection reset by peer)
2024-12-06 02:33:13 +0100Smiles(uid551636@id-551636.lymington.irccloud.com) Smiles
2024-12-06 02:33:33 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Quit: Lost terminal)
2024-12-06 02:35:34 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf) ezzieyguywuf
2024-12-06 02:36:29 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 02:37:16 +0100JeremyB99(~JeremyB99@dhcp-248-40.resnet.purdue.edu)
2024-12-06 02:41:46 +0100JeremyB99(~JeremyB99@dhcp-248-40.resnet.purdue.edu) (Ping timeout: 252 seconds)
2024-12-06 02:41:46 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-12-06 02:47:26 +0100JeremyB99(~JeremyB99@2607:ac80:401:7:f09:c735:97c0:a2aa)
2024-12-06 02:47:40 +0100JeremyB99(~JeremyB99@2607:ac80:401:7:f09:c735:97c0:a2aa) (Read error: Connection reset by peer)
2024-12-06 02:52:16 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 02:57:29 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-12-06 03:00:16 +0100KicksonButt(~quassel@187.21.174.221)
2024-12-06 03:01:27 +0100fmira(~user@user/fmira) fmira
2024-12-06 03:02:07 +0100KicksonButt(~quassel@187.21.174.221) (Client Quit)
2024-12-06 03:02:25 +0100KicksonButt(~quassel@187.21.174.221)
2024-12-06 03:06:13 +0100tdammers(~tdammers@82-150-212-87.ftth.glasoperator.nl) (Ping timeout: 248 seconds)
2024-12-06 03:06:37 +0100tdammers(~tdammers@82-150-212-87.ftth.glasoperator.nl) tdammers
2024-12-06 03:08:04 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 03:08:37 +0100 <KicksonButt> Let's say I have a type f of kind * -> * for which I create an instance of Functor, defining how fmap operates on f. Which is more correct to say: "f é a functor" or "fmap is an functor"?
2024-12-06 03:09:22 +0100 <KicksonButt> "f is a functor" or "fmap is a functor"?
2024-12-06 03:09:34 +0100 <monochrom> f is a functor.
2024-12-06 03:11:07 +0100Brett90(~Brett@cpc91312-watf11-2-0-cust1213.15-2.cable.virginm.net) (Quit: Client closed)
2024-12-06 03:12:49 +0100 <KicksonButt> monochrom: is fmap not at all a functor?
2024-12-06 03:12:54 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-12-06 03:13:10 +0100 <geekosaur> it is a method of Functor
2024-12-06 03:13:17 +0100 <probie> it's a function
2024-12-06 03:13:36 +0100 <monochrom> m is part of monochrom, and that does not mean that m is monochrom.
2024-12-06 03:13:52 +0100 <geekosaur> a functor is a type which supports particular operations, in this case fmap
2024-12-06 03:13:53 +0100 <probie> m: are you sure about that?
2024-12-06 03:15:24 +0100 <KicksonButt> Thanks for the clarifications
2024-12-06 03:15:25 +0100 <monochrom> Indeed, M is the boss of Bond, but monochrom is not. >:)
2024-12-06 03:18:49 +0100 <monochrom> When teaching, I don't even say "f is a functor", I say "f is an instance of Functor". "is-a" is over-abused and is becoming informationless and tautological.
2024-12-06 03:18:52 +0100Brett5(~Brett@cpc91312-watf11-2-0-cust1213.15-2.cable.virginm.net)
2024-12-06 03:22:53 +0100 <KicksonButt> monochrom: The classes I attended would have been much better with such approach. Our instructor ended up making a confusion around these terms
2024-12-06 03:23:52 +0100 <geekosaur> is-a also implies to most programmers OOP, but typeclasses are not OOP despite the name
2024-12-06 03:23:53 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 03:25:19 +0100 <geekosaur> (but I stand by it in the lowercase one because it's mathematical terminology in that case so I'm kinda stuck with it. should have used the uppercase one to indicate the Haskell typeclass though)
2024-12-06 03:27:22 +0100OftenFaded(~OftenFade@user/tisktisk) (Quit: Client closed)
2024-12-06 03:28:26 +0100 <monochrom> In the case of math, fmap becomes one bullet point among 2 or 3 bullet points of the data of functor. So one still doesn't say "fmap is a functor".
2024-12-06 03:29:30 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
2024-12-06 03:29:47 +0100 <monochrom> Fortunately, I don't teach a math course, I teach a programming course, so I never need to say the "f is a functor" math wording. >:)
2024-12-06 03:30:09 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 276 seconds)
2024-12-06 03:30:59 +0100 <probie> "f is a functor and an instance of Functor"
2024-12-06 03:31:41 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2024-12-06 03:32:04 +0100sonolin(~michael@user/sonolin) (Ping timeout: 265 seconds)
2024-12-06 03:33:42 +0100sonolin(~michael@174-26-31-216.phnx.qwest.net)
2024-12-06 03:34:06 +0100sonolin(~michael@174-26-31-216.phnx.qwest.net) (Changing host)
2024-12-06 03:34:07 +0100sonolin(~michael@user/sonolin) sonolin
2024-12-06 03:38:40 +0100tv(~tv@user/tv) (Read error: Connection reset by peer)
2024-12-06 03:39:39 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 03:40:24 +0100hgolden(~hgolden@2603:8000:9d00:3ed1:2d8:61ff:feaa:be45) hgolden
2024-12-06 03:40:54 +0100rekahsoft(~rekahsoft@bras-base-orllon1103w-grc-06-76-69-85-220.dsl.bell.ca) rekahsoft
2024-12-06 03:41:14 +0100tdammers(~tdammers@82-150-212-87.ftth.glasoperator.nl) (Ping timeout: 245 seconds)
2024-12-06 03:44:34 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
2024-12-06 03:46:42 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:c53d:8130:21bb:6073)
2024-12-06 03:47:18 +0100fmira(~user@user/fmira) (Quit: fmira)
2024-12-06 03:48:05 +0100fmira(~user@user/fmira) fmira
2024-12-06 03:49:00 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:c53d:8130:21bb:6073) (Read error: Connection reset by peer)
2024-12-06 03:51:51 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
2024-12-06 03:54:10 +0100tdammers(~tdammers@82-150-212-87.ftth.glasoperator.nl) tdammers
2024-12-06 03:54:29 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2024-12-06 03:54:57 +0100ryanbooker(uid4340@id-4340.hampstead.irccloud.com) ryanbooker
2024-12-06 03:55:25 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 04:00:18 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-12-06 04:02:03 +0100ethantwardy(user@user/ethantwardy) ethantwardy
2024-12-06 04:02:49 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:c53d:8130:21bb:6073)
2024-12-06 04:02:52 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:c53d:8130:21bb:6073) (Read error: Connection reset by peer)
2024-12-06 04:03:01 +0100Brett5(~Brett@cpc91312-watf11-2-0-cust1213.15-2.cable.virginm.net) (Quit: Client closed)
2024-12-06 04:07:34 +0100tdammers(~tdammers@82-150-212-87.ftth.glasoperator.nl) (Ping timeout: 252 seconds)
2024-12-06 04:10:24 +0100yangby(~secret@218.72.98.138) (Ping timeout: 240 seconds)
2024-12-06 04:10:56 +0100tomboy64(~tomboy64@user/tomboy64) (*.net *.split)
2024-12-06 04:10:56 +0100aforemny(~aforemny@i577BEE5E.versanet.de) (*.net *.split)
2024-12-06 04:10:56 +0100mulk(~mulk@p5b11254a.dip0.t-ipconnect.de) (*.net *.split)
2024-12-06 04:10:56 +0100rini(~rini@user/rini) (*.net *.split)
2024-12-06 04:10:56 +0100masterbuilder(~quassel@user/masterbuilder) (*.net *.split)
2024-12-06 04:10:56 +0100mesaoptimizer(~mesaoptim@user/PapuaHardyNet) (*.net *.split)
2024-12-06 04:10:56 +0100rachelambda(~rachelamb@cust-95-80-25-71.csbnet.se) (*.net *.split)
2024-12-06 04:10:56 +0100emergence(emergence@vm0.max-p.me) (*.net *.split)
2024-12-06 04:10:56 +0100dostoyevsky2(~sck@user/dostoyevsky2) (*.net *.split)
2024-12-06 04:10:56 +0100rdcdr(~rdcdr@user/rdcdr) (*.net *.split)
2024-12-06 04:10:56 +0100nschoe(~nschoe@82-65-202-30.subs.proxad.net) (*.net *.split)
2024-12-06 04:10:56 +0100zfnmxt(~zfnmxt@user/zfnmxt) (*.net *.split)
2024-12-06 04:10:56 +0100Clint(~Clint@user/clint) (*.net *.split)
2024-12-06 04:10:56 +0100meejah(~meejah@rutas.meejah.ca) (*.net *.split)
2024-12-06 04:10:56 +0100wz1000(~zubin@static.11.113.47.78.clients.your-server.de) (*.net *.split)
2024-12-06 04:10:56 +0100barthandelous01(barth@triton.blinkenshell.org) (*.net *.split)
2024-12-06 04:10:56 +0100Dykam(Dykam@dykam.nl) (*.net *.split)
2024-12-06 04:10:56 +0100tmr(~tamer@user/tamer) (*.net *.split)
2024-12-06 04:10:56 +0100aku(aku@65.108.245.241) (*.net *.split)
2024-12-06 04:11:13 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 04:13:35 +0100masterbuilder(~quassel@user/masterbuilder) masterbuilder
2024-12-06 04:14:22 +0100aforemny(~aforemny@2001:9e8:6ce6:8a00:ba1a:a166:2953:a01a) aforemny
2024-12-06 04:15:54 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-12-06 04:17:41 +0100yangby(~secret@218.72.98.138) yangby
2024-12-06 04:19:04 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:c53d:8130:21bb:6073)
2024-12-06 04:19:51 +0100aku(aku@65.108.245.241) eagleflo
2024-12-06 04:19:52 +0100Clint(~Clint@user/clint) Clint
2024-12-06 04:19:53 +0100dostoyevsky2(~sck@user/dostoyevsky2) dostoyevsky2
2024-12-06 04:19:54 +0100meejah(~meejah@rutas.meejah.ca) meejah
2024-12-06 04:19:57 +0100rini(~rini@user/rini) rini
2024-12-06 04:19:58 +0100emergence(emergence@vm0.max-p.me) emergence
2024-12-06 04:20:00 +0100wz1000(~zubin@static.11.113.47.78.clients.your-server.de)
2024-12-06 04:20:01 +0100nschoe(~nschoe@2a01:e0a:8e:a190:70f8:56a2:d0db:fe4d) nschoe
2024-12-06 04:20:02 +0100zfnmxt(~zfnmxt@user/zfnmxt) zfnmxt
2024-12-06 04:20:03 +0100rdcdr(~rdcdr@user/rdcdr) rdcdr
2024-12-06 04:20:04 +0100rachelambda(~rachelamb@cust-95-80-25-71.csbnet.se) rachelambda
2024-12-06 04:20:08 +0100tmr(~tamer@5.2.74.82)
2024-12-06 04:20:08 +0100tomboy64(~tomboy64@user/tomboy64) tomboy64
2024-12-06 04:20:08 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:c53d:8130:21bb:6073) (Read error: Connection reset by peer)
2024-12-06 04:20:35 +0100mulk(~mulk@p5b11254a.dip0.t-ipconnect.de) mulk
2024-12-06 04:20:37 +0100Dykam(Dykam@dykam.nl) Dykam
2024-12-06 04:21:11 +0100tdammers(~tdammers@82-150-212-87.ftth.glasoperator.nl) tdammers
2024-12-06 04:21:31 +0100barthandelous01(barth@triton.blinkenshell.org) barthandelous01
2024-12-06 04:26:54 +0100yangby(~secret@218.72.98.138) (Ping timeout: 240 seconds)
2024-12-06 04:27:01 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 04:29:34 +0100KicksonButt(~quassel@187.21.174.221) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2024-12-06 04:31:38 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
2024-12-06 04:34:24 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 264 seconds)
2024-12-06 04:34:39 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2024-12-06 04:36:54 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:c53d:8130:21bb:6073)
2024-12-06 04:37:49 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:c53d:8130:21bb:6073) (Read error: Connection reset by peer)
2024-12-06 04:37:53 +0100Brett25(~Brett@cpc91312-watf11-2-0-cust1213.15-2.cable.virginm.net)
2024-12-06 04:39:40 +0100Smiles(uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2024-12-06 04:42:47 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 04:48:09 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
2024-12-06 04:48:18 +0100gorignak(~gorignak@user/gorignak) gorignak
2024-12-06 04:50:45 +0100troojg(~troojg@user/troojg) (Ping timeout: 276 seconds)
2024-12-06 04:53:33 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:c53d:8130:21bb:6073)
2024-12-06 04:55:49 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:c53d:8130:21bb:6073) (Read error: Connection reset by peer)
2024-12-06 04:57:25 +0100weary-traveler(~user@user/user363627) user363627
2024-12-06 04:57:29 +0100notzmv(~umar@user/notzmv) (Ping timeout: 245 seconds)
2024-12-06 04:58:19 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:c53d:8130:21bb:6073)
2024-12-06 04:58:34 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 05:02:27 +0100td_(~td@i5387092C.versanet.de) (Ping timeout: 276 seconds)
2024-12-06 05:03:29 +0100td_(~td@i5387093D.versanet.de)
2024-12-06 05:05:09 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-12-06 05:08:47 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 05:09:39 +0100korrykatti(~korrykatt@user/korrykatti) korrykatti
2024-12-06 05:10:33 +0100notzmv(~umar@user/notzmv) notzmv
2024-12-06 05:13:35 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-12-06 05:15:54 +0100aforemny_(~aforemny@2001:9e8:6ccb:4000:5e66:f8ae:2e96:5c20) aforemny
2024-12-06 05:16:48 +0100aforemny(~aforemny@2001:9e8:6ce6:8a00:ba1a:a166:2953:a01a) (Ping timeout: 246 seconds)
2024-12-06 05:22:47 +0100homo_(~homo@82-128-196-26.bb.dnainternet.fi)
2024-12-06 05:23:09 +0100homo_(~homo@82-128-196-26.bb.dnainternet.fi) (Changing host)
2024-12-06 05:23:09 +0100homo_(~homo@user/homo) homo
2024-12-06 05:24:29 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 05:26:45 +0100homo(~homo@user/homo) (Ping timeout: 252 seconds)
2024-12-06 05:26:46 +0100homo_homo
2024-12-06 05:31:36 +0100CrunchyFlakes(~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-12-06 05:33:14 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-12-06 05:33:43 +0100CrunchyFlakes(~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de)
2024-12-06 05:36:24 +0100Pozyomka(~pyon@user/pyon) (Ping timeout: 244 seconds)
2024-12-06 05:38:22 +0100Pozyomka(~pyon@user/pyon) pyon
2024-12-06 05:44:48 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 05:49:51 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-12-06 05:56:51 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 05:57:43 +0100falafel(~falafel@2603:8000:b4f0:62a0:5eb1:a3f:a835:5033) falafel
2024-12-06 06:04:24 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-12-06 06:04:43 +0100ryanbooker(uid4340@id-4340.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2024-12-06 06:13:31 +0100 <iqubic> So, I have some data of type `Map k (Maybe v)` What's the best way to convert this to a `[(k, v)]` containing only the data from the key value pairs where I have a Just value stored?
2024-12-06 06:14:40 +0100 <iqubic> Oh, it turns out that list comprehensions can do pattern matching. Neat.
2024-12-06 06:16:04 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 06:17:09 +0100 <iqubic> getData m = [(k, v) | (k, Just v) <- M.assocs m]
2024-12-06 06:19:22 +0100yangby(~secret@218.72.98.138) yangby
2024-12-06 06:19:49 +0100cheater(~Username@user/cheater) (Quit: Going offline, see ya! (www.adiirc.com))
2024-12-06 06:21:29 +0100weary-traveler(~user@user/user363627) (Read error: Connection reset by peer)
2024-12-06 06:23:52 +0100weary-traveler(~user@user/user363627) user363627
2024-12-06 06:24:39 +0100vulpine(xfnw@user/meow/xfnw) (Quit: Connection reset by purr)
2024-12-06 06:26:07 +0100vulpine(xfnw@user/meow/xfnw) xfnw
2024-12-06 06:26:54 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-12-06 06:34:29 +0100 <mauke> if this turns out to be traverse again ...
2024-12-06 06:34:33 +0100 <mauke> ah, no
2024-12-06 06:38:30 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 06:39:40 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:c53d:8130:21bb:6073) (Read error: Connection reset by peer)
2024-12-06 06:42:02 +0100Pixi`(~Pixi@user/pixi) (Quit: Leaving)
2024-12-06 06:43:14 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-12-06 06:44:55 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:c53d:8130:21bb:6073)
2024-12-06 06:46:25 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:c53d:8130:21bb:6073) (Read error: Connection reset by peer)
2024-12-06 06:46:27 +0100falafel(~falafel@2603:8000:b4f0:62a0:5eb1:a3f:a835:5033) (Ping timeout: 276 seconds)
2024-12-06 06:46:56 +0100korrykatti(~korrykatt@user/korrykatti) (Remote host closed the connection)
2024-12-06 06:49:24 +0100cheater(~Username@user/cheater) cheater
2024-12-06 06:49:35 +0100 <jackdk> % import qualified Data.Map as Map
2024-12-06 06:49:35 +0100 <yahb2> <no output>
2024-12-06 06:49:40 +0100 <jackdk> % import Control.Lens
2024-12-06 06:49:40 +0100 <yahb2> <no location info>: error: [GHC-35235] ; Could not find module ‘Control.Lens’. ; It is not a module in the current program, or in any known package.
2024-12-06 06:49:45 +0100 <jackdk> % :q
2024-12-06 06:49:45 +0100 <yahb2> <bye>
2024-12-06 06:50:03 +0100 <jackdk> anyway: `(Map.fromList [("hello", Just "world"), ("we wait for", Nothing), ("come on and", Just "slam")]) ^@.. itraversed <. folded`
2024-12-06 06:54:02 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 06:54:26 +0100 <jackdk> Hm, you can use `_Just` instead of `folded` and it won't mess with the index, meaning you can use `.` instead of `<.`
2024-12-06 06:55:18 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:c53d:8130:21bb:6073)
2024-12-06 06:58:31 +0100 <Leary> :t M.assocs . M.mapMaybe id
2024-12-06 06:58:32 +0100 <lambdabot> M.Map k (Maybe a) -> [(k, a)]
2024-12-06 06:58:45 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-12-06 06:58:54 +0100 <jackdk> Leary: nice.
2024-12-06 06:58:56 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:c53d:8130:21bb:6073) (Read error: Connection reset by peer)
2024-12-06 07:00:29 +0100michalz(~michalz@185.246.207.205)
2024-12-06 07:04:55 +0100Pixi(~Pixi@user/pixi) Pixi
2024-12-06 07:05:34 +0100Square(~Square@user/square) Square
2024-12-06 07:07:27 +0100mange(~user@user/mange) (Quit: Quittin' time!)
2024-12-06 07:08:52 +0100fmira(~user@user/fmira) (Quit: fmira)
2024-12-06 07:09:03 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2024-12-06 07:09:45 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 07:10:50 +0100cheater_(~Username@user/cheater) cheater
2024-12-06 07:11:30 +0100cheater(~Username@user/cheater) (Ping timeout: 265 seconds)
2024-12-06 07:11:35 +0100cheater_cheater
2024-12-06 07:12:59 +0100cheater(~Username@user/cheater) (Read error: Connection reset by peer)
2024-12-06 07:13:44 +0100cheater(~Username@user/cheater) cheater
2024-12-06 07:14:25 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:c53d:8130:21bb:6073)
2024-12-06 07:14:38 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-12-06 07:19:33 +0100cyanteeth(~cyanteeth@user/cyanteeth) cyanteeth
2024-12-06 07:20:09 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:c53d:8130:21bb:6073) (Read error: Connection reset by peer)
2024-12-06 07:20:48 +0100cyanteeth(~cyanteeth@user/cyanteeth) (Client Quit)
2024-12-06 07:23:37 +0100Brett25(~Brett@cpc91312-watf11-2-0-cust1213.15-2.cable.virginm.net) (Quit: Client closed)
2024-12-06 07:25:32 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 07:30:40 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-12-06 07:34:14 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:c53d:8130:21bb:6073)
2024-12-06 07:35:26 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:c53d:8130:21bb:6073) (Read error: Connection reset by peer)
2024-12-06 07:39:00 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:c53d:8130:21bb:6073)
2024-12-06 07:41:21 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 07:43:49 +0100Square2(~Square4@user/square) Square
2024-12-06 07:47:13 +0100Square(~Square@user/square) (Ping timeout: 248 seconds)
2024-12-06 07:47:53 +0100robobub(uid248673@id-248673.uxbridge.irccloud.com) robobub
2024-12-06 07:48:06 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-12-06 07:59:23 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 08:01:39 +0100mesaoptimizer(~mesaoptim@user/PapuaHardyNet) PapuaHardyNet
2024-12-06 08:03:49 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-12-06 08:04:33 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 08:08:29 +0100matsurago(~matsurago@240b:10:b3a1:1700:b208:b72c:53fc:819f)
2024-12-06 08:09:09 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-12-06 08:10:47 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 08:13:26 +0100L29Ah(~L29Ah@wikipedia/L29Ah) (Read error: Connection timed out)
2024-12-06 08:15:30 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-12-06 08:16:40 +0100tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Quit: Leaving)
2024-12-06 08:20:59 +0100ft(~ft@p508db9c7.dip0.t-ipconnect.de) (Quit: leaving)
2024-12-06 08:25:35 +0100tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
2024-12-06 08:26:32 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 08:31:33 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-12-06 08:39:17 +0100arthurvl(~arthurvl@77-174-49-144.fixed.kpn.net) (Quit: stroomwerk)
2024-12-06 08:42:20 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 08:46:30 +0100tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Remote host closed the connection)
2024-12-06 08:46:44 +0100tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) tcard
2024-12-06 08:47:32 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 264 seconds)
2024-12-06 08:49:04 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:c53d:8130:21bb:6073) (Remote host closed the connection)
2024-12-06 08:49:12 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:c53d:8130:21bb:6073)
2024-12-06 08:52:24 +0100JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2024-12-06 08:58:07 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 09:00:01 +0100caconym(~caconym@user/caconym) (Quit: bye)
2024-12-06 09:00:39 +0100caconym(~caconym@user/caconym) caconym
2024-12-06 09:02:54 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-12-06 09:04:19 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) lortabac
2024-12-06 09:06:49 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-12-06 09:10:29 +0100acidjnk_new3(~acidjnk@p200300d6e7283f42e8f4273a1ef84d34.dip0.t-ipconnect.de)
2024-12-06 09:11:44 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 09:16:53 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-12-06 09:27:32 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 09:32:38 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-12-06 09:35:00 +0100korrykatti(~korrykatt@user/korrykatti) korrykatti
2024-12-06 09:37:11 +0100JuanDaugherty(~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
2024-12-06 09:37:28 +0100CiaoSen(~Jura@2a05:5800:2ed:3200:ca4b:d6ff:fec1:99da) CiaoSen
2024-12-06 09:42:11 +0100housemate(~housemate@2405:6e00:242b:e64:7c12:4309:4b5a:92c0) housemate
2024-12-06 09:42:35 +0100Brett70(~Brett@cpc91312-watf11-2-0-cust1213.15-2.cable.virginm.net)
2024-12-06 09:43:20 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 09:48:03 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-12-06 09:49:17 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2024-12-06 09:54:21 +0100sonolin(~michael@user/sonolin) (Ping timeout: 246 seconds)
2024-12-06 09:58:41 +0100weary-traveler(~user@user/user363627) (Remote host closed the connection)
2024-12-06 09:59:07 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 10:03:49 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-12-06 10:07:53 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 10:14:01 +0100p3n(~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) (Quit: ZNC 1.8.2 - https://znc.in)
2024-12-06 10:14:36 +0100Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) Tuplanolla
2024-12-06 10:15:34 +0100p3n(~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) p3n
2024-12-06 10:16:54 +0100chele(~chele@user/chele) chele
2024-12-06 10:19:53 +0100housemate(~housemate@2405:6e00:242b:e64:7c12:4309:4b5a:92c0) (Quit: Nothing to see here. I wasn't there. https://files.catbox.moe/4yru45.pdf)
2024-12-06 10:32:15 +0100korrykatti(~korrykatt@user/korrykatti) (Remote host closed the connection)
2024-12-06 10:32:55 +0100korrykatti(~korrykatt@user/korrykatti) korrykatti
2024-12-06 10:42:10 +0100korrykatti(~korrykatt@user/korrykatti) (Ping timeout: 252 seconds)
2024-12-06 10:42:53 +0100korrykatti(~korrykatt@user/korrykatti) korrykatti
2024-12-06 10:45:34 +0100tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2024-12-06 10:51:22 +0100lxsameer(~lxsameer@Serene/lxsameer) lxsameer
2024-12-06 10:59:49 +0100driib318(~driib@vmi931078.contaboserver.net) (Quit: The Lounge - https://thelounge.chat)
2024-12-06 11:00:26 +0100driib318(~driib@vmi931078.contaboserver.net) driib
2024-12-06 11:05:47 +0100fp(~Thunderbi@2001:708:20:1406::1370) fp
2024-12-06 11:09:26 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.4.2)
2024-12-06 11:16:36 +0100alp(~alp@2001:861:8ca0:4940:9e8e:b300:b6f0:b48e) (Ping timeout: 246 seconds)
2024-12-06 11:17:30 +0100krjst(~krjst@2604:a880:800:c1::16b:8001) (Ping timeout: 246 seconds)
2024-12-06 11:19:27 +0100krjst(~krjst@2604:a880:800:c1::16b:8001) krjst
2024-12-06 11:19:29 +0100econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2024-12-06 11:21:33 +0100 <fp> So I keep running into issues where I want to use a function that I perceive to be simple and are are common in other languages' standard libraries, like "split string by delimiter". However, I find that often these functions either don't exist or require external dependencies. Is the culture with Haskell that you're often remaking simple functions, or am taking an un-idiomatic approach, or am I at an uncomfortable part of the learning curve and it
2024-12-06 11:22:33 +0100malte(~malte@mal.tc) (Remote host closed the connection)
2024-12-06 11:22:49 +0100 <fp> am I at an uncomfortable part of the learning curve and it's not actually that bad?
2024-12-06 11:23:23 +0100 <jackdk> fp: there are a number of packages that are bundled with GHC and necessary for pretty much any nontrivial work (text, bytestring, containers all immediately spring to mind). You should not fear depending on packages like these
2024-12-06 11:24:20 +0100malte(~malte@mal.tc) malte
2024-12-06 11:24:30 +0100eL_Bart0(eL_Bart0@dietunichtguten.org)
2024-12-06 11:24:49 +0100 <jackdk> There is also an "uncomfortable part of a learning curve" thing where sometimes a function you might expect to exist is actually defined with a more general name and sometimes it's not obvious that it does what you want. `traverse` is the classic example, where it's the solution to a great many common things you want your program to do
2024-12-06 11:25:44 +0100 <fp> So I started to use Text, but then it felt wrong that I had to litter everything with =pack "my string"=, especially since the examples in Text /don't/ do that. But the compiler insisted that I was missing the Text monad
2024-12-06 11:26:20 +0100 <dminuoso> fp: You can use OverloadedStrings to avoid having `pack` everywhere.
2024-12-06 11:26:41 +0100 <fp> aha, ok
2024-12-06 11:26:54 +0100alp(~alp@2001:861:8ca0:4940:d3d7:b90a:479f:639b)
2024-12-06 11:27:21 +0100 <fp> Also, out of curiosity, what is Haskell used for these days? I'm aware that pandoc is written in Haskell
2024-12-06 11:27:31 +0100 <jackdk> yep, pretty much everyone turns on overloaded strings. This is another one of those "part of the curve" things where most libraries will use Text but some insist on using String. Work in Text wherever possible
2024-12-06 11:28:50 +0100 <jackdk> it's great for web services and "connect thing to other thing" type code. It's fantastic to bind someone else's REST API with an actual parser, and fail noisily when you get an unexpected result instead of your program silently doing unexpected things
2024-12-06 11:29:12 +0100 <jackdk> I use it as my go-to general-purpose programming language, both in and out of work
2024-12-06 11:29:46 +0100 <jackdk> shellcheck is another really handy tool written in Haskell
2024-12-06 11:30:05 +0100 <leif> Case in point: postgrest (which supabase uses) is written in Haskell
2024-12-06 11:31:00 +0100 <dminuoso> Now it's time for someone to write Haskcheck written in bash.
2024-12-06 11:31:09 +0100 <fp> Forgive me, why would one want a parser for a REST API?
2024-12-06 11:31:25 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2024-12-06 11:31:48 +0100ChaiTRex(~ChaiTRex@user/chaitrex) ChaiTRex
2024-12-06 11:32:24 +0100 <kaol> For JSON?
2024-12-06 11:33:36 +0100 <dminuoso> Sure, inside JSON.
2024-12-06 11:34:41 +0100 <dminuoso> With JSON you should eventually parse those string literals into data types.
2024-12-06 11:39:13 +0100 <fp> Ah ok so for deserializing JSON into the relevant Data
2024-12-06 11:41:55 +0100 <fp> I guess I just didn't think of that because I'm used to having =my_struct.from_string(...)= provided by a library and not really even thinking of it as parsing
2024-12-06 11:42:46 +0100sprotte24(~sprotte24@p200300d16f152100688be7f09d717f48.dip0.t-ipconnect.de)
2024-12-06 11:47:14 +0100 <davean> fp: ah you aren't the person who has to make those libraries constantly :-p
2024-12-06 11:51:12 +0100Square2(~Square4@user/square) (Ping timeout: 252 seconds)
2024-12-06 11:57:09 +0100CiaoSen(~Jura@2a05:5800:2ed:3200:ca4b:d6ff:fec1:99da) (Ping timeout: 265 seconds)
2024-12-06 11:57:51 +0100__monty__(~toonn@user/toonn) toonn
2024-12-06 12:06:18 +0100 <fp> davean: truly bless those people
2024-12-06 12:07:09 +0100 <davean> The worst REST-like API I ever had to deal with was shopify. Other than that they're mostly easy
2024-12-06 12:07:59 +0100tv(~tv@user/tv) tv
2024-12-06 12:23:43 +0100nucleus(~grigory@77-174-131-220.fixed.kpn.net)
2024-12-06 12:24:50 +0100leif(~leif@210.54.33.112) (Ping timeout: 252 seconds)
2024-12-06 12:28:16 +0100 <haskellbridge> <maerwald> jackdk: OverloadedStrings is garbage (the way it's implemented)
2024-12-06 12:29:23 +0100Smiles(uid551636@id-551636.lymington.irccloud.com) Smiles
2024-12-06 12:30:43 +0100L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2024-12-06 12:34:18 +0100fp(~Thunderbi@2001:708:20:1406::1370) (Ping timeout: 246 seconds)
2024-12-06 12:34:25 +0100 <int-e> :t S.dropWhileAntitone
2024-12-06 12:34:26 +0100 <lambdabot> (a -> Bool) -> S.Set a -> S.Set a
2024-12-06 12:40:23 +0100fp(~Thunderbi@130.233.70.169) fp
2024-12-06 12:41:24 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-12-06 12:54:34 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 12:56:28 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) lortabac
2024-12-06 13:08:02 +0100sprotte24(~sprotte24@p200300d16f152100688be7f09d717f48.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2024-12-06 13:10:29 +0100kronicmage(~kronicmag@neotame.csclub.uwaterloo.ca) (Ping timeout: 248 seconds)
2024-12-06 13:12:24 +0100yangby(~secret@218.72.98.138) (Ping timeout: 240 seconds)
2024-12-06 13:13:42 +0100CiaoSen(~Jura@2a05:5800:2ed:3200:ca4b:d6ff:fec1:99da) CiaoSen
2024-12-06 13:14:47 +0100korrykatti(~korrykatt@user/korrykatti) (Remote host closed the connection)
2024-12-06 13:19:31 +0100ubert(~Thunderbi@2a02:8109:ab8a:5a00:ad4b:6165:bf6d:b915) ubert
2024-12-06 13:28:56 +0100ystael(~ystael@user/ystael) ystael
2024-12-06 13:33:23 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com) szkl
2024-12-06 13:46:34 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-12-06 13:48:12 +0100 <hellwolf> maerwald, what alternatives you would propose?
2024-12-06 13:51:29 +0100korrykatti(~korrykatt@user/korrykatti) korrykatti
2024-12-06 13:51:56 +0100alp(~alp@2001:861:8ca0:4940:d3d7:b90a:479f:639b) (Remote host closed the connection)
2024-12-06 13:52:19 +0100alp(~alp@2001:861:8ca0:4940:d3d7:b90a:479f:639b)
2024-12-06 13:53:13 +0100JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2024-12-06 13:57:56 +0100Square2(~Square4@user/square) Square
2024-12-06 14:02:03 +0100MyNetAz(~MyNetAz@user/MyNetAz) (Read error: Connection reset by peer)
2024-12-06 14:02:37 +0100kronicmage(~kronicmag@neotame.csclub.uwaterloo.ca)
2024-12-06 14:09:04 +0100MyNetAz(~MyNetAz@user/MyNetAz) MyNetAz
2024-12-06 14:09:14 +0100 <haskellbridge> <sm> @fp, base and other libraries included with ghc are quite comprehensive, but you'll still find things missing. It's common to write your own helpers, but also you'll find some go to extra packages that provide some missing pieces on hackage. Sometimes it's worth using those.
2024-12-06 14:09:37 +0100 <haskellbridge> <sm> Safe, split, and Extra are some that I'm using
2024-12-06 14:09:52 +0100 <haskellbridge> <sm> * safe,
2024-12-06 14:10:36 +0100 <haskellbridge> <sm> * extra
2024-12-06 14:12:57 +0100voonij(~voonij@163.123.195.138)
2024-12-06 14:13:00 +0100 <haskellbridge> <sm> regex is one to consider if you need those
2024-12-06 14:14:08 +0100 <haskellbridge> <sm> fp: , base and other libraries included with ghc are quite comprehensive, but you'll still find things missing. It's common to write your own helpers, but also you'll find some go to extra packages that provide some missing pieces on hackage. Sometimes it's worth using those.
2024-12-06 14:14:37 +0100 <haskellbridge> <sm> fp: , base and other libraries included with ghc are quite comprehensive, but you'll still find things missing. It's common to write your own helpers, but also you'll find some go to extra packages that provide some missing pieces. Sometimes it's worth using those.
2024-12-06 14:15:24 +0100 <fp> So what you're saying is there's a set of basic libraries that you want to include by default in most projects
2024-12-06 14:15:41 +0100 <merijn> fp: There's definitely a set of basic libraries I use in almost everything, yes
2024-12-06 14:16:20 +0100 <merijn> fp: The main argument for NOT including such things in base/ghc is "now your iteration cycle is limited by the GHC release schedule", since you cannot upgrade base without changing GHC versions
2024-12-06 14:16:26 +0100 <haskellbridge> <sm> I try not to depend too eagerly, but at some point yes
2024-12-06 14:17:16 +0100 <merijn> fp: So there's a decently sized group of people that actually want to shrink base *even* more (or rather, making it a separate library independent of GHC)
2024-12-06 14:17:25 +0100 <haskellbridge> <sm> I think the Haskell library ecosystem is still evolving. It's not that polished in some ways
2024-12-06 14:17:36 +0100 <fp> And with these ={- LANGUAGE OverloadedStrings -}= deals, is that like a compiler option?
2024-12-06 14:17:41 +0100 <merijn> fp: Yes
2024-12-06 14:18:07 +0100 <merijn> fp: GHC by default tries to (mostly) conform to the Haskell Report 2010 as a standard and any deviations/extensions to the report are opt-in
2024-12-06 14:18:14 +0100 <int-e> {-# ... #-} is syntax for pragmas
2024-12-06 14:18:32 +0100 <merijn> fp: As opposed to, say, gcc which deviates from the C standard by default unless you opt-out
2024-12-06 14:18:33 +0100 <fp> Oh excuse me I forgot the ##
2024-12-06 14:18:57 +0100 <int-e> {- ... -} would just be a comment
2024-12-06 14:19:00 +0100 <merijn> fp: In practice since there's only like, 2 (well 1, and two halves) haskell compilers it doesn't really matter
2024-12-06 14:19:19 +0100 <fp> Ah yeah if you give it like -x c++23 instead of -x gnu++23
2024-12-06 14:19:48 +0100voonij(~voonij@163.123.195.138) (Remote host closed the connection)
2024-12-06 14:19:54 +0100 <merijn> fp: Exactly, so GHC by default will use Haskell2010 and anything else is opt-in. With the pragmas allowing you to opt-in per file
2024-12-06 14:20:09 +0100 <merijn> fp: Although even then GHC does not strictly implement Haskell2010, see https://ghc.gitlab.haskell.org/ghc/doc/users_guide/bugs.html
2024-12-06 14:20:31 +0100 <merijn> Most of those deviations are like, ultra ultra nitpicky, though
2024-12-06 14:20:59 +0100 <fp> > The main argument for NOT including such things in base/ghc is "now your iteration cycle is limited by the GHC release schedule"
2024-12-06 14:20:59 +0100 <fp> Is "your" meaning the library author's?
2024-12-06 14:21:00 +0100 <lambdabot> <hint>:1:49: error: parse error on input ‘in’
2024-12-06 14:21:06 +0100 <merijn> fp: Yeah
2024-12-06 14:21:20 +0100 <merijn> fp: Since base is wired into GHC it is not updatable
2024-12-06 14:22:07 +0100 <merijn> So if you put stuff in base any changes/fixes/improvements require users to upgrade their compiler version which is...not ideal :)
2024-12-06 14:23:01 +0100 <merijn> fp: Any real program almost always ends up depending on a bunch of stuff, like containers, text, bytestring, transformers
2024-12-06 14:24:26 +0100 <dminuoso> 13:17:25 +haskellbridge │ <sm> I think the Haskell library ecosystem is still evolving. It's not that polished in some ways
2024-12-06 14:24:37 +0100 <Leary> merijn: Only old GHC default to `Haskell2010`. Modern GHCs use `GHC202*` instead.
2024-12-06 14:24:44 +0100 <dminuoso> The more I use python these days, one of the things that Haskell really lacks is a cohesive singular logging infrastructure.
2024-12-06 14:25:07 +0100 <dminuoso> You take 3 components together, each uses their own logging library, you cant easily change their behavior, filter them, combine them.. it's a mess.
2024-12-06 14:25:32 +0100 <merijn> Leary: Yeah, but most cabal invocations default to Haskell2010
2024-12-06 14:25:43 +0100 <merijn> Since only very recent versions of cabal-spec default to anything else
2024-12-06 14:26:01 +0100 <merijn> dminuoso: We lack slf4j ;)
2024-12-06 14:26:38 +0100 <dminuoso> Never done Java, so I cant comment on that (joke?)
2024-12-06 14:26:39 +0100 <merijn> There's not much I like about the Java ecosystem, but slf4j is actually really nice
2024-12-06 14:27:08 +0100 <dminuoso> The `logging` library in Python is really nice and modular too.
2024-12-06 14:27:22 +0100 <dminuoso> After a few years, I would say its perhaps the best part of it.
2024-12-06 14:27:23 +0100 <merijn> dminuoso: No, I'm serious. It's essentially just a bunch of interfaces with no implementation, but they're incredibly lightweight, so 95% of libraries just use that
2024-12-06 14:27:42 +0100 <merijn> dminuoso: And then as a user you can just "plug in" whatever slf4j supporting logging implementation you like at runtime
2024-12-06 14:29:10 +0100 <dminuoso> Ah, yeah `logging` comes with some builtin handlers but you can easily add your own too.
2024-12-06 14:29:11 +0100 <fp> I see, so out-of-the-box Haskell is fairly limited and you typically want to add a couple libraries and compiler options to get the full language experience
2024-12-06 14:29:25 +0100 <dminuoso> And the best part, is that `logging` is a stdlib module which is why everybody uses it.
2024-12-06 14:29:37 +0100 <dminuoso> So it does not require velocity and community consensus as much.
2024-12-06 14:29:58 +0100 <dminuoso> In Haskell its completely fragmented, and every year a new framework comes out.
2024-12-06 14:31:13 +0100 <haskellbridge> <sm> what do you mean by out-of-the-box Haskell ?
2024-12-06 14:31:31 +0100 <haskellbridge> <sm> ghc and the libraries shipped with it ?
2024-12-06 14:31:52 +0100 <merijn> sm: Yeah, the "batteries included" thing Python always brags about
2024-12-06 14:32:01 +0100 <dminuoso> fp: The reality in haskell is that the ecosystem is structured differently. Even stuff you might consider as "stdlib" is split onto packages that you have to depend upon.
2024-12-06 14:32:07 +0100 <haskellbridge> <sm> well, we need to define that
2024-12-06 14:32:17 +0100 <dminuoso> But it's not as obvious, so it easily feels as if depending on `text` introduces external dependencies.
2024-12-06 14:32:31 +0100 <merijn> fp: "batteries included" matters in python, because their package management is absolutely godawful, so if it's not shipped with the interpreter it's a nightmare to get working nicely together :p
2024-12-06 14:33:07 +0100 <merijn> fp: I have some packages that are literally 1 or 2 modules in size, because that means I can maintain them in one place and easily use them across projects
2024-12-06 14:33:18 +0100 <dminuoso> merijn: I would reserve "absolutely godawful" for other languages like JavaScript.
2024-12-06 14:33:20 +0100 <merijn> since dependencies are so simple to add
2024-12-06 14:33:41 +0100 <dminuoso> merijn: Python has a bunch of things for packaging that make it.. bad but not godawful.
2024-12-06 14:34:07 +0100 <merijn> fp: The only downside of external dependencies are: 1) version compatibility if they're not super actively maintained, and 2) some packages have giant transitive dependency trees (which blows up your compile time and binary size)
2024-12-06 14:34:49 +0100 <merijn> dminuoso: They don't even have version bounds in python, it's near impossible to maintain a consistent set of dependencies over a long time
2024-12-06 14:35:18 +0100 <dminuoso> Maybe I just feel fine because I'm managing python packages as nix closures anyway..
2024-12-06 14:35:34 +0100 <dminuoso> merijn: And you have version bounds in python.
2024-12-06 14:35:35 +0100 <haskellbridge> <sm> for the "simple things" OP asked about first, sometimes it's worth writing or stealing them yourself. But yes real world haskell software almost always depends on a 10 or 20 or more direct dependencies
2024-12-06 14:35:54 +0100 <fp> I guess I'm just comparing to like python or rust where most basic string or list manipulations are available in stdlib, but with haskell you need to bring in a library
2024-12-06 14:35:54 +0100 <haskellbridge> <sm> -a
2024-12-06 14:36:10 +0100 <dminuoso> merijn: you can just declare `foo=0.1.*` in your requirements.txt
2024-12-06 14:36:18 +0100 <merijn> dminuoso: Yeah, but no one uses them and they're not solved transitively
2024-12-06 14:36:23 +0100 <haskellbridge> <sm> @fp: yes. We are bad on ergonomic for some basic things
2024-12-06 14:36:30 +0100 <dminuoso> merijn: No, they are used.
2024-12-06 14:36:31 +0100 <haskellbridge> <sm> * ergonomics
2024-12-06 14:36:50 +0100 <merijn> dminuoso: Not in the packages I encountered up until a year ago :p
2024-12-06 14:36:50 +0100 <dminuoso> merijn: While some prefer pyproject.toml - both are in use and I regularly see boundaries.
2024-12-06 14:36:59 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2024-12-06 14:37:10 +0100 <haskellbridge> <sm> fp: but, give us some examples ? Sometimes it's there but not obvious yet
2024-12-06 14:37:31 +0100 <haskellbridge> <sm> fp: : yes. We are bad on ergonomics for some basic things
2024-12-06 14:40:35 +0100 <SrPx> ok im confused about pseq
2024-12-06 14:40:36 +0100 <merijn> fp: I mean, the stdlib has quite a lot of list stuff, the splitting functions are just a bit underwhelming
2024-12-06 14:40:45 +0100 <fp> The two that I caught yesterday were =split ',' "thing1,thing2,thing3" --["thing1", "thing2", "thing3"]= and =mapAtIndex (\idx val -> ...)=. I was able to make them myself, but so many languages have that kind of =split=, and Mathematica has =MapIndexed=
2024-12-06 14:40:50 +0100 <SrPx> `a` par `b` pseq `c` means `c` can only run after `a` and `b` are wnf?
2024-12-06 14:40:57 +0100 <fp> =mapWithIndex= excuse me
2024-12-06 14:41:39 +0100 <merijn> fp: mapWithIndex is just "map f . zip [0..]"
2024-12-06 14:41:51 +0100 <fp> Right and I did that
2024-12-06 14:41:52 +0100 <SrPx> I don't understand why "`a` par `b` pseq `c`" is used, to me it reads like "run a and b in parallel, then run c after b is wnf". why would we do that? like why run "c" after "b" is wnf specifically
2024-12-06 14:41:52 +0100 <merijn> fp: So that's under the Fairbairn threshold ;)
2024-12-06 14:42:22 +0100 <SrPx> oops, I mean "a `par` b `pseq` b". using backticks here is weird
2024-12-06 14:42:57 +0100 <merijn> fp: (on the Haskell list there was a whole bunch of discussion about simple/small helper stuff, when the Fairbairn Threshold was proposed which is: A function is only worth adding if implementing it is harder/more work than remembering what name the implementation had)
2024-12-06 14:43:39 +0100 <haskellbridge> <sm> splitting by element is probably the best example. You're right, it's not in Data.List (I think) which is a bit crazy. You have to add the "split" package.
2024-12-06 14:44:10 +0100 <haskellbridge> <sm> merijn: that threshold is quite subjective isn't it
2024-12-06 14:44:26 +0100 <merijn> fp: Actually you could even do "zipWith f [0..]", but if you're not used to laziness yet, you probably didn't think of zipping an infinite list as index
2024-12-06 14:45:02 +0100 <merijn> fp: At any rate, the split package has every possible method of splitting you could ever want and it's only dependency is base (aka GHC), so it's really cheap to include as dependency
2024-12-06 14:45:12 +0100 <haskellbridge> <sm> mapWithIndex doesn't seem so needed
2024-12-06 14:45:41 +0100 <Leary> SrPx: "a `par` b `pseq` c" means "Spark off a and b before evaluating c locally."
2024-12-06 14:45:46 +0100 <merijn> > zipWith (+) [0..] [5,4,3,2]
2024-12-06 14:45:47 +0100 <lambdabot> [5,5,5,5]
2024-12-06 14:46:17 +0100 <merijn> fp: added bonus of the zipWith approach is that you're not even limited to indices starting at 0/incrementing by 1 :p
2024-12-06 14:46:29 +0100 <int-e> Leary: Nope. b will be evaluated locally, before c.
2024-12-06 14:46:48 +0100 <int-e> (there's only one `par` so at most one spark)
2024-12-06 14:46:51 +0100 <Leary> Ohhh. Right, yes. Been a while since I used this.
2024-12-06 14:47:25 +0100 <int-e> There's no point in writing a `par` b `pseq` b; the pattern is for more complex expressions involving a and b.
2024-12-06 14:48:40 +0100 <SrPx> Leary: oh *that* makes more sense
2024-12-06 14:48:43 +0100 <int-e> (but there's also no real harm in writing b `pseq` b for b)
2024-12-06 14:49:08 +0100hiecaq(~hiecaq@user/hiecaq) hiecaq
2024-12-06 14:49:15 +0100 <Leary> SrPx: Please note int-e's correction if you missed it; I wasn't quite right.
2024-12-06 14:49:43 +0100 <haskellbridge> <sm> so how about merging split in base, eh
2024-12-06 14:49:56 +0100 <SrPx> yes just read it, mb
2024-12-06 14:51:28 +0100 <SrPx> ok so my question is: if I want to make 4 "lines" of sparks (i.e., one per core), as in, a0 a1 a2 a3 b0 b1 b2 b3 c0 c1 c2 c3 ... such that a0 finishes before b0, and b0 finished before c0, and so on
2024-12-06 14:51:52 +0100 <merijn> sm: That just brings us back to: Now it cannot change without a GHC release
2024-12-06 14:51:57 +0100 <SrPx> what I could do is spark everything with `par`, and then do `a0 pseq a1 pseq a2 ...`, and `b0 pseq b1 pseq b2 ...`, etc.?
2024-12-06 14:52:11 +0100 <merijn> sm: tbh, I get what you want, but the best way to achieve it would be the ancient quest of split-base
2024-12-06 14:52:22 +0100 <haskellbridge> <sm> but it's split. I think it has probably been stable for years.
2024-12-06 14:52:37 +0100 <haskellbridge> <sm> I think it would make sense
2024-12-06 14:52:58 +0100 <merijn> sm: It's not split in the sense of having no GHC internals and being upgradable
2024-12-06 14:53:29 +0100 <nucleus> \c
2024-12-06 14:53:29 +0100 <merijn> Until base is upgradeable/separately installable from GHC moving more things into it is a fool's errand
2024-12-06 14:54:34 +0100 <haskellbridge> <sm> I didn't quite understand your reply there. IMHO this is a module that could be merged under Data.List and noone would regret it
2024-12-06 14:55:07 +0100 <merijn> sm: Yeah, but then if you come up with a new method of splitting or some other tweaks/additions, you couldn't release those without upgrade GHC
2024-12-06 14:55:31 +0100weary-traveler(~user@user/user363627) user363627
2024-12-06 14:55:53 +0100 <haskellbridge> <sm> for unstable stuff you need to release quickly, you can still have the separate split package
2024-12-06 14:57:32 +0100 <int-e> SrPx: Well you'd need 3 `par` (one thread of evaluation can be left to the original thread) and then arrange for such `pseq`s. Hardcoding the number of threads doesn't sound great though.
2024-12-06 14:59:31 +0100 <SrPx> int-e: yeah I know, the fundamental issue is that the underlying C-side evaluator() I'm calling inside the sparks only supports up to 16 parallel calls (due to resource constraints). so I'm here trying to understand how to balance haskell's spark model (which is perfectly fit for the actual problem being solved), with this underlying limitation
2024-12-06 15:00:00 +0100 <int-e> SrPx: This doesn't do the kind of round-robin scheduling you ask for but I wonder whether it's good enough for what you actually need: https://hackage.haskell.org/package/parallel-3.2.2.0/docs/Control-Parallel-Strategies.html#v:parLi…
2024-12-06 15:00:22 +0100 <int-e> Oh, eww.
2024-12-06 15:02:03 +0100 <int-e> Just don't go beyond +RTS -N16 -RTS then?
2024-12-06 15:03:01 +0100 <int-e> What could possibly go wrong? (I /think/ that restricts things to 16 simultaneous FFI calls but I'm not 100% sure; it's not exactly a thing you'd usually need to control.)
2024-12-06 15:08:22 +0100fp(~Thunderbi@130.233.70.169) (Ping timeout: 252 seconds)
2024-12-06 15:10:15 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-12-06 15:11:55 +0100 <SrPx> int-e: but even with -N16, Haskell might call the `reduce()` function more than 16 times in parallel, right? like I need to pass a "thread id" to reduce(), and I can't call reduce(1,...) reduce(1,...) at the same time because it will be using the same stack. i need to make sure one finishes before the other
2024-12-06 15:11:58 +0100 <SrPx> i'll check it ty
2024-12-06 15:12:28 +0100 <int-e> SrPx: Well, no, unless your FFI calls back into Haskell.
2024-12-06 15:12:43 +0100 <int-e> Well, FF (foreign function)
2024-12-06 15:12:59 +0100 <SrPx> hmm
2024-12-06 15:14:14 +0100 <int-e> The -N16 restricts the RTS to 16 capabilities, and while the mapping of capabilities to OS threads is flaky, there's at most one active FFI call per capability.
2024-12-06 15:14:40 +0100 <SrPx> ah interesting
2024-12-06 15:14:42 +0100korrykatti(~korrykatt@user/korrykatti) (Remote host closed the connection)
2024-12-06 15:15:06 +0100korrykatti(~korrykatt@user/korrykatti) korrykatti
2024-12-06 15:17:17 +0100 <int-e> (In this model, if you call back into Haskell from a foreign function, that function is suspended until the Haskell evaluation returns... suspended calls are not active.)
2024-12-06 15:18:57 +0100CiaoSen(~Jura@2a05:5800:2ed:3200:ca4b:d6ff:fec1:99da) (Ping timeout: 248 seconds)
2024-12-06 15:27:24 +0100AlexNoo_(~AlexNoo@178.34.161.102)
2024-12-06 15:29:24 +0100AlexZenon(~alzenon@5.139.233.9) (Ping timeout: 260 seconds)
2024-12-06 15:30:25 +0100JuanDaugherty(~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
2024-12-06 15:30:44 +0100AlexNoo(~AlexNoo@5.139.233.9) (Ping timeout: 252 seconds)
2024-12-06 15:33:52 +0100AlexZenon(~alzenon@178.34.161.102)
2024-12-06 15:37:27 +0100rekahsoft(~rekahsoft@bras-base-orllon1103w-grc-06-76-69-85-220.dsl.bell.ca) (Remote host closed the connection)
2024-12-06 15:39:09 +0100Sgeo(~Sgeo@user/sgeo) Sgeo
2024-12-06 15:43:23 +0100rekahsoft(~rekahsoft@bras-base-orllon1103w-grc-06-76-69-85-220.dsl.bell.ca) rekahsoft
2024-12-06 15:54:14 +0100 <SrPx> makes sense, I won't do that though
2024-12-06 15:59:56 +0100rekahsoft(~rekahsoft@bras-base-orllon1103w-grc-06-76-69-85-220.dsl.bell.ca) (Remote host closed the connection)
2024-12-06 16:00:25 +0100matsurago(~matsurago@240b:10:b3a1:1700:b208:b72c:53fc:819f) (Quit: Leaving)
2024-12-06 16:05:13 +0100 <merijn> int-e: That's not true
2024-12-06 16:05:28 +0100 <merijn> foreign calls run in their own threads separate from capabilities
2024-12-06 16:05:41 +0100 <merijn> Only unsafe foreign calls run directly on a capability
2024-12-06 16:05:54 +0100 <merijn> Which is one of the reasons they're unsafe :p
2024-12-06 16:06:51 +0100 <merijn> Also, I did some benchmarks (admittedly a decade ago) and beyond 20 capabilities you get some heavy diminishing returns on how fast things run in GHC even if you have more cores
2024-12-06 16:07:10 +0100 <merijn> because coordination of GCs becomes quite slot
2024-12-06 16:08:40 +0100notzmv(~umar@user/notzmv) (Ping timeout: 260 seconds)
2024-12-06 16:19:46 +0100Feuermagier(~Feuermagi@user/feuermagier) (Remote host closed the connection)
2024-12-06 16:21:30 +0100rekahsoft(~rekahsoft@bras-base-orllon1103w-grc-06-76-69-85-220.dsl.bell.ca) rekahsoft
2024-12-06 16:21:35 +0100 <int-e> merijn: Hrm, you're right. I was hoping those capabilities would only be available for GC, not for Haskell evaluation.
2024-12-06 16:21:59 +0100 <int-e> Now I'm sad :P
2024-12-06 16:28:48 +0100Brett70(~Brett@cpc91312-watf11-2-0-cust1213.15-2.cable.virginm.net) (Quit: Client closed)
2024-12-06 16:32:59 +0100zfnmxt(~zfnmxt@user/zfnmxt) (Remote host closed the connection)
2024-12-06 16:33:09 +0100 <SrPx> merijn: wait so haskell wouldn't run efficiently in a 256-core CPU? even if you didn't hit the GC?
2024-12-06 16:33:30 +0100 <merijn> There's a bunch of assumptions in that question
2024-12-06 16:33:37 +0100 <SrPx> i mean using sparks
2024-12-06 16:33:44 +0100 <SrPx> or forkIO presumably
2024-12-06 16:34:07 +0100 <merijn> The current threaded runtime system is not optimised for something like that, so no it wouldn't really perform super well
2024-12-06 16:34:41 +0100 <merijn> That said, nothing is (theoretically) stopping you from implementing a new runtime system that handles it better
2024-12-06 16:35:00 +0100 <merijn> It's just that there's not many people running >16 cores, so why optimise things for that
2024-12-06 16:35:01 +0100 <int-e> SrPx: Experiment supporting merijn's correction: https://paste.tomsmeding.com/b15BJnc5 -- uses 800% CPU with -N1. Sigh :-/
2024-12-06 16:35:08 +0100 <SrPx> merijn: makes sense
2024-12-06 16:35:33 +0100 <int-e> . o O ( Give it another 6 months. )
2024-12-06 16:35:40 +0100 <SrPx> int-e: oh well
2024-12-06 16:35:59 +0100 <int-e> (forkIO vs forkOS makes no difference)
2024-12-06 16:36:00 +0100 <merijn> Haskell, being a language doesn't inherently have a speed/performance. The implementation does, but you can swap out/improve implementations :p
2024-12-06 16:36:08 +0100 <merijn> int-e: forkOS is just forkIO, but pinned
2024-12-06 16:36:31 +0100 <SrPx> I mean it has exponential lambdas so it is inherently slower thank linear languages :p but that's fine and fair
2024-12-06 16:36:35 +0100 <int-e> merijn: I didn't expect a difference, but it felt worth mentioning :P
2024-12-06 16:37:06 +0100 <SrPx> merijn: do you have any idea how I could solve my problem? of making sure that my sparks don't call reduce() more than 16 times at the same time
2024-12-06 16:37:10 +0100mari-estel(~mari-este@user/mari-estel) mari-estel
2024-12-06 16:37:12 +0100korrykatti(~korrykatt@user/korrykatti) (Remote host closed the connection)
2024-12-06 16:37:14 +0100 <SrPx> I guess the way to go is to use `pseq` ?
2024-12-06 16:37:19 +0100 <merijn> Actually, I know the perfect library for that
2024-12-06 16:37:37 +0100korrykatti(~korrykatt@user/korrykatti) korrykatti
2024-12-06 16:37:39 +0100 <merijn> It just doesn't work on recent GHC, because I don't have a personal dev machine atm :p
2024-12-06 16:38:06 +0100 <merijn> so I haven't updated in...a while
2024-12-06 16:38:16 +0100 <SrPx> hmmm i can still have a look no worries
2024-12-06 16:38:36 +0100Pozyomka(~pyon@user/pyon) (Quit: brb)
2024-12-06 16:39:12 +0100 <merijn> It does need IO, though
2024-12-06 16:39:29 +0100 <int-e> I guess the reason for continuing Haskell evaluation while a safe FFI call is in progress is that we don't want to stop Haskell evaluation for blocking calls (that wait for IO).
2024-12-06 16:39:32 +0100 <merijn> I kept having to reinvent "run this function N times in parallel", so I just stuffed it in a package: https://hackage.haskell.org/package/broadcast-chan-0.2.1.2/docs/BroadcastChan.html#g:4
2024-12-06 16:39:38 +0100 <merijn> int-e: yeah
2024-12-06 16:40:17 +0100 <int-e> merijn: Anyway thanks for the correction :)
2024-12-06 16:42:23 +0100Pozyomka(~pyon@user/pyon) pyon
2024-12-06 16:42:29 +0100 <Leary> SrPx, merijn: N.B. https://hackage.haskell.org/package/unliftio-0.2.25.0/docs/UnliftIO-Async.html#g:9
2024-12-06 16:44:01 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.4.2)
2024-12-06 16:52:34 +0100hiecaq(~hiecaq@user/hiecaq) (Quit: ERC 5.6.0.30.1 (IRC client for GNU Emacs 30.0.92))
2024-12-06 16:56:13 +0100ft(~ft@p508db9c7.dip0.t-ipconnect.de) ft
2024-12-06 16:59:01 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-12-06 17:07:55 +0100AlexNoo_AlexNoo
2024-12-06 17:10:54 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-12-06 17:12:00 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2024-12-06 17:16:33 +0100chele(~chele@user/chele) (Remote host closed the connection)
2024-12-06 17:20:40 +0100weary-traveler(~user@user/user363627) (Quit: Konversation terminated!)
2024-12-06 17:21:09 +0100weary-traveler(~user@user/user363627) user363627
2024-12-06 17:23:33 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 17:24:25 +0100zfnmxt(~zfnmxt@user/zfnmxt) zfnmxt
2024-12-06 17:25:14 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-12-06 17:27:41 +0100sonolin(~michael@174-26-31-216.phnx.qwest.net)
2024-12-06 17:27:50 +0100sonolin(~michael@174-26-31-216.phnx.qwest.net) (Client Quit)
2024-12-06 17:28:54 +0100sonolin(~michael@user/sonolin) sonolin
2024-12-06 17:28:55 +0100nucleus(~grigory@77-174-131-220.fixed.kpn.net) (Ping timeout: 264 seconds)
2024-12-06 17:29:07 +0100sonolin(~michael@user/sonolin) (Client Quit)
2024-12-06 17:29:33 +0100sonolin(~michael@174-26-31-216.phnx.qwest.net)
2024-12-06 17:29:35 +0100sonolin(~michael@174-26-31-216.phnx.qwest.net) (Client Quit)
2024-12-06 17:30:11 +0100notzmv(~umar@user/notzmv) notzmv
2024-12-06 17:30:44 +0100sonolin(~michael@user/sonolin) sonolin
2024-12-06 17:32:23 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2024-12-06 17:32:45 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-12-06 17:33:49 +0100zfnmxt(~zfnmxt@user/zfnmxt) (Remote host closed the connection)
2024-12-06 17:43:49 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 17:48:21 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-12-06 17:51:41 +0100Square(~Square@user/square) Square
2024-12-06 17:54:50 +0100Square2(~Square4@user/square) (Ping timeout: 252 seconds)
2024-12-06 17:56:16 +0100tremon(~tremon@83.80.159.219) tremon
2024-12-06 17:58:14 +0100euphores(~SASL_euph@user/euphores) euphores
2024-12-06 17:59:11 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 18:01:05 +0100zfnmxt(~zfnmxt@user/zfnmxt) zfnmxt
2024-12-06 18:03:48 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
2024-12-06 18:06:26 +0100sindu(~sindu@176.75.224.1)
2024-12-06 18:07:02 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Remote host closed the connection)
2024-12-06 18:08:31 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker) TheCoffeMaker
2024-12-06 18:09:27 +0100Square(~Square@user/square) (Remote host closed the connection)
2024-12-06 18:14:33 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 18:18:47 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
2024-12-06 18:18:58 +0100gorignak(~gorignak@user/gorignak) (Quit: quit)
2024-12-06 18:19:16 +0100gorignak(~gorignak@user/gorignak) gorignak
2024-12-06 18:23:36 +0100alp(~alp@2001:861:8ca0:4940:d3d7:b90a:479f:639b) (Ping timeout: 246 seconds)
2024-12-06 18:28:03 +0100mari-estel(~mari-este@user/mari-estel) ()
2024-12-06 18:29:56 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 18:32:39 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:c53d:8130:21bb:6073) (Read error: Connection reset by peer)
2024-12-06 18:34:22 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-12-06 18:35:49 +0100notzmv(~umar@user/notzmv) (Ping timeout: 248 seconds)
2024-12-06 18:36:12 +0100wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2024-12-06 18:38:40 +0100picnoir(~picnoir@about/aquilenet/vodoo/NinjaTrappeur) (Quit: WeeChat 4.4.2)
2024-12-06 18:39:52 +0100JeremyB99(~JeremyB99@128.211.254.217)
2024-12-06 18:40:22 +0100JeremyB99(~JeremyB99@128.211.254.217) (Read error: Connection reset by peer)
2024-12-06 18:40:37 +0100picnoir(~picnoir@about/aquilenet/vodoo/NinjaTrappeur) NinjaTrappeur
2024-12-06 18:41:28 +0100tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) tzh
2024-12-06 18:45:19 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 18:45:39 +0100JeremyB99(~JeremyB99@128.211.254.217)
2024-12-06 18:45:43 +0100JeremyB99(~JeremyB99@128.211.254.217) (Read error: Connection reset by peer)
2024-12-06 18:48:05 +0100korrykatti(~korrykatt@user/korrykatti) (Remote host closed the connection)
2024-12-06 18:48:48 +0100korrykatti(~korrykatt@user/korrykatti) korrykatti
2024-12-06 18:49:50 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-12-06 18:55:38 +0100JeremyB99(~JeremyB99@2607:fb90:d9e2:c2c7:2868:24a3:ddc7:6fab)
2024-12-06 18:57:50 +0100JeremyB99(~JeremyB99@2607:fb90:d9e2:c2c7:2868:24a3:ddc7:6fab) (Read error: Connection reset by peer)
2024-12-06 18:59:51 +0100fmira(~user@user/fmira) fmira
2024-12-06 19:00:41 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 19:01:02 +0100 <haskellbridge> <maralorn> Can I have an associated type be "forall a. a"?
2024-12-06 19:02:56 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu)
2024-12-06 19:03:00 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu) (Remote host closed the connection)
2024-12-06 19:03:13 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu)
2024-12-06 19:05:17 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
2024-12-06 19:07:54 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 19:07:57 +0100KicksonButt(~quassel@187.21.174.221)
2024-12-06 19:08:59 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2024-12-06 19:09:22 +0100nucleus(~grigory@77-174-131-220.fixed.kpn.net)
2024-12-06 19:09:38 +0100ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-12-06 19:10:13 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 265 seconds)
2024-12-06 19:11:56 +0100Lord_of_Life_Lord_of_Life
2024-12-06 19:12:31 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
2024-12-06 19:14:30 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu) (Remote host closed the connection)
2024-12-06 19:14:44 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu)
2024-12-06 19:20:28 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2024-12-06 19:23:13 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 19:27:43 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu) (Read error: Connection reset by peer)
2024-12-06 19:28:01 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-12-06 19:28:42 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu)
2024-12-06 19:31:26 +0100econo_(uid147250@id-147250.tinside.irccloud.com)
2024-12-06 19:32:02 +0100philopsos(~caecilius@user/philopsos) (Quit: Lost terminal)
2024-12-06 19:32:08 +0100rvalue(~rvalue@user/rvalue) (Read error: Connection reset by peer)
2024-12-06 19:32:18 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu) (Read error: Connection reset by peer)
2024-12-06 19:32:47 +0100rvalue(~rvalue@user/rvalue) rvalue
2024-12-06 19:33:57 +0100nucleus(~grigory@77-174-131-220.fixed.kpn.net) (Ping timeout: 248 seconds)
2024-12-06 19:36:46 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu)
2024-12-06 19:38:05 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu) (Read error: Connection reset by peer)
2024-12-06 19:38:28 +0100philopsos(~caecilius@user/philopsos) philopsos
2024-12-06 19:38:30 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu)
2024-12-06 19:38:46 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 19:41:47 +0100Brett78(~Brett@cpc91312-watf11-2-0-cust1213.15-2.cable.virginm.net)
2024-12-06 19:41:48 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu) (Read error: Connection reset by peer)
2024-12-06 19:42:07 +0100A_DragonFestive
2024-12-06 19:43:07 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-12-06 19:44:10 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-12-06 19:49:32 +0100homo_(~homo@82-128-196-26.bb.dnainternet.fi)
2024-12-06 19:49:37 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu)
2024-12-06 19:49:55 +0100homo_(~homo@82-128-196-26.bb.dnainternet.fi) (Changing host)
2024-12-06 19:49:55 +0100homo_(~homo@user/homo) homo
2024-12-06 19:50:24 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu) (Read error: Connection reset by peer)
2024-12-06 19:51:36 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) Unicorn_Princess
2024-12-06 19:53:38 +0100homo(~homo@user/homo) (Ping timeout: 252 seconds)
2024-12-06 19:53:38 +0100homo_homo
2024-12-06 19:54:07 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 19:55:07 +0100briandaed(~root@185.234.210.211)
2024-12-06 19:55:20 +0100rvalue-(~rvalue@user/rvalue) rvalue
2024-12-06 19:55:55 +0100rvalue(~rvalue@user/rvalue) (Ping timeout: 244 seconds)
2024-12-06 19:55:56 +0100 <tomsmeding> maralorn: what would that even mean? Isn't that equivalent to writing `Void`?
2024-12-06 19:56:27 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com) szkl
2024-12-06 19:58:46 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-12-06 20:00:53 +0100glguy(glguy@libera/staff/glguy) (Remote host closed the connection)
2024-12-06 20:01:41 +0100rvalue-rvalue
2024-12-06 20:01:49 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu)
2024-12-06 20:01:50 +0100glguy(glguy@libera/staff/glguy) glguy
2024-12-06 20:05:25 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu) (Read error: Connection reset by peer)
2024-12-06 20:08:51 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 20:13:29 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
2024-12-06 20:15:11 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-12-06 20:22:31 +0100 <SrPx> is there any easy way to merge an arbitrary monad with IO?
2024-12-06 20:22:44 +0100 <glguy> no
2024-12-06 20:22:46 +0100 <SrPx> specifically trying to make this one work in an IO context:
2024-12-06 20:22:48 +0100 <SrPx> https://gist.github.com/VictorTaelin/60d3bc72fb4edefecd42095e44138b41
2024-12-06 20:23:00 +0100 <SrPx> currently resorting to unsafePerformIO
2024-12-06 20:24:13 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 20:26:26 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu)
2024-12-06 20:30:57 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-12-06 20:35:46 +0100lxsameer(~lxsameer@Serene/lxsameer) (Ping timeout: 265 seconds)
2024-12-06 20:36:15 +0100Square2(~Square4@user/square) Square
2024-12-06 20:38:29 +0100Smiles(uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2024-12-06 20:39:06 +0100thaumavorio(~thaumavor@thaumavor.io) (Quit: ZNC 1.8.2 - https://znc.in)
2024-12-06 20:39:11 +0100sprotte24(~sprotte24@p200300d16f1521002020c35b0109401f.dip0.t-ipconnect.de)
2024-12-06 20:39:51 +0100thaumavorio(~thaumavor@thaumavor.io) thaumavorio
2024-12-06 20:42:00 +0100 <tomsmeding> SrPx: could you define `data CollapseT m a = Sup Int (CollapseT m a) (CollapseT m a) | Val (m a)`?
2024-12-06 20:42:17 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 20:42:18 +0100korrykatti(~korrykatt@user/korrykatti) (Remote host closed the connection)
2024-12-06 20:42:46 +0100 <tomsmeding> I didn't look carefully at what the monad is actually doing, but just from the type, it seems okay
2024-12-06 20:43:17 +0100 <SrPx> oh is it so simple
2024-12-06 20:43:24 +0100 <SrPx> interesting
2024-12-06 20:44:12 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu) (Remote host closed the connection)
2024-12-06 20:44:31 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu)
2024-12-06 20:44:55 +0100 <tomsmeding> SrPx: do you know monad transformers? :p
2024-12-06 20:45:09 +0100 <SrPx> almost nothing, never had to use them other than recently
2024-12-06 20:45:16 +0100 <tomsmeding> not every monad can be made into a monad transformers, but some very useful ones can
2024-12-06 20:45:25 +0100 <tomsmeding> *a monad transformer
2024-12-06 20:45:25 +0100 <SrPx> had a pretty fine experience recently though, but not in deep
2024-12-06 20:46:02 +0100 <tomsmeding> so do note that this trick does _not_ work with any arbitrary monad
2024-12-06 20:46:53 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-12-06 20:49:10 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu) (Read error: Connection reset by peer)
2024-12-06 20:51:55 +0100weary-traveler(~user@user/user363627) (Remote host closed the connection)
2024-12-06 20:52:45 +0100briandaed(~root@185.234.210.211) (Remote host closed the connection)
2024-12-06 20:53:13 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu)
2024-12-06 20:56:01 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu) (Remote host closed the connection)
2024-12-06 20:56:14 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu)
2024-12-06 20:57:38 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 21:00:04 +0100caconym(~caconym@user/caconym) (Quit: bye)
2024-12-06 21:00:08 +0100haetsal(~quassel@221.138.168.192) (Remote host closed the connection)
2024-12-06 21:00:42 +0100caconym(~caconym@user/caconym) caconym
2024-12-06 21:01:02 +0100haetsal(~quassel@221.138.168.192)
2024-12-06 21:02:03 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
2024-12-06 21:09:50 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 21:14:13 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-12-06 21:16:12 +0100weary-traveler(~user@user/user363627) user363627
2024-12-06 21:16:22 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod
2024-12-06 21:22:29 +0100alp(~alp@2001:861:8ca0:4940:b0c1:7414:d62f:3e1f)
2024-12-06 21:23:14 +0100KicksonButt(~quassel@187.21.174.221) (Ping timeout: 244 seconds)
2024-12-06 21:24:19 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu) (Remote host closed the connection)
2024-12-06 21:24:32 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu)
2024-12-06 21:25:14 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 21:26:59 +0100Square(~Square@user/square) Square
2024-12-06 21:29:48 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-12-06 21:37:24 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu) (Read error: Connection reset by peer)
2024-12-06 21:38:46 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2024-12-06 21:39:46 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu)
2024-12-06 21:39:49 +0100 <SrPx> I see
2024-12-06 21:40:36 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 21:41:28 +0100Everything(~Everythin@94.153.5.84) Everything
2024-12-06 21:42:13 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu) (Read error: Connection reset by peer)
2024-12-06 21:45:06 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-12-06 21:45:33 +0100Guest81(~Guest81@2601:283:4a00:7ab0:72:a12f:2eef:8bc6)
2024-12-06 21:51:48 +0100Guest81(~Guest81@2601:283:4a00:7ab0:72:a12f:2eef:8bc6) (Quit: Client closed)
2024-12-06 21:53:31 +0100tabemann_(~tabemann@2600:1700:7990:24e0:39a4:2ebe:705f:fb9f)
2024-12-06 21:53:50 +0100pavonia(~user@user/siracusa) siracusa
2024-12-06 21:55:45 +0100tabemann(~tabemann@2600:1700:7990:24e0:b476:3399:7ccb:c1f7) (Ping timeout: 260 seconds)
2024-12-06 21:55:58 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 22:00:25 +0100notzmv(~umar@user/notzmv) notzmv
2024-12-06 22:00:33 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-12-06 22:01:46 +0100kimiamania(~65804703@user/kimiamania) (Quit: PegeLinux)
2024-12-06 22:02:01 +0100kimiamania(~65804703@user/kimiamania) kimiamania
2024-12-06 22:02:27 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu)
2024-12-06 22:03:05 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu) (Read error: Connection reset by peer)
2024-12-06 22:08:37 +0100tremon(~tremon@83.80.159.219) (Quit: getting boxed in)
2024-12-06 22:09:00 +0100OftenFaded(~OftenFade@user/tisktisk) OftenFaded
2024-12-06 22:11:22 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 22:18:06 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-12-06 22:22:15 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu)
2024-12-06 22:24:34 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu) (Read error: Connection reset by peer)
2024-12-06 22:25:13 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu)
2024-12-06 22:27:39 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu) (Read error: Connection reset by peer)
2024-12-06 22:28:49 +0100JeremyB99(~JeremyB99@2607:fb90:d362:60:94c9:3ce9:328b:546d)
2024-12-06 22:36:20 +0100 <sprotte24> https://paste.tomsmeding.com/7FMcgqwq
2024-12-06 22:36:35 +0100JeremyB99(~JeremyB99@2607:fb90:d362:60:94c9:3ce9:328b:546d) (Ping timeout: 260 seconds)
2024-12-06 22:36:42 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu)
2024-12-06 22:36:57 +0100 <sprotte24> I want to make 2 little changes to the code presented in paste
2024-12-06 22:37:00 +0100Everything(~Everythin@94.153.5.84) (Quit: Lost terminal)
2024-12-06 22:37:19 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu) (Remote host closed the connection)
2024-12-06 22:37:24 +0100 <sprotte24> can you help me?
2024-12-06 22:37:33 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu)
2024-12-06 22:38:09 +0100Square2(~Square4@user/square) (Ping timeout: 244 seconds)
2024-12-06 22:39:06 +0100 <glguy> sprotte24: your play definition needs a parameter with all the past guesses
2024-12-06 22:40:10 +0100 <sprotte24> yes, but only the secret word should be taken from command line parameter.
2024-12-06 22:40:30 +0100Feuermagier(~Feuermagi@user/feuermagier) Feuermagier
2024-12-06 22:40:40 +0100 <glguy> That's fine
2024-12-06 22:41:17 +0100 <glguy> To read command line parameters use System.Environment.getArgs
2024-12-06 22:41:34 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu) (Read error: Connection reset by peer)
2024-12-06 22:44:02 +0100 <sprotte24> can I use something like lambda?
2024-12-06 22:45:44 +0100 <glguy> I'm not sure what you mean
2024-12-06 22:46:23 +0100 <sprotte24> i fear, signature hangman :: char -> ... will not help for IO?
2024-12-06 22:47:10 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu)
2024-12-06 22:47:48 +0100JeremyB99(~JeremyB99@pal-210-106-52.itap.purdue.edu) (Read error: Connection reset by peer)
2024-12-06 22:48:01 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2024-12-06 22:48:08 +0100ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2024-12-06 22:48:08 +0100michalz(~michalz@185.246.207.205) (Remote host closed the connection)
2024-12-06 22:48:41 +0100 <glguy> Eventually you'll write a main::IO()
2024-12-06 22:48:50 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 260 seconds)
2024-12-06 22:48:50 +0100ljdarj1ljdarj
2024-12-06 22:48:57 +0100 <glguy> That can call hangman with extra arguments
2024-12-06 22:49:47 +0100 <monochrom> You have seen "play :: String -> IO ()" and it's just fine so clearly you already know you have that option.
2024-12-06 22:50:40 +0100 <sprotte24> perhaps main can be named as hangman, and the old hangman can use another name?
2024-12-06 22:51:07 +0100 <monochrom> I trust that you know you can extrapolate that to "Char -> IO ()" or even "Char -> String -> IO ()" etc etc. If you cannot, you have trouble with much more basic concepts.
2024-12-06 22:51:23 +0100 <sprotte24> I am ordered to start with hangman secretword
2024-12-06 22:51:35 +0100 <sprotte24> It is an exercise
2024-12-06 22:51:55 +0100 <geekosaur> that's the name of the program, not the function
2024-12-06 22:52:08 +0100arthurvl(~arthurvl@2a02-a469-f5e2-1-83d2-ca43-57a2-dc81.fixed6.kpn.net) earthy
2024-12-06 22:54:39 +0100 <sprotte24> The solution will be tested automatically, and only starting with hangman is allowed without main
2024-12-06 22:55:08 +0100 <geekosaur> no
2024-12-06 22:55:32 +0100 <geekosaur> I cannot believe they want you to start with advanced topics (specifically, using something not called maon as the entry point)
2024-12-06 22:56:49 +0100 <geekosaur> either you are being asked to produce a function which will be hooked into a test framework, or you are being required to produce a program in which the entry point will be called main
2024-12-06 22:57:04 +0100 <geekosaur> how about you show us the actual problem?
2024-12-06 22:57:28 +0100JeremyB99(~JeremyB99@2607:fb91:1062:461e:102a:ca46:8fa0:97ac)
2024-12-06 22:57:32 +0100ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2024-12-06 22:57:33 +0100 <monochrom> I don't think of that as advanced. It's just String -> IO (). Instead, it is getArgs that, maybe not "advanced" but certainly a little topic that can be skipped.
2024-12-06 22:58:31 +0100JeremyB99(~JeremyB99@2607:fb91:1062:461e:102a:ca46:8fa0:97ac) (Read error: Connection reset by peer)
2024-12-06 22:59:06 +0100 <monochrom> I bet it's going to be a tester that expects hangman :: String -> IO (). I do that all the time when I'm teaching.
2024-12-06 22:59:08 +0100 <sprotte24> this is a given smple, it should work from hgci>
2024-12-06 22:59:12 +0100 <sprotte24> ghci
2024-12-06 22:59:14 +0100 <sprotte24> ghci>
2024-12-06 22:59:14 +0100 <sprotte24> hangman
2024-12-06 22:59:15 +0100 <sprotte24> "hallo"
2024-12-06 22:59:15 +0100 <sprotte24> Secret: *****Enter a character: HSecret: h****Enter a character: lSecret: h*ll*Enter a character: oSecret: h*lloEnter a character: eSecret: h*lloEnter a character: aSolved in 5 tries.
2024-12-06 22:59:49 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 248 seconds)
2024-12-06 22:59:49 +0100ljdarj1ljdarj
2024-12-06 22:59:53 +0100 <sprotte24> bad formatted
2024-12-06 23:01:44 +0100 <sprotte24> should work as a function from command line ghci> hangman "hallo"
2024-12-06 23:03:18 +0100KicksonButt(~quassel@187.21.174.221)
2024-12-06 23:08:50 +0100 <sprotte24> could the following help: module main where ...?
2024-12-06 23:09:28 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 23:11:38 +0100 <geekosaur> okay, that is not "command line", command line is what you start ghci from
2024-12-06 23:11:45 +0100 <geekosaur> ghc prompt is something different
2024-12-06 23:11:49 +0100 <geekosaur> *ghci
2024-12-06 23:12:42 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:43ac:8410:148a:7aab)
2024-12-06 23:13:48 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
2024-12-06 23:13:48 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:43ac:8410:148a:7aab) (Read error: Connection reset by peer)
2024-12-06 23:13:59 +0100 <sprotte24> excuse me, I am a beginner :-)
2024-12-06 23:14:55 +0100 <sprotte24> ghci> hangman "hallo"
2024-12-06 23:15:23 +0100 <geekosaur> right, so you want a function, you don't need to mess with the command line (which involves `main` and `getArgs` etc.)
2024-12-06 23:15:29 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:43ac:8410:148a:7aab)
2024-12-06 23:16:03 +0100 <monochrom> This is why you must always provide authentic examples and authentic original unabridge questions / assignments handouts / problem statements. You must never "explain in your own words" to show that you are making it all up.
2024-12-06 23:16:24 +0100gmg(~user@user/gehmehgeh) (Ping timeout: 264 seconds)
2024-12-06 23:16:36 +0100 <sprotte24> "hallo" is may secret word, it should not be entered while hangman asks for solution chard
2024-12-06 23:17:07 +0100gmg(~user@user/gehmehgeh) gehmehgeh
2024-12-06 23:17:20 +0100 <sprotte24> -d
2024-12-06 23:17:27 +0100 <geekosaur> right, so that's a parameter to your function
2024-12-06 23:18:10 +0100 <geekosaur> and from that we know that the type is at least `hangman :: String -> IO ()` but may involve more because you still haven't told us what the assignment actually is
2024-12-06 23:19:56 +0100 <sprotte24> the assignment is: hangman "secretword"
2024-12-06 23:22:13 +0100Smiles(uid551636@id-551636.lymington.irccloud.com) Smiles
2024-12-06 23:22:43 +0100 <geekosaur> does the function have a result, or is everything simply printed?
2024-12-06 23:25:14 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:43ac:8410:148a:7aab) (Remote host closed the connection)
2024-12-06 23:25:22 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:43ac:8410:148a:7aab)
2024-12-06 23:25:28 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-12-06 23:26:08 +0100 <sprotte24> it prints the answer on the screen, at the end writuing "solved in x tries."
2024-12-06 23:27:27 +0100 <sprotte24> ald the 2. point is: The correct chars should be accumulated for the next step
2024-12-06 23:32:00 +0100Square(~Square@user/square) (Ping timeout: 276 seconds)
2024-12-06 23:32:01 +0100 <sprotte24> hallo h h**** l h*ll* ...
2024-12-06 23:32:45 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-12-06 23:39:34 +0100SlackCoder(~SlackCode@64-94-63-8.ip.weststar.net.ky) SlackCoder
2024-12-06 23:41:09 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:43ac:8410:148a:7aab) (Remote host closed the connection)
2024-12-06 23:41:16 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:43ac:8410:148a:7aab)
2024-12-06 23:47:09 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-12-06 23:51:30 +0100JeremyB99(~JeremyB99@2607:ac80:407:7:43ac:8410:148a:7aab) (Ping timeout: 276 seconds)
2024-12-06 23:51:44 +0100JeremyB99(~JeremyB99@2607:fb90:2ce0:c5f3:a191:442e:a62a:6f1c)
2024-12-06 23:52:19 +0100JeremyB99(~JeremyB99@2607:fb90:2ce0:c5f3:a191:442e:a62a:6f1c) (Remote host closed the connection)
2024-12-06 23:52:28 +0100JeremyB99(~JeremyB99@2607:fb90:2ce0:c5f3:a191:442e:a62a:6f1c)
2024-12-06 23:55:55 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-06 23:59:57 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 246 seconds)