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