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