2021/11/19

2021-11-19 00:02:58 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-19 00:03:36 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) ()
2021-11-19 00:03:45 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-19 00:06:07 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2021-11-19 00:07:36 +0100Sgeo(~Sgeo@user/sgeo)
2021-11-19 00:08:04 +0100justsomeguy(~justsomeg@user/justsomeguy)
2021-11-19 00:08:18 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2021-11-19 00:08:40 +0100 <lbseale> I am trying to add a custom hlint rule for function that's not in base (Data.Map.Strict.fromList), but hlint isn't catching it. It's being used with a qualified import ... does anyone know why this wouldn't work?
2021-11-19 00:12:36 +0100chomwitt(~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374) (Ping timeout: 265 seconds)
2021-11-19 00:13:00 +0100zava(~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de)
2021-11-19 00:13:30 +0100kupi(uid212005@hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-19 00:13:40 +0100evocatus(~evocatus@213.193.2.105)
2021-11-19 00:14:40 +0100max22-(~maxime@2a01cb088335980084a2aafb0ef18753.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
2021-11-19 00:16:42 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-11-19 00:18:58 +0100chomwitt(~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374)
2021-11-19 00:20:25 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-11-19 00:21:35 +0100alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-11-19 00:23:50 +0100Guest|61(~Guest|61@pool-74-104-163-225.bstnma.fios.verizon.net) (Quit: Connection closed)
2021-11-19 00:25:17 +0100chomwitt(~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374) (Ping timeout: 268 seconds)
2021-11-19 00:28:02 +0100 <oats> are there any good learning resources out there for how to factor recursion out of a function? I've got a recursive function in which I reckon there's a fold or something hiding, but I can't prove it yet
2021-11-19 00:28:26 +0100 <Hecate> oats: you need to practice folds
2021-11-19 00:28:37 +0100 <Hecate> the more you do, the more you recognise patterns to which folds apply
2021-11-19 00:28:48 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-11-19 00:32:22 +0100 <monochrom> The resources are organized as "this is a tutorial on list's foldr specifically" "this is a tutorial on list's map specifically", etc. As opposed to "this is a one-stop shop for all common recursions".
2021-11-19 00:32:31 +0100nvmd(~nvmd@user/nvmd) (Quit: Later, nerds.)
2021-11-19 00:32:48 +0100nvmd(~nvmd@user/nvmd)
2021-11-19 00:34:27 +0100 <monochrom> Actually I lied, there is a one-stop shop, it's an academic paper called "banana, barbed wires, ...", and it is not easy to read, and it goes overboard, today most Haskellers aren't interested.
2021-11-19 00:34:34 +0100 <oats> oh shit, it's actually an unfold
2021-11-19 00:34:49 +0100 <oats> no wonder it was sus :P
2021-11-19 00:39:32 +0100 <lbseale> Update: we figured it out. We needed to add it as a warning in a group, following the patterns in https://github.com/ndmitchell/hlint/blob/v2.1.11/data/hlint.yaml
2021-11-19 00:41:49 +0100 <lbseale> https://paste.tomsmeding.com/0FpSc3oc
2021-11-19 00:46:35 +0100yauhsien(~yauhsien@49.216.238.61) (Read error: Connection reset by peer)
2021-11-19 00:47:54 +0100epolanski(uid312403@helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-19 00:49:22 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-19 00:50:21 +0100 <oats> https://github.com/oatberry/aoc2020-haskell/commit/d24e072a564512520c9d7334e4210a77dd6ae7eb
2021-11-19 00:50:36 +0100 <oats> some may say, unreadable :P
2021-11-19 00:51:20 +0100 <dsal> sum.unFoldr sounds like a hylomorphism.
2021-11-19 00:52:25 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 268 seconds)
2021-11-19 00:54:54 +0100 <oats> that's the first I've seen that term
2021-11-19 00:55:05 +0100 <dsal> @package recursion-schemes
2021-11-19 00:55:05 +0100 <lambdabot> https://hackage.haskell.org/package/recursion-schemes
2021-11-19 00:55:24 +0100 <dsal> There's your "how do I refactor all recursion out of everything" thing. :)
2021-11-19 00:55:36 +0100 <oats> hah, thanks :)
2021-11-19 00:56:02 +0100 <dsal> I just used regular `fold` when I did that one.
2021-11-19 00:56:33 +0100 <oats> dsal, AoC? is your solution up anywhere?
2021-11-19 00:56:40 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-19 00:57:09 +0100 <dsal> I've got a helper library with some common stuff like grid parsing, but this is my day 3: https://www.irccloud.com/pastebin/pBTpHp1C/day3.hs
2021-11-19 00:57:59 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
2021-11-19 01:00:42 +0100 <oats> nice
2021-11-19 01:00:59 +0100 <dsal> I don't remember what the problem was. heh
2021-11-19 01:01:29 +0100 <oats> tobogganing
2021-11-19 01:01:35 +0100 <oats> avoiding arboreal incidents
2021-11-19 01:01:46 +0100 <dsal> AI can be a problem, yeah.
2021-11-19 01:01:54 +0100 <oats> lol
2021-11-19 01:02:11 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 264 seconds)
2021-11-19 01:03:02 +0100 <dsal> oh, I think day4 might've been fun. This was my solution to part 1: `part1 = length`
2021-11-19 01:04:54 +0100hololeap(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2021-11-19 01:05:21 +0100hololeap(~hololeap@user/hololeap)
2021-11-19 01:05:47 +0100emf(~emf@2620:10d:c090:400::5:d3e3) (Ping timeout: 264 seconds)
2021-11-19 01:06:24 +0100 <dsal> Sorry. Spoiler.
2021-11-19 01:06:31 +0100 <oats> oh meanning you already had utility functions for reading in hashmaps and stuff?
2021-11-19 01:06:46 +0100 <oats> hah no worries, I did most of these last year in not-haskell
2021-11-19 01:07:03 +0100 <oats> I just wanted to throw together a little framework for doing them in haskell these year
2021-11-19 01:07:05 +0100 <dsal> Nah, I just wrote a parser that did most of the work.
2021-11-19 01:07:14 +0100 <dsal> getInput = fmap catMaybes . parseFile (parsePassport `sepBy` "\n")
2021-11-19 01:07:33 +0100 <dsal> parsePassport was `parsePassport :: Parser (Maybe Passport)`
2021-11-19 01:07:43 +0100 <oats> mmm, parseFile seems like a very good function
2021-11-19 01:08:08 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-19 01:08:08 +0100Pickchea(~private@user/pickchea) (Quit: Leaving)
2021-11-19 01:08:08 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-19 01:08:08 +0100wroathe(~wroathe@user/wroathe)
2021-11-19 01:08:12 +0100 <dsal> It's not particularly fancy: https://github.com/dustin/aoc/blob/master/src/Advent/AoC.hs#L44
2021-11-19 01:09:02 +0100Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-11-19 01:09:05 +0100texasmynsted(~texasmyns@99.96.221.112) (WeeChat 3.1)
2021-11-19 01:09:59 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 264 seconds)
2021-11-19 01:11:07 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-19 01:15:01 +0100hiruji(~hiruji@user/hiruji) (Read error: Connection reset by peer)
2021-11-19 01:15:41 +0100 <dsal> Man, day 7 with lazy maps kind of blew my mind.
2021-11-19 01:15:55 +0100hiruji(~hiruji@user/hiruji)
2021-11-19 01:17:48 +0100zava(~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de) (Quit: WeeChat 3.3)
2021-11-19 01:19:45 +0100ystael(~ystael@user/ystael) (Ping timeout: 250 seconds)
2021-11-19 01:22:58 +0100 <oats> dsal, any particular reason you use Text pretty much everywhere instead of String?
2021-11-19 01:23:11 +0100 <dsal> Because that's best practice. :)
2021-11-19 01:24:02 +0100 <oats> 😰
2021-11-19 01:25:35 +0100 <dsal> It doesn't matter a lot of the time, but `String` is a type alias for `[Char]` which is a silly amount of overhead to do just about anything you might want to do.
2021-11-19 01:28:05 +0100evocatus(~evocatus@213.193.2.105) (Quit: Leaving)
2021-11-19 01:28:36 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2021-11-19 01:29:05 +0100 <oats> yeah, if I had performance in mind I guess I might
2021-11-19 01:29:10 +0100 <oats> AoC is kinda small scale though :P
2021-11-19 01:30:23 +0100mimmy(~mimmy@2607:fea8:6e0:7f90:c01b:60fe:9558:2d95)
2021-11-19 01:31:26 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
2021-11-19 01:31:35 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-11-19 01:32:19 +0100turco32(~turco32@104.158.25.93)
2021-11-19 01:32:52 +0100Lord_of_Life_Lord_of_Life
2021-11-19 01:32:58 +0100 <turco32> am i doing it wrong using ghci in a terminal and not in a emacs setup?
2021-11-19 01:33:21 +0100 <turco32> i don't know if a such a setup exists for ghci and emacs
2021-11-19 01:34:05 +0100 <sm> but, but, maybe you want to slice and dice strings like lists, and without requiring a big extra package and import ?
2021-11-19 01:34:21 +0100 <sm> maybe you want to interact easily with the OS ?
2021-11-19 01:34:30 +0100 <turco32> true
2021-11-19 01:34:35 +0100 <dsal> turco32: There are a few ways to do it. I just use some old haskell-mode stuff and it'll open a ghci buffer and do all the things.
2021-11-19 01:34:54 +0100 <turco32> oh really?
2021-11-19 01:34:58 +0100 <turco32> that's neat
2021-11-19 01:35:11 +0100 <dsal> I think the cool kids do HLS these days, but I've never made that work.
2021-11-19 01:35:56 +0100 <dsal> oats: Yeah, it may not matter. But it's not harder to use Text and it's got a couple extras that make some things easier. Some things are harder. All depends.
2021-11-19 01:36:22 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3)
2021-11-19 01:36:26 +0100 <oats> turco32, I'm a fan of ghci in emacs
2021-11-19 01:36:37 +0100oatsuses lsp-mode, haskell-mode, and haskell-interactive-mode
2021-11-19 01:36:53 +0100 <turco32> id like to find a package that does that
2021-11-19 01:37:48 +0100 <justsomeguy> spaceemacs and ghcup get you close
2021-11-19 01:38:11 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 264 seconds)
2021-11-19 01:38:22 +0100 <justsomeguy> Although spaceemacs is pretty huge, and I don't think I'll ever understand how it works.
2021-11-19 01:39:38 +0100 <monochrom> Nothing wrong with low tech KISS.
2021-11-19 01:39:39 +0100 <sm> turco, the two easy ide setups are emacs + ghcid, and vs code + haskell extension
2021-11-19 01:40:03 +0100 <sm> so of course I combine them. vs code + haskell extension with terminal pane running emacs running ghcid for when hls fails
2021-11-19 01:41:04 +0100smhas been playing this most excellent jasper van der jeugt joint discovered via HF podcast: https://www.jaspervdj.be/beeraffe/
2021-11-19 01:41:22 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-11-19 01:41:52 +0100 <sm> hello myShoggoth
2021-11-19 01:45:25 +0100 <dsal> I've never used ghcid, either. Most of these things seem hard to manage more than one project with.
2021-11-19 01:45:36 +0100 <dsal> I hardly ever have just one project open.
2021-11-19 01:46:32 +0100 <sm> dsal: you're often hacking on multiple projects simultaneously ?
2021-11-19 01:46:51 +0100 <sm> like, as part of a single superproject ?
2021-11-19 01:46:56 +0100 <dsal> Sometimes, yeah.
2021-11-19 01:47:08 +0100 <dsal> Other times, it's like, I thought of a thing, and I want to do that thing across a bunch of different projects.
2021-11-19 01:47:56 +0100 <sm> hls is too heavy to keep a lot of instances running. Even ghcid is, sometimes
2021-11-19 01:48:20 +0100 <sm> vs code could easily shut down the one not currently focussed, though
2021-11-19 01:48:30 +0100favonia(~favonia@user/favonia)
2021-11-19 01:48:44 +0100 <dsal> I can't remember what was confusing in vscode.
2021-11-19 01:49:01 +0100 <dsal> It doesn't help that I have this weird eggshell env. It's like, stack + nix + macos.
2021-11-19 01:49:05 +0100 <dsal> + multiple projects.
2021-11-19 01:50:24 +0100 <dsal> vs code was a pretty big improvement for doing TLA+, though. Except the part where it uses entirely different LaTeX templates or something and doesn't bother shading comments.
2021-11-19 01:57:42 +0100abrantesasf(~abrantesa@187.36.170.211) (Remote host closed the connection)
2021-11-19 01:59:44 +0100justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3)
2021-11-19 02:00:01 +0100pfurla(~pfurla@2804:14d:5c81:4104:6091:9a2c:b661:21c7) (Quit: gone to sleep. ZZZzzz…)
2021-11-19 02:04:30 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2021-11-19 02:04:34 +0100dsrt^(~dsrt@68.101.63.101)
2021-11-19 02:06:37 +0100ystael(~ystael@user/ystael)
2021-11-19 02:07:29 +0100 <myShoggoth> sm: hi!
2021-11-19 02:09:35 +0100 <sm> myShoggoth: hope you work goes well. I'm loving the haskell interlude podcast, just to say
2021-11-19 02:11:20 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-11-19 02:12:35 +0100alx741(~alx741@181.196.69.19) (Ping timeout: 268 seconds)
2021-11-19 02:13:46 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-19 02:14:12 +0100Topsi(~Tobias@dyndsl-091-249-083-165.ewe-ip-backbone.de)
2021-11-19 02:17:27 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-11-19 02:18:03 +0100nvmd(~nvmd@user/nvmd) (Quit: Later, nerds.)
2021-11-19 02:20:51 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-19 02:20:51 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-19 02:20:51 +0100wroathe(~wroathe@user/wroathe)
2021-11-19 02:23:00 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2021-11-19 02:25:16 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2021-11-19 02:26:25 +0100alx741(~alx741@186.178.109.242)
2021-11-19 02:27:23 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 264 seconds)
2021-11-19 02:34:19 +0100pfurla(~pfurla@2804:14d:5c81:4104:6091:9a2c:b661:21c7)
2021-11-19 02:35:26 +0100pfurla(~pfurla@2804:14d:5c81:4104:6091:9a2c:b661:21c7) (Client Quit)
2021-11-19 02:45:27 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection)
2021-11-19 02:46:47 +0100zaquest(~notzaques@5.130.79.72) (Quit: Leaving)
2021-11-19 02:47:37 +0100pfurla(~pfurla@2804:14d:5c81:4104:6091:9a2c:b661:21c7)
2021-11-19 02:47:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-11-19 02:48:45 +0100lbseale(~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer)
2021-11-19 02:51:20 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-19 02:52:06 +0100neurocyte0132889(~neurocyte@user/neurocyte) (Ping timeout: 265 seconds)
2021-11-19 02:53:13 +0100machinedgod(~machinedg@24.105.81.50)
2021-11-19 02:55:52 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-19 02:59:23 +0100mjrosenb(~mjrosenb@pool-108-54-97-96.nycmny.fios.verizon.net) (Remote host closed the connection)
2021-11-19 03:00:18 +0100lavaman(~lavaman@98.38.249.169)
2021-11-19 03:01:11 +0100waleee(~waleee@h-82-196-111-63.NA.cust.bahnhof.se) (Quit: WeeChat 3.3)
2021-11-19 03:13:22 +0100pfurla(~pfurla@2804:14d:5c81:4104:6091:9a2c:b661:21c7) (Quit: gone to sleep. ZZZzzz…)
2021-11-19 03:15:32 +0100retro_(~retro@97e2ba2e.skybroadband.com) (Read error: Connection reset by peer)
2021-11-19 03:16:22 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 260 seconds)
2021-11-19 03:18:52 +0100chronon(~chronon@user/chronon) (Ping timeout: 260 seconds)
2021-11-19 03:20:17 +0100chronon(~chronon@user/chronon)
2021-11-19 03:22:10 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-11-19 03:22:42 +0100Vajb(~Vajb@85-76-10-43-nat.elisa-mobile.fi)
2021-11-19 03:22:49 +0100JimL(~quassel@89-162-2-132.fiber.signal.no) (Ping timeout: 250 seconds)
2021-11-19 03:24:34 +0100JimL(~quassel@89-162-2-132.fiber.signal.no)
2021-11-19 03:24:35 +0100Vajb(~Vajb@85-76-10-43-nat.elisa-mobile.fi) (Read error: Connection reset by peer)
2021-11-19 03:24:40 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-11-19 03:25:28 +0100 <myShoggoth> sm: thank you!
2021-11-19 03:25:36 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-11-19 03:25:51 +0100 <myShoggoth> sm: The Haskell Interlude team is doing a fantastic job
2021-11-19 03:27:35 +0100 <sm> 👍️ excellent guests
2021-11-19 03:46:19 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 268 seconds)
2021-11-19 03:46:37 +0100pfurla(~pfurla@2804:14d:5c81:4104:6091:9a2c:b661:21c7)
2021-11-19 03:47:47 +0100xff0x(~xff0x@2001:1a81:53b1:4500:9213:f6eb:82ba:af29) (Ping timeout: 264 seconds)
2021-11-19 03:49:17 +0100xff0x(~xff0x@2001:1a81:53ef:fb00:5000:2c7a:ffb3:dbe2)
2021-11-19 03:50:21 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-19 03:50:21 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-19 03:50:21 +0100wroathe(~wroathe@user/wroathe)
2021-11-19 03:57:14 +0100alx741(~alx741@186.178.109.242) (Quit: alx741)
2021-11-19 04:01:02 +0100mimmy(~mimmy@2607:fea8:6e0:7f90:c01b:60fe:9558:2d95) (Ping timeout: 240 seconds)
2021-11-19 04:03:32 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2021-11-19 04:03:37 +0100pfurla(~pfurla@2804:14d:5c81:4104:6091:9a2c:b661:21c7) (Quit: gone to sleep. ZZZzzz…)
2021-11-19 04:03:52 +0100NeuromancerNrmncr
2021-11-19 04:04:21 +0100mimmy(~mimmy@2607:fea8:6e0:7f90:9965:319a:ef17:fff9)
2021-11-19 04:04:30 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-19 04:07:32 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-11-19 04:07:53 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-11-19 04:08:23 +0100zaquest(~notzaques@5.130.79.72)
2021-11-19 04:10:59 +0100favonia(~favonia@user/favonia) (Ping timeout: 268 seconds)
2021-11-19 04:16:32 +0100mimmy(~mimmy@2607:fea8:6e0:7f90:9965:319a:ef17:fff9) (Ping timeout: 240 seconds)
2021-11-19 04:17:33 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-11-19 04:18:03 +0100mimmy(~mimmy@2607:fea8:6e0:7f90:c9c2:f9da:e6bb:5682)
2021-11-19 04:27:33 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2021-11-19 04:27:33 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-11-19 04:27:33 +0100finn_elijaFinnElija
2021-11-19 04:29:45 +0100 <Axman6> There's a new haskell podcast? :o
2021-11-19 04:36:10 +0100dsrt^(~dsrt@68.101.63.101) (Ping timeout: 256 seconds)
2021-11-19 04:36:58 +0100mbuf(~Shakthi@122.174.57.32)
2021-11-19 04:37:27 +0100whatsupdoc(uid509081@hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-19 04:41:49 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 268 seconds)
2021-11-19 04:44:13 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-19 04:48:37 +0100vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2021-11-19 04:48:43 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-11-19 04:53:49 +0100td_(~td@muedsl-82-207-238-143.citykom.de) (Ping timeout: 250 seconds)
2021-11-19 04:55:45 +0100td_(~td@muedsl-82-207-238-169.citykom.de)
2021-11-19 04:57:00 +0100mimmy_(~mimmy@2607:fea8:6e0:7f90:f54f:22a2:7c84:1461)
2021-11-19 04:57:52 +0100aman(~aman@user/aman)
2021-11-19 04:59:42 +0100mimmy(~mimmy@2607:fea8:6e0:7f90:c9c2:f9da:e6bb:5682) (Ping timeout: 268 seconds)
2021-11-19 05:01:02 +0100Topsi(~Tobias@dyndsl-091-249-083-165.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2021-11-19 05:07:09 +0100mimmy(~mimmy@2607:fea8:6e0:7f90:9d18:4862:d949:6f72)
2021-11-19 05:08:26 +0100iamanewb(~iamanewb@98.45.192.30)
2021-11-19 05:09:02 +0100mimmy_(~mimmy@2607:fea8:6e0:7f90:f54f:22a2:7c84:1461) (Ping timeout: 240 seconds)
2021-11-19 05:11:10 +0100Guest63(~Guest63@130.253.27.11)
2021-11-19 05:15:44 +0100rtsn(~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se) (Ping timeout: 268 seconds)
2021-11-19 05:15:54 +0100rtsn(~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se)
2021-11-19 05:16:07 +0100mimmy_(~mimmy@2607:fea8:6e0:7f90:2da1:529b:e827:2fbb)
2021-11-19 05:17:32 +0100mimmy(~mimmy@2607:fea8:6e0:7f90:9d18:4862:d949:6f72) (Ping timeout: 240 seconds)
2021-11-19 05:18:40 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-11-19 05:19:09 +0100vysn(~vysn@user/vysn)
2021-11-19 05:21:45 +0100whatsupdoc(uid509081@hampstead.irccloud.com)
2021-11-19 05:22:38 +0100 <Guest63> https://paste.tomsmeding.com/1SZMvVLB
2021-11-19 05:24:00 +0100 <Guest63> I'm having trouble running any command involving "stack build" or "stack test" the error seems to be connected to when I put hspec in my dependencies on the package.yaml file
2021-11-19 05:26:01 +0100 <Guest63> I have another project that uses hspec and works, but when I use it in this project it doesn't work
2021-11-19 05:26:57 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-11-19 05:27:35 +0100 <dsal> Guest63: Sounds like an older stack snapshot?
2021-11-19 05:28:28 +0100 <Guest63> How do I refresh my stack snapshot?
2021-11-19 05:28:37 +0100 <dsal> you edit stack.yaml
2021-11-19 05:31:33 +0100 <Guest63> https://paste.tomsmeding.com/nhcYFpfN
2021-11-19 05:31:46 +0100 <Guest63> What should I edit in stack.yaml?
2021-11-19 05:32:47 +0100mimmy(~mimmy@2607:fea8:6e0:7f90:45bd:2d1d:42f2:f442)
2021-11-19 05:32:48 +0100 <sm> Axman6: I was talking about https://haskell.foundation/podcast/
2021-11-19 05:34:08 +0100 <sm> Guest63: replace lines 20-21 with `resolver: lts-18.17`, eg
2021-11-19 05:34:28 +0100 <sm> and get rid of all those confusing comments
2021-11-19 05:34:38 +0100aman(~aman@user/aman) (Quit: aman)
2021-11-19 05:36:05 +0100mimmy_(~mimmy@2607:fea8:6e0:7f90:2da1:529b:e827:2fbb) (Ping timeout: 268 seconds)
2021-11-19 05:37:47 +0100iamanewb(~iamanewb@98.45.192.30) (Quit: Client closed)
2021-11-19 05:38:16 +0100 <sm> Guest63: your error looks like this packaging bug with mintty: https://github.com/RyanGlScott/mintty/issues/4
2021-11-19 05:42:44 +0100 <sm> so you're not alone. The easy solution seems to be wait a little bit for lts-18.18
2021-11-19 05:47:31 +0100monochrom(trebla@216.138.220.146) (Quit: NO CARRIER)
2021-11-19 05:49:39 +0100xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2021-11-19 05:51:10 +0100puke(~puke@user/puke) (Quit: puke)
2021-11-19 05:51:27 +0100slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-11-19 05:52:36 +0100pfurla(~pfurla@2804:14d:5c81:4104:6091:9a2c:b661:21c7)
2021-11-19 05:54:08 +0100 <Guest63> sm thank you so much, I had to change that 17 in the URL to a 15
2021-11-19 05:54:20 +0100hiruji(~hiruji@user/hiruji) (Read error: Connection reset by peer)
2021-11-19 05:54:32 +0100 <sm> great
2021-11-19 05:55:21 +0100pfurla(~pfurla@2804:14d:5c81:4104:6091:9a2c:b661:21c7) (Client Quit)
2021-11-19 05:57:09 +0100 <dsal> The URL form is weird and busted.
2021-11-19 05:57:19 +0100 <dsal> But if it works, then go for it. heh
2021-11-19 05:57:52 +0100 <Guest63> its autogenerated either way haha
2021-11-19 05:59:42 +0100 <dsal> Yeah, at some point stack started generating that way and it only worked with some tooling.
2021-11-19 06:00:06 +0100 <dsal> Just using the string `lts-18.15` works in all the places.
2021-11-19 06:00:26 +0100deadmarshal(~deadmarsh@95.38.116.147)
2021-11-19 06:01:06 +0100mimmy(~mimmy@2607:fea8:6e0:7f90:45bd:2d1d:42f2:f442) (Quit: WeeChat 3.3)
2021-11-19 06:01:13 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-11-19 06:01:26 +0100pfurla(~pfurla@2804:14d:5c81:4104:6091:9a2c:b661:21c7)
2021-11-19 06:01:33 +0100 <sm> love them snapshots
2021-11-19 06:06:04 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-11-19 06:07:12 +0100 <dsal> I was kind of hoping the most recent one would up that network package.
2021-11-19 06:13:16 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2021-11-19 06:19:02 +0100johnw(~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0) (Ping timeout: 240 seconds)
2021-11-19 06:23:47 +0100JimL(~quassel@89-162-2-132.fiber.signal.no) (Ping timeout: 264 seconds)
2021-11-19 06:26:25 +0100hiruji(~hiruji@user/hiruji)
2021-11-19 06:26:40 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 06:26:58 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 06:27:18 +0100JimL(~quassel@89-162-2-132.fiber.signal.no)
2021-11-19 06:34:41 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 06:40:19 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 06:41:42 +0100azimut_(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2021-11-19 06:42:16 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 06:42:19 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2021-11-19 06:45:19 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 06:48:44 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 06:52:04 +0100bliminse(~bliminse@host86-188-36-178.range86-188.btcentralplus.com) (Quit: leaving)
2021-11-19 06:54:04 +0100euouae(~euouae@user/euouae)
2021-11-19 06:54:19 +0100 <euouae> Hello how can I apply `f` to `(a,b)`, i.e. transform into `f a b`?
2021-11-19 06:54:36 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 06:55:11 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2021-11-19 06:56:08 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2021-11-19 06:56:10 +0100mei(~mei@user/mei)
2021-11-19 06:56:18 +0100zebrag(~chris@user/zebrag) (Read error: Connection reset by peer)
2021-11-19 06:56:18 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 06:56:35 +0100 <euouae> Ah it's `uncurry`
2021-11-19 06:59:13 +0100lavaman(~lavaman@98.38.249.169)
2021-11-19 06:59:35 +0100 <EvanR> :t uncurry
2021-11-19 06:59:36 +0100 <lambdabot> (a -> b -> c) -> (a, b) -> c
2021-11-19 06:59:41 +0100 <dsal> I'm trying to read some math that's foreign to me. I can sort of work it out, but can someone tell me how to read: g ∈ B → A||B
2021-11-19 07:00:09 +0100 <euouae> I think that means g is a proof of B -> A || B
2021-11-19 07:00:30 +0100 <EvanR> hexchat shows the thing between g and B as four zeros in a square : (
2021-11-19 07:01:04 +0100 <euouae> EvanR it's TeX \in or `belongs to`
2021-11-19 07:01:37 +0100 <EvanR> ∈?
2021-11-19 07:01:50 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-19 07:01:51 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 07:02:28 +0100 <EvanR> probably the link to whatever dsal is reading is more helpful xD
2021-11-19 07:02:42 +0100 <dsal> It's in https://maartenfokkinga.github.io/utwente/mmf91m.pdf sorry
2021-11-19 07:02:55 +0100 <EvanR> oh that one
2021-11-19 07:02:56 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
2021-11-19 07:03:03 +0100 <dsal> g \in B \rightarrow A||B
2021-11-19 07:03:10 +0100bliminse(~bliminse@host86-188-36-178.range86-188.btcentralplus.com)
2021-11-19 07:03:16 +0100 <euouae> there's always €
2021-11-19 07:03:29 +0100 <dsal> haha
2021-11-19 07:03:51 +0100 <dsal> I can work a lot of these out backwards because I know the end results, but the function notation with the || seems weird to me.
2021-11-19 07:03:51 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 07:05:05 +0100 <euouae> dsal, in that paper it looks like the authors don't care about defining things. It's probably because they think their results are good enough, so what you typically have to do is read the references for definitions
2021-11-19 07:05:52 +0100 <EvanR> so A||B is the product type
2021-11-19 07:06:03 +0100 <EvanR> and elsewhere, it's just a pairing
2021-11-19 07:06:30 +0100 <dsal> oooh. that makes sense here, thanks.
2021-11-19 07:06:44 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-11-19 07:06:49 +0100 <dsal> My brain was telling me the || was like, super dividing these two things.
2021-11-19 07:06:57 +0100 <EvanR> confusion over product or pairing exists in normal notation (A,B) vs (x,y)
2021-11-19 07:07:06 +0100 <EvanR> now we have extra confusion xD
2021-11-19 07:08:16 +0100 <EvanR> page 6 does seem to define ||
2021-11-19 07:08:53 +0100Guest63(~Guest63@130.253.27.11) (Quit: Client closed)
2021-11-19 07:09:02 +0100 <EvanR> apparently it's a (bi)functor
2021-11-19 07:09:07 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 07:09:44 +0100 <euouae> oh yeah. not that I would know what those are :D
2021-11-19 07:10:13 +0100 <dsal> Oh. I was supposed to get to page 6 before understanding stuff?
2021-11-19 07:10:22 +0100 <dsal> I don't read a lot of math papers.
2021-11-19 07:10:35 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 264 seconds)
2021-11-19 07:10:42 +0100 <EvanR> always read the first page and the last page first xD
2021-11-19 07:11:13 +0100 <euouae> dsal, it varies from paper to paper. This paper is in the style of addressing other experts
2021-11-19 07:11:33 +0100 <dsal> I'm not an expert. :)
2021-11-19 07:11:46 +0100 <euouae> me neither and hence our confusions
2021-11-19 07:11:46 +0100 <EvanR> the pages are to be understood lazily... on demand
2021-11-19 07:11:49 +0100 <dsal> But it's pretty interesting once I work out the notation.
2021-11-19 07:12:23 +0100 <EvanR> each page is like an unevaluated thunk, and may required forcing other pages xD
2021-11-19 07:12:28 +0100 <dsal> The annoying part is I know kind of what they're talking about, so I'm actually working out the whole thing backwards. I'm basically figuring out this notation from understanding what they're trying to describe with it.
2021-11-19 07:12:48 +0100 <euouae> I have a function `f n` that produces a list of `n` elements with the property that `f (n + 1)` contains `f n`. How can I optimize for this?
2021-11-19 07:12:59 +0100 <euouae> e.g. f n = [1..n]
2021-11-19 07:13:04 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-19 07:13:04 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 07:13:04 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-19 07:13:04 +0100wroathe(~wroathe@user/wroathe)
2021-11-19 07:13:26 +0100 <EvanR> you could memoize f n
2021-11-19 07:13:31 +0100 <euouae> dsal, it's fine to e-mail the authors and ask them questions too
2021-11-19 07:13:48 +0100 <EvanR> memocombinators
2021-11-19 07:13:53 +0100 <euouae> Got it, thank you
2021-11-19 07:13:54 +0100deadmarshal(~deadmarsh@95.38.116.147) (Ping timeout: 260 seconds)
2021-11-19 07:14:07 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 07:14:23 +0100 <dsal> I've spoken to one of the authors before. I should've known this question was going to come up...
2021-11-19 07:14:50 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-19 07:15:22 +0100 <dsal> I don't understand why \in is used the way it is here. I guess = isn't any more obviously a good idea.
2021-11-19 07:15:50 +0100 <EvanR> in older papers I've seen \in used in place of : (has type)
2021-11-19 07:16:11 +0100 <EvanR> if the right side is a type, then that's probably what it is
2021-11-19 07:16:52 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 07:17:07 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-11-19 07:17:31 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-11-19 07:17:35 +0100 <EvanR> g \in B → A||B would then be g :: B -> (A,B) (haskell notation)
2021-11-19 07:17:47 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 264 seconds)
2021-11-19 07:19:11 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-11-19 07:19:33 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-11-19 07:20:06 +0100 <dsal> Yeah, I kind of read that more like "is" than "in" or "element of" or whatever.
2021-11-19 07:22:26 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 07:22:37 +0100 <dsal> This barbed wire thing, though… The best part of being a mathematician seems to be making fancy notation you can show off.
2021-11-19 07:23:06 +0100chomwitt(~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374)
2021-11-19 07:24:02 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 07:24:17 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-11-19 07:24:53 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-11-19 07:26:10 +0100chomwitt(~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374) (Remote host closed the connection)
2021-11-19 07:27:22 +0100 <EvanR> "is" vs "is a" xD
2021-11-19 07:27:54 +0100slice(~slice@user/slice)
2021-11-19 07:28:03 +0100 <dsal> ooh, that might help.
2021-11-19 07:28:27 +0100 <dsal> These πs with accents are a little too much.
2021-11-19 07:28:43 +0100 <EvanR> are they projectors out of a product
2021-11-19 07:29:25 +0100 <dsal> To close the loop, this paper also defines uncurry
2021-11-19 07:29:40 +0100 <euouae> yay :D
2021-11-19 07:29:42 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 07:29:47 +0100 <dsal> You'd never have asked that question if you just read this paper first.
2021-11-19 07:30:18 +0100 <EvanR> seems yes. modern notation you'd say pi subscript 1 and pi subscript 2
2021-11-19 07:30:40 +0100 <EvanR> rather that forward and backward accent mark...
2021-11-19 07:30:51 +0100 <EvanR> who was the editor lol
2021-11-19 07:31:36 +0100 <dsal> I don't know how I've managed to not read this before. it's pretty good.
2021-11-19 07:32:14 +0100 <EvanR> all I really can recall is that banana is basically fmap, liftA2, liftA3 etc
2021-11-19 07:32:15 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-19 07:32:33 +0100 <euouae> EvanR: it's a draft not published I think
2021-11-19 07:33:02 +0100 <EvanR> banana's barbed wire paper was not published?
2021-11-19 07:33:23 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 07:34:08 +0100chomwitt(~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374)
2021-11-19 07:34:10 +0100Lycurgus(~juan@98.4.112.204)
2021-11-19 07:34:41 +0100 <euouae> the pdf linked on github is a draft so there's no editor for it
2021-11-19 07:35:27 +0100 <Lycurgus> in contrast to the default semantics of "draft"
2021-11-19 07:36:28 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-19 07:36:40 +0100 <dsal> Oh hey, someone translated it to Haskell: http://blog.ezyang.com/2010/05/bananas-lenses-envelopes-and-barbed-wire-a-translation-guide/
2021-11-19 07:37:22 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-19 07:37:56 +0100 <EvanR> well the publishing industry sucks anyway
2021-11-19 07:38:13 +0100 <EvanR> who needs em
2021-11-19 07:38:59 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 07:40:22 +0100 <euouae> EvanR, no we should have papers from 1970 talking aboug black holes behind paywalls, that's better for society
2021-11-19 07:40:45 +0100 <euouae> just in case anyone comes up with an idea without paying first, you know?
2021-11-19 07:40:46 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 07:42:22 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2021-11-19 07:42:27 +0100 <EvanR> details of a black hole hidden behind a wall seems ironically apropos
2021-11-19 07:44:21 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 268 seconds)
2021-11-19 07:45:55 +0100 <Lycurgus> https://maartenfokkinga.github.io/utwente/mmf91m.pdf is the "draft"?
2021-11-19 07:46:16 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 07:46:24 +0100 <euouae> touche. I was talking about Hawking's 1975 article "particle creation by black holes"
2021-11-19 07:46:44 +0100 <euouae> Lycurgus yeah that's the one I meatn
2021-11-19 07:47:26 +0100 <Lycurgus> ah, so in this case the actual semantics of "30 yo" overrides "draft" as far as mutability
2021-11-19 07:47:54 +0100 <euouae> I don't understand you, but I think you're saying it's not a draft?
2021-11-19 07:48:48 +0100 <Lycurgus> no, although I didn see that term in it, I mean a 30 yo thing can't be a draft in the sense of
2021-11-19 07:49:06 +0100 <Lycurgus> something is likely going to have more drafts before pub
2021-11-19 07:49:11 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-19 07:49:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-11-19 07:49:41 +0100 <euouae> this is not important
2021-11-19 07:50:07 +0100 <Lycurgus> no
2021-11-19 07:50:16 +0100 <euouae> I have a function f :: Int -> Int and a list [Int] and I'd like to group by f-value. e.g. if f 1 = 1, f 2 = 1 and f 3 = 2, then I'd like to have [[1, 2], [3]]. How can I do this?
2021-11-19 07:50:29 +0100deadmarshal(~deadmarsh@95.38.116.147)
2021-11-19 07:50:29 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 07:50:42 +0100 <euouae> Lycurgus although if this is a typed/scanned version of an old published paper then yeah I stand corrected, and there's probably an editor...
2021-11-19 07:51:14 +0100 <Lycurgus> well it's a dvi
2021-11-19 07:51:36 +0100 <Lycurgus> the tex could be lost
2021-11-19 07:52:08 +0100 <euouae> I think I can zip, and then groupBy
2021-11-19 07:53:20 +0100 <Lycurgus> i'm unclear what the function is from example list
2021-11-19 07:53:42 +0100 <euouae> any function
2021-11-19 07:53:50 +0100 <euouae> I'm trying to group by f x == f y
2021-11-19 07:54:23 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
2021-11-19 07:56:35 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 08:00:29 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-11-19 08:04:14 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 08:06:54 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-19 08:09:56 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 08:15:15 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Quit: WeeChat 3.3)
2021-11-19 08:15:37 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-19 08:16:25 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2021-11-19 08:17:25 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-19 08:17:25 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 08:17:34 +0100 <tomsmeding> euouae: groupBy ((==) `on` f) ?
2021-11-19 08:17:51 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:6cf6:5d02:5f47:daaa)
2021-11-19 08:17:53 +0100 <tomsmeding> might need to sortBy (comparing f) beforehand
2021-11-19 08:18:33 +0100 <euouae> I had an issue with groupBy only taking sequential values, I rewrote it as https://paste.tomsmeding.com/5d6v3Bga
2021-11-19 08:18:59 +0100 <euouae> Good point though, I think involving a `sort` is a more efficient way to do
2021-11-19 08:20:37 +0100 <tomsmeding> euouae: right, your method has quadratic complexity, while sorting has n log n ("linearithmic") complexity
2021-11-19 08:22:16 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-19 08:22:26 +0100Lycurgus(~juan@98.4.112.204) (Quit: Exeunt)
2021-11-19 08:22:49 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-19 08:23:10 +0100max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr)
2021-11-19 08:23:17 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 08:26:42 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-11-19 08:27:02 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-19 08:28:35 +0100deadmarshal(~deadmarsh@95.38.116.147) (Ping timeout: 264 seconds)
2021-11-19 08:28:37 +0100 <euouae> linearithimic eh? :P
2021-11-19 08:28:56 +0100deadmarshal(~deadmarsh@95.38.116.147)
2021-11-19 08:31:12 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 08:35:00 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-11-19 08:36:38 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 08:37:14 +0100Guest99(~Guest99@pool-100-8-45-127.nwrknj.fios.verizon.net)
2021-11-19 08:37:20 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2021-11-19 08:39:35 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk)
2021-11-19 08:41:12 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-11-19 08:41:12 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 08:42:40 +0100gg(~gg@2a01:e0a:819:1510:8568:3ca4:33bc:8c5b)
2021-11-19 08:43:58 +0100jonathanx_(~jonathan@dyn-8-sc.cdg.chalmers.se) (Ping timeout: 265 seconds)
2021-11-19 08:44:47 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
2021-11-19 08:46:57 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 08:48:37 +0100euouae(~euouae@user/euouae) (Quit: )
2021-11-19 08:48:49 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 08:49:53 +0100vicfred(~vicfred@user/vicfred)
2021-11-19 08:51:57 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 08:53:41 +0100shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-11-19 08:53:41 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 08:54:02 +0100 <tomsmeding> s/imic/mic/ ;)
2021-11-19 08:56:13 +0100xmx(~xmx@2409:4071:e00:80b9:b273:3649:b25e:dd93)
2021-11-19 08:57:14 +0100 <xmx> Hello
2021-11-19 08:59:13 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 08:59:38 +0100 <xmx> Guys can anyone tell me what it takes to understand Servant Library ? I have learned the some amount of Haskell but when I see Servant library source code nothing makes sense.
2021-11-19 08:59:53 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-11-19 09:01:50 +0100 <sm> xmx, I'd be starting with servant's docs, it couldn't hurt eh
2021-11-19 09:01:52 +0100 <[exa]> xmx: by "servant library" you mean the internal code or how to use it?
2021-11-19 09:02:08 +0100jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2021-11-19 09:02:32 +0100Guest99(~Guest99@pool-100-8-45-127.nwrknj.fios.verizon.net) (Ping timeout: 256 seconds)
2021-11-19 09:03:38 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 09:04:17 +0100 <xmx> [exa]: Internal concepts used.
2021-11-19 09:08:45 +0100ubert(~Thunderbi@p200300ecdf0ba29adda7833ccd9cfa98.dip0.t-ipconnect.de)
2021-11-19 09:09:16 +0100 <[exa]> are you familiar with any kind of type-level programming and preferably DataKinds?
2021-11-19 09:09:32 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 09:11:17 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 09:12:20 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-11-19 09:15:29 +0100 <idnar> @hoogle merge
2021-11-19 09:15:29 +0100 <lambdabot> Data.IntMap.Internal merge :: SimpleWhenMissing a c -> SimpleWhenMissing b c -> SimpleWhenMatched a b c -> IntMap a -> IntMap b -> IntMap c
2021-11-19 09:15:29 +0100 <lambdabot> Data.IntMap.Merge.Lazy merge :: SimpleWhenMissing a c -> SimpleWhenMissing b c -> SimpleWhenMatched a b c -> IntMap a -> IntMap b -> IntMap c
2021-11-19 09:15:29 +0100 <lambdabot> Data.IntMap.Merge.Strict merge :: SimpleWhenMissing a c -> SimpleWhenMissing b c -> SimpleWhenMatched a b c -> IntMap a -> IntMap b -> IntMap c
2021-11-19 09:15:33 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-19 09:16:47 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 09:17:22 +0100michalz(~michalz@185.246.204.119)
2021-11-19 09:18:22 +0100gehmehgeh(~user@user/gehmehgeh)
2021-11-19 09:18:45 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 09:20:16 +0100vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2021-11-19 09:21:02 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-19 09:21:47 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 09:22:10 +0100cfricke(~cfricke@user/cfricke)
2021-11-19 09:23:56 +0100juhp(~juhp@128.106.188.82)
2021-11-19 09:25:00 +0100timCF(~timCF@200-149-20-81.sta.estpak.ee)
2021-11-19 09:25:35 +0100pfurla(~pfurla@2804:14d:5c81:4104:6091:9a2c:b661:21c7) (Quit: gone to sleep. ZZZzzz…)
2021-11-19 09:27:28 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:f4b8:2aef:8963:2af8) (Remote host closed the connection)
2021-11-19 09:29:43 +0100slice(~slice@user/slice) (Quit: zzz)
2021-11-19 09:30:24 +0100nschoe(~quassel@2a01:e0a:8e:a190:ecb9:277f:4a2a:1a1f)
2021-11-19 09:31:20 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 09:33:23 +0100mvk(~mvk@2607:fea8:5cc3:e900::df92) (Ping timeout: 264 seconds)
2021-11-19 09:34:44 +0100pfurla(~pfurla@2804:14d:5c81:4104:6091:9a2c:b661:21c7)
2021-11-19 09:37:10 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 09:37:58 +0100nschoe(~quassel@2a01:e0a:8e:a190:ecb9:277f:4a2a:1a1f) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2021-11-19 09:38:59 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 09:42:36 +0100aegon(~mike@174.127.249.180) (Remote host closed the connection)
2021-11-19 09:44:27 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 09:45:54 +0100mc47(~mc47@xmonad/TheMC47)
2021-11-19 09:46:07 +0100jess(~jess@libera/staff/jess) (Quit: Lost terminal)
2021-11-19 09:46:16 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 09:46:50 +0100jess(~jess@libera/staff/jess)
2021-11-19 09:50:11 +0100deadmarshal(~deadmarsh@95.38.116.147) (Ping timeout: 264 seconds)
2021-11-19 09:51:42 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 09:53:27 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 09:55:16 +0100deadmarshal(~deadmarsh@95.38.116.147)
2021-11-19 09:58:57 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 10:02:27 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 10:04:44 +0100wei2912(~wei2912@138.75.71.147)
2021-11-19 10:04:58 +0100acidjnk(~acidjnk@p200300d0c7271e04495a3d38c01005cf.dip0.t-ipconnect.de)
2021-11-19 10:06:13 +0100gustik(~gustik@2a01:c844:240a:de20:3606:7339:bc88:b5f5) (Quit: Leaving)
2021-11-19 10:06:42 +0100wei2912(~wei2912@138.75.71.147) (Client Quit)
2021-11-19 10:07:03 +0100CiaoSen(~Jura@p200300c95716ce002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-11-19 10:07:31 +0100Midjak(~Midjak@82-65-111-221.subs.proxad.net)
2021-11-19 10:08:14 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 10:09:01 +0100favonia(~favonia@user/favonia)
2021-11-19 10:17:33 +0100allbery_b(~geekosaur@xmonad/geekosaur)
2021-11-19 10:17:33 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-11-19 10:17:36 +0100allbery_bgeekosaur
2021-11-19 10:19:22 +0100 <perrierjouet> hi all
2021-11-19 10:19:34 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-11-19 10:19:48 +0100 <perrierjouet> stack install moe gave me this error http://ix.io/3FqG
2021-11-19 10:19:50 +0100phma(phma@2001:5b0:2172:a9b8:34c1:76b3:d477:41fd) (Read error: Connection reset by peer)
2021-11-19 10:20:38 +0100 <perrierjouet> I did add this line - gray-code-0.3.1@sha256:2c8a4ed9c9ee37320305610604d6d93504e0813d7c9768949af418b53043185a,2388 in /www/.stack/global-project/stack.yaml it did not work
2021-11-19 10:20:46 +0100phma(~phma@host-67-44-208-215.hnremote.net)
2021-11-19 10:21:01 +0100xmx(~xmx@2409:4071:e00:80b9:b273:3649:b25e:dd93) (Remote host closed the connection)
2021-11-19 10:21:10 +0100 <perrierjouet> perhaps it should be like gray-code-0.3.1@sha256:2c8a4ed9c9ee37320305610604d6d93504e0813d7c9768949af418b53043185a ?
2021-11-19 10:21:48 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 10:23:09 +0100pfurla(~pfurla@2804:14d:5c81:4104:6091:9a2c:b661:21c7) (Quit: gone to sleep. ZZZzzz…)
2021-11-19 10:26:35 +0100bitmapper(uid464869@lymington.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-19 10:27:30 +0100 <tomsmeding> perrierjouet: the ,2388 suffix is necessary
2021-11-19 10:27:36 +0100 <tomsmeding> where exactly did you add this in the stack.yaml?
2021-11-19 10:27:42 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 10:27:54 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:f4b8:2aef:8963:2af8)
2021-11-19 10:28:50 +0100 <tomsmeding> perhaps post the stack.yaml after your addition?
2021-11-19 10:33:19 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:f4b8:2aef:8963:2af8) (Ping timeout: 268 seconds)
2021-11-19 10:33:23 +0100 <perrierjouet> tomsmeding: http://ix.io/3FqI
2021-11-19 10:33:34 +0100 <perrierjouet> my stack.yaml
2021-11-19 10:33:37 +0100 <tomsmeding> ah, it needs to look like this:
2021-11-19 10:33:39 +0100 <tomsmeding> extra-deps:
2021-11-19 10:33:43 +0100 <tomsmeding> - gray-code-.....
2021-11-19 10:33:47 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-19 10:34:09 +0100 <tomsmeding> (including all the stuff that was already there of course, including the packages thing and the resolver thing
2021-11-19 10:34:10 +0100 <tomsmeding> )
2021-11-19 10:35:31 +0100jinsun__(~quassel@user/jinsun)
2021-11-19 10:36:01 +0100 <perrierjouet> tomsmeding: thanks it worked
2021-11-19 10:36:35 +0100jinsun(~quassel@user/jinsun) (Ping timeout: 250 seconds)
2021-11-19 10:37:59 +0100jinsun(~quassel@user/jinsun)
2021-11-19 10:39:14 +0100jinsun___(~quassel@user/jinsun)
2021-11-19 10:41:57 +0100jinsun__(~quassel@user/jinsun) (Ping timeout: 268 seconds)
2021-11-19 10:42:05 +0100 <Franciman> well, happy to read haskell is quite energy efficient: https://greenlab.di.uminho.pt/wp-content/uploads/2017/10/sleFinal.pdf
2021-11-19 10:42:30 +0100jinsun(~quassel@user/jinsun) (Ping timeout: 260 seconds)
2021-11-19 10:42:44 +0100 <Franciman> but but ocaml features always a 2x save in energy in the tests
2021-11-19 10:42:50 +0100 <Franciman> is it because of laziness?
2021-11-19 10:49:00 +0100DNH(~DNH@2a02:8108:1100:16d8:a055:2897:27b6:f1d6)
2021-11-19 10:50:34 +0100unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Remote host closed the connection)
2021-11-19 10:58:42 +0100jmorris(uid433911@hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-19 11:01:47 +0100dsrt^(~dsrt@68.101.63.101)
2021-11-19 11:09:18 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-11-19 11:12:50 +0100 <hololeap> is this nextStep function an example of where I could use logict instead? http://sprunge.us/3zxdMZ
2021-11-19 11:13:34 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-19 11:14:35 +0100jinsun___(~quassel@user/jinsun) (Read error: Connection reset by peer)
2021-11-19 11:15:03 +0100jinsun(~quassel@user/jinsun)
2021-11-19 11:17:06 +0100vysn(~vysn@user/vysn) (Ping timeout: 268 seconds)
2021-11-19 11:17:06 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 11:18:37 +0100rkrishnan(~user@122.167.19.65)
2021-11-19 11:18:45 +0100 <hololeap> I was just curious what monad could be used to remember the parent value in a tree traversal. state wouldn't work because it would remember the last value traversed, which could be a leaf and not the parent.
2021-11-19 11:18:53 +0100rkrishnan(~user@122.167.19.65) (Remote host closed the connection)
2021-11-19 11:20:08 +0100synthmeat(~synthmeat@user/synthmeat) (Quit: WeeChat 3.3)
2021-11-19 11:21:59 +0100bgamari(~bgamari@70.16.103.161) (Ping timeout: 264 seconds)
2021-11-19 11:22:09 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Read error: Connection reset by peer)
2021-11-19 11:22:46 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 11:23:01 +0100 <[exa]> hololeap: well, Reader + local might just do, if you absolutely want a monad
2021-11-19 11:24:09 +0100 <hololeap> sure, and it isn't necessary, just exploring different ergonomic options
2021-11-19 11:25:18 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-19 11:25:58 +0100 <hololeap> I'm also trying to understand how to use logict a little better by finding little use cases for it
2021-11-19 11:27:32 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-19 11:27:32 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 11:27:58 +0100bgamari(~bgamari@64.223.235.131)
2021-11-19 11:28:24 +0100 <hololeap> Reader + local is something I know about
2021-11-19 11:33:05 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 11:33:37 +0100dyeplexer(~dyeplexer@user/dyeplexer)
2021-11-19 11:38:17 +0100alzgh(~alzgh@user/alzgh)
2021-11-19 11:39:26 +0100 <alzgh> Hello, I have a single haskell file that imports `System.Random`. I want to load it in ghci and test. How can I add `random` package to ghci's environment? I can also do `stack ghci`. Thanks.
2021-11-19 11:39:59 +0100 <[exa]> alzgh: do you have `random` specified in project dependencies?
2021-11-19 11:40:42 +0100 <[exa]> alzgh: also in ghci you can add (already installed) packages to the "search paths" using `:set -package random`
2021-11-19 11:41:07 +0100 <[exa]> (which should be done automagically if you have that in deps)
2021-11-19 11:41:37 +0100 <alzgh> this isn't a project. It's a single file that import `System.Random`.
2021-11-19 11:42:30 +0100 <[exa]> ah okay. you might need to install a "global" random package then, I'm not really sure how that's done with stack
2021-11-19 11:42:52 +0100 <alzgh> just checked with stack ghci and it worked
2021-11-19 11:42:57 +0100 <[exa]> but try the :set, chances are that it either works or gives you an error that's easier to fix :D
2021-11-19 11:43:01 +0100 <[exa]> ah okay nice
2021-11-19 11:43:09 +0100 <alzgh> thanks
2021-11-19 11:43:42 +0100 <[exa]> yw :]
2021-11-19 11:44:03 +0100 <[exa]> hololeap: what's the algorithm supposed to do btw? LogicT is for prolog problems
2021-11-19 11:45:52 +0100 <[exa]> hololeap: also (just curious) you don't support asymmetric branches (such as "left child only") with the datatype there, right?
2021-11-19 11:46:03 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 11:48:19 +0100ubert1(~Thunderbi@p200300ecdf0ba29ae6b318fffe838f33.dip0.t-ipconnect.de)
2021-11-19 11:50:13 +0100slice(~slice@user/slice)
2021-11-19 11:51:31 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 11:52:57 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds)
2021-11-19 11:53:37 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-19 11:53:43 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2021-11-19 11:56:04 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 11:56:44 +0100 <hololeap> it's for this programming challenge where you implement GoL with a binary tree instead of a 2d grid
2021-11-19 11:56:56 +0100Everything(~Everythin@37.115.210.35)
2021-11-19 11:58:10 +0100 <hololeap> and no, it's either a node with two branches or a leaf
2021-11-19 11:59:56 +0100 <hololeap> since each step in the GoL requires knowledge of all neighboring nodes, you have to carry around the state of the parent so you can reference it
2021-11-19 12:00:51 +0100alx741(~alx741@186.178.109.242)
2021-11-19 12:01:49 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 12:02:49 +0100 <[exa]> how's the binary tree organized into 2D? like, H-curve?
2021-11-19 12:02:59 +0100 <[exa]> or is it a 1D cellular automaton?
2021-11-19 12:04:08 +0100puke(~puke@user/puke)
2021-11-19 12:04:27 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-19 12:05:34 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-19 12:06:36 +0100 <hololeap> it just looks at the parent node and the two children, if they exist
2021-11-19 12:07:05 +0100 <hololeap> neighbors that don't exist are considered dead
2021-11-19 12:08:53 +0100 <hololeap> https://www.hackerrank.com/challenges/the-tree-of-life/problem
2021-11-19 12:08:59 +0100deadmarshal(~deadmarsh@95.38.116.147) (Quit: ZNC 1.8.2 - https://znc.in)
2021-11-19 12:09:16 +0100deadmarshal(~deadmarsh@95.38.116.147)
2021-11-19 12:10:04 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-19 12:15:42 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds)
2021-11-19 12:16:54 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2021-11-19 12:17:18 +0100dschrempf(~dominik@62.240.134.78)
2021-11-19 12:19:40 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 12:22:02 +0100CiaoSen(~Jura@p200300c95716ce002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2021-11-19 12:23:32 +0100deadmarshal(~deadmarsh@95.38.116.147) (Ping timeout: 240 seconds)
2021-11-19 12:24:35 +0100 <tomsmeding> alzgh: stack ghci --package random myfile.hs
2021-11-19 12:24:55 +0100 <tomsmeding> this automatically downloads and compiles the package and dependencies if necessary
2021-11-19 12:25:20 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 12:26:37 +0100 <idnar> @hoogle (a -> b) -> Either a a -> b
2021-11-19 12:26:38 +0100 <lambdabot> No results found
2021-11-19 12:27:19 +0100deadmarshal(~deadmarsh@95.38.116.147)
2021-11-19 12:27:20 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-11-19 12:29:21 +0100synthmeat(~synthmeat@user/synthmeat)
2021-11-19 12:29:45 +0100 <dminuoso> % :t bimap id id
2021-11-19 12:29:45 +0100 <yahb> dminuoso: Bifunctor p => p b d -> p b d
2021-11-19 12:30:00 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds)
2021-11-19 12:30:01 +0100 <dminuoso> idnar: Mm, the closest thing is `select`
2021-11-19 12:30:05 +0100 <dminuoso> from selective functors
2021-11-19 12:30:16 +0100 <dminuoso> https://hackage.haskell.org/package/selective-0.4.2/docs/Control-Selective.html#v:select
2021-11-19 12:30:21 +0100gentauro(~gentauro@user/gentauro)
2021-11-19 12:31:13 +0100cosimone(~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3)
2021-11-19 12:31:34 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-11-19 12:34:22 +0100 <idnar> oh actually I have to use my function at different types
2021-11-19 12:44:43 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-11-19 12:47:08 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-11-19 12:47:52 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-19 12:49:00 +0100CiaoSen(~Jura@p200300c95716ce002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-11-19 12:51:37 +0100bobfang(~bobfang@2a01:4b00:87fe:be00:30ce:ab50:b4f4:7d62)
2021-11-19 12:53:06 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-11-19 12:53:11 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-19 12:53:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-19 12:54:16 +0100favonia(~favonia@user/favonia) (Ping timeout: 256 seconds)
2021-11-19 12:55:19 +0100bobfang(~bobfang@2a01:4b00:87fe:be00:30ce:ab50:b4f4:7d62) (Client Quit)
2021-11-19 12:57:00 +0100deadmarshal(~deadmarsh@95.38.116.147) (Ping timeout: 268 seconds)
2021-11-19 12:57:40 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-19 12:59:15 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2021-11-19 13:02:33 +0100dsrt^(~dsrt@68.101.63.101) (Ping timeout: 268 seconds)
2021-11-19 13:04:12 +0100 <hololeap> % import Data.Bifunctor.Join
2021-11-19 13:04:13 +0100 <yahb> hololeap:
2021-11-19 13:04:28 +0100 <hololeap> % :t either id id . runJoin -- idnar
2021-11-19 13:04:28 +0100 <yahb> hololeap: Join Either c -> c
2021-11-19 13:04:33 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-11-19 13:05:13 +0100 <hololeap> % :t \f -> either id id . runJoin . fmap f
2021-11-19 13:05:14 +0100 <yahb> hololeap: (a -> c) -> Join Either a -> c
2021-11-19 13:05:53 +0100 <hololeap> % :t \f -> either id id . runJoin . fmap f . Join -- there we go ;)
2021-11-19 13:05:53 +0100 <yahb> hololeap: (a -> c) -> Either a a -> c
2021-11-19 13:08:20 +0100dminuosoprefers selective
2021-11-19 13:08:54 +0100 <dminuoso> It seems more fitting
2021-11-19 13:09:15 +0100 <dminuoso> in particular with branch
2021-11-19 13:09:20 +0100 <dminuoso> branch :: Selective f => f (Either a b) -> f (a -> c) -> f (b -> c) -> f c
2021-11-19 13:09:37 +0100 <dminuoso> branch x f f
2021-11-19 13:09:45 +0100 <hololeap> fair enough. I just wanted to point out that bifunctors has some hidden goodies
2021-11-19 13:09:59 +0100dsrt^(~dsrt@68.101.63.101)
2021-11-19 13:10:00 +0100 <dminuoso> Who knows, depending on idnar's access pattern, they might even end up doing something like `branch x f g` if they are fmapping before
2021-11-19 13:10:30 +0100 <dminuoso> hololeap: Yeah, Join is a neat thing I havent heard of before
2021-11-19 13:11:06 +0100 <dminuoso> Perhaps selective is not so elegant, since you need to run it through Identity as well
2021-11-19 13:11:14 +0100 <dminuoso> Perhaps points to you after all, hololeap
2021-11-19 13:11:31 +0100 <idnar> mergeBy (comparing (view (choosing _1 _1))) (Left <$> trades) (Right <$> fees)
2021-11-19 13:11:32 +0100n8chan(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2021-11-19 13:12:25 +0100ubert(~Thunderbi@p200300ecdf0ba29adda7833ccd9cfa98.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2021-11-19 13:12:26 +0100ubert1ubert
2021-11-19 13:12:27 +0100n8chan(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-11-19 13:13:13 +0100 <idnar> seems inelegant
2021-11-19 13:13:33 +0100pfurla(~pfurla@2804:14d:5c81:4104:7d84:ffec:9a44:a68d)
2021-11-19 13:13:59 +0100Guest17(~Guest17@wificampus-098247.grenet.fr)
2021-11-19 13:14:12 +0100 <dminuoso> idnar: Heh I have this type of access pattern frequently
2021-11-19 13:14:19 +0100 <dminuoso> It's very unidiomatic and doesnt fit well into optics/lens
2021-11-19 13:14:30 +0100 <dminuoso> What I do is this:
2021-11-19 13:14:40 +0100pfurla(~pfurla@2804:14d:5c81:4104:7d84:ffec:9a44:a68d) (Client Quit)
2021-11-19 13:14:49 +0100 <Guest17> so I was wondering how the the Eq class "works under the hood"
2021-11-19 13:14:57 +0100 <dminuoso> idnar: https://gist.github.com/dminuoso/079df3993f83700eedd188ecb5d92820
2021-11-19 13:15:10 +0100BobFang1992_(~textual@2a01:4b00:87fe:be00:30ce:ab50:b4f4:7d62)
2021-11-19 13:15:21 +0100sunarch(uid526836@user/sunarch) (Quit: Connection closed for inactivity)
2021-11-19 13:15:35 +0100 <dminuoso> Where: unsafeSingular :: forall k is s a. Is k A_Traversal => Optic' k is s a -> Lens' s a
2021-11-19 13:15:51 +0100 <Guest17> does haskell have functions for comparing its primitive types like Int and Char?
2021-11-19 13:15:56 +0100__monty__(~toonn@user/toonn)
2021-11-19 13:16:04 +0100 <Guest17> that map to FFI calls, I suppose?
2021-11-19 13:16:05 +0100 <dminuoso> idnar: This could perhaps work for you, because then you can simply pretend you have a lens and it just works.
2021-11-19 13:16:28 +0100 <dminuoso> So for your case you'd just write: bothSides = unsafeSingular (_Left `failingT` _Right)
2021-11-19 13:16:44 +0100 <hololeap> Guest17: generally, you convert one type to the other first
2021-11-19 13:17:43 +0100 <hololeap> but there probably is some low-level way of comparing unboxed values
2021-11-19 13:19:01 +0100 <Guest17> hololeap: "unboxed values" ?
2021-11-19 13:20:03 +0100 <geekosaur> I'm not sure what Guest17 is asking
2021-11-19 13:21:05 +0100 <geekosaur> but the primitive values contained within types like Int and Char ("unboxed values") can be compared using intrinsics that map directly to assembly code in the code generator
2021-11-19 13:21:20 +0100pfurla(~pfurla@2804:14d:5c81:4104:7d84:ffec:9a44:a68d)
2021-11-19 13:22:03 +0100 <geekosaur> and much of the time the compiler will know that it can unbox an Int and directly generate and compare the values, so the result is as fast as assembly code
2021-11-19 13:22:08 +0100 <geekosaur> @src Int
2021-11-19 13:22:08 +0100 <lambdabot> data Int = I# Int#
2021-11-19 13:22:08 +0100pfurla(~pfurla@2804:14d:5c81:4104:7d84:ffec:9a44:a68d) (Client Quit)
2021-11-19 13:22:25 +0100 <hpc> the "box" around unboxed values is the stuff that gives you laziness and such
2021-11-19 13:22:29 +0100 <geekosaur> the # marks it as internal and there's an extension to access those directly
2021-11-19 13:23:11 +0100 <geekosaur> Int# is a signed machine word and operations on it generally map straight to assembly language instructions
2021-11-19 13:23:39 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2021-11-19 13:23:45 +0100Guest17(~Guest17@wificampus-098247.grenet.fr) (Ping timeout: 256 seconds)
2021-11-19 13:23:55 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2021-11-19 13:25:19 +0100machinedgod(~machinedg@24.105.81.50)
2021-11-19 13:25:26 +0100 <int-e> :t (GHC.Prim.<#)
2021-11-19 13:25:27 +0100 <lambdabot> GHC.Prim.Int# -> GHC.Prim.Int# -> GHC.Prim.Int#
2021-11-19 13:26:05 +0100 <int-e> (that's one of the builtin primitive comparison operations)
2021-11-19 13:26:26 +0100 <dminuoso> And how is that turned back into a Bool?
2021-11-19 13:26:53 +0100 <dminuoso> Or does this produce something like 0 or 1, and that gets pattern matched back into False/True?
2021-11-19 13:27:06 +0100 <alzgh> what was the flag for enabling explicit class method signatures?
2021-11-19 13:27:21 +0100 <dminuoso> alzgh: InstanceSigs ?
2021-11-19 13:27:28 +0100 <int-e> :t GHC.Exts.isTrue#
2021-11-19 13:27:29 +0100 <lambdabot> GHC.Prim.Int# -> Bool
2021-11-19 13:27:34 +0100 <dminuoso> int-e: Ah!
2021-11-19 13:27:57 +0100 <alzgh> right, thanks dminuoso
2021-11-19 13:28:12 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-11-19 13:28:24 +0100 <int-e> which isn't a builtin but an alias: isTrue# x = tagToEnum# x
2021-11-19 13:28:43 +0100 <hololeap> speaking of InstanceSigs, what's the status of some meta-extension like Extensions2021 or something? I remember reading about that being considered at some point
2021-11-19 13:29:04 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-19 13:29:05 +0100 <merijn> GHC2021
2021-11-19 13:29:23 +0100 <int-e> dminuoso: conceptually it's a case expression, of course.
2021-11-19 13:29:29 +0100dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 250 seconds)
2021-11-19 13:29:42 +0100 <hololeap> oh, nice
2021-11-19 13:30:01 +0100Everything(~Everythin@37.115.210.35) (Quit: leaving)
2021-11-19 13:30:04 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-11-19 13:30:37 +0100dibblego(~dibblego@122-199-1-30.ip4.superloop.com)
2021-11-19 13:30:38 +0100dibblego(~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
2021-11-19 13:30:38 +0100dibblego(~dibblego@haskell/developer/dibblego)
2021-11-19 13:31:52 +0100 <int-e> and presumably the compiler knows some simplifciations that optimize case tagToEnum# foo of ... accordingly.
2021-11-19 13:32:17 +0100 <dminuoso> isTrue# x = tagToEnum# x
2021-11-19 13:32:21 +0100 <dminuoso> And tagToEnum# is a primop it seems
2021-11-19 13:33:07 +0100 <hololeap> where can I find a list of which extensions that enables?
2021-11-19 13:33:23 +0100 <tomsmeding> https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0380-ghc2021.rst
2021-11-19 13:33:32 +0100 <merijn> hololeap: Presumably in the GHC user guide? :p
2021-11-19 13:33:34 +0100 <hololeap> ok
2021-11-19 13:33:39 +0100 <yushyin> hololeap: https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/control.html#extension-GHC2021
2021-11-19 13:33:42 +0100 <tomsmeding> oh better source: https://downloads.haskell.org/ghc/latest/docs/html/users_guide/exts/control.html?highlight=ghc2021…
2021-11-19 13:33:55 +0100 <hololeap> sorry, I had a hard time finding it in the user guide
2021-11-19 13:34:00 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-11-19 13:34:02 +0100 <tomsmeding> wrong ghc version? :)
2021-11-19 13:34:25 +0100 <hololeap> no, I just didn't notice the search bar
2021-11-19 13:34:37 +0100 <hololeap> I was looking through different categories
2021-11-19 13:35:27 +0100 <tomsmeding> tip: https://downloads.haskell.org/ghc/latest/docs/html/users_guide/exts/table.html
2021-11-19 13:36:08 +0100 <tomsmeding> I'm not sure whether the extensions are even divided into categories, I never use the categories to find an extension
2021-11-19 13:36:20 +0100 <tomsmeding> s/whether/why/
2021-11-19 13:36:38 +0100 <tomsmeding> (that's quite a change in meaning...)
2021-11-19 13:36:42 +0100 <hololeap> for whatever reason, the docs for 8.10.6 on my PC have the extensions section as one big HTML file, so that's what I'm used to searching through
2021-11-19 13:36:59 +0100pfurla(~pfurla@2804:14d:5c81:4104:7d84:ffec:9a44:a68d)
2021-11-19 13:41:04 +0100 <hololeap> interesting; there are some extensions listed that aren't in the user's guide e.g. RelaxedPolyRec
2021-11-19 13:41:38 +0100 <yushyin> maybe part of the haskell report
2021-11-19 13:41:45 +0100 <hololeap> why wouldn't TypeFamilies be in there?
2021-11-19 13:42:12 +0100 <hololeap> or GADTs
2021-11-19 13:42:13 +0100 <tomsmeding> why wouldn't GADTs be in there
2021-11-19 13:42:14 +0100 <tomsmeding> yeah
2021-11-19 13:42:29 +0100 <yushyin> https://gitlab.haskell.org/ghc/ghc/-/issues/18630
2021-11-19 13:42:51 +0100 <hololeap> it's all in the docs. except for what isn't in the docs
2021-11-19 13:42:57 +0100 <tomsmeding> why did PolyKinds, which changes semantics (IIRC), get more votes than TypeFamilies and GADTs
2021-11-19 13:43:47 +0100 <Cajun> what semantics do polykinds change? i know it lets you use polymorphic kinds, but when does that really change the meaning of a program?
2021-11-19 13:44:09 +0100 <tomsmeding> see also https://gitlab.haskell.org/ghc/ghc/-/blob/master/compiler/GHC/Driver/Session.hs#L3618-3620
2021-11-19 13:44:59 +0100 <tomsmeding> Cajun: I admit I don't have an example, just some vague recollection. Can't PolyKinds make some code not compile because kinds become more ambiguous or something?
2021-11-19 13:45:23 +0100 <Cajun> that would make sense, would need to tinker with it some more
2021-11-19 13:45:34 +0100 <Cajun> cant wait for Thinking with Types 2 :)
2021-11-19 13:46:36 +0100 <yushyin> cant wait for -XGHC2023! :P
2021-11-19 13:47:10 +0100 <Cajun> then code breaks because it has -XGHC2021 instead of 2023 :P
2021-11-19 13:51:25 +0100 <lortabac> TypeFamilies implies MonoLocalBinds, enabling it may make previously working programs not compile anymore
2021-11-19 13:51:50 +0100deadmarshal(~deadmarsh@95.38.116.147)
2021-11-19 13:51:54 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds)
2021-11-19 13:52:15 +0100 <lortabac> same problem for GADTs
2021-11-19 13:52:59 +0100 <tomsmeding> ah
2021-11-19 13:54:22 +0100max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Ping timeout: 268 seconds)
2021-11-19 13:56:22 +0100 <dminuoso> Is Data.Text.toLower injective?
2021-11-19 13:56:38 +0100 <dminuoso> Sorry
2021-11-19 13:56:40 +0100 <dminuoso> Let me rephrase:
2021-11-19 13:57:25 +0100 <dminuoso> My question is very redundant and silly.
2021-11-19 13:57:27 +0100whatsupdoc(uid509081@hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-19 14:00:21 +0100slice(~slice@user/slice) (Quit: zzz)
2021-11-19 14:01:24 +0100 <tomsmeding> :)
2021-11-19 14:01:49 +0100 <tomsmeding> it is injective for certain languages though
2021-11-19 14:02:11 +0100 <dminuoso> For a moment I was pondering whether `instance Eq where (Domain k) == (Domain l) == T.toLower k == T.toLower l` would behave nicely
2021-11-19 14:02:53 +0100 <tomsmeding> it's an equivalence relation
2021-11-19 14:03:14 +0100 <dminuoso> Sure, and DNS even requires this
2021-11-19 14:03:44 +0100 <dminuoso> My confusion started with "but what if this is not ASCII" - but this is not possible by construction
2021-11-19 14:03:55 +0100 <dminuoso> Which is why the question was silly to begin with
2021-11-19 14:04:23 +0100 <dminuoso> Fun fact, in most PCRE implementations \d is likely not what you want.
2021-11-19 14:04:32 +0100 <dminuoso> Since it often will match UTF8 digit characters of various scripts...
2021-11-19 14:05:48 +0100 <merijn> dminuoso: No
2021-11-19 14:06:07 +0100 <merijn> dminuoso: or rather, toLower might be, because it's a hack-job implementation
2021-11-19 14:06:10 +0100 <c_wraith> Hmm. if it's not supposed to be outside of ASCII, why are you representing it as Text?
2021-11-19 14:06:19 +0100 <merijn> Unicode toLower is locale dependent
2021-11-19 14:06:56 +0100 <dminuoso> c_wraith: Yeah ByteString is probably more fitting. Honestly there's a bunch of interfaces that made me pick Text instead
2021-11-19 14:06:58 +0100 <dminuoso> Seemed more compatible
2021-11-19 14:07:24 +0100 <c_wraith> there's a well-defined conversion from unicode to bytes for domains
2021-11-19 14:07:34 +0100 <c_wraith> and nothing else in the world uses it
2021-11-19 14:07:56 +0100 <dminuoso> Well, strictly speaking Im writing a DNS server layer - but punycode conversion would happen outside of it
2021-11-19 14:08:06 +0100 <dminuoso> I think?
2021-11-19 14:08:09 +0100 <dminuoso> Uh.
2021-11-19 14:08:11 +0100 <dminuoso> Hold on.
2021-11-19 14:08:43 +0100 <c_wraith> just at a domain level, you should either have bytes that have been encoded, or text that hasn't.
2021-11-19 14:08:55 +0100 <c_wraith> Those are the two levels that make sense.
2021-11-19 14:09:53 +0100 <dminuoso> c_wraith: The main reason I have Text here, is because I end up putting it out via JSON.
2021-11-19 14:10:04 +0100 <dminuoso> using aeson
2021-11-19 14:10:43 +0100 <dminuoso> There's an extra newtype around it to avoid accidental confusion, so you have to go through my parser routine anyway
2021-11-19 14:11:31 +0100 <dminuoso> And my parser has things like isLetDig c = isAsciiLetter c || isDigit c
2021-11-19 14:16:57 +0100BobFang1992_(~textual@2a01:4b00:87fe:be00:30ce:ab50:b4f4:7d62) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-11-19 14:17:45 +0100kuribas(~user@ptr-25vy0i8ozjc5f1a3qes.18120a2.ip6.access.telenet.be)
2021-11-19 14:21:21 +0100zer0bitz(~zer0bitz@2001:2003:f6bc:f00:bde7:830:4cf1:2fa1)
2021-11-19 14:25:32 +0100Nrmncr(~Neuromanc@user/neuromancer) (Ping timeout: 240 seconds)
2021-11-19 14:27:53 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Read error: Connection reset by peer)
2021-11-19 14:29:29 +0100slowButPresent(~slowButPr@user/slowbutpresent)
2021-11-19 14:32:10 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:f4b8:2aef:8963:2af8)
2021-11-19 14:33:58 +0100dschrempf(~dominik@62.240.134.78) (Ping timeout: 260 seconds)
2021-11-19 14:36:59 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:f4b8:2aef:8963:2af8) (Ping timeout: 264 seconds)
2021-11-19 14:38:22 +0100dschrempf(~dominik@62.240.134.78)
2021-11-19 14:38:28 +0100Codaraxis_(~Codaraxis@user/codaraxis)
2021-11-19 14:38:34 +0100CiaoSen(~Jura@p200300c95716ce002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2021-11-19 14:40:17 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-11-19 14:41:11 +0100Codaraxis(~Codaraxis@user/codaraxis) (Ping timeout: 264 seconds)
2021-11-19 14:42:12 +0100jbox(~jbox@user/jbox)
2021-11-19 14:43:41 +0100dsrt^(~dsrt@68.101.63.101) (Ping timeout: 268 seconds)
2021-11-19 14:43:46 +0100Lycurgus(~juan@98.4.112.204)
2021-11-19 14:45:44 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-19 14:45:55 +0100jippiedoe(~david@2a02-a44c-e14e-1-fa5e-26bf-14ad-ea07.fixed6.kpn.net)
2021-11-19 14:48:44 +0100dschrempf(~dominik@62.240.134.78) (Ping timeout: 256 seconds)
2021-11-19 14:50:32 +0100shriekingnoise(~shrieking@186.137.144.80)
2021-11-19 14:51:20 +0100slice(~slice@user/slice)
2021-11-19 14:54:23 +0100deadmarshal(~deadmarsh@95.38.116.147) (Ping timeout: 264 seconds)
2021-11-19 14:55:20 +0100sydddddd(~syd@cpc91646-hart11-2-0-cust432.11-3.cable.virginm.net)
2021-11-19 14:55:33 +0100max22-(~maxime@2a01cb0883359800f3916cdff6a2f8a4.ipv6.abo.wanadoo.fr)
2021-11-19 14:56:13 +0100 <kuribas> ApplicativeDo could have been one of the best extensions, if it wasn't so buggy...
2021-11-19 14:56:25 +0100 <kuribas> It's very useful with records.
2021-11-19 14:57:09 +0100 <kuribas> Right now, if you would use it for parallelism, it may give you sequencing when you expect parallism.
2021-11-19 14:58:11 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2021-11-19 14:59:13 +0100hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-11-19 15:00:46 +0100 <sydddddd> does anyone have any links on ALens' info (other than Lens docs) ?
2021-11-19 15:01:56 +0100 <lortabac> kuribas: it's not perfect but it's always been good enough for me
2021-11-19 15:02:07 +0100hololeap(~hololeap@user/hololeap)
2021-11-19 15:02:21 +0100 <lortabac> as long as you respect the rules it should be quite reliable
2021-11-19 15:02:58 +0100 <Lycurgus> kuribas, it does say 'best effort' on parallelism
2021-11-19 15:03:04 +0100 <c_wraith> sydddddd: it's not really that interesting. It's mostly there to not need to infer polymorphic types
2021-11-19 15:03:13 +0100 <kuribas> Lycurgus: I'd say it can do better :)
2021-11-19 15:03:33 +0100 <Lycurgus> that's like sayin it's undone/uncovered
2021-11-19 15:03:33 +0100 <kuribas> If I do (a, b) <- someApplicative, it will consider it a monad.
2021-11-19 15:03:51 +0100 <kuribas> Lycurgus: it's buggy and flawed, yes.
2021-11-19 15:04:48 +0100 <sydddddd> c_wraith: thanks. I tend to use it with specific type errors I've come to recognise and to be fair it usually works.
2021-11-19 15:04:55 +0100 <Lycurgus> i would say flawed but within spec
2021-11-19 15:05:04 +0100 <kuribas> Lycurgus: not even that
2021-11-19 15:05:37 +0100 <sydddddd> usually when passing/returning polymorphic functions that take and return lenses, when type annotations don't help.
2021-11-19 15:05:42 +0100 <Lycurgus> (as far as parallelism and do)
2021-11-19 15:06:18 +0100 <sydddddd> does that sound about right for typical usage of it?
2021-11-19 15:06:47 +0100 <lortabac> kuribas: do you have an example of unexpected behavior?
2021-11-19 15:07:00 +0100 <kuribas> Lycurgus: it removes polymorphism.
2021-11-19 15:07:37 +0100 <kuribas> Lycurgus: Also do "x <- foo; y <- bar; let z = x + y; pure z" becomes monadic.
2021-11-19 15:08:05 +0100 <kuribas> Lycurgus: Or "do (x, y) <- foo; z <- bar; pure (x + y + z)"
2021-11-19 15:08:26 +0100 <Lycurgus> i wouldn expect parallelism to be handled properly outside stuff explicitly oriented for that
2021-11-19 15:08:27 +0100cosimone(~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Remote host closed the connection)
2021-11-19 15:08:54 +0100 <kuribas> Sure I can rewrite than, but it's annoying...
2021-11-19 15:08:54 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2021-11-19 15:09:07 +0100 <kuribas> Plus, there is no indication that it should be parallel.
2021-11-19 15:09:35 +0100 <kuribas> So you could think that everything is fine and optimally parallel when it isn't.
2021-11-19 15:10:35 +0100geekosaurwonders if the new QualifiedDo stuff would be helpful there
2021-11-19 15:10:55 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-11-19 15:11:02 +0100 <geekosaur> although probaly not since you can't use that to choose the Applicative instance
2021-11-19 15:11:03 +0100 <geekosaur> sigh
2021-11-19 15:11:29 +0100 <geekosaur> might be an interesting extension to QualifiedDo since then it could throw a type error if it "upgraded" to Monad
2021-11-19 15:14:08 +0100dsrt^(~dsrt@68.101.63.101)
2021-11-19 15:14:40 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 265 seconds)
2021-11-19 15:17:20 +0100deadmarshal(~deadmarsh@95.38.116.147)
2021-11-19 15:22:02 +0100kuribaswonders how it's done at facebook
2021-11-19 15:24:54 +0100 <jippiedoe> I'd love QualifiedDo to take into account what's in scope, that would also allow you to opt out of MonadFail and get exhaustiveness checks in your monad bindings instead
2021-11-19 15:31:41 +0100jkaye(~jkaye@216.53.205.34)
2021-11-19 15:32:25 +0100synthmeat(~synthmeat@user/synthmeat) (Quit: WeeChat 3.3)
2021-11-19 15:32:54 +0100favonia(~favonia@user/favonia)
2021-11-19 15:34:02 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-19 15:35:18 +0100pera(~pera@user/pera)
2021-11-19 15:35:19 +0100 <hololeap> I would like for there to be some way to force applicative do, rather than it silently defaulting back to monadic do
2021-11-19 15:37:04 +0100xsperry(~xs@user/xsperry) (Remote host closed the connection)
2021-11-19 15:40:11 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-19 15:40:11 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-19 15:40:11 +0100wroathe(~wroathe@user/wroathe)
2021-11-19 15:44:18 +0100Sgeo(~Sgeo@user/sgeo)
2021-11-19 15:48:03 +0100 <kuribas> like purescript ado?
2021-11-19 15:49:14 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2021-11-19 15:50:04 +0100Lycurgus(~juan@98.4.112.204) (Quit: Exeunt)
2021-11-19 15:50:44 +0100waleee(~waleee@h-82-196-111-63.NA.cust.bahnhof.se)
2021-11-19 15:51:59 +0100deadmarshal(~deadmarsh@95.38.116.147) (Quit: ZNC 1.8.2 - https://znc.in)
2021-11-19 15:52:25 +0100deadmarshal(~deadmarsh@95.38.116.147)
2021-11-19 15:53:59 +0100hiruji(~hiruji@user/hiruji) (Ping timeout: 268 seconds)
2021-11-19 15:55:21 +0100BobFang1992(~textual@2a01:4b00:87fe:be00:2941:7b2f:659a:8781)
2021-11-19 15:55:47 +0100 <maerwald> "wonders how it's done at facebook" -> you just lie about what you did xD
2021-11-19 15:55:59 +0100mimmy(~mimmy@146.70.75.190)
2021-11-19 15:56:13 +0100 <hololeap> kuribas: I haven't used purescript but yeah, ado was what I was thinking
2021-11-19 15:56:57 +0100 <Franciman> ahah
2021-11-19 15:57:25 +0100 <hololeap> abort
2021-11-19 15:58:40 +0100nvmd(~nvmd@user/nvmd)
2021-11-19 15:59:32 +0100 <hololeap> I agree it's pretty clunky, but at least there is a way to do it... http://sprunge.us/HPeHM8
2021-11-19 15:59:52 +0100ymherklotz(~user@2a0c:5bc0:40:107b:fdfc:4d2d:898a:f9f5)
2021-11-19 15:59:57 +0100hiruji(~hiruji@user/hiruji)
2021-11-19 16:03:31 +0100 <hololeap> I don't know why the `let` built in to the do notation would force it back to monadic do
2021-11-19 16:05:48 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2021-11-19 16:06:09 +0100pavonia(~user@user/siracusa)
2021-11-19 16:06:21 +0100sprout_(~quassel@2a02:a467:ccd6:1:2c29:7076:9399:3f2e) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2021-11-19 16:06:35 +0100BobFang1992bobfang1992_
2021-11-19 16:06:48 +0100sprout(~quassel@2a02:a467:ccd6:1:7816:2c69:3dcc:933a)
2021-11-19 16:07:08 +0100 <hololeap> > Note: the final statement must match one of these patterns exactly ... In particular, slight variations such as `return . Just $ x` or `let x = e in return x` would not be recognised.
2021-11-19 16:07:48 +0100 <hololeap> so it sort of explains it
2021-11-19 16:09:07 +0100mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
2021-11-19 16:10:37 +0100mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2021-11-19 16:11:27 +0100lavaman(~lavaman@98.38.249.169)
2021-11-19 16:12:00 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:6cf6:5d02:5f47:daaa) (Quit: WeeChat 2.8)
2021-11-19 16:12:11 +0100jippiedoe(~david@2a02-a44c-e14e-1-fa5e-26bf-14ad-ea07.fixed6.kpn.net) (Ping timeout: 265 seconds)
2021-11-19 16:13:39 +0100dsrt^(~dsrt@68.101.63.101) (Remote host closed the connection)
2021-11-19 16:14:31 +0100zer0bitz_(~zer0bitz@2001:2003:f6bc:f00:93d:ef3a:ec37:e2db)
2021-11-19 16:16:00 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-11-19 16:16:11 +0100zer0bitz(~zer0bitz@2001:2003:f6bc:f00:bde7:830:4cf1:2fa1) (Ping timeout: 268 seconds)
2021-11-19 16:19:32 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 240 seconds)
2021-11-19 16:20:25 +0100pfurla(~pfurla@2804:14d:5c81:4104:7d84:ffec:9a44:a68d) (Quit: gone to sleep. ZZZzzz…)
2021-11-19 16:22:26 +0100xsperry(~xs@cpe-188-129-101-182.dynamic.amis.hr)
2021-11-19 16:22:29 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-19 16:22:30 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-19 16:22:30 +0100wroathe(~wroathe@user/wroathe)
2021-11-19 16:23:37 +0100cheater1__(~Username@user/cheater)
2021-11-19 16:23:37 +0100cheater(~Username@user/cheater) (Ping timeout: 265 seconds)
2021-11-19 16:23:40 +0100cheater1__cheater
2021-11-19 16:26:40 +0100mimmy(~mimmy@146.70.75.190) (Ping timeout: 268 seconds)
2021-11-19 16:27:17 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2021-11-19 16:27:59 +0100cheater1__(~Username@user/cheater)
2021-11-19 16:28:18 +0100cheater(~Username@user/cheater) (Ping timeout: 260 seconds)
2021-11-19 16:28:23 +0100cheater1__cheater
2021-11-19 16:30:11 +0100alzgh(~alzgh@user/alzgh) (Ping timeout: 256 seconds)
2021-11-19 16:33:50 +0100ub(~Thunderbi@p200300ecdf0ba29aa5e920d3668bb518.dip0.t-ipconnect.de)
2021-11-19 16:35:02 +0100acidjnk(~acidjnk@p200300d0c7271e04495a3d38c01005cf.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2021-11-19 16:36:35 +0100jkaye(~jkaye@216.53.205.34) (Remote host closed the connection)
2021-11-19 16:37:00 +0100jkaye(~jkaye@216.53.205.34)
2021-11-19 16:37:56 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-19 16:38:17 +0100mimmy(~mimmy@146.70.75.189)
2021-11-19 16:38:28 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-11-19 16:39:34 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-19 16:40:35 +0100favonia(~favonia@user/favonia) (Ping timeout: 264 seconds)
2021-11-19 16:43:57 +0100alzgh(alzgh@user/alzgh)
2021-11-19 16:44:33 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-11-19 16:45:30 +0100gandalf_(gandalf@2a01:270:20cd:88::1)
2021-11-19 16:45:47 +0100gandalf_(gandalf@2a01:270:20cd:88::1) ()
2021-11-19 16:45:58 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2021-11-19 16:46:19 +0100lavaman(~lavaman@98.38.249.169)
2021-11-19 16:48:15 +0100deadmarshal(~deadmarsh@95.38.116.147) (Ping timeout: 268 seconds)
2021-11-19 16:49:46 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-11-19 16:50:47 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
2021-11-19 16:51:33 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:e6ab:18be:9a14:11e0)
2021-11-19 16:51:33 +0100turco32(~turco32@104.158.25.93) (Quit: Leaving)
2021-11-19 16:56:15 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-11-19 16:58:38 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-11-19 17:02:59 +0100CiaoSen(~Jura@p200300c95716ce002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-11-19 17:05:35 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net)
2021-11-19 17:05:48 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: restarting)
2021-11-19 17:06:04 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-11-19 17:08:20 +0100pera(~pera@user/pera) (Quit: leaving)
2021-11-19 17:08:21 +0100mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
2021-11-19 17:13:33 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 268 seconds)
2021-11-19 17:13:34 +0100deadmarshal(~deadmarsh@95.38.116.147)
2021-11-19 17:14:10 +0100jkaye(~jkaye@216.53.205.34) (Ping timeout: 268 seconds)
2021-11-19 17:16:16 +0100favonia(~favonia@user/favonia)
2021-11-19 17:18:06 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-19 17:18:36 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 276 seconds)
2021-11-19 17:18:55 +0100Midjak(~Midjak@82-65-111-221.subs.proxad.net) (Quit: This computer has gone to sleep)
2021-11-19 17:20:03 +0100jakalx(~jakalx@base.jakalx.net) ()
2021-11-19 17:20:16 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-11-19 17:21:39 +0100abrantesasf(~abrantesa@187.36.170.211)
2021-11-19 17:22:31 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:e6ab:18be:9a14:11e0) (Quit: WeeChat 2.8)
2021-11-19 17:26:47 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.3)
2021-11-19 17:27:25 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
2021-11-19 17:28:07 +0100monochrom(~trebla@216.138.220.146)
2021-11-19 17:29:02 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1)
2021-11-19 17:30:18 +0100DNH(~DNH@2a02:8108:1100:16d8:a055:2897:27b6:f1d6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-11-19 17:31:56 +0100mimmy(~mimmy@146.70.75.189) (Ping timeout: 265 seconds)
2021-11-19 17:32:06 +0100DNH(~DNH@2a02:8108:1100:16d8:a055:2897:27b6:f1d6)
2021-11-19 17:36:48 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:f4b8:2aef:8963:2af8)
2021-11-19 17:37:30 +0100mimmy(~mimmy@146.70.75.189)
2021-11-19 17:39:47 +0100alzgh(alzgh@user/alzgh) (Remote host closed the connection)
2021-11-19 17:40:07 +0100alzgh(alzgh@user/alzgh)
2021-11-19 17:41:11 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 264 seconds)
2021-11-19 17:42:35 +0100 <kuribas> hololeap: well "return let x = e in x" works
2021-11-19 17:42:44 +0100kuribas(~user@ptr-25vy0i8ozjc5f1a3qes.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-11-19 17:43:30 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-11-19 17:44:26 +0100lavaman(~lavaman@98.38.249.169)
2021-11-19 17:48:09 +0100jakalx(~jakalx@base.jakalx.net)
2021-11-19 17:48:30 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 260 seconds)
2021-11-19 17:48:30 +0100deadmarshal(~deadmarsh@95.38.116.147) (Ping timeout: 260 seconds)
2021-11-19 17:48:57 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-11-19 17:49:16 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-19 17:49:38 +0100deadmarshal(~deadmarsh@95.38.116.147)
2021-11-19 17:49:56 +0100 <monochrom> I am reading and encouraged by https://anthony.noided.media/blog/thoughts/haskell/languages/2021/11/05/writing-about-haskell-is-h… Perhaps I should include rank-n types in my class next time. (I already have Applicative, and Functor, and Monad.)
2021-11-19 17:50:12 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection)
2021-11-19 17:50:24 +0100 <monochrom> And yeah Boring Haskell is a bit misguided.
2021-11-19 17:50:45 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-11-19 17:50:56 +0100lbseale(~ep1ctetus@user/ep1ctetus)
2021-11-19 17:52:23 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-11-19 17:52:45 +0100 <maerwald> it depends on laziness to not blow up? hope they have a good test suite :)
2021-11-19 17:55:25 +0100pfurla(~pfurla@2804:14d:5c81:4104:7d84:ffec:9a44:a68d)
2021-11-19 17:57:33 +0100ub(~Thunderbi@p200300ecdf0ba29aa5e920d3668bb518.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2021-11-19 18:01:15 +0100 <monochrom> Now I'm reading https://reasonablypolymorphic.com/blog/century-of-the-fruitbat/ (OK, so basically I'm catching up with yesterday's Haskell Weekly News heh)
2021-11-19 18:02:41 +0100 <monochrom> You know what, ironically, I may appreciate Prelude omitting head and tail. Because then my students are forced to write like "f [] = ... f (x:xs) = ..." and learn pattern matching :)
2021-11-19 18:03:07 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 256 seconds)
2021-11-19 18:04:03 +0100 <maerwald> Until they need to use Text
2021-11-19 18:04:07 +0100 <maerwald> and then the world collapses
2021-11-19 18:04:22 +0100 <maerwald> everything was a lie!
2021-11-19 18:04:24 +0100 <monochrom> And in the rare case I need head, it's a simple lambda, (\(x:_) -> x).
2021-11-19 18:05:00 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-11-19 18:05:22 +0100 <maerwald> (\[x] -> x)
2021-11-19 18:05:30 +0100 <monochrom> I don't use String to teach lists. I use [Int] [Bool] etc.
2021-11-19 18:06:15 +0100 <maerwald> @pl (\(x:_) -> x)
2021-11-19 18:06:15 +0100 <lambdabot> head
2021-11-19 18:06:22 +0100 <monochrom> haha
2021-11-19 18:12:14 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:f4b8:2aef:8963:2af8) (Remote host closed the connection)
2021-11-19 18:12:59 +0100mimmy(~mimmy@146.70.75.189) (Ping timeout: 264 seconds)
2021-11-19 18:14:27 +0100mbuf(~Shakthi@122.174.57.32) (Quit: Leaving)
2021-11-19 18:16:32 +0100xff0x(~xff0x@2001:1a81:53ef:fb00:5000:2c7a:ffb3:dbe2) (Ping timeout: 240 seconds)
2021-11-19 18:18:16 +0100xff0x(~xff0x@2001:1a81:53ef:fb00:5000:2c7a:ffb3:dbe2)
2021-11-19 18:23:19 +0100slaydr(~seriley@192.109.205.174)
2021-11-19 18:24:35 +0100 <slaydr> is the Haskell2020 report still in the works?
2021-11-19 18:25:30 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk)
2021-11-19 18:26:11 +0100jbox(~jbox@user/jbox) (Ping timeout: 264 seconds)
2021-11-19 18:30:47 +0100xkuru(~xkuru@user/xkuru)
2021-11-19 18:30:51 +0100mbuf(~Shakthi@122.174.57.32)
2021-11-19 18:31:04 +0100 <maerwald> haha
2021-11-19 18:31:19 +0100 <maerwald> maybe when covid is over
2021-11-19 18:31:23 +0100ubert(~Thunderbi@p200300ecdf0ba29ae6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2021-11-19 18:31:27 +0100 <maerwald> (like... never)
2021-11-19 18:31:51 +0100deadmarshal(~deadmarsh@95.38.116.147) (Ping timeout: 268 seconds)
2021-11-19 18:31:58 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 260 seconds)
2021-11-19 18:35:02 +0100Jing(~hedgehog@115.207.47.111) (Read error: Connection reset by peer)
2021-11-19 18:36:58 +0100Jing(~hedgehog@2604:a840:3::1094)
2021-11-19 18:37:17 +0100mvk(~mvk@2607:fea8:5cc1:fa00::4702)
2021-11-19 18:38:04 +0100burnsidesLlama(~burnsides@dhcp168-013.wadham.ox.ac.uk)
2021-11-19 18:38:11 +0100mimmy(~mimmy@146.70.75.190)
2021-11-19 18:40:46 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-11-19 18:41:11 +0100jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 264 seconds)
2021-11-19 18:42:12 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-19 18:42:45 +0100econo(uid147250@user/econo)
2021-11-19 18:43:22 +0100CannabisIndica(~herb@user/mesaboogie) (Ping timeout: 256 seconds)
2021-11-19 18:47:20 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-11-19 18:47:43 +0100retroid_(~retro@97e2ba2e.skybroadband.com)
2021-11-19 18:48:13 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-19 18:49:11 +0100 <monochrom> Even the 2020 Summer Games have already finished >:)
2021-11-19 18:49:45 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-19 18:49:54 +0100 <monochrom> It's now pretty clear that we will have GHC2021 instead.
2021-11-19 18:50:22 +0100CiaoSen(~Jura@p200300c95716ce002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2021-11-19 18:52:03 +0100 <monochrom> I am paradoxically both surprised and not surprised that no one complains against GHC2021, whereas people get vocal against no-/=.
2021-11-19 18:53:51 +0100slaydr(~seriley@192.109.205.174) (Remote host closed the connection)
2021-11-19 18:54:37 +0100 <yushyin> but if we are comfortable with ghc2021, maybe it will pave the way for haskell prime :-)
2021-11-19 18:54:47 +0100 <monochrom> This is consistent with my model that programmers are good at technicalities (even when technicalities are irrelevant) and very bad at social, cultural considerations (even when much more relevant).
2021-11-19 18:55:36 +0100 <monochrom> GHC2021 is "not" a breaking change because technically it is an opt-"in". So no one will complain.
2021-11-19 18:56:48 +0100 <monochrom> Just you wait. It is doomed to be so commonly used that socially you will be forced into it anyway. Then it is a breaking change.
2021-11-19 18:57:08 +0100deadmarshal(~deadmarsh@95.38.116.147)
2021-11-19 18:58:00 +0100 <monochrom> Whereas no-/= is statistically a pretty irrelevant "breaking" change.
2021-11-19 18:58:51 +0100 <monochrom> I don't buy the "but what about the principles?" argument because it would apply to GHC2021 too so why aren't you speaking up.
2021-11-19 18:59:10 +0100mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2021-11-19 19:00:28 +0100Successus(~Successus@gateway/tor-sasl/successus)
2021-11-19 19:01:12 +0100lavaman(~lavaman@98.38.249.169)
2021-11-19 19:02:04 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 256 seconds)
2021-11-19 19:02:30 +0100emf(~emf@162.218.217.186)
2021-11-19 19:05:46 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-11-19 19:06:10 +0100alzgh(alzgh@user/alzgh) (Remote host closed the connection)
2021-11-19 19:06:58 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-19 19:07:38 +0100emf_(~emf@2620:10d:c090:400::5:5ceb)
2021-11-19 19:08:34 +0100max22-(~maxime@2a01cb0883359800f3916cdff6a2f8a4.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
2021-11-19 19:09:18 +0100emf(~emf@162.218.217.186) (Ping timeout: 260 seconds)
2021-11-19 19:11:42 +0100DNH(~DNH@2a02:8108:1100:16d8:a055:2897:27b6:f1d6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-11-19 19:12:40 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:f4b8:2aef:8963:2af8)
2021-11-19 19:12:46 +0100 <davean> monochrom: I did speak up about GHC2021
2021-11-19 19:13:02 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 240 seconds)
2021-11-19 19:13:11 +0100alzgh(~alzgh@user/alzgh)
2021-11-19 19:13:34 +0100 <davean> No one gives a shit about voices that aren't acting little toddlers who just won't stop crying though. I can't be bothered to keep complaining though and making hyperbolic claims about it.
2021-11-19 19:15:37 +0100whatsupdoc(uid509081@hampstead.irccloud.com)
2021-11-19 19:16:31 +0100hippoid(~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
2021-11-19 19:18:23 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:f4b8:2aef:8963:2af8) (Ping timeout: 264 seconds)
2021-11-19 19:25:35 +0100rtsn(~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se) (Ping timeout: 264 seconds)
2021-11-19 19:26:01 +0100rtsn(~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se)
2021-11-19 19:26:54 +0100Successus(~Successus@gateway/tor-sasl/successus) ()
2021-11-19 19:27:00 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-11-19 19:27:57 +0100hololeap(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2021-11-19 19:28:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-19 19:28:15 +0100hololeap(~hololeap@user/hololeap)
2021-11-19 19:28:31 +0100vicfred(~vicfred@user/vicfred)
2021-11-19 19:30:21 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-19 19:30:33 +0100mbuf(~Shakthi@122.174.57.32) (Quit: Leaving)
2021-11-19 19:31:52 +0100 <dsal> What's bad in GHC2021?
2021-11-19 19:31:58 +0100hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-11-19 19:33:04 +0100 <dsal> Also, I'm not in a great place to understand the arguments for keeping /= -- I kind of like change in general, even when it's slightly uncomfortable.
2021-11-19 19:33:31 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-11-19 19:33:53 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-19 19:34:26 +0100hololeap(~hololeap@user/hololeap)
2021-11-19 19:35:23 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-11-19 19:36:01 +0100ymherklotz(~user@2a0c:5bc0:40:107b:fdfc:4d2d:898a:f9f5) (Remote host closed the connection)
2021-11-19 19:37:53 +0100zer0bitz(~zer0bitz@dsl-hkibng31-54fabc-15.dhcp.inet.fi)
2021-11-19 19:37:59 +0100pfurla(~pfurla@2804:14d:5c81:4104:7d84:ffec:9a44:a68d) (Quit: gone to sleep. ZZZzzz…)
2021-11-19 19:38:42 +0100deadmarshal(~deadmarsh@95.38.116.147) (Ping timeout: 260 seconds)
2021-11-19 19:39:05 +0100ymherklotz(~ymherklot@2a0c:5bc0:40:107b:fdfc:4d2d:898a:f9f5)
2021-11-19 19:39:18 +0100dyeplexer(~dyeplexer@user/dyeplexer) (Remote host closed the connection)
2021-11-19 19:39:41 +0100zer0bitz_(~zer0bitz@2001:2003:f6bc:f00:93d:ef3a:ec37:e2db) (Ping timeout: 268 seconds)
2021-11-19 19:43:32 +0100Cajun(~Cajun@user/cajun) (Quit: Client closed)
2021-11-19 19:44:25 +0100bobfang1992_(~textual@2a01:4b00:87fe:be00:2941:7b2f:659a:8781) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-11-19 19:44:38 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-11-19 19:45:20 +0100lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Ping timeout: 265 seconds)
2021-11-19 19:45:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-19 19:46:19 +0100lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
2021-11-19 19:47:09 +0100 <yushyin> i think GHC2021 was long overdue and a good first step, i already started a new toy project with GHC2021 ;>
2021-11-19 19:47:09 +0100 <monochrom> yushyin: I have now thought about it more. One possible outcome is what you said, yes. But another possible outcome is "so we don't need a Haskell Prime".
2021-11-19 19:47:50 +0100 <yushyin> monochrom: also possible, yes :/
2021-11-19 19:48:34 +0100 <monochrom> I am pessimistic. Every silver lining has tarnish.
2021-11-19 19:50:01 +0100 <monochrom> I like GHC2021 too. I even think it is not bold enough. I want BlockArguments to be in. I also want FunDeps in too (or else what's the point of including MPTC).
2021-11-19 19:50:41 +0100 <monochrom> Ah and DataKinds (or else what's the point of including all the other kind-related extensions).
2021-11-19 19:51:17 +0100 <dsal> I don't exactly understand BlockArguments. It's kind of like TupleSections in that you just try to do it and the compiler tells you to flip it. Are there downsides?
2021-11-19 19:51:25 +0100 <geekosaur> sounds like they're still arguing over fundeps vs. tyfams?
2021-11-19 19:51:32 +0100 <monochrom> I also want NoStarIsType, but it's a minor issue.
2021-11-19 19:52:17 +0100 <geekosaur> dsal, it can be harder to read (for humans, not the compiler: it actually simplifies parsing by removing a pointless distinction)
2021-11-19 19:52:20 +0100 <monochrom> Ah tyfams is probably better but needs more consensus. I'm less sad now. :)
2021-11-19 19:52:43 +0100vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2021-11-19 19:52:46 +0100 <dsal> geekosaur: Yeah, sometimes it's super clear. Sometimes it's slightly confusing.
2021-11-19 19:53:05 +0100 <monochrom> Generally BlockArguments is easy to read if you add more line breaks.
2021-11-19 19:53:42 +0100 <monochrom> "withX \x -> <newline> withY \y -> <newline> ..." is easy to read.
2021-11-19 19:53:46 +0100motherfsck(~motherfsc@user/motherfsck) (Read error: Connection reset by peer)
2021-11-19 19:53:55 +0100 <monochrom> "withX \x -> withY \y -> ..." is hard to read.
2021-11-19 19:54:09 +0100lavaman(~lavaman@98.38.249.169)
2021-11-19 19:54:58 +0100 <monochrom> Call me a stubborn scientist but this clearly puts the blame on one-liners not block arguments.
2021-11-19 19:55:07 +0100 <monochrom> The extension you're looking for is NoOneLiners.
2021-11-19 19:55:21 +0100motherfsck(~motherfsc@user/motherfsck)
2021-11-19 19:56:52 +0100 <dsal> -XNoNewlines
2021-11-19 19:56:53 +0100 <monochrom> Oh BTW a lot of beginners claim that "f (g (h (i (j (a+b))))" is hard to read too. Are they going to advocate NoParentheses too?
2021-11-19 19:57:16 +0100 <geekosaur> that's just why so many people use $
2021-11-19 19:57:20 +0100 <c_wraith> yes. prevent the use of tuples!
2021-11-19 19:57:21 +0100 <tomsmeding> monochrom: earlier today it was noted that TypeFamilies enables MonoLocalBinds, which is breaking with Haskell2010
2021-11-19 19:57:39 +0100 <dsal> This is a thing ormolu is doing to me. If I want to break a thing into two lines, it's like, "Nope, that's 8 lines." So I have to choose between one really long line, or 8 lines of one word each.
2021-11-19 19:57:58 +0100 <monochrom> Meanwhile, the same people, since they came from OOP backgrounds, also claim that "x.plus(y.plus(z))" is better than "x+y+z".
2021-11-19 19:58:06 +0100sm2n_(~sm2n@user/sm2n) (Read error: Connection reset by peer)
2021-11-19 19:58:10 +0100sm2n(~sm2n@user/sm2n)
2021-11-19 19:58:10 +0100max22-(~maxime@2a01cb08833598003c399b41b69f08ec.ipv6.abo.wanadoo.fr)
2021-11-19 19:58:26 +0100 <tomsmeding> (C++ doesn't have that issue)
2021-11-19 19:58:33 +0100 <monochrom> haha
2021-11-19 19:58:36 +0100 <tomsmeding> (but then C++ is the kitchen sink anyway)
2021-11-19 19:58:46 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 260 seconds)
2021-11-19 19:59:09 +0100 <monochrom> But ExplicitForall already breaks Haskell2010. I can't use "forall" as a type variable, or not even a term variable.
2021-11-19 19:59:36 +0100 <tomsmeding> oh interesting, I was somehow under the impression that GHC2021 was non-breaking
2021-11-19 20:00:04 +0100 <tomsmeding> though the 'forall' breakage is less bad: it causes less programs to compile, but no programs to change meaning
2021-11-19 20:00:18 +0100 <monochrom> It breaks very slightly. In fact, to be forthcoming, I think "forall"-reserved-word is the only breakage.
2021-11-19 20:01:18 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-19 20:01:18 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-19 20:01:18 +0100wroathe(~wroathe@user/wroathe)
2021-11-19 20:01:29 +0100 <monochrom> But I would think MonoLocalBinds just causes less programs to compile too? I think it doesn't change meaning.
2021-11-19 20:01:34 +0100 <tomsmeding> monochrom: my ghc already treats 'forall' as a reserved word, even with -XHaskell2010
2021-11-19 20:01:35 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-11-19 20:02:03 +0100 <dsal> > isAlpha '∀'
2021-11-19 20:02:05 +0100 <lambdabot> False
2021-11-19 20:02:06 +0100 <dsal> Lame.
2021-11-19 20:02:43 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-19 20:03:07 +0100 <tomsmeding> :set -XUnicodeSyntax
2021-11-19 20:03:13 +0100 <monochrom> I think GHC -XHaskell2010 still deviates a bit from paper Haskell 2010 regarding that. :)
2021-11-19 20:03:19 +0100 <tomsmeding> certainly
2021-11-19 20:03:46 +0100 <tomsmeding> but we're talking about breakage between -XHaskell2010 and -XGHC2021, I think; talking about breakage between report haskell 2021 and -XGHC2021 is not productive, I think
2021-11-19 20:03:49 +0100 <monochrom> Anyway I don't really raise hell about "forall", no one facetiously uses it as a variable :)
2021-11-19 20:03:56 +0100 <tomsmeding> at least not in the context of deciding whether -XGHC2021 is a good idea
2021-11-19 20:04:39 +0100 <tomsmeding> ah of course BangPatterns steals syntax
2021-11-19 20:05:00 +0100 <monochrom> Ah, that, haha.
2021-11-19 20:05:34 +0100 <tomsmeding> so -XGHC2021 is indeed breaking with respect to -XHaskell2010 :)
2021-11-19 20:05:42 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2021-11-19 20:05:50 +0100pfurla(~pfurla@2804:14d:5c81:4104:7d84:ffec:9a44:a68d)
2021-11-19 20:06:32 +0100 <tomsmeding> that makes me agree mildly less with excluding TypeFamilies and GADTs in GHC2021
2021-11-19 20:07:03 +0100tomsmedingwas starting with "that makes me mildly more in favour of adding those extensions" but adding is not a good idea :p
2021-11-19 20:07:24 +0100 <dsal> What's the downside of GADTs?
2021-11-19 20:07:32 +0100 <tomsmeding> implies -XMonoLocalBinds, which is breaking
2021-11-19 20:07:33 +0100 <monochrom> I think the selection criteria were pragmatic rathan than "as a matter of inflexible high-horse principles".
2021-11-19 20:07:47 +0100 <dsal> I forget the whole graph of implies. heh
2021-11-19 20:07:48 +0100mimmy(~mimmy@146.70.75.190) (Ping timeout: 256 seconds)
2021-11-19 20:08:02 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-11-19 20:08:07 +0100 <tomsmeding> in particular, note that GADTSyntax _is_ in :)
2021-11-19 20:08:15 +0100 <monochrom> A good balance of "how many people want it" and "how compatible".
2021-11-19 20:08:22 +0100 <tomsmeding> which is not very useful IMO, but subjective
2021-11-19 20:08:28 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-19 20:08:39 +0100 <tomsmeding> monochrom: which is a fairly good way of deciding this, perhaps
2021-11-19 20:08:58 +0100 <monochrom> Some people think that the GADT syntax is clearer, even for ADTs.
2021-11-19 20:10:53 +0100 <monochrom> The disagreement is between "BNF-like syntax" and "spell out the type sigs of constructors"
2021-11-19 20:11:28 +0100zincy_(~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3)
2021-11-19 20:11:31 +0100 <tomsmeding> a positive point of GADT syntax is that it makes explicit that the constructors are functions, and can be used and partially applied as such
2021-11-19 20:11:47 +0100 <tomsmeding> which might be useful for learnerS?
2021-11-19 20:11:50 +0100 <tomsmeding> s/S/s/
2021-11-19 20:11:56 +0100 <davean> I think not having to formats is clearer, but I use AST type generally - never broke the habit.
2021-11-19 20:12:03 +0100 <davean> *two formats
2021-11-19 20:12:46 +0100 <c_wraith> It makes it easier to see that constructors are functions, but bizarrely harder to see that they can be used for pattern matching
2021-11-19 20:13:01 +0100 <tomsmeding> good point
2021-11-19 20:13:15 +0100 <davean> I just think you state both things and get it axiomaticly so seeing isn't relivent
2021-11-19 20:13:30 +0100 <c_wraith> I just mean the same argument works both directions
2021-11-19 20:13:41 +0100 <davean> and I think neither argument is relivent :)
2021-11-19 20:13:45 +0100 <c_wraith> So neither is really better
2021-11-19 20:13:49 +0100 <tomsmeding> in which case, normal ADT syntax is shorter :)
2021-11-19 20:14:01 +0100 <davean> c_wraith: I think GADT is better, because then we don't need two
2021-11-19 20:14:09 +0100 <davean> (still use AST typically)
2021-11-19 20:14:21 +0100 <monochrom> See, who dares to say aloud "BNF unclear" >:)
2021-11-19 20:15:04 +0100 <davean> monochrom: hum?
2021-11-19 20:15:35 +0100 <monochrom> But I'm also a worst-of-both-worlds person, in addition to being pessimistic. I say that one should define an ADT by writing both syntaxes, both are required, and the compiler gets the pleasure of telling you they don't match up.
2021-11-19 20:15:36 +0100 <geekosaur> bnf is clearer if you're used to it. it has certainly confused those who aren't, in my experience
2021-11-19 20:17:17 +0100 <davean> The only part unclear about BNF in my oppinion is which damn one?
2021-11-19 20:17:32 +0100 <monochrom> heh
2021-11-19 20:17:32 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3)
2021-11-19 20:18:29 +0100Guest99(~Guest99@pool-100-8-45-127.nwrknj.fios.verizon.net)
2021-11-19 20:18:46 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-11-19 20:20:10 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-19 20:20:38 +0100max22-(~maxime@2a01cb08833598003c399b41b69f08ec.ipv6.abo.wanadoo.fr) (Ping timeout: 260 seconds)
2021-11-19 20:21:48 +0100 <monochrom> Naaawwww! This is the better syntax: The notation for formation rules in natural deduction.
2021-11-19 20:22:58 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection)
2021-11-19 20:23:24 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2021-11-19 20:25:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-11-19 20:28:10 +0100 <c_wraith> just require all data types be written as a fold
2021-11-19 20:29:43 +0100mimmy(~mimmy@146.70.75.189)
2021-11-19 20:30:47 +0100 <monochrom> How would that look? Would it look like "forall r. r -> (Int -> Char -> r) -> r" standing for "data Foo = C0 | C1 Int Char"?
2021-11-19 20:31:08 +0100 <c_wraith> yep!
2021-11-19 20:31:35 +0100 <monochrom> Because "data Foo where {C0 :: Foo; C1 :: Int -> Char -> Foo}" comes very close to that. Just s/r/Foo/ essentially.
2021-11-19 20:31:57 +0100Killirse(~Killirse@146.120.222.5)
2021-11-19 20:31:59 +0100unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
2021-11-19 20:36:43 +0100slice(~slice@user/slice) (Quit: zzz)
2021-11-19 20:37:52 +0100Killirse(~Killirse@146.120.222.5) (Remote host closed the connection)
2021-11-19 20:39:19 +0100 <zincy_> davean: hey
2021-11-19 20:40:51 +0100 <monochrom> You have tipped my balance towards the GADT-syntax side. :)
2021-11-19 20:42:24 +0100 <monochrom> Regarding "each syntax makes some other side less clear", I have never been bothered by that, my teaching material has always needed to spell out all sides, it can't be helped.
2021-11-19 20:48:56 +0100alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-11-19 20:49:15 +0100alzgh(~alzgh@user/alzgh)
2021-11-19 20:50:11 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection)
2021-11-19 20:50:35 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2021-11-19 20:54:43 +0100allbery_b(~geekosaur@xmonad/geekosaur)
2021-11-19 20:54:43 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-11-19 20:54:46 +0100allbery_bgeekosaur
2021-11-19 20:55:06 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Read error: Connection reset by peer)
2021-11-19 20:55:24 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-11-19 20:57:39 +0100pfurla(~pfurla@2804:14d:5c81:4104:7d84:ffec:9a44:a68d) (Quit: gone to sleep. ZZZzzz…)
2021-11-19 20:58:44 +0100vysn(~vysn@user/vysn)
2021-11-19 21:00:11 +0100Guest99(~Guest99@pool-100-8-45-127.nwrknj.fios.verizon.net) (Quit: Client closed)
2021-11-19 21:02:39 +0100chisui(~chisui@2001:16b8:6687:d600:ec27:7b7a:c771:651e)
2021-11-19 21:03:00 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:4346:8725:e95d:ae21)
2021-11-19 21:05:03 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:4346:8725:e95d:ae21) (Client Quit)
2021-11-19 21:05:26 +0100juhp(~juhp@128.106.188.82) (Ping timeout: 260 seconds)
2021-11-19 21:06:00 +0100DNH(~DNH@2a02:8108:1100:16d8:cc0f:3c1b:cb:bfd6)
2021-11-19 21:07:51 +0100juhp(~juhp@128.106.188.82)
2021-11-19 21:07:57 +0100nkatte(~nkatte@2804:14c:7980:8c85::bde6)
2021-11-19 21:08:16 +0100nkatte(~nkatte@2804:14c:7980:8c85::bde6) (Remote host closed the connection)
2021-11-19 21:10:53 +0100 <tomsmeding> EvanR: I collected some more data on ghci's evaluation behaviour https://tomsmeding.com/f/ghci-evaluation.html
2021-11-19 21:11:02 +0100 <tomsmeding> tldr it's a mess
2021-11-19 21:11:13 +0100 <tomsmeding> monochrom: the sadist in you may like this as well
2021-11-19 21:11:19 +0100 <EvanR> lol it's at least 3 dimensional now
2021-11-19 21:11:21 +0100 <maerwald> davean: you can express GADTs with normal syntax
2021-11-19 21:11:34 +0100 <maerwald> so I don't understand that point
2021-11-19 21:12:06 +0100 <tomsmeding> EvanR: yes :p
2021-11-19 21:12:18 +0100 <EvanR> I see there are 3 outcomes
2021-11-19 21:12:23 +0100mimmy(~mimmy@146.70.75.189) (Ping timeout: 264 seconds)
2021-11-19 21:12:26 +0100 <EvanR> _, _:_, and "abc"
2021-11-19 21:12:43 +0100 <tomsmeding> note: I switched to characters for the thing to be monomorphic even without a typesig
2021-11-19 21:13:15 +0100 <maerwald> https://paste.tomsmeding.com/3fh551uA
2021-11-19 21:13:31 +0100 <EvanR> why is there a difference between map and id >_<
2021-11-19 21:13:45 +0100 <geekosaur> hm. RULES?
2021-11-19 21:13:58 +0100 <EvanR> RULES fires in ghci?
2021-11-19 21:14:06 +0100 <geekosaur> dunno tbh
2021-11-19 21:14:11 +0100 <tomsmeding> maerwald: Illegal equational constraint a ~ String (Use GADTs or TypeFamilies to permit this)
2021-11-19 21:14:13 +0100 <geekosaur> just the first thing that came to mind
2021-11-19 21:14:14 +0100 <tomsmeding> that is kind of ironic
2021-11-19 21:14:37 +0100 <tomsmeding> geekosaur: I suspect https://gitlab.haskell.org/ghc/ghc/-/issues/10160
2021-11-19 21:14:58 +0100 <maerwald> tomsmeding: ?
2021-11-19 21:15:10 +0100 <tomsmeding> in particular, a subexpression that is a direct application of a constructor to arguments is already in WHNF without evaluation
2021-11-19 21:15:42 +0100 <tomsmeding> maerwald: no point, because it isn't related to the syntax question; just funny that you currently need the GADTs extension to write the non-GADT syntax
2021-11-19 21:15:58 +0100 <maerwald> you don't... TypeFamilies and ExistentialQuantification is enough
2021-11-19 21:16:00 +0100 <tomsmeding> though that makes sense I guess, because the extension is about the functionality, and GADTSyntax is about the syntax, ostensibly
2021-11-19 21:16:09 +0100 <geekosaur> I think there's a proposal to separate out equality constraints into their own LANGUAGE pragma
2021-11-19 21:16:17 +0100 <geekosaur> I know it's been discussed, at least
2021-11-19 21:17:02 +0100 <geekosaur> since it's kinda a wart that less than obvious LANGUAGE pragmas are needed to enable them
2021-11-19 21:17:09 +0100 <maerwald> I really dislike jumping from normal to GADT style... using the type equality constraint also enlightens the reader about what this actually does under the hood
2021-11-19 21:17:41 +0100rusty(~rustyboy@82.77.237.221)
2021-11-19 21:18:23 +0100 <tomsmeding> EvanR: if you want to try at home: https://paste.tomsmeding.com/ERDspJLB
2021-11-19 21:18:55 +0100 <EvanR> I almost pasted that into cmd.exe
2021-11-19 21:19:01 +0100 <tomsmeding> heh
2021-11-19 21:19:08 +0100 <tomsmeding> sorry, bash
2021-11-19 21:19:27 +0100 <EvanR> I can try on mac
2021-11-19 21:19:40 +0100 <tomsmeding> no git bash on your windows?
2021-11-19 21:19:46 +0100pfurla(~pfurla@2804:14d:5c81:4104:7d84:ffec:9a44:a68d)
2021-11-19 21:20:00 +0100 <EvanR> lets not go into the problems with my windows
2021-11-19 21:21:58 +0100 <monochrom> maerwald: I am not sure that "a ~ [a]" is a good idea.
2021-11-19 21:22:39 +0100 <EvanR> some of the tests produced results and some gave parse error on input ';' and parse error on input '='
2021-11-19 21:22:57 +0100 <tomsmeding> that is odd
2021-11-19 21:23:24 +0100 <EvanR> https://paste.tomsmeding.com/g6XzuV1F
2021-11-19 21:23:28 +0100 <tomsmeding> EvanR: if you remove the " | $GHCI | ..." stuff on line 11, does the output look sensible?
2021-11-19 21:24:02 +0100 <tomsmeding> EvanR: what's the version of your ghci there
2021-11-19 21:24:06 +0100 <EvanR> yep
2021-11-19 21:24:18 +0100 <EvanR> 7.10.2
2021-11-19 21:24:41 +0100 <tomsmeding> try entering 'a = 42' in that
2021-11-19 21:25:10 +0100 <tomsmeding> I think the support for bare variable declarations without let is newer than that
2021-11-19 21:25:31 +0100 <EvanR> yeah not allowed
2021-11-19 21:26:14 +0100 <tomsmeding> so all "Without let" cases are not applicable in your version of ghci
2021-11-19 21:26:28 +0100 <EvanR> https://paste.tomsmeding.com/zzdbhY08
2021-11-19 21:26:49 +0100 <EvanR> by removing that part maybe the script makes no sense xD
2021-11-19 21:27:09 +0100 <tomsmeding> you can let it use let always by removing the "" in the 'for letprefix' line
2021-11-19 21:28:49 +0100 <EvanR> well I see it doesn't show any sprint results anymore
2021-11-19 21:30:24 +0100 <zincy_> In the machines library what is the difference between Wye and Tee?
2021-11-19 21:30:40 +0100 <zincy_> Wye is "non-deterministic"
2021-11-19 21:31:06 +0100 <zincy_> Does this just mean that we don't know the order of the input events i.e they arent sequenced LRLR
2021-11-19 21:31:25 +0100mimmy(~mimmy@146.70.75.190)
2021-11-19 21:31:37 +0100 <tomsmeding> EvanR: I suddenly see a pattern in my tables. Recall https://tomsmeding.com/f/ghci-evaluation.html . The 'Without typesig' column, as well as the 'With let' rows of the 'With typesig' column, are consistent: before evaluation, only the bare ['a','b','c'] is in WHNF, and after evaluation, the 'id' variant immedately returns the fully applied constructor, and the 'map' variant produces a fully lazy
2021-11-19 21:31:37 +0100 <tomsmeding> result.
2021-11-19 21:31:59 +0100 <tomsmeding> The only weird cases are the 'Without let' cases in the 'With typesig' column: i.e. a :: [Char] ; a = ...
2021-11-19 21:32:19 +0100 <EvanR> i didn't think the type sig mattered...
2021-11-19 21:33:04 +0100 <dolio> zincy_: Tee only has 'read from left' and 'read from right'. Wye has, 'read from either input; I don't care which.'
2021-11-19 21:34:24 +0100DNH(~DNH@2a02:8108:1100:16d8:cc0f:3c1b:cb:bfd6) (Ping timeout: 268 seconds)
2021-11-19 21:35:13 +0100 <dolio> So it's impossible for Tee to read from whichever is currently available, for instance.
2021-11-19 21:35:56 +0100acidjnk(~acidjnk@2001:16b8:671e:6000:64a5:6a76:f3c4:2f23)
2021-11-19 21:36:42 +0100fresheyeball(~fresheyeb@c-76-25-93-164.hsd1.co.comcast.net)
2021-11-19 21:37:06 +0100 <dolio> Tee is for things like zipping two streams, and Wye is for interleaving.
2021-11-19 21:37:30 +0100chisui(~chisui@2001:16b8:6687:d600:ec27:7b7a:c771:651e) (Quit: Client closed)
2021-11-19 21:37:50 +0100 <zincy_> So Wye there is no order to sequences of input reading
2021-11-19 21:38:25 +0100 <dolio> You can still request particular sides with Wye. But you can't do something unordered with Tee.
2021-11-19 21:39:16 +0100 <zincy_> Do you know of any good examples for getting started writing a card game in Machines?
2021-11-19 21:39:36 +0100 <dolio> I don't.
2021-11-19 21:39:54 +0100 <zincy_> ah no worries
2021-11-19 21:40:57 +0100 <zincy_> If I want to model a player which has state and has a moore machine as input representing the game state should the player be written as a custom plan?
2021-11-19 21:41:52 +0100 <zincy_> Actions would come in from a source to the machine, but also the other moore machine for game state would
2021-11-19 21:41:56 +0100 <zincy_> be another input
2021-11-19 21:43:38 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:f4b8:2aef:8963:2af8)
2021-11-19 21:43:57 +0100zer0bitz(~zer0bitz@dsl-hkibng31-54fabc-15.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-11-19 21:44:50 +0100 <dolio> I'm not sure. I haven't thought about machines in a long time. I just remember the basics.
2021-11-19 21:45:21 +0100 <zincy_> no worries
2021-11-19 21:45:31 +0100 <EvanR> an interactive coupling between a player and a computer game, or two players, or two computers could be modeled with a shared history that they simultaneously try to add to. With the catch that whoever adds "first" (prior in time) forces the other guy to recompute their move (they are interrupted)
2021-11-19 21:45:45 +0100 <zincy_> I wonder if I can get away with using streamly instead
2021-11-19 21:45:46 +0100 <EvanR> if both sides add to the same point in time, no problem
2021-11-19 21:46:42 +0100 <zincy_> interesting
2021-11-19 21:47:13 +0100 <EvanR> also either side can wait forever until something changes
2021-11-19 21:47:16 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
2021-11-19 21:47:58 +0100 <monochrom> It may be useful to have a machine for the game master.
2021-11-19 21:49:17 +0100 <zincy_> yeah the game master is essentially a moore machine
2021-11-19 21:51:28 +0100 <monochrom> RPGs taught me the value of spelling out that there is a game master, and if the game needs someone to do something but it would be wrong to ask any player to do it, then let the game master do it.
2021-11-19 21:51:30 +0100favonia(~favonia@user/favonia) (Ping timeout: 256 seconds)
2021-11-19 21:51:32 +0100yauhsien(~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2021-11-19 21:52:17 +0100 <monochrom> RPG : game master : players :: Haskell : IO : pure sublanguage
2021-11-19 21:52:53 +0100 <EvanR> you hope IO is not a killer DM
2021-11-19 21:53:06 +0100 <int-e> So only the DM is allowed to cuss?
2021-11-19 21:53:11 +0100 <monochrom> Including the role of IO as the kitchen sink for every dirty thing that doesn't look like pure FP :)
2021-11-19 21:53:49 +0100 <monochrom> You want IORefs? IO. You want threads? IO. You want STM? IO.
2021-11-19 21:53:53 +0100 <int-e> (if it isn't flawed then it isn't an analogy)
2021-11-19 21:54:09 +0100 <monochrom> Ugh I tend to make flawless analogies.
2021-11-19 21:54:46 +0100 <monochrom> What I call analogies, mathematicians say "homomorphism", sometimes even "isomorphism".
2021-11-19 21:54:54 +0100 <monochrom> Unlike normal people analogies.
2021-11-19 21:55:38 +0100 <EvanR> isn't that javascript, analogies are called isomorphisms xD
2021-11-19 21:55:49 +0100 <monochrom> Ugh yikes haha
2021-11-19 21:56:37 +0100Maxdamantus(~Maxdamant@user/maxdamantus) (Ping timeout: 256 seconds)
2021-11-19 21:58:11 +0100pfurla(~pfurla@2804:14d:5c81:4104:7d84:ffec:9a44:a68d) (Quit: gone to sleep. ZZZzzz…)
2021-11-19 22:00:17 +0100xff0x(~xff0x@2001:1a81:53ef:fb00:5000:2c7a:ffb3:dbe2) (Remote host closed the connection)
2021-11-19 22:00:33 +0100xff0x(~xff0x@2001:1a81:53ef:fb00:e439:7cf7:eb8b:77aa)
2021-11-19 22:00:46 +0100zincy_(~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3) (Remote host closed the connection)
2021-11-19 22:01:16 +0100deadmarshal(~deadmarsh@95.38.116.147)
2021-11-19 22:03:58 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2021-11-19 22:08:15 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:f4b8:2aef:8963:2af8) (Remote host closed the connection)
2021-11-19 22:13:01 +0100 <tomsmeding> EvanR: https://gitlab.haskell.org/ghc/ghc/-/issues/20687#note_392794
2021-11-19 22:13:47 +0100xff0x(~xff0x@2001:1a81:53ef:fb00:e439:7cf7:eb8b:77aa) (Remote host closed the connection)
2021-11-19 22:14:04 +0100xff0x(~xff0x@2001:1a81:53ef:fb00:5d2d:5d37:b74:c17b)
2021-11-19 22:15:13 +0100 <EvanR> so, it's like quicksand. The only thing you can do is nothing, at least it won't get worse
2021-11-19 22:15:39 +0100sm2n(~sm2n@user/sm2n) (Read error: Connection reset by peer)
2021-11-19 22:15:47 +0100dsrt^(~dsrt@68.101.63.101)
2021-11-19 22:16:06 +0100sm2n(~sm2n@user/sm2n)
2021-11-19 22:17:57 +0100 <tomsmeding> accurate :)
2021-11-19 22:18:07 +0100pfurla(~pfurla@2804:14d:5c81:4104:7d84:ffec:9a44:a68d)
2021-11-19 22:20:38 +0100nvmd(~nvmd@user/nvmd) (Quit: Later, nerds.)
2021-11-19 22:21:06 +0100turlando(~turlando@user/turlando) (Ping timeout: 260 seconds)
2021-11-19 22:21:14 +0100turlando(~turlando@93-42-250-112.ip89.fastwebnet.it)
2021-11-19 22:21:14 +0100turlando(~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
2021-11-19 22:21:14 +0100turlando(~turlando@user/turlando)
2021-11-19 22:22:25 +0100xff0x(~xff0x@2001:1a81:53ef:fb00:5d2d:5d37:b74:c17b) (Remote host closed the connection)
2021-11-19 22:22:43 +0100xff0x(~xff0x@2001:1a81:53ef:fb00:2df4:3045:88e8:7284)
2021-11-19 22:27:25 +0100mei(~mei@user/mei) (Ping timeout: 268 seconds)
2021-11-19 22:30:27 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-11-19 22:30:49 +0100zer0bitz(~zer0bitz@dsl-hkibng31-54fabc-15.dhcp.inet.fi)
2021-11-19 22:32:39 +0100mjrosenb(~mjrosenb@pool-108-54-97-96.nycmny.fios.verizon.net)
2021-11-19 22:35:35 +0100rusty(~rustyboy@82.77.237.221) (Quit: Leaving)
2021-11-19 22:36:41 +0100vysn(~vysn@user/vysn) (Ping timeout: 268 seconds)
2021-11-19 22:40:34 +0100sm2n(~sm2n@user/sm2n) (Read error: Connection reset by peer)
2021-11-19 22:40:51 +0100fresheyeball(~fresheyeb@c-76-25-93-164.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
2021-11-19 22:41:36 +0100sm2n(~sm2n@user/sm2n)
2021-11-19 22:43:25 +0100__monty__(~toonn@user/toonn)
2021-11-19 22:46:49 +0100michalz(~michalz@185.246.204.119) (Remote host closed the connection)
2021-11-19 22:49:46 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-11-19 22:53:05 +0100rusty(~rustyboy@82.77.237.221)
2021-11-19 22:53:19 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 268 seconds)
2021-11-19 22:54:02 +0100rusty(~rustyboy@82.77.237.221) (Client Quit)
2021-11-19 22:54:28 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-19 22:58:11 +0100aegon(~mike@174.127.249.180)
2021-11-19 23:01:07 +0100BobFang1992(~textual@2a01:4b00:87fe:be00:2087:7385:664a:83cd)
2021-11-19 23:08:38 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:f4b8:2aef:8963:2af8)
2021-11-19 23:09:17 +0100 <dsal> I refuse to learn where `asum` is
2021-11-19 23:09:28 +0100 <Hecate> % :i asum
2021-11-19 23:09:29 +0100 <yahb> Hecate: asum :: (Foldable t, Alternative f) => t (f a) -> f a -- Defined in `Data.Foldable'
2021-11-19 23:09:39 +0100 <Hecate> dsal: it's okay, the bot knows it for you
2021-11-19 23:09:46 +0100 <dsal> I used @hoogle in pm
2021-11-19 23:09:59 +0100 <dsal> It's not my first or second choice.
2021-11-19 23:13:10 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:f4b8:2aef:8963:2af8) (Ping timeout: 265 seconds)
2021-11-19 23:14:21 +0100BobFang1992bobfang1992_
2021-11-19 23:14:54 +0100 <dsal> Turns out I was just reinventing optional anyway.
2021-11-19 23:15:50 +0100 <dsal> My first attempt was like `((Just <$> p) <|> pure Nothing)` Then I translated it from lisp to `asum [Just <$> p, pure Nothing]` which is `optional p`
2021-11-19 23:16:15 +0100rusty(~rustyboy@82.77.237.221)
2021-11-19 23:17:24 +0100 <jle`> is there a way to have cabal install default to --overwrite-policy=always ?
2021-11-19 23:18:05 +0100 <sclv> you can set it in the ~/.cabal/config file
2021-11-19 23:18:23 +0100 <jle`> ooh thanks :)
2021-11-19 23:19:55 +0100mimmy(~mimmy@146.70.75.190) (Ping timeout: 256 seconds)
2021-11-19 23:20:02 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2021-11-19 23:21:00 +0100Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
2021-11-19 23:24:21 +0100lbseale_(~ep1ctetus@user/ep1ctetus)
2021-11-19 23:26:01 +0100 <[itchyjunk]> noob question, i get this error : https://bpa.st/WGRA. i thought maybe i am not using runghc properly but trying to compile gives me an issue too
2021-11-19 23:26:08 +0100 <[itchyjunk]> my code is `sum a b = a + b`
2021-11-19 23:27:09 +0100 <sm> whats in sumFunction.hs ?
2021-11-19 23:27:14 +0100pfurla(~pfurla@2804:14d:5c81:4104:7d84:ffec:9a44:a68d) (Quit: gone to sleep. ZZZzzz…)
2021-11-19 23:27:54 +0100 <[itchyjunk]> just that one line :(
2021-11-19 23:28:01 +0100 <[itchyjunk]> it seems i need to use main somehow
2021-11-19 23:28:28 +0100lbseale(~ep1ctetus@user/ep1ctetus) (Ping timeout: 268 seconds)
2021-11-19 23:28:42 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-11-19 23:29:19 +0100 <pavonia> main = putStrLn $ sum 2 3
2021-11-19 23:29:23 +0100 <sm> ah yes. runghc will run the `main` function
2021-11-19 23:29:23 +0100allbery_b(~geekosaur@xmonad/geekosaur)
2021-11-19 23:29:23 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-11-19 23:29:26 +0100allbery_bgeekosaur
2021-11-19 23:29:32 +0100 <pavonia> * main = putStrLn $ show $ sum 2 3
2021-11-19 23:29:34 +0100 <[itchyjunk]> ah
2021-11-19 23:30:08 +0100 <monochrom> If you don't want to have a "main", consider "ghc -e" instead.
2021-11-19 23:31:11 +0100smwonders how to force brick to render a widget once, to generate a viewport, so I can adjust the scroll position, before first rendering the screen
2021-11-19 23:31:45 +0100mimmy(~mimmy@146.70.75.189)
2021-11-19 23:32:02 +0100deadmarshal(~deadmarsh@95.38.116.147) (Ping timeout: 260 seconds)
2021-11-19 23:32:11 +0100Maxdamantus(~Maxdamant@user/maxdamantus)
2021-11-19 23:32:42 +0100 <monochrom> Either "ghc -e 'sum 2 3' sumFunction.hs" or "ghc sumFunction.hs -e 'sum 2 3'"
2021-11-19 23:34:39 +0100 <[itchyjunk]> ah, guess it also doesn't like "sum", changing to add with what you suggest works. or using that main
2021-11-19 23:34:50 +0100 <monochrom> Yes, that too.
2021-11-19 23:34:57 +0100 <[itchyjunk]> interesting, the random tutorials i am looking at assumes i do everything inside ghci so it never mentions these things
2021-11-19 23:35:00 +0100 <monochrom> > sum [3,1,4,1,5]
2021-11-19 23:35:01 +0100 <lambdabot> 14
2021-11-19 23:35:03 +0100 <byorgey> sm: I have wondered things like that too. I'm not sure it's possible.
2021-11-19 23:35:14 +0100xff0x(~xff0x@2001:1a81:53ef:fb00:2df4:3045:88e8:7284) (Ping timeout: 260 seconds)
2021-11-19 23:35:39 +0100lbseale_lbseale
2021-11-19 23:35:43 +0100xff0x(~xff0x@2001:1a81:53ef:fb00:42c4:fa07:876d:825a)
2021-11-19 23:36:03 +0100 <sm> byorgey: cool. https://github.com/jtdaugherty/brick/issues/170 is about this but I'm not quite seeing the solution
2021-11-19 23:38:00 +0100 <[itchyjunk]> i renamed my file and function and now it suddenly doesn't work again ;_;
2021-11-19 23:38:11 +0100 <sm> not a quick fix it seems, I'll come back it
2021-11-19 23:38:48 +0100 <[itchyjunk]> https://bpa.st/2JGA
2021-11-19 23:38:55 +0100 <[itchyjunk]> https://bpa.st/UGMQ
2021-11-19 23:39:02 +0100 <[itchyjunk]> code and error respectively
2021-11-19 23:39:48 +0100 <pavonia> What's the name of the file?
2021-11-19 23:39:58 +0100 <[itchyjunk]> addFunction.hs
2021-11-19 23:40:10 +0100 <monochrom> "Did you save?"
2021-11-19 23:40:14 +0100 <[itchyjunk]> yes
2021-11-19 23:40:57 +0100 <pavonia> It really looks like you're compiling the wrong file
2021-11-19 23:41:12 +0100 <monochrom> Works for me.
2021-11-19 23:42:06 +0100 <[itchyjunk]> ah yes i was editing the wrong file maybe
2021-11-19 23:42:14 +0100rusty(~rustyboy@82.77.237.221) (Remote host closed the connection)
2021-11-19 23:42:39 +0100 <[itchyjunk]> i was :(
2021-11-19 23:43:04 +0100 <[itchyjunk]> so is it best practice to just figure out how to include main everywhere? i'll need that eventually?
2021-11-19 23:43:06 +0100 <monochrom> BTW our favourite https://paste.tomsmeding.com supports putting multiple files/blocks on the same page so no one needs to keep switching tabs any more.
2021-11-19 23:43:58 +0100 <byorgey> [itchyjunk]: no, you don't need main unless you are writing an application you want to compile to an executable.
2021-11-19 23:44:11 +0100 <monochrom> It is best practice to learn about "main". But it is not best practice to assume that one size fits all.
2021-11-19 23:44:49 +0100 <[itchyjunk]> hmm
2021-11-19 23:45:01 +0100 <monochrom> "it depends" is the only correct rule of thumb, best practice, state of the art, cream of the crop, and correct answer.
2021-11-19 23:45:03 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-11-19 23:45:16 +0100retro_(~retro@97e2ba2e.skybroadband.com)
2021-11-19 23:45:45 +0100 <[itchyjunk]> do beginners just write functions, load it into ghci and test it there?
2021-11-19 23:45:59 +0100 <byorgey> [itchyjunk]: yes, for learning, instead of using runghc / ghc -e, I recommend testing in ghci
2021-11-19 23:46:10 +0100 <monochrom> Yes, most do, it's OK.
2021-11-19 23:46:12 +0100 <byorgey> experts also do that.
2021-11-19 23:46:13 +0100 <pavonia> That's what the pros do too 8)
2021-11-19 23:47:17 +0100 <monochrom> Writing "main" early is also OK. It just means a different path of learning. Some books teach it that way.
2021-11-19 23:48:05 +0100 <hpc> whatever happens to give you the tightest write/test/debug loop in the moment
2021-11-19 23:48:16 +0100 <monochrom> Even for Python, both teaching camps co-exist.
2021-11-19 23:48:49 +0100 <monochrom> And in the case of PHP and Javascript, "what main?".
2021-11-19 23:48:49 +0100retroid_(~retro@97e2ba2e.skybroadband.com) (Ping timeout: 268 seconds)
2021-11-19 23:49:10 +0100bobfang1992_(~textual@2a01:4b00:87fe:be00:2087:7385:664a:83cd) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-11-19 23:49:15 +0100 <[itchyjunk]> I am in a "OOP" class and it's being taught using java. that does have the `main() { }` thing going as well
2021-11-19 23:49:52 +0100 <geekosaur> most compiled languages do
2021-11-19 23:51:39 +0100 <[itchyjunk]> the signature for my `add a b = a + b` should takes a value `b` of type `int->int` and applies `a` of type `int` ? so `add :: int a => int->(int->int)` would make sense no?
2021-11-19 23:52:05 +0100 <monochrom> No.
2021-11-19 23:52:54 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net) (Remote host closed the connection)
2021-11-19 23:52:55 +0100 <monochrom> Either "Integer -> Integer -> Integer" to KISS, or "Num a => a -> a -> a" if you're ready for type classes.
2021-11-19 23:53:54 +0100 <monochrom> b is not going to be Integer->Integer.
2021-11-19 23:53:56 +0100 <[itchyjunk]> hmm google isn't giving me a good result for `haskell KILL`
2021-11-19 23:54:18 +0100 <geekosaur> ?
2021-11-19 23:54:25 +0100 <monochrom> Yeah that would sound pretty murderous. Google has reported you to the police!
2021-11-19 23:54:29 +0100 <[itchyjunk]> KISS*
2021-11-19 23:54:38 +0100 <geekosaur> "KISS" = "keep it simple, s…"
2021-11-19 23:54:40 +0100 <monochrom> keep it simple and stupid
2021-11-19 23:56:02 +0100xff0x(~xff0x@2001:1a81:53ef:fb00:42c4:fa07:876d:825a) (Ping timeout: 240 seconds)
2021-11-19 23:56:17 +0100 <[itchyjunk]> ah
2021-11-19 23:56:41 +0100 <EvanR> keep it stupid simple
2021-11-19 23:56:50 +0100 <monochrom> A long forgotten virtue.
2021-11-19 23:56:55 +0100xff0x(~xff0x@2001:1a81:53ef:fb00:8923:f787:bbfb:445e)
2021-11-19 23:56:57 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-11-19 23:57:17 +0100 <[itchyjunk]> i thought `+` had the type int->(int->int) and you start evaluating from the right so + 2 would give me a value of type (int -> int) and 2 + 2 would be int -> (int -> int)
2021-11-19 23:57:32 +0100evocatus(~evocatus@213.193.2.105)
2021-11-19 23:57:39 +0100 <[itchyjunk]> i was trying to apply that to the sum as well
2021-11-19 23:57:53 +0100 <Rembane_> :t (+) -- if we're lucky this will be a hint
2021-11-19 23:57:54 +0100 <lambdabot> Num a => a -> a -> a
2021-11-19 23:58:05 +0100 <monochrom> Nah, "2+2" is syntax sugar for "((+) 2) 2".
2021-11-19 23:58:31 +0100 <monochrom> Similarly "(add 2) 3".
2021-11-19 23:59:36 +0100 <[itchyjunk]> hmmmmmm