2022/06/18

2022-06-18 00:00:13 +0000ystael_(~ystael@user/ystael) (Quit: Lost terminal)
2022-06-18 00:00:59 +0000 <sayola> so, any ideas?
2022-06-18 00:02:03 +0000 <EvanR> a compiler plugin might let you do some unrecommended things
2022-06-18 00:02:10 +0000 <EvanR> at compile time
2022-06-18 00:02:25 +0000 <EvanR> I guess template haskell would be the first stop on that road
2022-06-18 00:02:43 +0000 <geekosaur> you would need either associated types or functional dependencies for a multiparameter typeclass to resolve sanely
2022-06-18 00:02:58 +0000 <geekosaur> but you'd need to think through how you want it to work
2022-06-18 00:03:30 +0000 <geekosaur> otherwise, no, it won't be abloe to work types out by itself even with defaulting; multiparameter typeclasses present far too many options
2022-06-18 00:04:20 +0000alp__(~alp@user/alp)
2022-06-18 00:08:00 +0000 <sayola> fundeps didnt work out so far, sadly
2022-06-18 00:09:25 +0000 <sayola> i dunno about template haskell hmhmm
2022-06-18 00:10:59 +0000 <EvanR> it lets you generate source code during compile time, perhaps in stages, but I don't know if you can access the type checker at the same time
2022-06-18 00:12:43 +0000 <sayola> i think it would do the trick of generating a function from another function without failing?
2022-06-18 00:13:31 +0000 <sayola> how does template haskell see ambiguous types though?
2022-06-18 00:14:20 +0000chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2022-06-18 00:14:58 +0000chexum(~quassel@gateway/tor-sasl/chexum)
2022-06-18 00:18:18 +0000causal(~user@50.35.83.177) (Quit: WeeChat 3.5)
2022-06-18 00:19:08 +0000alexhandy(~AndChat62@user/trace) (Read error: Connection reset by peer)
2022-06-18 00:20:01 +0000kayvank(~user@52-119-115-185.PUBLIC.monkeybrains.net) (Remote host closed the connection)
2022-06-18 00:20:59 +0000azimut(~azimut@gateway/tor-sasl/azimut)
2022-06-18 00:21:38 +0000werneta(~werneta@137.79.237.183) (Ping timeout: 244 seconds)
2022-06-18 00:23:35 +0000werneta(~werneta@137.79.231.39)
2022-06-18 00:25:20 +0000alexhandy(~AndChat62@user/trace)
2022-06-18 00:25:23 +0000Tuplanolla(~Tuplanoll@91-159-68-181.elisa-laajakaista.fi) (Quit: Leaving.)
2022-06-18 00:29:01 +0000img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-06-18 00:30:04 +0000alexhandy(~AndChat62@user/trace) (Read error: Connection reset by peer)
2022-06-18 00:37:35 +0000bontaq(~user@ool-45779fe5.dyn.optonline.net)
2022-06-18 00:41:06 +0000machinedgod(~machinedg@96.53.10.178)
2022-06-18 00:41:23 +0000fserucas(~fserucas@119.65.114.89.rev.vodafone.pt) (Ping timeout: 256 seconds)
2022-06-18 00:43:49 +0000harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
2022-06-18 00:45:41 +0000img(~img@user/img)
2022-06-18 00:57:31 +0000kenaryn(~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr)
2022-06-18 00:58:25 +0000quarkyalice(~quarkyali@user/quarkyalice)
2022-06-18 01:04:20 +0000leeb(~leeb@KD106154142206.au-net.ne.jp)
2022-06-18 01:06:15 +0000wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-06-18 01:06:15 +0000wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-06-18 01:06:15 +0000wroathe(~wroathe@user/wroathe)
2022-06-18 01:11:49 +0000albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-06-18 01:13:22 +0000 <kenaryn> Hello. Does `|` operator stand for "not and" or "exclusive or" please?
2022-06-18 01:14:23 +0000 <geekosaur> `|` is not an operator. in most cases it can be read as "such that". did you mean `||`? or perhaps `.|.`?
2022-06-18 01:16:08 +0000 <geekosaur> what context are you talking about?
2022-06-18 01:16:13 +0000jmdaemon(~jmdaemon@user/jmdaemon) (Quit: ZNC 1.8.2 - https://znc.in)
2022-06-18 01:17:56 +0000albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-06-18 01:17:58 +0000 <kenaryn> I have no immediate example, but it is used when enumerated several constructor data to define a type constructor.
2022-06-18 01:18:40 +0000 <geekosaur> okay, that usage approximates exclusive or
2022-06-18 01:19:33 +0000 <kenaryn> `data HsExpr p = HsVar ... | HsLit ... | hsApp ... | OpApp ...`
2022-06-18 01:19:33 +0000 <geekosaur> most of the other uses are things like guards, functional dependencies, and list comprehensions
2022-06-18 01:19:35 +0000 <kenaryn> Thank you.
2022-06-18 01:20:11 +0000 <kenaryn> It may be list comprehension related then.
2022-06-18 01:20:22 +0000 <geekosaur> no, this isn't a list comprehension
2022-06-18 01:20:52 +0000 <kenaryn> I'm still at chapter 5 it's too difficult to learn haskell alone.
2022-06-18 01:21:05 +0000Cupcakus(~Cupcakus@c-73-205-77-141.hsd1.fl.comcast.net)
2022-06-18 01:22:07 +0000 <mixfix41> oh which application
2022-06-18 01:22:18 +0000 <mixfix41> or only examples out the book?
2022-06-18 01:25:36 +0000 <kenaryn> I failed about 90% of the exercices of Chris Allen book. Despite the numerous claims of the authors, it does require a championship level of previous programming knowledge with a bachelor in type theory.
2022-06-18 01:26:45 +0000 <kenaryn> It is obvious why the procedural paradigm has taken over civil society and industry.
2022-06-18 01:27:39 +0000jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2022-06-18 01:30:46 +0000kimjetwav(~user@2607:fea8:2340:da00:710e:91e2:da2a:278a) (Remote host closed the connection)
2022-06-18 01:32:08 +0000 <dsal> Haha.
2022-06-18 01:33:15 +0000 <geekosaur> I'm calling you on that one: I still know zero type theory
2022-06-18 01:33:23 +0000 <dsal> It's really nice to approach production bugs with "can we make code with this class of bug no longer compile?"
2022-06-18 01:35:53 +0000jmdaemon(~jmdaemon@user/jmdaemon)
2022-06-18 01:35:57 +0000 <dsal> I use haskell for projects because I'm not smart enough to use anything else. It's been the easiest language I've worked in in production codebases, even when the code is… not super well written.
2022-06-18 01:37:12 +0000alexhandy(~AndChat62@user/trace)
2022-06-18 01:37:17 +0000alexhandy(~AndChat62@user/trace) (Read error: Connection reset by peer)
2022-06-18 01:37:36 +0000 <dsal> A lot of the code I work on is written by people who don't have much of a foundation in haskell and just mix up a bunch of effects and stuff. We have tools to help guide them into better practices, but we do end up with some weird stuff. But I can do large refactorings without a lot of effort and pretty much reveal bugs more than I introduce them.
2022-06-18 01:37:53 +0000 <dsal> (Or when I introduce bugs, it's *usually* because I didn't understand how something was supposed to work, not because the code I wrote didn't do what I wanted done)
2022-06-18 01:38:02 +0000Cupcakus(~Cupcakus@c-73-205-77-141.hsd1.fl.comcast.net) (Quit: WeeChat 2.8)
2022-06-18 01:40:09 +0000machinedgod(~machinedg@96.53.10.178) (Ping timeout: 248 seconds)
2022-06-18 01:45:40 +0000machinedgod(~machinedg@66.244.246.252)
2022-06-18 01:46:13 +0000nate4(~nate@98.45.169.16)
2022-06-18 01:47:03 +0000 <monochrom> I don't use type theory to write Haskell programs.
2022-06-18 01:47:19 +0000 <monochrom> When I use Lean to prove theorems, that's when I use type theory.
2022-06-18 01:48:11 +0000 <monochrom> People look to rationalize the status quo. It is obvious why civil society and industry are still stuck with the von Neumann model.
2022-06-18 01:48:39 +0000quarkyalice(~quarkyali@user/quarkyalice) (Quit: quarkyalice)
2022-06-18 01:50:58 +0000raym(~raym@user/raym) (Quit: quick kernel update and then we'll be back)
2022-06-18 01:51:15 +0000jinsun(~jinsun@user/jinsun)
2022-06-18 01:51:21 +0000nate4(~nate@98.45.169.16) (Ping timeout: 248 seconds)
2022-06-18 01:52:05 +0000 <Axman6> kenaryn: if you feel you're struggling, you're always welcome to come here and ask for help, we enjoy helping. Making cleams that are difficult to support isn;t going to help though - try to think "I'm having trouble with" not "this is too hard and it's the fault of someone else". Blaming someone or something else just gives you license to stop trying and makes learning harder
2022-06-18 01:52:56 +0000 <monochrom> And noticing that opinion leaders are also senior people with established interest in old ways, it is obvious why they will use their influence to attack new ways.
2022-06-18 01:54:58 +0000raym(~raym@user/raym)
2022-06-18 01:56:22 +0000Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Quit: Leaving)
2022-06-18 01:57:49 +0000notzmv(~zmv@user/notzmv)
2022-06-18 02:08:12 +0000td_(~td@muedsl-82-207-238-251.citykom.de) (Ping timeout: 260 seconds)
2022-06-18 02:09:58 +0000td_(~td@94.134.91.116)
2022-06-18 02:12:15 +0000takuan(~takuan@178-116-218-225.access.telenet.be)
2022-06-18 02:12:55 +0000geekosaur(~geekosaur@xmonad/geekosaur) (Read error: Connection reset by peer)
2022-06-18 02:13:14 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-06-18 02:13:14 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 244 seconds)
2022-06-18 02:13:17 +0000geekosaur(~geekosaur@xmonad/geekosaur)
2022-06-18 02:21:30 +0000waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 244 seconds)
2022-06-18 02:22:34 +0000ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
2022-06-18 02:24:10 +0000jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2022-06-18 02:25:10 +0000ec(~ec@gateway/tor-sasl/ec)
2022-06-18 02:31:50 +0000funsafe(~funsafe@2601:1c1:4200:9ac:84cb:185c:2a3c:c92c) (Ping timeout: 244 seconds)
2022-06-18 02:32:27 +0000raym(~raym@user/raym) (Ping timeout: 256 seconds)
2022-06-18 02:34:20 +0000raym(~raym@user/raym)
2022-06-18 02:34:48 +0000funsafe(~funsafe@76.105.238.154)
2022-06-18 02:36:30 +0000finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-06-18 02:36:30 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-06-18 02:36:30 +0000finn_elijaFinnElija
2022-06-18 02:40:01 +0000\yrlnry(~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net) (Remote host closed the connection)
2022-06-18 02:41:47 +0000wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-06-18 02:41:47 +0000wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-06-18 02:41:47 +0000wroathe(~wroathe@user/wroathe)
2022-06-18 02:41:47 +0000yrlnry(~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net)
2022-06-18 02:41:48 +0000yrlnry(~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net) (Read error: Connection reset by peer)
2022-06-18 02:42:33 +0000raym(~raym@user/raym) (Ping timeout: 248 seconds)
2022-06-18 02:43:18 +0000alexhandy(~AndChat62@user/trace)
2022-06-18 02:44:14 +0000raym(~raym@user/raym)
2022-06-18 02:46:12 +0000alexhandy(~AndChat62@user/trace) (Read error: Connection reset by peer)
2022-06-18 02:47:09 +0000harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
2022-06-18 02:59:48 +0000Feuermagier(~Feuermagi@user/feuermagier) (Remote host closed the connection)
2022-06-18 03:13:29 +0000alp__(~alp@user/alp) (Ping timeout: 248 seconds)
2022-06-18 03:19:25 +0000zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-06-18 03:37:03 +0000juri_(~juri@178.63.35.222) (Ping timeout: 256 seconds)
2022-06-18 03:42:20 +0000lisbeths(uid135845@id-135845.lymington.irccloud.com)
2022-06-18 03:49:14 +0000vicfred(~vicfred@user/vicfred) (Ping timeout: 255 seconds)
2022-06-18 03:55:38 +0000mcglk(~mcglk@131.191.49.120) (Read error: Connection reset by peer)
2022-06-18 03:56:51 +0000mcglk(~mcglk@131.191.49.120)
2022-06-18 04:00:57 +0000mvk(~mvk@2607:fea8:5ce3:8500::4588) (Ping timeout: 248 seconds)
2022-06-18 04:01:32 +0000yauhsien(~yauhsien@61-231-59-135.dynamic-ip.hinet.net) (Read error: Connection reset by peer)
2022-06-18 04:01:36 +0000yauhsien_(~yauhsien@61-231-59-135.dynamic-ip.hinet.net)
2022-06-18 04:03:34 +0000kenaryn(~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr) (Quit: leaving)
2022-06-18 04:05:47 +0000azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-06-18 04:06:23 +0000azimut(~azimut@gateway/tor-sasl/azimut)
2022-06-18 04:10:01 +0000 <dolio> There's no such thing as a bachelor's degree in type theory.
2022-06-18 04:12:31 +0000 <dolio> Or Haskell. It's something you'd learn about as like 1/4 of a survey class on varieties of programming languages, or be expected to pick up on the side as part of a class that's on some other topic.
2022-06-18 04:14:26 +0000 <dolio> I guess some places do use it in their 101 course on intro to programming.
2022-06-18 04:28:08 +0000 <dsal> The place where I work does all our backend stuff in Haskell, but we don't necessarily expect anyone to have used Haskell before starting.
2022-06-18 04:29:40 +0000 <dolio> Yeah. It can be taught.
2022-06-18 04:31:59 +0000vglfr(~vglfr@coupling.penchant.volia.net)
2022-06-18 04:41:40 +0000quarkyalice(~quarkyali@user/quarkyalice)
2022-06-18 04:43:49 +0000alexhandy(~AndChat62@user/trace)
2022-06-18 04:44:52 +0000img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-06-18 04:46:46 +0000alexhandy(~AndChat62@user/trace) (Read error: Connection reset by peer)
2022-06-18 04:50:12 +0000monochrom(~trebla@216.138.220.146) (Quit: NO CARRIER)
2022-06-18 04:53:14 +0000img(~img@user/img)
2022-06-18 04:58:10 +0000monochrom(~trebla@216.138.220.146)
2022-06-18 05:02:29 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-18 05:03:13 +0000z(~wu000168@host-187-23.ilchtbc.chicago.il.us.clients.pavlovmedia.net) (Ping timeout: 244 seconds)
2022-06-18 05:10:03 +0000quarkyalice(~quarkyali@user/quarkyalice) (Quit: quarkyalice)
2022-06-18 05:19:11 +0000machinedgod(~machinedg@66.244.246.252) (Ping timeout: 246 seconds)
2022-06-18 05:19:21 +0000werneta(~werneta@137.79.231.39) (Ping timeout: 276 seconds)
2022-06-18 05:20:37 +0000werneta(~werneta@137.79.237.183)
2022-06-18 05:22:01 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 248 seconds)
2022-06-18 05:23:53 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-18 05:30:31 +0000gnyeki(~gnyeki@user/gnyeki) (Quit: Reconnecting)
2022-06-18 05:30:38 +0000gnyeki(~gnyeki@li578-216.members.linode.com)
2022-06-18 05:30:38 +0000gnyeki(~gnyeki@li578-216.members.linode.com) (Changing host)
2022-06-18 05:30:38 +0000gnyeki(~gnyeki@user/gnyeki)
2022-06-18 05:35:53 +0000leeb(~leeb@KD106154142206.au-net.ne.jp) (Ping timeout: 248 seconds)
2022-06-18 05:36:53 +0000bilegeek(~bilegeek@2600:1008:b06f:9405:6390:85f:97be:d558)
2022-06-18 05:37:41 +0000leeb(~leeb@KD106155002213.au-net.ne.jp)
2022-06-18 05:39:04 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Quit: WeeChat 3.5)
2022-06-18 05:39:25 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-18 05:42:36 +0000quarkyalice(~quarkyali@user/quarkyalice)
2022-06-18 05:44:24 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:9528:58d5:850d:37ed) (Remote host closed the connection)
2022-06-18 05:47:46 +0000nate4(~nate@98.45.169.16)
2022-06-18 05:52:29 +0000nate4(~nate@98.45.169.16) (Ping timeout: 256 seconds)
2022-06-18 05:55:35 +0000lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2022-06-18 05:56:27 +0000quarkyalice(~quarkyali@user/quarkyalice) (Quit: quarkyalice)
2022-06-18 05:59:00 +0000frost(~frost@user/frost)
2022-06-18 06:03:15 +0000quarkyalice(~quarkyali@user/quarkyalice)
2022-06-18 06:04:11 +0000jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-06-18 06:07:47 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
2022-06-18 06:08:53 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-18 06:11:51 +0000quarkyalice(~quarkyali@user/quarkyalice) (Quit: quarkyalice)
2022-06-18 06:13:53 +0000tabemann(~tabemann@2600:1700:7990:24e0:df83:5bf2:4e42:22d0) (Ping timeout: 252 seconds)
2022-06-18 06:14:30 +0000tabemann(~tabemann@2600:1700:7990:24e0:defe:9c15:44ea:93a5)
2022-06-18 06:25:10 +0000kenran(~kenran@200116b82bd887000bb650dbb1e85384.dip.versatel-1u1.de)
2022-06-18 06:25:43 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-06-18 06:33:30 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-06-18 06:38:47 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2022-06-18 06:41:20 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-06-18 06:42:00 +0000kenran(~kenran@200116b82bd887000bb650dbb1e85384.dip.versatel-1u1.de) (Quit: WeeChat info:version)
2022-06-18 06:44:49 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:9528:58d5:850d:37ed)
2022-06-18 06:49:14 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:9528:58d5:850d:37ed) (Ping timeout: 255 seconds)
2022-06-18 06:51:32 +0000lisbeths(uid135845@id-135845.lymington.irccloud.com)
2022-06-18 06:55:34 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-06-18 06:57:36 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-06-18 07:00:17 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-06-18 07:00:27 +0000califax(~califax@user/califx) (Remote host closed the connection)
2022-06-18 07:04:32 +0000ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-06-18 07:04:33 +0000frost(~frost@user/frost) (Quit: Client closed)
2022-06-18 07:05:05 +0000califax(~califax@user/califx)
2022-06-18 07:05:26 +0000ec(~ec@gateway/tor-sasl/ec)
2022-06-18 07:05:54 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-06-18 07:11:27 +0000frost(~frost@user/frost)
2022-06-18 07:11:57 +0000tcard(~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp) (Quit: Leaving)
2022-06-18 07:13:11 +0000ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2022-06-18 07:13:58 +0000ChaiTRex(~ChaiTRex@user/chaitrex)
2022-06-18 07:17:35 +0000meinside(uid24933@id-24933.helmsley.irccloud.com)
2022-06-18 07:19:02 +0000tcard(~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp)
2022-06-18 07:19:20 +0000rendar(~rendar@user/rendar) (Ping timeout: 248 seconds)
2022-06-18 07:23:29 +0000benin0(~benin@183.82.28.222)
2022-06-18 07:23:49 +0000coot(~coot@213.134.190.95)
2022-06-18 07:30:17 +0000quarkyalice(~quarkyali@user/quarkyalice)
2022-06-18 07:32:13 +0000MajorBiscuit(~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net)
2022-06-18 07:32:13 +0000Vajb(~Vajb@2001:999:40:4c50:1b24:879c:6df3:1d06) (Read error: Connection reset by peer)
2022-06-18 07:32:24 +0000Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-06-18 07:36:11 +0000m1dnight(~christoph@78-22-9-5.access.telenet.be) (Ping timeout: 256 seconds)
2022-06-18 07:38:12 +0000m1dnight(~christoph@78-22-9-5.access.telenet.be)
2022-06-18 07:39:04 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-06-18 07:39:29 +0000quarkyalice(~quarkyali@user/quarkyalice) (Quit: quarkyalice)
2022-06-18 07:41:03 +0000mcfilib(sid302703@user/mcfilib) (Quit: Connection closed for inactivity)
2022-06-18 07:44:20 +0000_ht(~quassel@231-169-21-31.ftth.glasoperator.nl)
2022-06-18 07:45:32 +0000Axman6(~Axman6@user/axman6) (Read error: Connection reset by peer)
2022-06-18 07:45:48 +0000Axman6(~Axman6@user/axman6)
2022-06-18 07:50:34 +0000mrkajetanp_(~mrkajetan@88.98.245.28) (Quit: ZNC 1.7.2+deb3 - https://znc.in)
2022-06-18 07:50:53 +0000mrkajetanp(~mrkajetan@88.98.245.28)
2022-06-18 07:53:53 +0000coot(~coot@213.134.190.95) (Quit: coot)
2022-06-18 07:57:04 +0000azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2022-06-18 07:59:16 +0000Axman6(~Axman6@user/axman6) (Remote host closed the connection)
2022-06-18 07:59:27 +0000Axman6(~Axman6@user/axman6)
2022-06-18 08:04:21 +0000 <kuribas> I read "the little typer" and "type driven development in idris"
2022-06-18 08:04:25 +0000 <kuribas> I can recommend both
2022-06-18 08:06:49 +0000 <kuribas> Still, I just had an error in my haskell code where I had swapped two tables in my query.
2022-06-18 08:07:25 +0000 <kuribas> Still, the resulting business logic was valid, just not the one I needed.
2022-06-18 08:08:23 +0000 <kuribas> IMO types don't eliminate bugs, they just proof your program consistent.
2022-06-18 08:08:35 +0000 <kuribas> But it can still be consistent in the wrong way :)
2022-06-18 08:09:36 +0000yauhsien_(~yauhsien@61-231-59-135.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-06-18 08:15:48 +0000 <thornAvery> hello, i think my biggest lack of knowledge right now is monad stacks, i kiinda get monad transformers, but it seems like if im not good at designing the stack originally its gonna be super hard to refactor later on, ive heard of mtl but i dont really know much about it, is there a way that people suggest or should i just stick with transformers until i get better at it? thank you
2022-06-18 08:16:40 +0000 <kuribas> thornAvery: The nice thing with mtl is that you can make your own monad (transformer), but just stacking existing ones.
2022-06-18 08:16:52 +0000 <kuribas> It saves you from having to implement them, and making mistakes.
2022-06-18 08:17:01 +0000 <kuribas> And also makes adapting them later easier.
2022-06-18 08:17:11 +0000 <kuribas> But I would still recommend to wrap it in a newtype.
2022-06-18 08:17:28 +0000alexhandy(~AndChat62@user/trace)
2022-06-18 08:20:16 +0000zeenk(~zeenk@2a02:2f04:a013:9000:e45d:7fb3:ec71:e806)
2022-06-18 08:20:59 +0000 <kuribas> thornAvery: I also recommend using a type synonym.
2022-06-18 08:21:59 +0000 <kuribas> for example: type MyStackInner a = ReaderT MyConf (Either MyErr) a
2022-06-18 08:22:21 +0000 <kuribas> then "newtype MyStack a = MyStack (MyStackInner a)"
2022-06-18 08:23:16 +0000 <kuribas> Then you can easily write helpers like "getConf :: MyStack MyConf; getConf = MyStack ask"
2022-06-18 08:23:52 +0000 <kuribas> thornAvery: the mtl just saves you from a lot of plumbing.
2022-06-18 08:24:30 +0000alexhandy(~AndChat62@user/trace) (Read error: Connection reset by peer)
2022-06-18 08:32:50 +0000[Leary](~Leary]@122-58-224-198-vdsl.sparkbb.co.nz) (Ping timeout: 240 seconds)
2022-06-18 08:33:22 +0000alexhandy(~AndChat62@user/trace)
2022-06-18 08:38:26 +0000 <thornAvery> i see i see, ill give mtl a go then, cant hurt to learn something new, do you have any reccomended reading kuribas?
2022-06-18 08:39:02 +0000alexhandy(~AndChat62@user/trace) (Read error: Connection reset by peer)
2022-06-18 08:39:38 +0000Tuplanolla(~Tuplanoll@91-159-68-181.elisa-laajakaista.fi)
2022-06-18 08:40:47 +0000leeb(~leeb@KD106155002213.au-net.ne.jp) (Ping timeout: 246 seconds)
2022-06-18 08:41:32 +0000 <kuribas> google showed me this: https://www.fpcomplete.com/haskell/tutorial/monad-transformers/
2022-06-18 08:44:34 +0000califax(~califax@user/califx) (Remote host closed the connection)
2022-06-18 08:45:36 +0000califax(~califax@user/califx)
2022-06-18 08:47:22 +0000oxide(~lambda@user/oxide)
2022-06-18 08:49:25 +0000tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2022-06-18 08:50:58 +0000namkeleser(~namkelese@124.188.208.163)
2022-06-18 08:51:33 +0000namkeleser(~namkelese@124.188.208.163) (Client Quit)
2022-06-18 08:52:43 +0000MajorBiscuit(~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net) (Quit: WeeChat 3.5)
2022-06-18 08:52:46 +0000alexhandy(~AndChat62@user/trace)
2022-06-18 08:52:51 +0000alexhandy(~AndChat62@user/trace) (Read error: Connection reset by peer)
2022-06-18 08:53:32 +0000perdent(~perdent@124.188.208.163)
2022-06-18 08:54:01 +0000yrlnry(~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net)
2022-06-18 08:54:32 +0000Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-06-18 08:54:41 +0000notzmv(~zmv@user/notzmv) (Ping timeout: 244 seconds)
2022-06-18 08:56:02 +0000adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-06-18 08:56:13 +0000 <thornAvery> thank you :)
2022-06-18 08:56:36 +0000adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-06-18 08:57:02 +0000yauhsien(~yauhsien@61-231-59-135.dynamic-ip.hinet.net)
2022-06-18 08:58:06 +0000 <tomsmeding> kuribas: curious, why the type synonym?
2022-06-18 08:58:26 +0000 <kuribas> tomsmeding: because I often end up with a lot of helper functions.
2022-06-18 08:58:33 +0000yrlnry(~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net) (Ping timeout: 248 seconds)
2022-06-18 08:58:46 +0000 <tomsmeding> which work on MyStackInner? Why not let them work on MyStack directly then?
2022-06-18 08:58:55 +0000oxide(~lambda@user/oxide) (Ping timeout: 256 seconds)
2022-06-18 08:59:05 +0000 <kuribas> yeah, sometimes that works, but other times that requires a lot of (re)wrapping.
2022-06-18 08:59:18 +0000 <tomsmeding> right, that's true
2022-06-18 08:59:23 +0000 <kuribas> So I end up replicating the inner stack many times.
2022-06-18 08:59:29 +0000 <kuribas> Also makes it harder to refactor.
2022-06-18 09:00:02 +0000 <tomsmeding> yes definitely if you're repeating the inner stack in lots of places, then make it a type synonym -- I was just unsure how you would end up repeating the inner stack everywhere
2022-06-18 09:00:10 +0000 <tomsmeding> (after all, that's the point of the newtype, isn't it)
2022-06-18 09:00:40 +0000oxide(~lambda@user/oxide)
2022-06-18 09:00:44 +0000 <kuribas> for example: https://github.com/kuribas/hasqlator-mysql/blob/main/src/Database/MySQL/Hasqlator/Typed.hs#L94
2022-06-18 09:00:58 +0000 <tomsmeding> still, if MyStack implements all the relevant mtl classes, I'd expect that you usually don't end up rewrapping the stack many times for helper functions, except for intrinsic operations of the monads
2022-06-18 09:01:00 +0000alexhandy(~AndChat62@user/trace)
2022-06-18 09:01:35 +0000 <tomsmeding> oh you actually use QueryInner in multiple newtypes
2022-06-18 09:01:53 +0000 <tomsmeding> right then it makes sense
2022-06-18 09:02:36 +0000 <kuribas> I just found that happend in most of my code. Could be a coincidence.
2022-06-18 09:05:00 +0000gurkenglas(~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de)
2022-06-18 09:05:30 +0000alexhandy(~AndChat62@user/trace) (Read error: Connection reset by peer)
2022-06-18 09:06:30 +0000Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-06-18 09:09:24 +0000 <maerwald[m]> Transformer salad?
2022-06-18 09:09:40 +0000Vajb(~Vajb@2001:999:40:4c50:1b24:879c:6df3:1d06)
2022-06-18 09:09:42 +0000benin0(~benin@183.82.28.222) (Quit: The Lounge - https://thelounge.chat)
2022-06-18 09:10:17 +0000 <kuribas> no, having to write the inner monad many times.
2022-06-18 09:10:45 +0000alexhandy(~AndChat62@user/trace)
2022-06-18 09:11:17 +0000 <maerwald[m]> Reminds me of when I wanted to use the Handler transformer in servant in an unusual place. Ended up with MonadBaseControl, MonadUnliftIO, obscure type errors and the conclusion that it's not possible.
2022-06-18 09:12:00 +0000 <maerwald[m]> Not an invention to be proud of. We just lack better alternatives.
2022-06-18 09:14:22 +0000alexhandy(~AndChat62@user/trace) (Read error: Connection reset by peer)
2022-06-18 09:14:23 +0000 <kuribas> It worked well enough for my uses.
2022-06-18 09:14:44 +0000 <kuribas> And you can always go back to (Env -> IO a) if you want.
2022-06-18 09:15:37 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 248 seconds)
2022-06-18 09:17:31 +0000 <maerwald[m]> Not sure what that means
2022-06-18 09:17:49 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-18 09:18:58 +0000 <maerwald[m]> For except it's not even clear what a sound MonadUnliftIO instance is. Sure, you can not use transformers at all in the first place. That doesn't seem to be a compelling argument for them.
2022-06-18 09:19:37 +0000 <kuribas> you don't need MonadUnliftIO with (Env -> IO a).
2022-06-18 09:20:02 +0000 <maerwald[m]> Yes it's not a transformer lol
2022-06-18 09:20:47 +0000 <maerwald[m]> https://github.com/fpco/unliftio/issues/68
2022-06-18 09:22:15 +0000 <kuribas> "Not an invention to be proud of. We just lack better alternatives." <= meh, it's a technique. Sometimes useful, sometimes not. Pride has nothing to do with it.
2022-06-18 09:22:38 +0000 <kuribas> It's just a disfunctional way of looking at these things.
2022-06-18 09:22:45 +0000 <kuribas> As if they should be always working or never.
2022-06-18 09:23:28 +0000 <kuribas> Same with clojure folks ignoring "all" type theory, because "types sometimes get in the way", or "types cannot prove anything".
2022-06-18 09:23:46 +0000 <kuribas> I don't care, as long as they give me "some" value.
2022-06-18 09:24:19 +0000 <kuribas> Something doesn't have to "always work" to be useful.
2022-06-18 09:24:50 +0000 <kuribas> Just use the right technique at the right time, not apply anything religiously.
2022-06-18 09:25:15 +0000 <maerwald[m]> https://www.snoyman.com/blog/2018/02/conduitpocalypse/
2022-06-18 09:25:36 +0000alexhandy(~AndChat62@user/trace)
2022-06-18 09:25:42 +0000 <maerwald[m]> Yes exactly, cleanup handlers can have suprising effects with monadbasecontrol
2022-06-18 09:26:03 +0000 <maerwald[m]> But why care. Haskell is not about correctness, is it? ;)
2022-06-18 09:26:04 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 240 seconds)
2022-06-18 09:26:32 +0000 <maerwald[m]> "Works most of the time" :p
2022-06-18 09:27:11 +0000bilegeek(~bilegeek@2600:1008:b06f:9405:6390:85f:97be:d558) (Quit: Leaving)
2022-06-18 09:27:14 +0000leeb(~leeb@KD106155002213.au-net.ne.jp)
2022-06-18 09:27:15 +0000meinside(uid24933@id-24933.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2022-06-18 09:28:27 +0000yauhsien(~yauhsien@61-231-59-135.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-06-18 09:29:03 +0000yauhsien(~yauhsien@61-231-59-135.dynamic-ip.hinet.net)
2022-06-18 09:29:23 +0000alexhandy(~AndChat62@user/trace) (Read error: Connection reset by peer)
2022-06-18 09:29:53 +0000 <kuribas> Frankly, I don't think haskell is about "correctness", even though many people claim it.
2022-06-18 09:30:03 +0000 <kuribas> It is about consistency and expressivity.
2022-06-18 09:30:28 +0000 <kuribas> You're program can be consistent and expressive, but still express the "wrong" thing.
2022-06-18 09:30:30 +0000 <tomsmeding> though the type system helps with writing less bugs
2022-06-18 09:30:43 +0000 <tomsmeding> dumb bugs, that is
2022-06-18 09:30:56 +0000 <tomsmeding> which I guess is what you're saying with "consistency"
2022-06-18 09:31:18 +0000 <kuribas> I mean you'll get the wrong thing consistently.
2022-06-18 09:31:27 +0000 <kuribas> Not one time this, another time something else.
2022-06-18 09:31:43 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-06-18 09:31:46 +0000jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-06-18 09:32:15 +0000 <kuribas> and you get less bugs because you can express the intent more clearly, rather than getting lost in low level details.
2022-06-18 09:32:40 +0000 <maerwald[m]> Also a good read: https://github.com/lexi-lambda/eff/blob/8c4df4bf54faf22456354be18095b14825be5e85/notes/semantics-z…
2022-06-18 09:33:29 +0000yauhsien(~yauhsien@61-231-59-135.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-06-18 09:36:10 +0000 <sm> also relevant - long but good!
2022-06-18 09:36:10 +0000 <sm> https://overcast.fm/+ng708J6ic
2022-06-18 09:36:41 +0000jakalx(~jakalx@base.jakalx.net)
2022-06-18 09:36:57 +0000alexhandy(~AndChat62@user/trace)
2022-06-18 09:36:59 +0000alexhandy(~AndChat62@user/trace) (Client Quit)
2022-06-18 09:37:16 +0000 <maerwald[m]> 3 hours, lol
2022-06-18 09:37:35 +0000 <maerwald[m]> On my next flight to the moon maybe
2022-06-18 09:38:32 +0000 <sm> hmm, better link ? https://podcasts.apple.com/us/podcast/17-the-lost-elegance-of-computation-conal-elliott
2022-06-18 09:38:42 +0000juri_(~juri@79.140.114.143)
2022-06-18 09:38:43 +0000 <Franciman> oh
2022-06-18 09:38:46 +0000 <Franciman> an apple podcast?
2022-06-18 09:38:50 +0000 <Franciman> nifty
2022-06-18 09:39:06 +0000 <sm> just a podcast, I can't find a neutral link
2022-06-18 09:39:11 +0000 <Franciman> kuribas: so it is the same as scheme?
2022-06-18 09:39:17 +0000 <Franciman> being about consistency and expressivity
2022-06-18 09:39:23 +0000 <Franciman> sm: lol
2022-06-18 09:39:25 +0000 <Franciman> np
2022-06-18 09:39:29 +0000 <Franciman> thanks, I'm happy
2022-06-18 09:39:32 +0000 <Franciman> for the contents
2022-06-18 09:39:38 +0000 <sm> yes extremely long but in this case I would say well worth a listen!
2022-06-18 09:39:56 +0000 <kuribas> Franciman: no, scheme doesn't ensure consistency of my program.
2022-06-18 09:40:15 +0000 <Franciman> oh ok, sorry i misinterpreted as in: syntactic consistency somehow
2022-06-18 09:40:26 +0000 <Franciman> but isn't consistency tightly related to correctness?
2022-06-18 09:40:56 +0000 <tomsmeding> consistency is a term for a particular family of properties about your program, that the type system proves
2022-06-18 09:41:18 +0000 <tomsmeding> if those properties are true of the intended behaviour of the program, then it's partial correctness
2022-06-18 09:43:54 +0000econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-06-18 09:44:01 +0000 <maerwald> consistently wrong
2022-06-18 09:44:47 +0000 <maerwald> except transformers don't give you consistency there
2022-06-18 09:44:59 +0000 <maerwald> "works most of the time" is exactly inconsistent
2022-06-18 09:45:18 +0000 <kuribas> Franciman: well, you cannot be correct if you are not consistent.
2022-06-18 09:46:11 +0000 <kuribas> Franciman: for example, you have a REST API with swagger spec, but your program implements it differently.
2022-06-18 09:46:43 +0000 <kuribas> Franciman: or you write queries for a database that don't match the schema of the database.
2022-06-18 09:47:31 +0000Teacup(~teacup@user/teacup) (Quit: No Ping reply in 180 seconds.)
2022-06-18 09:47:57 +0000eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-06-18 09:48:55 +0000Teacup(~teacup@user/teacup)
2022-06-18 09:49:18 +0000nate4(~nate@98.45.169.16)
2022-06-18 09:52:11 +0000eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
2022-06-18 09:53:56 +0000nate4(~nate@98.45.169.16) (Ping timeout: 246 seconds)
2022-06-18 09:55:22 +0000 <maerwald> kuribas: I think you can be correct without being consistent. The correctness property is just unlikely to remain once you change the code.
2022-06-18 09:55:47 +0000zer0bitz(~zer0bitz@2001:2003:f748:2000:15be:cdf1:24c0:fca7)
2022-06-18 09:56:08 +0000 <maerwald> it's like those short windows of soberness that we sometimes experience
2022-06-18 09:57:36 +0000 <kuribas> how would you observe correctness if the code is not consistent?
2022-06-18 09:58:24 +0000__monty__(~toonn@user/toonn)
2022-06-18 10:01:45 +0000yauhsien(~yauhsien@61-231-59-135.dynamic-ip.hinet.net)
2022-06-18 10:02:27 +0000zeenk(~zeenk@2a02:2f04:a013:9000:e45d:7fb3:ec71:e806) (Quit: Konversation terminated!)
2022-06-18 10:04:51 +0000 <maerwald> kuribas: not sure I understand the question. You can e.g. test a binary against a specification
2022-06-18 10:05:17 +0000 <maerwald> but a single line of code change would throw over all of your confidence
2022-06-18 10:06:21 +0000 <maerwald> so everything is a blackbox all the time
2022-06-18 10:10:01 +0000yauhsien(~yauhsien@61-231-59-135.dynamic-ip.hinet.net) (Ping timeout: 248 seconds)
2022-06-18 10:12:14 +0000jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-06-18 10:17:21 +0000jakalx(~jakalx@base.jakalx.net)
2022-06-18 10:35:05 +0000__monty__(~toonn@user/toonn) (Ping timeout: 248 seconds)
2022-06-18 10:35:21 +0000__monty__(~toonn@user/toonn)
2022-06-18 10:36:12 +0000pavonia(~user@user/siracusa) (Quit: Bye!)
2022-06-18 10:36:50 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-06-18 10:39:11 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-18 10:39:52 +0000rendar(~rendar@user/rendar)
2022-06-18 10:42:03 +0000__monty__(~toonn@user/toonn) (Ping timeout: 256 seconds)
2022-06-18 10:43:48 +0000yauhsien(~yauhsien@61-231-59-135.dynamic-ip.hinet.net)
2022-06-18 10:45:13 +0000gurkenglas(~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) (Ping timeout: 248 seconds)
2022-06-18 10:48:11 +0000yauhsien(~yauhsien@61-231-59-135.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
2022-06-18 10:48:43 +0000perdent(~perdent@124.188.208.163) (Quit: Client closed)
2022-06-18 10:48:56 +0000oxide(~lambda@user/oxide) (Ping timeout: 248 seconds)
2022-06-18 10:51:08 +0000oxide(~lambda@user/oxide)
2022-06-18 11:01:26 +0000gmg(~user@user/gehmehgeh)
2022-06-18 11:03:05 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Read error: Connection reset by peer)
2022-06-18 11:05:34 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-18 11:06:24 +0000notzmv(~zmv@user/notzmv)
2022-06-18 11:23:58 +0000pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-06-18 11:32:18 +0000perdent(~perdent@124.188.208.163)
2022-06-18 11:33:12 +0000fserucas(~fserucas@119.65.114.89.rev.vodafone.pt)
2022-06-18 11:33:53 +0000fserucas(~fserucas@119.65.114.89.rev.vodafone.pt) (Client Quit)
2022-06-18 11:39:29 +0000frost(~frost@user/frost) (Quit: Client closed)
2022-06-18 11:40:31 +0000[_](~itchyjunk@user/itchyjunk/x-7353470)
2022-06-18 11:41:17 +0000Midjak(~Midjak@82.66.147.146)
2022-06-18 11:42:50 +0000[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds)
2022-06-18 11:44:48 +0000Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net)
2022-06-18 11:49:47 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:9528:58d5:850d:37ed)
2022-06-18 11:52:39 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-06-18 11:53:17 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-06-18 11:54:20 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:9528:58d5:850d:37ed) (Ping timeout: 255 seconds)
2022-06-18 11:58:32 +0000agumonkey(~user@88.163.231.79)
2022-06-18 12:06:56 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 246 seconds)
2022-06-18 12:09:15 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-18 12:12:02 +0000jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2022-06-18 12:14:42 +0000jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
2022-06-18 12:14:51 +0000AlexZenon(~alzenon@178.34.150.200)
2022-06-18 12:15:16 +0000AlexNoo(~AlexNoo@178.34.150.200)
2022-06-18 12:15:19 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-06-18 12:15:34 +0000Alex_test(~al_test@178.34.150.200)
2022-06-18 12:15:48 +0000jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2022-06-18 12:15:53 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-06-18 12:21:29 +0000juri_(~juri@79.140.114.143) (Read error: Connection reset by peer)
2022-06-18 12:22:05 +0000juri_(~juri@79.140.114.143)
2022-06-18 12:28:40 +0000cheater(~Username@user/cheater) (Ping timeout: 248 seconds)
2022-06-18 12:29:54 +0000frost(~frost@user/frost)
2022-06-18 12:31:24 +0000raym(~raym@user/raym) (Remote host closed the connection)
2022-06-18 12:31:49 +0000kenaryn(~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr)
2022-06-18 12:32:02 +0000cheater(~Username@user/cheater)
2022-06-18 12:44:25 +0000pleo(~pleo@user/pleo)
2022-06-18 12:52:09 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 248 seconds)
2022-06-18 12:53:58 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-18 12:56:31 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) (Write error: Connection reset by peer)
2022-06-18 12:56:31 +0000winny(~weechat@user/winny) (Write error: Broken pipe)
2022-06-18 12:56:31 +0000noteness(~noteness@user/noteness) (Remote host closed the connection)
2022-06-18 12:56:31 +0000HotblackDesiato(~HotblackD@gateway/tor-sasl/hotblackdesiato) (Remote host closed the connection)
2022-06-18 12:56:31 +0000adanwan(~adanwan@gateway/tor-sasl/adanwan) (Write error: Connection reset by peer)
2022-06-18 12:56:31 +0000ec(~ec@gateway/tor-sasl/ec) (Write error: Connection reset by peer)
2022-06-18 12:56:31 +0000califax(~califax@user/califx) (Write error: Connection reset by peer)
2022-06-18 12:56:31 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643) (Write error: Connection reset by peer)
2022-06-18 12:56:31 +0000gmg(~user@user/gehmehgeh) (Write error: Connection reset by peer)
2022-06-18 12:56:31 +0000ChaiTRex(~ChaiTRex@user/chaitrex) (Write error: Connection reset by peer)
2022-06-18 12:56:31 +0000stiell(~stiell@gateway/tor-sasl/stiell) (Read error: Connection reset by peer)
2022-06-18 12:56:31 +0000chexum(~quassel@gateway/tor-sasl/chexum) (Read error: Connection reset by peer)
2022-06-18 12:57:23 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-06-18 12:57:32 +0000chexum(~quassel@gateway/tor-sasl/chexum)
2022-06-18 12:57:46 +0000califax(~califax@user/califx)
2022-06-18 12:57:50 +0000ec(~ec@gateway/tor-sasl/ec)
2022-06-18 12:58:00 +0000adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-06-18 12:58:01 +0000stiell(~stiell@gateway/tor-sasl/stiell)
2022-06-18 12:58:27 +0000ChaiTRex(~ChaiTRex@user/chaitrex)
2022-06-18 12:58:31 +0000HotblackDesiato(~HotblackD@gateway/tor-sasl/hotblackdesiato)
2022-06-18 12:58:34 +0000noteness(~noteness@user/noteness)
2022-06-18 12:59:07 +0000winny(~weechat@user/winny)
2022-06-18 12:59:09 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-06-18 12:59:35 +0000gmg(~user@user/gehmehgeh)
2022-06-18 13:00:06 +0000jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 244 seconds)
2022-06-18 13:00:44 +0000jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2022-06-18 13:01:38 +0000jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2022-06-18 13:04:58 +0000[Leary](~Leary]@122-58-224-198-vdsl.sparkbb.co.nz)
2022-06-18 13:06:46 +0000kuribas(~user@ptr-17d51eocoqvs7v5fptz.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2022-06-18 13:10:04 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-06-18 13:13:59 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-06-18 13:19:53 +0000rodental(~rodental@38.146.5.222) (Remote host closed the connection)
2022-06-18 13:20:07 +0000rodental(~rodental@38.146.5.222)
2022-06-18 13:21:12 +0000Teacup(~teacup@user/teacup) (Quit: No Ping reply in 180 seconds.)
2022-06-18 13:22:35 +0000Teacup(~teacup@user/teacup)
2022-06-18 13:24:39 +0000jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2022-06-18 13:30:22 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-06-18 13:32:22 +0000jakalx(~jakalx@base.jakalx.net) ()
2022-06-18 13:34:15 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-06-18 13:35:10 +0000machinedgod(~machinedg@66.244.246.252)
2022-06-18 13:37:44 +0000jakalx(~jakalx@base.jakalx.net)
2022-06-18 13:39:00 +0000odnes(~odnes@109-178-160-237.pat.ren.cosmote.net)
2022-06-18 13:39:05 +0000pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 248 seconds)
2022-06-18 13:39:51 +0000rodental(~rodental@38.146.5.222) (Remote host closed the connection)
2022-06-18 13:40:05 +0000rodental(~rodental@38.146.5.222)
2022-06-18 13:43:05 +0000winny(~weechat@user/winny) (Remote host closed the connection)
2022-06-18 13:46:37 +0000winny(~weechat@user/winny)
2022-06-18 13:46:47 +0000bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 256 seconds)
2022-06-18 13:48:22 +0000yauhsien(~yauhsien@61-231-59-135.dynamic-ip.hinet.net)
2022-06-18 13:50:49 +0000nate4(~nate@98.45.169.16)
2022-06-18 13:51:32 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:9528:58d5:850d:37ed)
2022-06-18 13:52:17 +0000Alex_test(~al_test@178.34.150.200) (Ping timeout: 246 seconds)
2022-06-18 13:52:59 +0000yauhsien(~yauhsien@61-231-59-135.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
2022-06-18 13:53:41 +0000AlexZenon(~alzenon@178.34.150.200) (Ping timeout: 246 seconds)
2022-06-18 13:54:09 +0000AlexNoo(~AlexNoo@178.34.150.200) (Ping timeout: 256 seconds)
2022-06-18 13:55:20 +0000coot(~coot@213.134.190.95)
2022-06-18 13:55:26 +0000nate4(~nate@98.45.169.16) (Ping timeout: 246 seconds)
2022-06-18 13:56:08 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:9528:58d5:850d:37ed) (Ping timeout: 248 seconds)
2022-06-18 13:56:28 +0000waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-06-18 13:59:06 +0000frost(~frost@user/frost) (Ping timeout: 252 seconds)
2022-06-18 14:01:02 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-06-18 14:06:23 +0000MajorBiscuit(~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net)
2022-06-18 14:06:36 +0000MajorBiscuit(~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net) (Client Quit)
2022-06-18 14:12:39 +0000coot(~coot@213.134.190.95) (Quit: coot)
2022-06-18 14:13:39 +0000MajorBiscuit(~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net)
2022-06-18 14:15:09 +0000azimut(~azimut@gateway/tor-sasl/azimut)
2022-06-18 14:18:42 +0000ec_(~ec@gateway/tor-sasl/ec)
2022-06-18 14:19:27 +0000ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-06-18 14:21:11 +0000DarQ(~DarQ@41.99.203.145)
2022-06-18 14:22:30 +0000 <DarQ> hello
2022-06-18 14:22:30 +0000 <DarQ> I'm currently checking out real world haskell and came across a command which I couldn't execute in the powershell
2022-06-18 14:23:07 +0000 <DarQ> this is said command "runghc WC < quux.txt" (sry, I don't know how to format messages)
2022-06-18 14:23:37 +0000 <DarQ> the problem is with the < sign which I assume only works on unix or smth
2022-06-18 14:24:32 +0000 <DarQ> how should I fix that?
2022-06-18 14:26:04 +0000ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
2022-06-18 14:26:33 +0000jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2022-06-18 14:27:00 +0000 <[exa]> DarQ: I guess powershell _should_ have some way to pipe stuff into programs' standard input
2022-06-18 14:27:17 +0000 <[exa]> (no guarantees tho, it's from redmond)
2022-06-18 14:27:54 +0000ec_(~ec@gateway/tor-sasl/ec)
2022-06-18 14:28:08 +0000jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
2022-06-18 14:28:14 +0000joo-_(~joo-_@172-105-65-159.ip.linodeusercontent.com)
2022-06-18 14:28:14 +0000joo-_(~joo-_@172-105-65-159.ip.linodeusercontent.com) (Changing host)
2022-06-18 14:28:14 +0000joo-_(~joo-_@fsf/member/joo--)
2022-06-18 14:28:57 +0000 <[exa]> oh whoops, maybe not
2022-06-18 14:29:59 +0000 <geekosaur> cmd.exe can handle that, rwh predates powershell
2022-06-18 14:30:12 +0000jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2022-06-18 14:31:38 +0000 <DarQ> hmm
2022-06-18 14:31:48 +0000 <DarQ> I haven't used cmd in so long
2022-06-18 14:31:50 +0000 <DarQ> let's see
2022-06-18 14:33:17 +0000 <geekosaur> yeh, looks like powershell only supports output redirection
2022-06-18 14:33:26 +0000 <geekosaur> https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_redirecti…
2022-06-18 14:34:53 +0000zeenk(~zeenk@2a02:2f04:a013:9000:e45d:7fb3:ec71:e806)
2022-06-18 14:39:02 +0000MajorBiscuit(~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net) (Ping timeout: 255 seconds)
2022-06-18 14:40:55 +0000 <DarQ> was there some update to the cmd or smth?
2022-06-18 14:41:04 +0000 <DarQ> why does it look like my powershell?
2022-06-18 14:41:17 +0000 <DarQ> and why can't cd to "G:\"?
2022-06-18 14:41:38 +0000 <DarQ> can't I*
2022-06-18 14:41:43 +0000 <tomsmeding> DarQ: you might also try `Get-Content quux.txt | runghc WC` in powershell -- no guarantees, not a windows user, just looked at some docs
2022-06-18 14:42:09 +0000 <tomsmeding> oh apparently Get-Content -Path quux.txt
2022-06-18 14:42:32 +0000 <tomsmeding> perhaps with -Raw (why is powershell so complicated)
2022-06-18 14:43:21 +0000 <tomsmeding> alternatively `type quux.txt | runghc WC`
2022-06-18 14:43:49 +0000 <DarQ> uh
2022-06-18 14:43:53 +0000 <DarQ> this did work
2022-06-18 14:43:58 +0000 <DarQ> thx
2022-06-18 14:44:04 +0000 <tomsmeding> which one?
2022-06-18 14:44:08 +0000 <DarQ> type quux.txt | runghc WC
2022-06-18 14:44:11 +0000 <tomsmeding> ah
2022-06-18 14:44:30 +0000 <tomsmeding> old-skool `type` :)
2022-06-18 14:44:38 +0000 <geekosaur> in cmd you'd have to separately `g:` and `cd \`
2022-06-18 14:45:06 +0000 <geekosaur> currenbt directory is per drive and `cd` doesn't switch the current drive, just the current directory on that drive
2022-06-18 14:45:21 +0000 <DarQ> ooo
2022-06-18 14:45:29 +0000 <DarQ> that makes sense
2022-06-18 14:45:43 +0000 <DarQ> thanks
2022-06-18 14:45:44 +0000pleo(~pleo@user/pleo) (Ping timeout: 248 seconds)
2022-06-18 14:48:38 +0000jao(~jao@211.68.17.95.dynamic.jazztel.es)
2022-06-18 14:51:26 +0000shriekingnoise(~shrieking@201.212.175.181) (Ping timeout: 246 seconds)
2022-06-18 14:56:39 +0000pleo(~pleo@user/pleo)
2022-06-18 15:03:04 +0000Axman6(~Axman6@user/axman6) (Remote host closed the connection)
2022-06-18 15:03:52 +0000Axman6(~Axman6@user/axman6)
2022-06-18 15:04:12 +0000alp__(~alp@user/alp)
2022-06-18 15:04:47 +0000zebrag(~chris@user/zebrag)
2022-06-18 15:05:31 +0000jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2022-06-18 15:06:47 +0000winny(~weechat@user/winny) (Remote host closed the connection)
2022-06-18 15:10:11 +0000winny(~weechat@user/winny)
2022-06-18 15:10:12 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 276 seconds)
2022-06-18 15:11:30 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-18 15:12:44 +0000shriekingnoise(~shrieking@201.212.175.181)
2022-06-18 15:15:19 +0000yauhsien(~yauhsien@61-231-59-135.dynamic-ip.hinet.net)
2022-06-18 15:16:12 +0000justsomeguy(~justsomeg@user/justsomeguy)
2022-06-18 15:16:53 +0000 <justsomeguy> When should I use foldl?
2022-06-18 15:17:21 +0000 <justsomeguy> I get the impression that it's very rarely used, since it causes thunk buildup for long lists.
2022-06-18 15:17:41 +0000 <maerwald> I think only foldl' is interesting if you want a strict accumulator
2022-06-18 15:19:30 +0000yauhsien(~yauhsien@61-231-59-135.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-06-18 15:19:35 +0000 <justsomeguy> That makes sense. I wonder, though, is there anything that foldl can do that foldr and/or foldl' can't?
2022-06-18 15:20:27 +0000coot(~coot@213.134.190.95)
2022-06-18 15:21:49 +0000MajorBiscuit(~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net)
2022-06-18 15:23:34 +0000 <geekosaur> I think foldl is there only because foldr is, but foldl is only interesting in a strict by default language
2022-06-18 15:24:50 +0000odnes(~odnes@109-178-160-237.pat.ren.cosmote.net) (Read error: Connection reset by peer)
2022-06-18 15:24:57 +0000odnes(~odnes@109-178-160-237.pat.ren.cosmote.net)
2022-06-18 15:25:16 +0000slaydr(~slaydr@173.239.197.114)
2022-06-18 15:28:18 +0000DarQ(~DarQ@41.99.203.145) (Quit: Client closed)
2022-06-18 15:30:11 +0000Player-205[m](~sashaserp@2001:470:69fc:105::2:30b8)
2022-06-18 15:32:27 +0000AlexNoo(~AlexNoo@178.34.150.200)
2022-06-18 15:32:55 +0000 <exarkun> > However, if the combining function is lazy in its first argument, foldl may happily return a result where foldl' hits an exception
2022-06-18 15:32:57 +0000 <lambdabot> <hint>:1:8: error: parse error on input ‘,’
2022-06-18 15:32:58 +0000 <exarkun> from https://wiki.haskell.org/Foldr_Foldl_Foldl'
2022-06-18 15:33:03 +0000 <exarkun> sorry lambdabot not for you
2022-06-18 15:33:19 +0000odnes(~odnes@109-178-160-237.pat.ren.cosmote.net) (Ping timeout: 256 seconds)
2022-06-18 15:33:25 +0000Alex_test(~al_test@178.34.150.200)
2022-06-18 15:33:45 +0000AlexZenon(~alzenon@178.34.150.200)
2022-06-18 15:34:35 +0000gurkenglas(~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de)
2022-06-18 15:37:53 +0000econo(uid147250@user/econo)
2022-06-18 15:39:47 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-06-18 15:43:35 +0000Player-205[m](~sashaserp@2001:470:69fc:105::2:30b8) (Quit: issued !quit command)
2022-06-18 15:44:05 +0000agumonkey(~user@88.163.231.79) (Ping timeout: 256 seconds)
2022-06-18 15:45:52 +0000dolio(~dolio@130.44.130.54) (Quit: ZNC 1.8.2 - https://znc.in)
2022-06-18 15:48:09 +0000MajorBiscuit(~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net) (Ping timeout: 248 seconds)
2022-06-18 15:48:53 +0000dolio(~dolio@130.44.130.54)
2022-06-18 15:48:55 +0000DarQ(~DarQ@41.99.203.145)
2022-06-18 15:49:19 +0000 <DarQ> btw, is "real world haskell" still recommended?
2022-06-18 15:49:20 +0000dolio(~dolio@130.44.130.54) (Client Quit)
2022-06-18 15:49:26 +0000 <DarQ> or are there better options rn
2022-06-18 15:50:03 +0000 <geekosaur> it's somewhat dated but at least parts are still recommended
2022-06-18 15:50:10 +0000dolio(~dolio@130.44.130.54)
2022-06-18 15:50:11 +0000chexum_(~quassel@gateway/tor-sasl/chexum)
2022-06-18 15:50:15 +0000 <geekosaur> it fills a space in the haskell ecosystems that not much else does
2022-06-18 15:50:32 +0000slaydr(~slaydr@173.239.197.114) (Remote host closed the connection)
2022-06-18 15:50:57 +0000 <DarQ> which parts might those be?
2022-06-18 15:51:32 +0000 <DarQ> is there a specific chapter where I should go looking for better resources?
2022-06-18 15:52:04 +0000chexum(~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds)
2022-06-18 15:52:30 +0000 <geekosaur> the early stuff is basically a primer on haskell. later ones are good for learning how to use it effectively, and (as the title suggests) how to use it in the real world
2022-06-18 15:52:59 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:9528:58d5:850d:37ed)
2022-06-18 15:53:02 +0000 <geekosaur> although with the growth of web stuff we probably need to see either additional chapters or a book on using eg. servant
2022-06-18 15:54:16 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-06-18 15:54:25 +0000chexum_chexum
2022-06-18 15:57:20 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:9528:58d5:850d:37ed) (Ping timeout: 255 seconds)
2022-06-18 15:57:42 +0000tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2022-06-18 15:58:21 +0000justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.5)
2022-06-18 16:02:24 +0000MajorBiscuit(~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net)
2022-06-18 16:03:31 +0000MajorBiscuit(~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net) (Client Quit)
2022-06-18 16:03:32 +0000Volt_(~Volt_@c-68-49-170-216.hsd1.mi.comcast.net)
2022-06-18 16:09:09 +0000Player-205[m](~sashaserp@2001:470:69fc:105::2:30b8)
2022-06-18 16:10:01 +0000justsomeguy(~justsomeg@user/justsomeguy)
2022-06-18 16:10:51 +0000Player-205[m](~sashaserp@2001:470:69fc:105::2:30b8) ()
2022-06-18 16:11:11 +0000slaydr(~slaydr@75.164.63.238)
2022-06-18 16:11:22 +0000Player-205[m](~sashaserp@2001:470:69fc:105::2:30b8)
2022-06-18 16:12:29 +0000 <dsal> I found "Real World Haskell" to be more of a book that demonstrates you can do things than anything I could personally learn from. It was inspirational in the sort of things you could learn, but I don't think I could generalize the examples that well. i.e., it didn't suit my learning style well.
2022-06-18 16:14:23 +0000 <monochrom> Real World Haskell skips every step in the middle between a preview of basic Haskell and a complicated project that has too many distracting moving parts.
2022-06-18 16:15:59 +0000 <Bulby[m]> better than what I did - skim Learn you a haskell and write a complex project
2022-06-18 16:16:07 +0000kritzefitz(~kritzefit@debian/kritzefitz) (Ping timeout: 240 seconds)
2022-06-18 16:16:10 +0000 <monochrom> True to its name sake "real world", if you understand the derogatory sense of "real world".
2022-06-18 16:16:26 +0000kritzefitz(~kritzefit@debian/kritzefitz)
2022-06-18 16:17:53 +0000 <monochrom> For example the chapter on a regex library is 20% the regex library and 80% digressions.
2022-06-18 16:18:34 +0000Feuermagier(~Feuermagi@user/feuermagier)
2022-06-18 16:18:49 +0000 <Bulby[m]> i suggest not learning anything and writing a random project. worked for me
2022-06-18 16:19:15 +0000 <Bulby[m]> (rust is a similar story)
2022-06-18 16:19:29 +0000 <monochrom> Judging from everything you've said in the past, no it didn't work.
2022-06-18 16:19:35 +0000 <Bulby[m]> hahaha
2022-06-18 16:19:56 +0000 <dsal> I did a hybrid approach. Wrote software, then read a bunch of stuff to learn how my software worked. Then realized all the dumb stuff I was doing. Repeat. My stuff gets slightly less dumb as I go.
2022-06-18 16:20:04 +0000 <dsal> It's not optimal, but it's satisfying.
2022-06-18 16:20:04 +0000 <Bulby[m]> i knew someone would say something like that 😉
2022-06-18 16:20:24 +0000 <Bulby[m]> rust is easy to do that with because the compiler tells you exactly what you messed up
2022-06-18 16:20:24 +0000 <geekosaur> it's the story of programming
2022-06-18 16:20:46 +0000 <monochrom> Instead of finishing an interpreter, all I saw was "why is Haskell so hard when I use it in unidiomatic ways".
2022-06-18 16:21:02 +0000 <Bulby[m]> are you talking about me
2022-06-18 16:21:05 +0000 <monochrom> YES
2022-06-18 16:21:14 +0000 <Bulby[m]> figures
2022-06-18 16:21:31 +0000 <Bulby[m]> yeah, now i'm writing the VM in rust
2022-06-18 16:21:39 +0000 <Bulby[m]> so you are spared for a while
2022-06-18 16:22:03 +0000thatcher(lp0@heathens.club)
2022-06-18 16:22:44 +0000 <Bulby[m]> haskell isn't hard anymore (even tho I still use it in unidiomatic ways)
2022-06-18 16:22:57 +0000 <monochrom> This is why dive-in projects must fail in Haskell. You dive-in, you don't know how Haskell is supposed to be used, you just think up your own way, which is unidiomatic, now everything breaks.
2022-06-18 16:23:06 +0000 <Bulby[m]> hahahah
2022-06-18 16:23:41 +0000 <Bulby[m]> my solution to appending to lists taking too long was prepending, and reversing at the end
2022-06-18 16:24:48 +0000 <Bulby[m]> now I use right associative operators
2022-06-18 16:28:35 +0000quarkyalice(~quarkyali@user/quarkyalice)
2022-06-18 16:29:23 +0000 <exarkun> monochrom: how is Haskell unique in this regard
2022-06-18 16:30:32 +0000 <monochrom> Because in the context of having used an imperative language and then you learn either another imperative language or a functional language, "your own way" simply means imperative ways.
2022-06-18 16:30:56 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:9528:58d5:850d:37ed)
2022-06-18 16:31:02 +0000 <monochrom> Because self-selection bias implies that people who want to learn programming are control freaks.
2022-06-18 16:33:13 +0000 <exarkun> I suppose that if you took someone who had only ever learned functional programming languages and dropped them into Python, you would have equally poor outcomes.
2022-06-18 16:33:36 +0000 <monochrom> We don't have a lot of that in the real world.
2022-06-18 16:34:02 +0000 <exarkun> So maybe this is more a commentary on the state of the world than on Haskell
2022-06-18 16:34:25 +0000 <monochrom> Alternatively, I can weasel out and say "I didn't say whether dive-in would fail in python" :)
2022-06-18 16:35:08 +0000 <exarkun> :)
2022-06-18 16:35:27 +0000oxide(~lambda@user/oxide) (Quit: oxide)
2022-06-18 16:35:39 +0000m1dnight(~christoph@78-22-9-5.access.telenet.be) (Ping timeout: 256 seconds)
2022-06-18 16:37:41 +0000m1dnight(~christoph@78-22-9-5.access.telenet.be)
2022-06-18 16:43:36 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-06-18 16:48:48 +0000ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2022-06-18 16:49:59 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-06-18 16:50:40 +0000quarkyalice(~quarkyali@user/quarkyalice) (Quit: quarkyalice)
2022-06-18 16:56:35 +0000k8yun(~k8yun@user/k8yun)
2022-06-18 16:59:24 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-06-18 17:05:29 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 246 seconds)
2022-06-18 17:09:20 +0000leeb(~leeb@KD106155002213.au-net.ne.jp) (Ping timeout: 246 seconds)
2022-06-18 17:10:44 +0000justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 246 seconds)
2022-06-18 17:13:55 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-18 17:14:46 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-06-18 17:18:15 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-06-18 17:18:15 +0000finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-06-18 17:18:15 +0000finn_elijaFinnElija
2022-06-18 17:20:11 +0000kspalaiologos(~kspalaiol@user/kspalaiologos)
2022-06-18 17:27:23 +0000__monty__(~toonn@user/toonn)
2022-06-18 17:28:04 +0000perdent(~perdent@124.188.208.163) (Quit: Client closed)
2022-06-18 17:30:31 +0000 <DarQ> dive-in would definitely work in python for most purposes
2022-06-18 17:30:59 +0000 <DarQ> I mean
2022-06-18 17:32:04 +0000 <DarQ> there's only so many ways you can go wrong if you're only using python for scripting lel
2022-06-18 17:32:41 +0000 <sm> ha!
2022-06-18 17:34:17 +0000raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-06-18 17:35:11 +0000 <DarQ> what do you guys recommend for writing haskell code?
2022-06-18 17:35:24 +0000 <DarQ> should I go basic and just use vscode?
2022-06-18 17:35:41 +0000 <sm> vs code
2022-06-18 17:39:37 +0000jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-06-18 17:41:02 +0000 <hpc> since it's visual studio code, wouldn't you be going visual basic? :P
2022-06-18 17:42:04 +0000 <hpc> (but yeah, vscode is perfectly fine - ghcup can install hls for you and then the world's your oyster)
2022-06-18 17:43:43 +0000 <DarQ> what's ghcup?
2022-06-18 17:45:07 +0000 <hpc> https://www.haskell.org/ghcup/ - an easy installer for a bunch of language stuff
2022-06-18 17:45:10 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-06-18 17:45:20 +0000 <hpc> it's like rustup, if you have ever used that
2022-06-18 17:45:35 +0000 <DarQ> oh yeah
2022-06-18 17:45:40 +0000 <DarQ> I already did this
2022-06-18 17:47:21 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-18 17:47:25 +0000jakalx(~jakalx@base.jakalx.net)
2022-06-18 17:47:31 +0000gmg(~user@user/gehmehgeh) (Quit: Leaving)
2022-06-18 17:52:22 +0000nate4(~nate@98.45.169.16)
2022-06-18 17:53:54 +0000gmg(~user@user/gehmehgeh)
2022-06-18 17:56:57 +0000k8yun(~k8yun@user/k8yun) (Quit: Leaving)
2022-06-18 17:57:15 +0000nate4(~nate@98.45.169.16) (Ping timeout: 256 seconds)
2022-06-18 18:01:03 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:9528:58d5:850d:37ed) (Remote host closed the connection)
2022-06-18 18:02:52 +0000DarQ(~DarQ@41.99.203.145) (Quit: Client closed)
2022-06-18 18:04:25 +0000raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 244 seconds)
2022-06-18 18:04:46 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:9528:58d5:850d:37ed)
2022-06-18 18:05:03 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 276 seconds)
2022-06-18 18:06:43 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-18 18:07:39 +0000zeenk(~zeenk@2a02:2f04:a013:9000:e45d:7fb3:ec71:e806) (Quit: Konversation terminated!)
2022-06-18 18:13:09 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-06-18 18:13:42 +0000ec_(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-06-18 18:15:06 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-06-18 18:17:33 +0000yauhsien(~yauhsien@61-231-59-135.dynamic-ip.hinet.net)
2022-06-18 18:20:07 +0000ec_(~ec@gateway/tor-sasl/ec)
2022-06-18 18:20:59 +0000arjun(~arjun@user/arjun)
2022-06-18 18:22:11 +0000yauhsien(~yauhsien@61-231-59-135.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-06-18 18:23:04 +0000arjun(~arjun@user/arjun) (Remote host closed the connection)
2022-06-18 18:25:35 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
2022-06-18 18:29:13 +0000notzmv(~zmv@user/notzmv) (Ping timeout: 244 seconds)
2022-06-18 18:32:34 +0000Sgeo(~Sgeo@user/sgeo)
2022-06-18 18:34:12 +0000Player-205[m](~sashaserp@2001:470:69fc:105::2:30b8) (Quit: Reconnecting)
2022-06-18 18:34:25 +0000Player-205[m](~sashaserp@2001:470:69fc:105::2:30b8)
2022-06-18 18:36:56 +0000Player-205[m](~sashaserp@2001:470:69fc:105::2:30b8) (Client Quit)
2022-06-18 18:37:12 +0000Player-205[m](~sashaserp@2001:470:69fc:105::2:30b8)
2022-06-18 18:38:03 +0000Player-205[m](~sashaserp@2001:470:69fc:105::2:30b8) (Client Quit)
2022-06-18 18:38:19 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-18 18:41:53 +0000Player-205[m](~sashaserp@2001:470:69fc:105::2:30b8)
2022-06-18 18:42:06 +0000pleo(~pleo@user/pleo) (Ping timeout: 276 seconds)
2022-06-18 18:46:47 +0000pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-06-18 18:48:23 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 246 seconds)
2022-06-18 18:50:10 +0000coot(~coot@213.134.190.95) (Ping timeout: 240 seconds)
2022-06-18 18:50:38 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-18 18:56:27 +0000bontaq(~user@ool-45779fe5.dyn.optonline.net)
2022-06-18 18:57:03 +0000machinedgod(~machinedg@66.244.246.252) (Ping timeout: 276 seconds)
2022-06-18 18:57:04 +0000raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-06-18 19:02:11 +0000mc47(~mc47@xmonad/TheMC47)
2022-06-18 19:02:23 +0000jao(~jao@211.68.17.95.dynamic.jazztel.es) (Ping timeout: 246 seconds)
2022-06-18 19:05:04 +0000ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2022-06-18 19:05:39 +0000ChaiTRex(~ChaiTRex@user/chaitrex)
2022-06-18 19:15:48 +0000pleo(~pleo@user/pleo)
2022-06-18 19:16:01 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
2022-06-18 19:17:43 +0000img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-06-18 19:18:07 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-18 19:19:40 +0000kspalaiologos(~kspalaiol@user/kspalaiologos) (Quit: Leaving)
2022-06-18 19:20:01 +0000img(~img@user/img)
2022-06-18 19:21:06 +0000pleo(~pleo@user/pleo) (Ping timeout: 276 seconds)
2022-06-18 19:21:29 +0000[_][itchyjunk]
2022-06-18 19:23:25 +0000slaydr(~slaydr@75.164.63.238) (Quit: Leaving)
2022-06-18 19:24:37 +0000gentauro_(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2022-06-18 19:25:40 +0000machinedgod(~machinedg@S0106ac17c8c1d72e.cg.shawcable.net)
2022-06-18 19:30:03 +0000gentauro(~gentauro@user/gentauro)
2022-06-18 19:33:51 +0000quarkyalice(~quarkyali@user/quarkyalice)
2022-06-18 19:34:01 +0000quarkyalice(~quarkyali@user/quarkyalice) (Client Quit)
2022-06-18 19:36:21 +0000jmdaemon(~jmdaemon@user/jmdaemon)
2022-06-18 19:40:03 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-06-18 19:41:43 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-06-18 19:45:08 +0000yauhsien(~yauhsien@61-231-59-135.dynamic-ip.hinet.net)
2022-06-18 19:49:41 +0000pleo(~pleo@user/pleo)
2022-06-18 19:50:20 +0000yauhsien(~yauhsien@61-231-59-135.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
2022-06-18 19:50:41 +0000 <maerwald> git
2022-06-18 19:50:43 +0000 <maerwald> oops
2022-06-18 19:54:10 +0000brettgilio(~brettgili@virtlab.gq)
2022-06-18 19:54:54 +0000pleo(~pleo@user/pleo) (Ping timeout: 276 seconds)
2022-06-18 19:57:30 +0000dostoevsky(~5c42c5384@user/dostoevsky) (Ping timeout: 240 seconds)
2022-06-18 19:57:57 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
2022-06-18 19:58:07 +0000odnes(~odnes@109-178-160-237.pat.ren.cosmote.net)
2022-06-18 19:58:36 +0000_ht(~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
2022-06-18 19:59:36 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-18 20:04:14 +0000Jeanne-Kamikaze(~Jeanne-Ka@142.147.89.244)
2022-06-18 20:04:20 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 246 seconds)
2022-06-18 20:05:57 +0000mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-18 20:06:35 +0000kenaryn(~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr) (Quit: leaving)
2022-06-18 20:09:03 +0000pleo(~pleo@user/pleo)
2022-06-18 20:09:23 +0000jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-06-18 20:12:01 +0000yauhsien(~yauhsien@61-231-59-135.dynamic-ip.hinet.net)
2022-06-18 20:14:53 +0000jakalx(~jakalx@base.jakalx.net)
2022-06-18 20:15:53 +0000cheater(~Username@user/cheater) (Ping timeout: 246 seconds)
2022-06-18 20:16:25 +0000yauhsien(~yauhsien@61-231-59-135.dynamic-ip.hinet.net) (Ping timeout: 248 seconds)
2022-06-18 20:16:27 +0000cheater(~Username@user/cheater)
2022-06-18 20:19:23 +0000werneta(~werneta@137.79.237.183) (Ping timeout: 246 seconds)
2022-06-18 20:20:47 +0000raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
2022-06-18 20:21:32 +0000werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-06-18 20:32:37 +0000pavonia(~user@user/siracusa)
2022-06-18 20:37:13 +0000averell(~averell@user/averell)
2022-06-18 20:52:22 +0000jinsun__(~jinsun@user/jinsun)
2022-06-18 20:53:54 +0000tdammers(~tdammers@77.109.72.118.res.static.edpnet.net) (Ping timeout: 272 seconds)
2022-06-18 20:54:03 +0000jinsun___(~jinsun@user/jinsun)
2022-06-18 20:56:25 +0000jinsun(~jinsun@user/jinsun) (Ping timeout: 248 seconds)
2022-06-18 20:57:02 +0000jinsun__(~jinsun@user/jinsun) (Ping timeout: 255 seconds)
2022-06-18 20:59:42 +0000jinsun(~jinsun@user/jinsun)
2022-06-18 21:02:26 +0000jinsun___(~jinsun@user/jinsun) (Ping timeout: 255 seconds)
2022-06-18 21:03:08 +0000machinedgod(~machinedg@S0106ac17c8c1d72e.cg.shawcable.net) (Ping timeout: 246 seconds)
2022-06-18 21:03:33 +0000jgeerds(~jgeerds@55d45f48.access.ecotel.net)
2022-06-18 21:07:07 +0000tdammers(~tdammers@77.109.72.118.res.static.edpnet.net)
2022-06-18 21:11:06 +0000eldritch(~eldritch@user/eldritch) (Quit: bye)
2022-06-18 21:11:06 +0000glider(~glider@user/glider) (Quit: ZNC - https://znc.in)
2022-06-18 21:11:06 +0000anderson(~ande@user/anderson) (Quit: bye)
2022-06-18 21:15:32 +0000justsomeguy(~justsomeg@user/justsomeguy)
2022-06-18 21:17:49 +0000Luj(~Luj@2a01:e0a:5f9:9681:d2aa:9086:78eb:27f1) (Quit: The Lounge - https://thelounge.chat)
2022-06-18 21:18:47 +0000machinedgod(~machinedg@66.244.246.252)
2022-06-18 21:19:00 +0000Luj(~Luj@2a01:e0a:5f9:9681:80c1:f4a2:1ca1:2f20)
2022-06-18 21:26:32 +0000anderson(~ande@user/anderson)
2022-06-18 21:26:45 +0000Alex_test(~al_test@178.34.150.200) (Quit: ;-)
2022-06-18 21:27:20 +0000alp__(~alp@user/alp) (Remote host closed the connection)
2022-06-18 21:27:22 +0000AlexZenon(~alzenon@178.34.150.200) (Quit: ;-)
2022-06-18 21:27:30 +0000AlexNoo(~AlexNoo@178.34.150.200) (Quit: Leaving)
2022-06-18 21:27:40 +0000alp__(~alp@user/alp)
2022-06-18 21:29:20 +0000odnes(~odnes@109-178-160-237.pat.ren.cosmote.net) (Remote host closed the connection)
2022-06-18 21:30:07 +0000Luj(~Luj@2a01:e0a:5f9:9681:80c1:f4a2:1ca1:2f20) (Quit: The Lounge - https://thelounge.chat)
2022-06-18 21:30:35 +0000eldritch(~eldritch@user/eldritch)
2022-06-18 21:31:44 +0000glider(~glider@user/glider)
2022-06-18 21:32:43 +0000raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-06-18 21:36:48 +0000Luj(~Luj@2a01:e0a:5f9:9681:c0fe:4e75:d9a4:167f)
2022-06-18 21:41:25 +0000__monty__(~toonn@user/toonn) (Quit: leaving)
2022-06-18 21:43:30 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-06-18 21:46:24 +0000Jeanne-Kamikaze(~Jeanne-Ka@142.147.89.244) (Quit: Leaving)
2022-06-18 21:50:37 +0000alp__(~alp@user/alp) (Ping timeout: 260 seconds)
2022-06-18 21:53:52 +0000nate4(~nate@98.45.169.16)
2022-06-18 21:55:17 +0000liebach(~liebach@srv2047.zentience.net) ()
2022-06-18 21:55:49 +0000justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 256 seconds)
2022-06-18 21:58:26 +0000nate4(~nate@98.45.169.16) (Ping timeout: 246 seconds)
2022-06-18 21:59:18 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:9528:58d5:850d:37ed) (Remote host closed the connection)
2022-06-18 22:00:51 +0000Tuplanolla(~Tuplanoll@91-159-68-181.elisa-laajakaista.fi) (Quit: Leaving.)
2022-06-18 22:01:20 +0000jakalx(~jakalx@base.jakalx.net) ()
2022-06-18 22:02:01 +0000zebrag(~chris@user/zebrag) (Ping timeout: 248 seconds)
2022-06-18 22:11:16 +0000jakalx(~jakalx@base.jakalx.net)
2022-06-18 22:11:17 +0000Vajb(~Vajb@2001:999:40:4c50:1b24:879c:6df3:1d06) (Read error: Connection reset by peer)
2022-06-18 22:12:01 +0000Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-06-18 22:17:32 +0000gmg(~user@user/gehmehgeh) (Quit: Leaving)
2022-06-18 22:22:17 +0000mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-06-18 22:23:53 +0000zeenk(~zeenk@2a02:2f04:a013:9000:e45d:7fb3:ec71:e806)
2022-06-18 22:25:04 +0000quarkyalice(~quarkyali@user/quarkyalice)
2022-06-18 22:26:19 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6)
2022-06-18 22:27:38 +0000takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-06-18 22:30:28 +0000Feuermagier(~Feuermagi@user/feuermagier) (Remote host closed the connection)
2022-06-18 22:32:41 +0000Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-06-18 22:34:32 +0000zebrag(~chris@user/zebrag)
2022-06-18 22:41:18 +0000lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2022-06-18 22:48:24 +0000jgeerds(~jgeerds@55d45f48.access.ecotel.net) (Ping timeout: 248 seconds)
2022-06-18 22:49:49 +0000o-90(~o-90@gateway/tor-sasl/o-90)
2022-06-18 22:53:31 +0000kannon(~NK@c-73-170-170-57.hsd1.ca.comcast.net)
2022-06-18 22:53:38 +0000o-90(~o-90@gateway/tor-sasl/o-90) (Remote host closed the connection)
2022-06-18 22:54:00 +0000o-90(~o-90@gateway/tor-sasl/o-90)
2022-06-18 22:54:48 +0000 <kannon> ok I think I'm on the libera network finally :)
2022-06-18 22:55:58 +0000 <kannon> when I load Control.Monad, I'm getting an error: PRELUDE> join Maybe (Maybe 5)
2022-06-18 22:56:21 +0000 <hpc> Maybe is the type, you want Just instead
2022-06-18 22:56:23 +0000 <hpc> @src Maybe
2022-06-18 22:56:24 +0000 <lambdabot> data Maybe a = Nothing | Just a
2022-06-18 22:56:29 +0000 <hpc> @src Bool
2022-06-18 22:56:29 +0000 <lambdabot> data Bool = False | True deriving (Eq, Ord)
2022-06-18 22:56:52 +0000 <hpc> Nothing :: Maybe a
2022-06-18 22:56:55 +0000 <hpc> Just :: a -> Maybe a
2022-06-18 22:56:59 +0000 <geekosaur> also, missing set of parens
2022-06-18 22:57:16 +0000 <kannon> I am a dumbass thanks hpc
2022-06-18 22:57:45 +0000 <hpc> this is a pretty common issue with learning ADT syntax
2022-06-18 22:58:01 +0000funsafe(~funsafe@76.105.238.154) (Ping timeout: 248 seconds)
2022-06-18 22:58:46 +0000 <hpc> i think GADT syntax would make more sense if you're learning the language, but i have no real evidence for it other than my own experience
2022-06-18 22:58:47 +0000nate4(~nate@98.45.169.16)
2022-06-18 22:58:52 +0000 <hpc> but that's a whole other thing
2022-06-18 22:59:09 +0000 <hpc> something you can google later maybe
2022-06-18 22:59:49 +0000funsafe(~funsafe@76.105.238.154)
2022-06-18 23:01:56 +0000 <kannon> thanks all. also, in haskell, anyone have a simple explanation for the math notation like when I see forall a.a :: " ... ". is that like when in abs algebra the set has to be all of the same type?
2022-06-18 23:02:34 +0000o-90(~o-90@gateway/tor-sasl/o-90) (Ping timeout: 240 seconds)
2022-06-18 23:02:43 +0000 <kannon> (never finished abstract algebra)
2022-06-18 23:03:46 +0000 <hpc> it comes from logic, and in that context it's fairly obvious - https://en.wikipedia.org/wiki/Forall
2022-06-18 23:04:21 +0000 <hpc> in haskell, it's basically just bringing type variables into scope
2022-06-18 23:04:42 +0000 <hpc> kind of like how a lambda brings value-level variables into scope
2022-06-18 23:04:53 +0000 <EvanR> forall types a . something something a something
2022-06-18 23:05:09 +0000 <EvanR> where what "types" means can be refined with kind signatures
2022-06-18 23:05:22 +0000 <hpc> (\x -> ...) is kind of like saying "for all x, this other thing that uses x"
2022-06-18 23:05:27 +0000 <hpc> :t map
2022-06-18 23:05:29 +0000 <lambdabot> (a -> b) -> [a] -> [b]
2022-06-18 23:05:32 +0000 <hpc> % :t map
2022-06-18 23:05:32 +0000 <yahb2> map :: (a -> b) -> [a] -> [b]
2022-06-18 23:05:42 +0000 <hpc> bah, pretend that shows foralls
2022-06-18 23:05:50 +0000 <hpc> map :: forall a b. the rest of it
2022-06-18 23:06:13 +0000 <hpc> is saying "for all types a and b, there's a function 'map' that does the things map does"
2022-06-18 23:06:57 +0000 <geekosaur> % :set -fprint-explicit-foralls
2022-06-18 23:06:57 +0000 <yahb2> <no output>
2022-06-18 23:06:58 +0000 <hpc> this gets interesting when you can put that forall somewhere other than right at the beginning
2022-06-18 23:07:03 +0000 <geekosaur> % :t map
2022-06-18 23:07:03 +0000 <yahb2> map :: forall {a} {b}. (a -> b) -> [a] -> [b]
2022-06-18 23:07:12 +0000 <hpc> but that's too interesting for someone just starting out
2022-06-18 23:07:23 +0000 <hpc> the thing to google is RankNTypes
2022-06-18 23:08:19 +0000 <kannon> so yeah one doesn't really need to think of that notation. it's sort of redundant?
2022-06-18 23:08:42 +0000 <hpc> it's redundant until it isn't
2022-06-18 23:09:11 +0000 <hpc> but more or less yeah, so it gets omitted until you're doing the weird stuff
2022-06-18 23:09:21 +0000 <kannon> hmmm ok thanks
2022-06-18 23:09:59 +0000 <EvanR> the conventional use of a, b, c as type variables makes it easy to infer that you intended to just introduce them, but you can name them anything, then it's less obvious
2022-06-18 23:10:29 +0000 <monochrom> Implicit quantifiers are historically proven to impede learning.
2022-06-18 23:10:32 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-06-18 23:10:45 +0000 <hpc> other common type variable conventions are f, g, m, k, s
2022-06-18 23:10:45 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6) (Remote host closed the connection)
2022-06-18 23:10:45 +0000 <EvanR> especially when you have some other type signature in scope using scoped type variables
2022-06-18 23:11:03 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Client Quit)
2022-06-18 23:11:06 +0000 <hpc> or you can just give them full names, if you're doing something specific enough that a single letter isn't helpful
2022-06-18 23:14:06 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:7587:2ca7:7a17:98c6)
2022-06-18 23:15:28 +0000 <kannon> I was reading Rank N types literature.. I don't follow this: https://wiki.haskell.org/Rank-N_types
2022-06-18 23:16:31 +0000 <kannon> when forall is written on the left of (->) or right, i.e.
2022-06-18 23:16:51 +0000zeenk(~zeenk@2a02:2f04:a013:9000:e45d:7fb3:ec71:e806) (Quit: Konversation terminated!)
2022-06-18 23:17:36 +0000 <hpc> it changes who "picks the type", so to speak
2022-06-18 23:18:20 +0000 <hpc> if you have say, foo :: forall a. Num a => (a -> a) -> Int -> Int, you can't define it as foo f x = f x
2022-06-18 23:18:34 +0000 <hpc> because someone might pass an f :: Double -> Double, and that would be valid
2022-06-18 23:18:58 +0000 <hpc> but if you instead wrote foo :: (forall a. Num a => (a -> a)) -> Int -> Int, you can define it as foo f x = f x
2022-06-18 23:19:20 +0000 <hpc> but now the only things that you can pass as f have to be as polymorphic as what foo's type says it should be
2022-06-18 23:19:30 +0000 <hpc> it has to be something that can be applied to any number
2022-06-18 23:19:49 +0000 <hpc> this also means you can write foo :: (forall a. Num a => (a -> a)) -> (Int, Double) -> (Int, Double)
2022-06-18 23:19:54 +0000 <hpc> foo f (x, y) = (f x, f y)
2022-06-18 23:20:26 +0000 <hpc> because it knows f is polymorphic enough to be applied to both an Int and a Double without breaking any rules
2022-06-18 23:20:57 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 248 seconds)
2022-06-18 23:21:04 +0000TonyStone(~TonyStone@2603-7080-8607-c36a-4880-a368-0091-2141.res6.spectrum.com) (Remote host closed the connection)
2022-06-18 23:21:14 +0000 <kannon> I will study that hpc. thank you!
2022-06-18 23:21:31 +0000 <hpc> (this is a very simplified explanation, there's a lot to learn about higher-ranked types and definitely more than i can properly explain)
2022-06-18 23:22:28 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2022-06-18 23:22:59 +0000TonyStone(~TonyStone@2603-7080-8607-c36a-514e-68a6-af12-10c9.res6.spectrum.com)
2022-06-18 23:25:00 +0000 <kannon> so it's like this: forall m a. m (m a) -> m a ... m is added because it confirms that all a's need to be contained in a monad structure ?
2022-06-18 23:25:55 +0000 <kannon> both m and a are on the right side of the (->) operator
2022-06-18 23:26:01 +0000 <kannon> pardon left side
2022-06-18 23:28:01 +0000prolic(~prolic@2803:2a00:2c0f:b96d:69a9:fa3b:385:e53d)
2022-06-18 23:28:05 +0000 <hpc> on the outside, as it were
2022-06-18 23:28:15 +0000 <hpc> read it like forall m a. (m (m a) -> m a)
2022-06-18 23:29:03 +0000 <hpc> relative to (->), there's 3 places in the syntax tree forall can appear
2022-06-18 23:29:17 +0000 <hpc> outside and right are essentially the same
2022-06-18 23:29:23 +0000 <hpc> and left is the weird one
2022-06-18 23:30:21 +0000 <kannon> what would you write if you put it on the "right" ?
2022-06-18 23:31:27 +0000 <kannon> (m (m a) -> m a) forall m a.
2022-06-18 23:31:35 +0000 <monochrom> It is very simple and robotic. Suppose "v :: forall t. blahbah". Then the receiver of v chooses what t becomes. The provider is not allowed to.
2022-06-18 23:31:50 +0000shapr(~user@2600:4040:2d31:7100:c9e6:4184:8419:55f7) (Ping timeout: 255 seconds)
2022-06-18 23:32:39 +0000 <monochrom> Therefore, for example, suppose you code up "foo :: forall a. (forall b. -> [b]) -> Maybe a", and let me use it.
2022-06-18 23:32:40 +0000 <hpc> kannon: more like (Something Monomorphic -> forall a. a)
2022-06-18 23:32:48 +0000 <hpc> is the same as forall a. (Something Monomorphic -> a)
2022-06-18 23:33:02 +0000 <monochrom> I am the receiver of the outer "forall a", therefore I choose what a becomes, you don't.
2022-06-18 23:33:24 +0000 <hpc> (can't think of a good example where the type variable isn't also on the left :P)
2022-06-18 23:33:31 +0000o-90(~o-90@gateway/tor-sasl/o-90)
2022-06-18 23:33:41 +0000 <monochrom> But I have to pass a parameter "p :: forall b. b -> [b]" to you. You are the receiver of that "forall b". Therefore, you choose what b becomes, I don't.
2022-06-18 23:34:45 +0000prolic(~prolic@2803:2a00:2c0f:b96d:69a9:fa3b:385:e53d) (Quit: Client closed)
2022-06-18 23:34:56 +0000 <monochrom> This is the same in the 2-person-game semantics of logic.
2022-06-18 23:35:35 +0000 <kannon> so to be clear the "outer is the far left, correct?
2022-06-18 23:35:37 +0000 <monochrom> When I have to prove a "forall x ..." theorem, I am the provider of that theorem, therefore I don't choose what x is; users of that theorem choose.
2022-06-18 23:35:43 +0000 <kannon> "outer"
2022-06-18 23:36:06 +0000 <monochrom> I imagine an Arabic writer would write it at the far right.
2022-06-18 23:36:35 +0000 <hpc> kannon: outside the parens, but the nature of forall syntax does put it on the left visually yeah
2022-06-18 23:36:48 +0000 <monochrom> Actually I imagine that an English mathematician would write like "x + 1 > x for all x" so it's far right too.
2022-06-18 23:37:24 +0000 <hpc> haha
2022-06-18 23:37:52 +0000 <monochrom> Now consider "there exists c>0 s.t. x+c > x for all x".
2022-06-18 23:37:58 +0000hpctries as hard as he can not to rant about how mathematicians write :P
2022-06-18 23:38:15 +0000 <kannon> I cannot let humor enter into this at this stage :/
2022-06-18 23:38:17 +0000 <monochrom> Sorry, I just did. >:)
2022-06-18 23:38:53 +0000 <kannon> but I will get to the bottom of it....thanks
2022-06-18 23:39:13 +0000 <hpc> or will you... get to the undefined of it? :D
2022-06-18 23:39:38 +0000 <kannon> but is this related to overloaded functions?
2022-06-18 23:39:45 +0000 <monochrom> No.
2022-06-18 23:40:10 +0000 <hpc> this has all been part of plain old parametric polymorphism
2022-06-18 23:40:31 +0000 <monochrom> http://www.vex.net/~trebla/humour/tautologies.html #0
2022-06-18 23:41:40 +0000 <hpc> #4 has a permanent place on my whiteboard
2022-06-18 23:42:11 +0000 <hpc> it has a very thecodelesscode kind of feel to it
2022-06-18 23:42:22 +0000 <kannon> I am willing to be the brunt of jokes. :)
2022-06-18 23:43:21 +0000[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 248 seconds)
2022-06-18 23:44:14 +0000o-90(~o-90@gateway/tor-sasl/o-90) (Remote host closed the connection)
2022-06-18 23:45:05 +0000pleo(~pleo@user/pleo) (Quit: quit)
2022-06-18 23:45:24 +0000 <kannon> anyone know how to use this blasted irssi chat client? I cannot scroll upward. or is there a log of this chat?
2022-06-18 23:45:53 +0000 <dsal> topic has a logs url
2022-06-18 23:46:08 +0000 <kannon> can't see it dsal
2022-06-18 23:46:34 +0000 <yushyin> /topic
2022-06-18 23:46:41 +0000 <hpc> pageup/pagedown
2022-06-18 23:47:21 +0000 <dsal> https://ircbrowse.tomsmeding.com/browse/lchaskell
2022-06-18 23:47:37 +0000[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-06-18 23:47:38 +0000 <kannon> got it dsal / hpc thanks
2022-06-18 23:47:56 +0000 <kannon> itchyjunk ? lol
2022-06-18 23:49:17 +0000mvk(~mvk@2607:fea8:5ce3:8500::4588)
2022-06-18 23:50:50 +0000raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2022-06-18 23:54:00 +0000ph88(~ph88@2a02:8109:9e00:71d0::f476) (Quit: Leaving)
2022-06-18 23:58:51 +0000 <kannon> pageup
2022-06-18 23:58:57 +0000 <kannon> shit
2022-06-18 23:59:28 +0000juri__(~juri@79.140.114.236)