Logs on 2021-10-19 (liberachat/#haskell)
| 00:00:03 | → | unmanbearpig joins (~unmanbear@user/unmanbearpig) |
| 00:00:22 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 00:00:43 | <zzz> | hey. i just found out we can have duplicate record accessors in data constructors of the same type, as long as their types match |
| 00:03:34 | <geekosaur> | yep. all the way back to H98. problem is they can be partial |
| 00:04:13 | × | alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection) |
| 00:04:25 | → | abrantesasf joins (~abrantesa@187.36.170.211) |
| 00:04:32 | → | alzgh joins (~alzgh@user/alzgh) |
| 00:04:46 | <unit73e> | there's also the DuplicateRecordFields extension |
| 00:05:23 | <unit73e> | though I hardly ever use such extensions |
| 00:05:36 | <monochrom> | Naw, the problem we considered yesterday was "what if I really want different field types". |
| 00:05:51 | <geekosaur> | data Foo = Foo { x :: Int } | Bar { x :: Int; y :: Double } | Baz { y :: Double } -- both x and y are partial and will throw exceptions if accessed from the wrong constructor |
| 00:05:52 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 00:05:52 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 00:05:52 | → | wroathe joins (~wroathe@user/wroathe) |
| 00:06:13 | <monochrom> | So, yesterday the question was about "data T = C1 {a :: Int} | C2 {a :: NotInt}" |
| 00:06:59 | × | myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 264 seconds) |
| 00:08:11 | × | ph88 quits (~ph88@2a02:8109:9e00:7e5c::3d56) (Ping timeout: 264 seconds) |
| 00:08:25 | <unit73e> | Is there a way to make an alias of your own module? because I want to make a `Direction = Up | Down | Left | Right` but there's `Either` and hiding `Left, Right` from Prelude kind of gives me bad taste |
| 00:08:32 | <zzz> | geekosaur: you mean we get an error if we do `y (Foo 7)` ? |
| 00:08:56 | <geekosaur> | zzz, yes |
| 00:09:17 | <awpr> | I can never remember whether it's legal to just say `My.Module.Left`, but it's worth a try |
| 00:09:20 | <geekosaur> | unit73e, xmonad solves that by calling them U, D, L, R |
| 00:09:25 | <zzz> | i hate records |
| 00:09:30 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds) |
| 00:09:33 | <unit73e> | geekosaur, ok. might as well do the same thing. thanks. |
| 00:09:49 | <geekosaur> | awpr, yes |
| 00:10:16 | <monochrom> | In fact you now have to say My.Module.Left and Prelude.Left |
| 00:10:23 | <geekosaur> | (see Direction2D in xmonad) |
| 00:11:09 | <monochrom> | zzz: Please don't conflate Haskell's poor execuse of record syntax with records (the real ones) :) |
| 00:11:19 | × | Cajun quits (~Cajun@user/cajun) (Ping timeout: 256 seconds) |
| 00:11:38 | <zzz> | :) |
| 00:11:41 | <zzz> | give me a record |
| 00:11:43 | × | abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: restarting) |
| 00:11:49 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 00:12:08 | <monochrom> | Oh hell I missed a great pun opportunity. Let me fix it... |
| 00:12:17 | → | acidjnk_new joins (~acidjnk@p200300d0c703cb878946a34aec1faea1.dip0.t-ipconnect.de) |
| 00:12:19 | <monochrom> | For the record, please don't conflate Haskell's poor execuse of record syntax with records (the real ones) :) |
| 00:12:41 | <Axman6> | Not sure that pun works, but I'll allow it |
| 00:14:11 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 00:15:03 | <zzz> | i'm still not sure of what you mean by "real" records |
| 00:15:23 | × | shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 264 seconds) |
| 00:15:29 | × | acidjnk_new3 quits (~acidjnk@p200300d0c703cb87414c380a9484df88.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
| 00:15:33 | <monochrom> | For example in SML, Pascal, C, ... basically every language except Haskell. |
| 00:15:39 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:39a4:166a:24e9:f255) |
| 00:18:01 | × | meer quits (~delicacie@2601:6c4:4080:3f80:cc37:7f71:51d3:b41c) (Ping timeout: 245 seconds) |
| 00:18:10 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds) |
| 00:21:41 | × | fluffyballoon quits (~user@131.93.208.196) (Remote host closed the connection) |
| 00:24:03 | → | Cajun joins (~Cajun@user/cajun) |
| 00:26:36 | → | fluffyballoon joins (~user@131.93.208.196) |
| 00:27:33 | × | Cajun quits (~Cajun@user/cajun) (Client Quit) |
| 00:29:52 | → | Cajun joins (~Cajun@user/cajun) |
| 00:35:01 | → | jollygood2 joins (~bc8165b6@217.29.117.252) |
| 00:40:12 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 00:41:33 | × | sprout quits (~quassel@2a02:a467:ccd6:1:110c:9227:cd24:5132) (Ping timeout: 258 seconds) |
| 00:46:12 | <jollygood2> | there's records synax overhaul in ghc 9.2, which is still in alpha IIRC. RecordDotSyntax is one of them |
| 00:46:12 | × | MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer) |
| 00:46:34 | → | MQ-17J joins (~MQ-17J@8.6.144.138) |
| 00:47:03 | <jollygood2> | also DuplicateRecordFields |
| 00:47:16 | <c_wraith> | DuplicateRecordFields has been around for a long time |
| 00:47:26 | <c_wraith> | NoFieldSelectors is the interesting new one in 9.2 |
| 00:47:40 | <jollygood2> | h yes, that one |
| 00:47:58 | <zzz> | are lenses going to become obsolete? |
| 00:48:14 | <c_wraith> | No, lenses are finally going to be strictly better than built-in tools |
| 00:48:29 | <jollygood2> | no. from what I've read, they work fine with dot syntax. and do a lot more |
| 00:48:29 | <zzz> | how so? |
| 00:48:46 | <Axman6> | this is news to me too :o |
| 00:49:13 | <kronicmage> | strictly better except for build times -_- |
| 00:49:38 | <monochrom> | Um, why do I get the feeling that "lenses are finally better than built-in tools" means "built-in tools are finally getting worse"? :) |
| 00:50:04 | <zzz> | that thought touched my mind |
| 00:50:07 | <dsal> | build times are only slow if you're using TH. You could always hand-write your lenses. |
| 00:50:25 | <jollygood2> | basically, instead of person personName (groupLeader group) we can use group.leader.name . and different records can also have .name etc fields |
| 00:50:33 | <jollygood2> | pretty neat |
| 00:50:44 | <dsal> | That's what I did in the project I got yelled at for using lenses -- just locally defined all the lenses where I needed them instead of making them global. |
| 00:50:57 | <dsal> | I don't know much about RecordDotSyntax, but I don't think I like it. |
| 00:51:00 | <c_wraith> | here: https://www.reddit.com/r/haskell/comments/mhzf9l/announce_ghc_921alpha1_now_available/gt3lexp/ |
| 00:51:27 | <zzz> | i don't even like qualified dot syntax |
| 00:51:33 | <zzz> | for the obvious reasons |
| 00:52:09 | <c_wraith> | Man, I've been waiting on 9.2 for 6 months, according to reddit |
| 00:52:18 | <zzz> | module dot syntax? i don't know what to call it |
| 00:53:02 | <jollygood2> | aprox how far are we from stable 9.2? |
| 00:57:31 | × | unit73e quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 252 seconds) |
| 00:57:59 | × | hiruji quits (~hiruji@user/hiruji) (Ping timeout: 264 seconds) |
| 00:58:15 | <dsal> | zzz: do you just not like dots? |
| 00:58:23 | → | hiruji joins (~hiruji@user/hiruji) |
| 00:58:26 | <dsal> | Or things that appear to mean different things. |
| 00:58:35 | × | MQ-17J quits (~MQ-17J@8.6.144.138) (Ping timeout: 264 seconds) |
| 00:59:04 | <kronicmage> | i do wish keyboards had a \cdot key so we could differentiate composition . and record . |
| 00:59:25 | <dsal> | My keyboard has that. |
| 00:59:28 | <geekosaur> | · |
| 00:59:34 | × | segfaultfizzbuzz quits (~segfaultf@135-180-0-138.static.sonic.net) (Ping timeout: 258 seconds) |
| 00:59:34 | <kronicmage> | damn |
| 00:59:41 | → | abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
| 00:59:47 | <kronicmage> | now we just need unicode character extension to support that lol |
| 00:59:48 | <dsal> | I use emacs. It has all the thigns. |
| 01:00:01 | <dsal> | I literally just type "f \cdot g" and it shows up as "f · g" |
| 01:00:08 | <geekosaur> | -XUnicodeSyntax? |
| 01:00:39 | <jollygood2> | I think it is pretty uncommon to omit space when composing functions. |
| 01:00:45 | <geekosaur> | hm, not even needed. (·) = (.) |
| 01:01:12 | <jollygood2> | they could have used different character, but dot is such an ubiquitous syntax for field access across countless languages |
| 01:01:36 | <dsal> | I like this example: sqr x = x × x |
| 01:01:40 | <monochrom> | module Data·Function where f ∘ g = \x -> f (g x) -- >:) |
| 01:02:01 | <awpr> | was that intentionally added to `base`, or was somebody just ASCII-art-ing a confused face and forgot the leading `--`? |
| 01:02:03 | <kronicmage> | monochrom: that's sexy lmao |
| 01:02:42 | <zzz> | dsal: things that appear to mean different things |
| 01:03:07 | <dsal> | zzz: It kind of means the same thing in lens, but you get to think of it a very different way. |
| 01:03:11 | × | lbseale_ quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer) |
| 01:03:58 | <kronicmage> | i still think it's kind of weird that lenses compose backwards |
| 01:04:34 | <dsal> | It's usually not weird in practice, but sometimes it is. |
| 01:04:52 | → | acidjnk_new3 joins (~acidjnk@pd9e0b933.dip0.t-ipconnect.de) |
| 01:05:31 | <c_wraith> | they compose forward when you realize a lens is being used to make things bigger :) |
| 01:06:13 | <elcaro> | Raku uses '∘' for function composition. if you don't want to unicode, you use 'o' instead) |
| 01:06:37 | <awpr> | I'm tempted to write yet another lens library with the type parameters in the opposite order just so people can't say they compose backwards |
| 01:07:06 | <dsal> | Call it amateurfunctor-lenses |
| 01:07:26 | <c_wraith> | ... how long have you been sitting on that name? |
| 01:08:00 | × | acidjnk_new quits (~acidjnk@p200300d0c703cb878946a34aec1faea1.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
| 01:08:26 | <monochrom> | SML uses o for function composition and declares it infix. |
| 01:08:53 | <monochrom> | In general you can declare any alphabetical function name infix. |
| 01:11:12 | → | sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
| 01:11:20 | <c_wraith> | that seems like something of a pain for parsing |
| 01:11:36 | <monochrom> | Yeah |
| 01:13:05 | → | MQ-17J joins (~MQ-17J@8.6.144.172) |
| 01:16:13 | × | sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds) |
| 01:16:15 | → | lavaman joins (~lavaman@98.38.249.169) |
| 01:20:54 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 260 seconds) |
| 01:21:58 | × | neurocyte0132889 quits (~neurocyte@user/neurocyte) (Ping timeout: 265 seconds) |
| 01:22:04 | → | falafel joins (~falafel@2603-8000-d800-688c-c469-52c4-b20d-779e.res6.spectrum.com) |
| 01:23:24 | <jollygood2> | this is dope. c{taken.year = y} -- nested update map (.taken.term) -- nested selector |
| 01:23:46 | <monochrom> | :) |
| 01:29:24 | → | o1lo01ol1o joins (~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) |
| 01:31:29 | → | PHO` joins (~PHO@2405:6581:4ee0:2800:c84:d3ec:1ba2:843b) |
| 01:33:18 | × | acidjnk_new3 quits (~acidjnk@pd9e0b933.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
| 01:33:37 | × | guydb89 quits (~guy@98.40.140.117) (Quit: Lost terminal) |
| 01:34:04 | × | o1lo01ol1o quits (~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) (Ping timeout: 258 seconds) |
| 01:40:35 | × | abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 258 seconds) |
| 01:40:53 | <zzz> | dsal: "bats" would be a better name |
| 01:42:11 | × | emf_ quits (~emf@2620:10d:c090:400::5:a662) (Ping timeout: 245 seconds) |
| 01:43:44 | → | cjb94216 joins (~cjb@user/cjb) |
| 01:44:18 | → | sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
| 01:45:01 | → | shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
| 01:45:52 | × | cjb quits (~cjb@user/cjb) (Ping timeout: 260 seconds) |
| 01:46:28 | cjb94216 | is now known as cjb |
| 01:47:44 | <dsal> | zzz: heh. I just got that. |
| 01:48:08 | × | jespada quits (~jespada@2803:9800:9842:7a62:a1db:843b:ed19:cad6) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 01:49:24 | × | sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds) |
| 01:49:33 | → | abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
| 01:54:30 | × | boxscape_ quits (~boxscape_@p54a3581e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 01:55:06 | × | falafel quits (~falafel@2603-8000-d800-688c-c469-52c4-b20d-779e.res6.spectrum.com) (Ping timeout: 245 seconds) |
| 01:56:11 | × | xff0x quits (~xff0x@2001:1a81:52fe:af00:73f9:c60:e593:d5a0) (Ping timeout: 264 seconds) |
| 01:57:47 | → | xff0x joins (~xff0x@2001:1a81:5338:8400:6a8d:1ab1:8641:5267) |
| 02:09:57 | fluffyballoon | is now known as fluffyballon` |
| 02:10:04 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 02:11:38 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 258 seconds) |
| 02:17:00 | fluffyballon` | is now known as fluffyballoon |
| 02:20:59 | × | kupi quits (uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 02:24:08 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 02:25:18 | × | slack1256 quits (~slack1256@45.4.2.52) (Ping timeout: 260 seconds) |
| 02:37:20 | × | argento quits (~argent0@168-227-96-26.ptr.westnet.com.ar) (Quit: leaving) |
| 02:41:55 | × | fluffyballoon quits (~user@131.93.208.196) (Ping timeout: 258 seconds) |
| 02:44:02 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 02:44:08 | × | td_ quits (~td@muedsl-82-207-238-233.citykom.de) (Ping timeout: 265 seconds) |
| 02:44:36 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 02:45:43 | → | td_ joins (~td@muedsl-82-207-238-089.citykom.de) |
| 02:46:35 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 264 seconds) |
| 02:47:59 | × | abrantesasf quits (~abrantesa@187.36.170.211) (Remote host closed the connection) |
| 02:48:16 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:52:32 | → | myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net) |
| 02:55:48 | × | burnsidesLlama quits (~burnsides@dhcp168-043.wadham.ox.ac.uk) (Remote host closed the connection) |
| 03:01:37 | × | PHO` quits (~PHO@2405:6581:4ee0:2800:c84:d3ec:1ba2:843b) (Quit: Leaving) |
| 03:02:16 | → | PHO` joins (~pho@akari.cielonegro.org) |
| 03:06:53 | × | alx741 quits (~alx741@186.178.108.68) (Quit: alx741) |
| 03:18:56 | → | Axma85485 joins (~Axman6@user/axman6) |
| 03:18:59 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 264 seconds) |
| 03:19:52 | × | alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection) |
| 03:21:02 | × | Axman6 quits (~Axman6@user/axman6) (Ping timeout: 260 seconds) |
| 03:26:09 | → | meer joins (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) |
| 03:26:13 | → | falafel joins (~falafel@2603-8000-d800-688c-c469-52c4-b20d-779e.res6.spectrum.com) |
| 03:32:08 | × | bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 03:33:26 | × | meer quits (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 265 seconds) |
| 03:43:03 | → | meer joins (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) |
| 03:44:37 | meer | is now known as Inst |
| 03:45:30 | → | lavaman joins (~lavaman@98.38.249.169) |
| 03:45:31 | × | elvishjerricco quits (sid237756@id-237756.helmsley.irccloud.com) (Ping timeout: 245 seconds) |
| 03:45:31 | × | Boarders quits (sid425905@id-425905.lymington.irccloud.com) (Ping timeout: 245 seconds) |
| 03:45:31 | × | grfn quits (sid449115@id-449115.helmsley.irccloud.com) (Ping timeout: 245 seconds) |
| 03:46:19 | × | edmundnoble quits (sid229620@id-229620.helmsley.irccloud.com) (Ping timeout: 258 seconds) |
| 03:46:42 | × | ehamberg quits (sid18208@id-18208.hampstead.irccloud.com) (Ping timeout: 258 seconds) |
| 03:46:42 | × | sclv quits (sid39734@haskell/developer/sclv) (Ping timeout: 258 seconds) |
| 03:46:46 | × | tritlo quits (sid58727@user/tritlo) (Ping timeout: 245 seconds) |
| 03:46:46 | × | astra` quits (sid289983@user/amish) (Ping timeout: 245 seconds) |
| 03:47:05 | × | econo quits (uid147250@user/econo) (Ping timeout: 258 seconds) |
| 03:47:11 | × | hnOsmium0001 quits (uid453710@id-453710.hampstead.irccloud.com) (Ping timeout: 264 seconds) |
| 03:47:11 | × | dmj` quits (sid72307@id-72307.hampstead.irccloud.com) (Ping timeout: 264 seconds) |
| 03:47:28 | × | SrPx quits (sid108780@id-108780.uxbridge.irccloud.com) (Ping timeout: 258 seconds) |
| 03:47:47 | × | etrepum quits (sid763@id-763.uxbridge.irccloud.com) (Ping timeout: 264 seconds) |
| 03:47:51 | × | SanchayanMaity quits (sid478177@id-478177.hampstead.irccloud.com) (Ping timeout: 258 seconds) |
| 03:48:01 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 245 seconds) |
| 03:48:18 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 03:48:40 | → | edmundnoble joins (sid229620@helmsley.irccloud.com) |
| 03:49:26 | → | tritlo joins (sid58727@user/tritlo) |
| 03:49:27 | → | SrPx joins (sid108780@id-108780.uxbridge.irccloud.com) |
| 03:49:29 | → | ehamberg joins (sid18208@id-18208.hampstead.irccloud.com) |
| 03:49:29 | → | dmj` joins (sid72307@id-72307.hampstead.irccloud.com) |
| 03:49:30 | → | econo joins (uid147250@user/econo) |
| 03:49:32 | → | SanchayanMaity joins (sid478177@hampstead.irccloud.com) |
| 03:49:34 | → | astra` joins (sid289983@user/amish) |
| 03:49:45 | → | etrepum joins (sid763@id-763.uxbridge.irccloud.com) |
| 03:49:49 | → | hnOsmium0001 joins (uid453710@id-453710.hampstead.irccloud.com) |
| 03:50:11 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 264 seconds) |
| 03:59:57 | → | grfn joins (sid449115@id-449115.helmsley.irccloud.com) |
| 03:59:57 | → | elvishjerricco joins (sid237756@id-237756.helmsley.irccloud.com) |
| 04:00:26 | → | sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
| 04:00:59 | × | shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 265 seconds) |
| 04:01:57 | → | sclv joins (sid39734@haskell/developer/sclv) |
| 04:02:04 | → | Boarders joins (sid425905@id-425905.lymington.irccloud.com) |
| 04:05:06 | × | sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds) |
| 04:05:41 | → | azimut_ joins (~azimut@gateway/tor-sasl/azimut) |
| 04:08:36 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds) |
| 04:19:10 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
| 04:31:11 | × | phma quits (~phma@host-67-44-209-44.hnremote.net) (Read error: Connection reset by peer) |
| 04:31:36 | → | jeffz joins (~user@lambda.xen.prgmr.com) |
| 04:32:09 | → | phma joins (~phma@host-67-44-208-9.hnremote.net) |
| 04:35:07 | → | sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
| 04:35:20 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 04:35:20 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 04:35:20 | → | wroathe joins (~wroathe@user/wroathe) |
| 04:39:23 | × | MQ-17J quits (~MQ-17J@8.6.144.172) (Ping timeout: 264 seconds) |
| 04:39:43 | × | sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds) |
| 04:39:59 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 258 seconds) |
| 04:40:37 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 04:40:59 | × | slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving) |
| 04:43:52 | → | MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
| 04:44:47 | × | Inst quits (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 264 seconds) |
| 04:46:35 | × | rekahsoft quits (~rekahsoft@52.129.35.150) (Ping timeout: 264 seconds) |
| 04:53:59 | → | bitmapper joins (uid464869@id-464869.lymington.irccloud.com) |
| 04:54:02 | × | cjb quits (~cjb@user/cjb) () |
| 04:56:13 | Axma85485 | is now known as Axman6 |
| 05:06:00 | → | o1lo01ol1o joins (~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) |
| 05:08:00 | × | zmt00 quits (~zmt00@user/zmt00) (Read error: Connection reset by peer) |
| 05:08:17 | → | coot joins (~coot@37.30.48.91.nat.umts.dynamic.t-mobile.pl) |
| 05:09:59 | × | myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 264 seconds) |
| 05:10:11 | → | sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
| 05:10:31 | × | o1lo01ol1o quits (~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) (Ping timeout: 252 seconds) |
| 05:12:12 | → | zmt00 joins (~zmt00@user/zmt00) |
| 05:13:04 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 05:14:41 | × | jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 245 seconds) |
| 05:15:15 | × | sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds) |
| 05:15:23 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 05:18:14 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 05:26:25 | → | sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
| 05:30:47 | → | mikoto-chan joins (~mikoto-ch@185.237.102.123) |
| 05:30:56 | × | sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 245 seconds) |
| 05:33:53 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 05:34:42 | × | rembo10 quits (~rembo10@remulis.com) (Quit: ZNC 1.8.2 - https://znc.in) |
| 05:35:45 | → | rembo10 joins (~rembo10@remulis.com) |
| 05:42:53 | → | sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
| 05:47:22 | × | sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds) |
| 05:49:26 | × | mikoto-chan quits (~mikoto-ch@185.237.102.123) (Quit: mikoto-chan) |
| 05:50:31 | × | falafel quits (~falafel@2603-8000-d800-688c-c469-52c4-b20d-779e.res6.spectrum.com) (Ping timeout: 245 seconds) |
| 05:55:10 | × | _\_ quits (~o@user/ding) (Read error: Connection reset by peer) |
| 05:55:38 | → | _\_ joins (~o@user/ding) |
| 05:59:04 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 05:59:20 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 05:59:43 | → | Inst joins (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) |
| 06:15:47 | → | sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
| 06:18:33 | × | MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Remote host closed the connection) |
| 06:18:48 | → | MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
| 06:19:59 | × | _xor quits (~xor@72.49.199.147) (Read error: Connection reset by peer) |
| 06:20:31 | × | sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 245 seconds) |
| 06:20:51 | → | pmk joins (~user@2a02:587:9418:a234:40de:ca53:4e3:4a70) |
| 06:20:52 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 06:21:59 | × | LiaoTao quits (~LiaoTao@gateway/tor-sasl/liaotao) (Remote host closed the connection) |
| 06:24:25 | × | brainfreeze quits (~brainfree@2a03:1b20:4:f011::20d) (Remote host closed the connection) |
| 06:25:02 | × | jollygood2 quits (~bc8165b6@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout)) |
| 06:25:51 | → | _xor joins (~xor@72.49.199.147) |
| 06:26:23 | → | michalz joins (~michalz@185.246.204.77) |
| 06:26:50 | × | _xor quits (~xor@72.49.199.147) (Read error: Connection reset by peer) |
| 06:27:11 | → | _xor joins (~xor@72.49.199.147) |
| 06:28:37 | → | Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
| 06:34:15 | × | p3n quits (~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) (Quit: ZNC 1.8.2 - https://znc.in) |
| 06:36:22 | × | unmanbearpig quits (~unmanbear@user/unmanbearpig) (Ping timeout: 260 seconds) |
| 06:38:49 | → | p3n joins (~p3n@217.198.124.246) |
| 06:44:00 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 06:44:52 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 06:48:11 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 06:48:47 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 06:49:28 | → | dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net) |
| 06:50:57 | → | Sgeo_ joins (~Sgeo@user/sgeo) |
| 06:51:12 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 06:52:05 | × | Neuromancer quits (~Neuromanc@user/neuromancer) (Ping timeout: 265 seconds) |
| 06:52:40 | → | sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
| 06:56:28 | → | fendor joins (~fendor@77.119.169.61.wireless.dyn.drei.com) |
| 06:57:46 | × | sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds) |
| 06:59:04 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:62eb:f958:5dc3:c1b9) |
| 06:59:48 | → | jonathanx joins (~jonathan@dyn-8-sc.cdg.chalmers.se) |
| 07:06:42 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
| 07:12:03 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 07:12:53 | × | fendor quits (~fendor@77.119.169.61.wireless.dyn.drei.com) (Remote host closed the connection) |
| 07:13:29 | → | ubert joins (~Thunderbi@178.115.56.221.wireless.dyn.drei.com) |
| 07:18:40 | → | Neuromancer joins (~Neuromanc@user/neuromancer) |
| 07:19:03 | → | jollygood2 joins (~bc8165b6@217.29.117.252) |
| 07:19:29 | → | Guest4852 joins (~Guest48@82.40.121.143) |
| 07:21:00 | × | wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds) |
| 07:21:05 | <jollygood2> | hi. what hash table should I use? I have perfect hash, several tens of thousands of elements, and look up will be used in a very tight loop |
| 07:21:32 | <jollygood2> | I don't need mutability |
| 07:21:34 | → | ub joins (~Thunderbi@178.115.56.221.wireless.dyn.drei.com) |
| 07:23:53 | → | nschoe joins (~quassel@178.251.84.79) |
| 07:24:22 | → | sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
| 07:24:35 | × | nschoe quits (~quassel@178.251.84.79) (Client Quit) |
| 07:28:54 | → | max22- joins (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) |
| 07:30:10 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 07:30:29 | × | Cajun quits (~Cajun@user/cajun) (Ping timeout: 256 seconds) |
| 07:31:48 | → | Inst_ joins (~Inst@2601:6c4:4080:3f80:6134:7ceb:5f94:e843) |
| 07:32:06 | <Guest4852> | Why does `f :: Either Bool Void -> Char; f (Left True) = 'T'; f (Left False) = 'F'` give a non-exhaustive pattern match error? It covers every possible pattern. |
| 07:33:54 | <Inst_> | so |
| 07:34:09 | → | chele joins (~chele@user/chele) |
| 07:39:06 | <pavonia> | Guest4852: What about Right? |
| 07:40:14 | <Guest4852> | Right what? There's nothing that can be inside it. |
| 07:40:30 | <pavonia> | Right undefined |
| 07:41:19 | <Guest4852> | Oh. Good point. |
| 07:44:10 | <lortabac> | Guest4852: that's what 'absurd' is for |
| 07:44:31 | × | retroid_ quits (~retro@2e41e9c8.skybroadband.com) (Ping timeout: 252 seconds) |
| 07:44:41 | <lortabac> | f (Right x) = absurd x |
| 07:45:23 | → | retroid_ joins (~retro@2e41e9c8.skybroadband.com) |
| 07:47:13 | → | lavaman joins (~lavaman@98.38.249.169) |
| 07:50:57 | <Guest4852> | I was hoping to avoid the extra code. But I guess I can't. Thanks. |
| 07:51:39 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 258 seconds) |
| 07:55:08 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:39a4:166a:24e9:f255) (Remote host closed the connection) |
| 07:56:14 | × | hnOsmium0001 quits (uid453710@id-453710.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 07:57:23 | × | Sgeo_ quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 08:00:42 | edwtjo_ | is now known as edwtjo |
| 08:04:52 | × | jonathanx quits (~jonathan@dyn-8-sc.cdg.chalmers.se) (Ping timeout: 252 seconds) |
| 08:05:24 | → | hendursa1 joins (~weechat@user/hendursaga) |
| 08:06:13 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 08:08:33 | → | o1lo01ol1o joins (~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) |
| 08:09:06 | → | kuribas joins (~user@ptr-25vy0i72e2u2h548zvl.18120a2.ip6.access.telenet.be) |
| 08:09:06 | × | hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 276 seconds) |
| 08:11:02 | → | mei6 joins (~mei@user/mei) |
| 08:13:36 | × | o1lo01ol1o quits (~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) (Remote host closed the connection) |
| 08:14:35 | → | dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be) |
| 08:14:39 | × | Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 258 seconds) |
| 08:14:53 | → | o1lo01ol1o joins (~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) |
| 08:17:29 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 08:17:54 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 08:18:08 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 08:18:14 | → | stengah joins (~stengah@user/stengah) |
| 08:19:31 | → | ubert1 joins (~Thunderbi@91.141.50.28.wireless.dyn.drei.com) |
| 08:19:32 | → | ub1 joins (~Thunderbi@91.141.50.28.wireless.dyn.drei.com) |
| 08:19:35 | × | ub quits (~Thunderbi@178.115.56.221.wireless.dyn.drei.com) (Ping timeout: 264 seconds) |
| 08:19:35 | × | ubert quits (~Thunderbi@178.115.56.221.wireless.dyn.drei.com) (Ping timeout: 264 seconds) |
| 08:19:35 | ub1 | is now known as ubert |
| 08:19:40 | × | Guest4852 quits (~Guest48@82.40.121.143) (Quit: Client closed) |
| 08:20:34 | <fgaz> | I have a question about laziness |
| 08:20:34 | <fgaz> | suppose there is a `data MapWrap a b = MapWrap !(Map a b)` |
| 08:20:36 | <fgaz> | and I'm using the strict Map interface |
| 08:20:40 | <fgaz> | and I define `f x (MapWrap m) = insert x m` |
| 08:20:44 | <fgaz> | am I right that it doesn't make a difference whether i bang x or not, since it will be evaluated anyway due to the fact that MapWrap's field is strict and so is insert? |
| 08:21:03 | → | unmanbearpig joins (~unmanbear@user/unmanbearpig) |
| 08:22:00 | <fgaz> | s/x/k v/ |
| 08:28:05 | × | Inst quits (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Read error: Connection reset by peer) |
| 08:29:29 | × | zaquest quits (~notzaques@5.128.210.178) (Remote host closed the connection) |
| 08:30:38 | × | pavonia quits (~user@user/siracusa) (Read error: Connection reset by peer) |
| 08:31:17 | → | zaquest joins (~notzaques@5.128.210.178) |
| 08:33:04 | × | o1lo01ol1o quits (~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) (Remote host closed the connection) |
| 08:34:10 | → | Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
| 08:36:40 | → | pavonia joins (~user@user/siracusa) |
| 08:37:35 | × | mc47 quits (~mc47@xmonad/TheMC47) (Ping timeout: 264 seconds) |
| 08:40:49 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 08:43:24 | → | ph88 joins (~ph88@2a02:8109:9e00:7e5c::3d56) |
| 08:46:58 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 08:47:10 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 08:50:39 | → | jonathanx joins (~jonathan@dyn-8-sc.cdg.chalmers.se) |
| 08:55:30 | → | acidjnk_new3 joins (~acidjnk@p200300d0c703cb87055cde397d58ef4b.dip0.t-ipconnect.de) |
| 08:55:33 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) |
| 08:56:28 | → | LiaoTao joins (~LiaoTao@gateway/tor-sasl/liaotao) |
| 08:57:41 | × | aegon quits (~mike@174.127.249.180) (Remote host closed the connection) |
| 08:59:41 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Ping timeout: 245 seconds) |
| 09:02:04 | <tomsmeding> | fgaz: if s/i bang x/i bang v/ then yes; the k is always evaluated anyway because otherwise map doesn't know where to insert it |
| 09:02:21 | <tomsmeding> | also you should return MapWrap (insert k v m), not just 'insert k v m' ;) |
| 09:03:13 | <tomsmeding> | with regards to strict/lazy map, be aware that while the functions in Data.Map.Strict ensure evaluation of the inserted values, the Map type is the same and hence the instances (in particular Functor) are lazy |
| 09:04:14 | × | Inst_ quits (~Inst@2601:6c4:4080:3f80:6134:7ceb:5f94:e843) (Read error: Connection reset by peer) |
| 09:04:33 | → | Inst_ joins (~Inst@2601:6c4:4080:3f80:6134:7ceb:5f94:e843) |
| 09:08:48 | <fgaz> | yeah there's a big warning at the top of the module |
| 09:09:47 | <fgaz> | i wonder if there are plans to fix that |
| 09:09:58 | <fgaz> | thanks tomsmeding |
| 09:10:05 | <fgaz> | <tomsmeding> "also you should return MapWrap..." <- yes, that's what i meant :) |
| 09:11:08 | <tomsmeding> | fgaz: https://github.com/haskell/containers/issues/74 |
| 09:12:51 | <fgaz> | i see.. edward does have a point |
| 09:13:46 | → | acidjnk_new joins (~acidjnk@p200300d0c703cb87055cde397d58ef4b.dip0.t-ipconnect.de) |
| 09:17:08 | × | acidjnk_new3 quits (~acidjnk@p200300d0c703cb87055cde397d58ef4b.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
| 09:21:15 | × | stengah quits (~stengah@user/stengah) (Quit: stengah) |
| 09:21:52 | × | shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit) |
| 09:22:09 | → | wyrd joins (~wyrd@gateway/tor-sasl/wyrd) |
| 09:24:48 | × | sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds) |
| 09:27:57 | × | gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 09:28:40 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 09:33:00 | → | __monty__ joins (~toonn@user/toonn) |
| 09:36:16 | → | ArtVandelayer joins (~ArtVandel@ip174-68-147-20.lv.lv.cox.net) |
| 09:37:39 | → | sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
| 09:42:13 | × | sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds) |
| 09:52:25 | → | rond_ joins (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) |
| 09:53:22 | × | bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 10:00:26 | <dminuoso> | Im looking for some toolkits to derive some interrogative console interfaces from. wizards seems like a good starter, is there something similar that allows for tab completion as well? |
| 10:01:46 | → | sayola joins (~vekto@dslb-002-201-085-156.002.201.pools.vodafone-ip.de) |
| 10:01:56 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 10:10:40 | → | sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
| 10:10:59 | <ncopa> | hi. I'm trying to upgrade ghc to 9.0.1 for alpine, but I am struggling with updating cabal-install. I have burned too many days on this already and this is blocking the alpine 3.15 release. My question is: does it really make sense to ship cabal and haskell with a distro in the first place? |
| 10:11:12 | <ncopa> | or would it be ok to remove those packages |
| 10:15:59 | × | sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 264 seconds) |
| 10:18:22 | aplainze1akind | is now known as aplainzetakind |
| 10:20:21 | <dminuoso> | Mmm, maybe haskeline is waht I want |
| 10:30:16 | <Hecate> | dminuoso: seems like it yeah |
| 10:31:06 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 10:32:00 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:37:11 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 10:37:58 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:40:24 | <dminuoso> | Ohh hah, wizards and haskeline seem to go together. |
| 10:43:01 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 10:43:49 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:45:51 | → | rkrishnan joins (~user@2402:e280:215c:2cd:1c4a:bf17:a651:381c) |
| 10:46:25 | → | sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
| 10:47:03 | → | stengah joins (~stengah@user/stengah) |
| 10:47:11 | × | rond_ quits (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Quit: Client closed) |
| 10:47:28 | <stengah> | hey! so I'm trying to understand monads |
| 10:47:35 | <stengah> | and just had a thought |
| 10:47:44 | <stengah> | (>>= |
| 10:47:53 | <stengah> | >>= |
| 10:48:06 | <stengah> | is like a continuation |
| 10:48:23 | <stengah> | is there anything wrong with this thinking? |
| 10:48:45 | <dminuoso> | stengah: For the specific IO instance that seems like one possible approach. |
| 10:49:05 | <Franciman> | stengah: I also like to think about it as «effectful let» |
| 10:49:13 | <dminuoso> | stengah: The thing is, Monad doesnt have an instrinsitic meaning where you can phrase: (>>=) is <insert something> |
| 10:49:13 | <Franciman> | it binds a variable to the result of an effectufl operation |
| 10:49:23 | <Franciman> | it's like you did: |
| 10:49:35 | <Franciman> | «let» x = action |
| 10:49:35 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 10:49:38 | <dminuoso> | stengah: All explanations you likely see are just from people who have built up an intuition that is developed by practicing many instances. |
| 10:49:40 | <Franciman> | in f x |
| 10:49:42 | <stengah> | a>>=f means after getting a do something (described by f) |
| 10:49:43 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:50:15 | <dminuoso> | stengah: For IO this is a rough (inaccurate) description, but it should work as an initial step. |
| 10:50:38 | <stengah> | ok |
| 10:50:46 | <dminuoso> | stengah: The key thing to realize is that Monad is just a typeclass/interface, so >>= means different things for different instances. |
| 10:50:52 | <dminuoso> | But that's perfectly okay |
| 10:51:05 | <dminuoso> | stengah: So let me rephrase your statement a little bit: |
| 10:51:14 | <dminuoso> | >>= for IO is (sort of) like a continuation |
| 10:51:21 | <dminuoso> | The key addition is "for IO" |
| 10:51:31 | × | sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds) |
| 10:51:56 | <dminuoso> | Go with that mind model until you encounter a different instance. At that point, you can gain some intution what >>= means for that type. |
| 10:52:08 | <kuribas> | there's a interesting link between monads and continations. |
| 10:52:16 | <dminuoso> | Yeah which is probably not helpful. |
| 10:52:40 | <kuribas> | well, a monad is not a continuation, if that is what you mean. |
| 10:52:42 | <dminuoso> | stengah: And you repeat that process, and without extra effort you will overtime begin to understand what monad abstracts over. |
| 10:52:51 | × | ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
| 10:52:54 | <kuribas> | but they are likely equally powerful. |
| 10:53:39 | <stengah> | so I should just look at many instances of monad in the wild |
| 10:53:50 | <kuribas> | stengah: yes |
| 10:54:02 | <dminuoso> | stengah: Personally Id say no. |
| 10:54:07 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 10:54:08 | <dminuoso> | stengah: Let this occur on its own. |
| 10:54:20 | <dminuoso> | Forcibly understanding what Monad is about is not particularly helpful when learning Haskell. |
| 10:54:32 | <dminuoso> | So if you understand what >>= does for IO, that's great. Keep it at that. |
| 10:54:41 | → | sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
| 10:54:59 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 10:55:00 | <dminuoso> | Then later, you might discover that there is Monad Maybe, so >>= has some different behavior for that. So just explore it then |
| 10:55:24 | <dminuoso> | Because really, almost every instance is ridiculously simple to understand |
| 10:55:38 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:55:38 | stengah | initiates path to monad enlightenment |
| 10:55:56 | → | k60 joins (~k60@broadband-95-84-168-218.ip.moscow.rt.ru) |
| 10:56:04 | × | rkrishnan quits (~user@2402:e280:215c:2cd:1c4a:bf17:a651:381c) (Remote host closed the connection) |
| 10:56:47 | <dminuoso> | stengah: My key realization was, when something is written polymorphically over monad - that its its type signature mentions something like `Monad m => ...`, it just means *you* get to pick some arbitrary m as long as it has an instance Monad. So you can pick `m ~ IO`, for instance. |
| 10:57:05 | <dminuoso> | So you dont necessarily must understand what Monad is about, you just pick some type you like. |
| 10:57:20 | × | k60 quits (~k60@broadband-95-84-168-218.ip.moscow.rt.ru) (Client Quit) |
| 10:57:31 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) |
| 10:57:34 | <stengah> | hmmm |
| 10:57:56 | → | k60 joins (~k60@broadband-95-84-168-218.ip.moscow.rt.ru) |
| 10:58:41 | <dminuoso> | So for `IO` it's a very natural thing to want and sequence two actions in such a way, that one depends on the other. So for example you want to fetch some data from a database, and use the result to do something else. |
| 10:59:03 | → | lavaman joins (~lavaman@98.38.249.169) |
| 10:59:05 | <dminuoso> | We could have simply made a function called `then :: IO a -> (a -> IO b) -> IO b` that does this. |
| 10:59:24 | <dminuoso> | And in all likelihood, if users got presented with `then` it would have just taken you 2 minutes to understand what this is and how to use it |
| 10:59:29 | × | sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds) |
| 11:00:04 | <dminuoso> | There's nothing magical about this, nothing mathematical, nothing overly complicated. |
| 11:00:51 | → | alx741 joins (~alx741@186.178.108.68) |
| 11:00:58 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 11:00:59 | <dminuoso> | And in fact: |
| 11:01:12 | <dminuoso> | We put it into a typeclass called Monad, and `then` is just named (>>=) |
| 11:01:16 | <dminuoso> | % :t (>>=) |
| 11:01:17 | <yahb> | dminuoso: Monad m => m a -> (a -> m b) -> m b |
| 11:01:44 | <lortabac> | this function exists, it's just not in Prelude |
| 11:01:50 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:01:58 | <dminuoso> | stengah: ^- recall what I said above? If it mentions `Monad m => ...` it means *you* get to decide what `m` is, as long as there is an `instance Monad m`, and then this does whatever the implementor wrote for that. |
| 11:02:09 | × | nehsou^ quits (~nehsou@70.166.66.234) (Remote host closed the connection) |
| 11:02:11 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Ping timeout: 264 seconds) |
| 11:02:17 | <dminuoso> | So if you pick IO, it becomes this boring and simple `then` |
| 11:02:21 | × | dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3) |
| 11:02:37 | → | rkrishnan joins (~user@2402:e280:215c:2cd:1c4a:bf17:a651:381c) |
| 11:02:59 | <lortabac> | in GHC.Base there are bindIO, thenIO and returnIO |
| 11:03:10 | <dminuoso> | lortabac: Ah interesting. :) |
| 11:03:20 | <dminuoso> | % import GHC.Base |
| 11:03:21 | <yahb> | dminuoso: |
| 11:03:22 | <dminuoso> | % :t thenIO |
| 11:03:22 | <yahb> | dminuoso: IO a -> IO b -> IO b |
| 11:03:26 | <dminuoso> | % :t bindIO |
| 11:03:26 | <yahb> | dminuoso: IO a -> (a -> IO b) -> IO b |
| 11:04:53 | <dminuoso> | lortabac: Maybe this whole Monad confusion would have never happened, it you'd start with these primitives and properly educate about adhoc polymorphism - and after that simply say that `instance Monad IO where (>>=) = bindIO; return = returnIO` |
| 11:04:55 | <stengah> | nice |
| 11:05:14 | dminuoso | wonders |
| 11:05:15 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
| 11:05:38 | <c_wraith> | it's really hard to make people stop believing there's a deep meaning they don't understand |
| 11:05:52 | <lortabac> | dminuoso: personally I would have exposed these functions in Prelude |
| 11:06:11 | → | Cajun joins (~Cajun@user/cajun) |
| 11:06:12 | <lortabac> | no need to use Monad until you need to generalize over all monads |
| 11:06:24 | <dminuoso> | Indeed! |
| 11:06:36 | <dminuoso> | Could have had mapMaybe, concatMap, bindIO |
| 11:06:37 | <lortabac> | maybe it's for the do notation |
| 11:06:55 | <dminuoso> | lortabac: there's a pretty nifty formatting where you can avoid the do notation |
| 11:06:56 | <lortabac> | you can't have do notation with the monomorphic functions |
| 11:07:09 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 11:07:27 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:07:55 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 11:07:56 | <dminuoso> | lortabac: https://gist.github.com/dminuoso/16bd907d520325722cfcf1f148395814 |
| 11:07:57 | <dminuoso> | This gets close |
| 11:08:09 | <dminuoso> | So as long as you use a dedicated monomorphized operator variant of bindIO and thenIO... |
| 11:08:47 | <lortabac> | nice, but I have to say it's less readable than do notation |
| 11:09:03 | <dminuoso> | Which could be a good motivation to introduce do-notation later on. |
| 11:09:15 | <lortabac> | yes |
| 11:09:40 | <dminuoso> | And actually, you can use do-notation with RebindableSyntax. |
| 11:09:41 | <dminuoso> | :p |
| 11:09:56 | <lortabac> | also (not useful for beginners) IO itself is exposed in GHC.Types |
| 11:11:37 | <dminuoso> | c_wraith: I guess so. Urban myths are particularly hard to get rid of. |
| 11:12:25 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 11:12:27 | <c_wraith> | it's sort of like believing in a programming illuminati. They're the ones holding the true secret meaning of "monad" |
| 11:12:33 | <lortabac> | in one occasion it allowed me to recreate a custom "bind" function that works with my own types |
| 11:13:08 | <lortabac> | that's a rare use case, but it's just to show that IO is not as special as you might think initially |
| 11:13:59 | <stengah> | dminuoso: I'll meditate on what you said. |
| 11:14:01 | <stengah> | ty |
| 11:14:40 | → | mbuf joins (~Shakthi@27.58.140.141) |
| 11:14:53 | → | hiruji` joins (~hiruji@2606:6080:1002:8:3285:30e:de43:8809) |
| 11:15:58 | × | hiruji quits (~hiruji@user/hiruji) (Ping timeout: 258 seconds) |
| 11:19:10 | → | sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
| 11:19:31 | <jneira[m]> | <ncopa> "hi. I'm trying to upgrade ghc to..." <- well several linux distros does it, but it is not a good argument ;-) |
| 11:20:05 | <jneira[m]> | otoh we also have ghcup nowadays and it is usually recommended to install the haskell toolchain |
| 11:20:43 | <jneira[m]> | do you have some stats of its actual real use? |
| 11:20:51 | <ncopa> | thats why i ask, since the recommended way is normally not to use the distro package |
| 11:21:14 | <ncopa> | well, we have at least two relatively important packages using it: shellcheck and pandoc |
| 11:21:36 | <ncopa> | unfortunately we have only ghc for x86_64 and it is a pain to bootstrap for new architectures |
| 11:22:35 | <ncopa> | we use shellcheck for our CI, and i dont think we want install shellcheck with ghcup |
| 11:22:55 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 11:23:13 | <ncopa> | so i guess i will have to spend another few days to fix the ghc distro package |
| 11:23:55 | <jneira[m]> | hmm you did mention cabal before |
| 11:24:57 | <dminuoso> | lortabac: Yeah what can go wrong with poking in the internals of IO. See top comment https://web.archive.org/web/20200111052206/https://www.reddit.com/r/haskell/comments/2cbgpz/flee_traveller_flee_or_you_will_be_corrupted_and/ |
| 11:24:59 | × | sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 264 seconds) |
| 11:25:21 | <jneira[m]> | you could open an issue in the cabal repo about, are you using https://github.com/haskell/cabal/tree/master/bootstrap? |
| 11:27:08 | <merijn> | ncopa: You can just install the bindists directly? |
| 11:27:16 | <merijn> | ncopa: That's what I've been doing for years |
| 11:27:58 | <merijn> | otoh, that's basically what ghcup does for you :p |
| 11:28:47 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 11:29:16 | <lortabac> | dminuoso: haha, I swear that in that particular case it was safe (and I didn't have any other option) |
| 11:31:46 | × | hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 260 seconds) |
| 11:32:55 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 11:36:42 | → | unit73e joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) |
| 11:36:47 | <dminuoso> | lortabac: The times I thought "Oh now this unsafePerformIO is really safe", and got bitten back mysterious ways... :p |
| 11:36:58 | <lortabac> | :D |
| 11:37:14 | → | sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
| 11:37:22 | <unit73e> | yeah I haven't used xmonad for a while. Maybe I should get back since I know haskell a lot more now. I'm using i3wm instead. |
| 11:37:51 | <unit73e> | xmonad is more configurable |
| 11:37:56 | <merijn> | I mean |
| 11:38:05 | <merijn> | The real insight is that xmonad isn't a window manager |
| 11:38:16 | <merijn> | It's a library/DSL for writing custom window managers :p |
| 11:38:24 | <dminuoso> | That's not really correct |
| 11:38:33 | <dminuoso> | xmonad comes with plenty defaults that make it a proper window manager |
| 11:38:47 | → | lavaman joins (~lavaman@98.38.249.169) |
| 11:39:17 | <unit73e> | I still get what merijn meant. it's just vim/emacs aren't editors, they're DSL for writing custom editors |
| 11:39:24 | <unit73e> | but both are editors |
| 11:39:34 | <merijn> | tbh, I kinda disagree on vim, there, tbh |
| 11:39:51 | <unit73e> | there was that haskell one |
| 11:39:56 | <dminuoso> | In case of emacs its sort of wrong too. |
| 11:40:16 | <unit73e> | both are sort of wrong but I think you get the point |
| 11:40:21 | <dminuoso> | The C core is essentially a buffer framework, but emacs comes with plenty of elisp making it an editor out of the box. |
| 11:41:03 | <unit73e> | it was this guy here: https://yi-editor.github.io/ |
| 11:41:08 | <dminuoso> | And Id consider the elisp code to be part of emacs. |
| 11:41:14 | <unit73e> | looks dead |
| 11:41:39 | × | sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds) |
| 11:41:48 | <geekosaur> | yeh, every so often someoine picks it up, hacks on it for a few months, and gives up |
| 11:42:15 | <unit73e> | hum, it looked like a nice project |
| 11:42:25 | <geekosaur> | mostly because everyone who tries wants to turn it into a full-fledged IDE instead of just an editor. it's already pretty usable just as an editor |
| 11:42:42 | <merijn> | Custom editors are like people's "dream game" |
| 11:42:52 | <merijn> | More fun in theory than in practice :p |
| 11:43:01 | <unit73e> | doesn't language server solve that problem? |
| 11:43:03 | → | hyiltiz joins (~quassel@31.220.5.250) |
| 11:43:06 | <unit73e> | of being an "IDE" |
| 11:43:07 | <dminuoso> | lortabac: My favourite was using `D { ..., someRef = unsafePerformIO (newIORef Nothing) }` inside a traversal. Turns out that GHC let-floated this ioref out, aliasing some hundred thousand IORefs in a tree to a single shared mutable buffer. |
| 11:43:15 | <dminuoso> | It looked so innocent... |
| 11:43:17 | <geekosaur> | sure, but HLS onlyt sprang into existence a year ago |
| 11:43:49 | <unit73e> | right. well yi just has to support that. language server is one of the few things microsoft did right lol |
| 11:45:02 | <unit73e> | vscode is kind of cheesy though |
| 11:45:16 | <unit73e> | it's okayish but kind of quirky |
| 11:45:45 | <unit73e> | I just use neovim |
| 11:47:35 | <Cajun> | in what way is vscode kinda quirky? it feels pretty solid, and its much easier to tell someone new to the language to use vscode than vim, especially when they are accustomed to IDEs |
| 11:47:48 | <ncopa> | merijn: i guess I can install the bindists directly, but that cannot be used as dependencies for any other alpine packages |
| 11:47:55 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 11:48:14 | <ncopa> | basically, what i wonder is if i can remove the ghc package and cabal package and let the users use the bindists directly |
| 11:48:20 | <merijn> | ncopa: True, but why would GHC be a dependency of a package you build? |
| 11:48:36 | <merijn> | ncopa: Bindists don't come with cabal, but other than that, yes |
| 11:48:52 | × | ArctVaulMarsHMPJ quits (~pjetcetal@2.95.44.252) (Read error: Connection reset by peer) |
| 11:49:10 | <ncopa> | so i dont need ghc to build shellcheck or pandoc? |
| 11:49:31 | <merijn> | ncopa: I work a lot on university/research cluster machines where I can't use the distro package manager ('cause no root) and just dumping the bindist in my homedir is fine |
| 11:49:43 | <merijn> | ncopa: You need it to build those, but not to *use* them |
| 11:50:07 | <merijn> | ncopa: Unless you're saying alpine packages require installing build dependencies of packages to use those packages? |
| 11:51:09 | <ncopa> | well, alpine normally build the binaries from source and provides the binaries as distro packages so distro package manager can use the as dependencies for other distro packages |
| 11:51:49 | <merijn> | ncopa: Right, but the shellcheck/pandoc binaries don't need GHC or cabal installed |
| 11:51:55 | → | ubert2 joins (~Thunderbi@91.141.50.28.wireless.dyn.drei.com) |
| 11:52:07 | <ncopa> | correct. not when they are built |
| 11:52:28 | <unit73e> | Cajun, it's definitely easier to begin but I got into a lot of weirdness I can't really remember right now |
| 11:52:38 | <ncopa> | how do i install the shellcheck precompiled binary on alpine? |
| 11:52:43 | <unit73e> | one had to do with git features |
| 11:53:10 | <unit73e> | still, better than the other GUI only editors |
| 11:53:22 | <unit73e> | imo |
| 11:53:32 | × | ubert1 quits (~Thunderbi@91.141.50.28.wireless.dyn.drei.com) (Ping timeout: 258 seconds) |
| 11:53:39 | × | phma quits (~phma@host-67-44-208-9.hnremote.net) (Read error: Connection reset by peer) |
| 11:54:39 | → | phma joins (~phma@host-67-44-209-75.hnremote.net) |
| 11:55:47 | <ncopa> | ok the precompiled binary actually works. https://github.com/koalaman/shellcheck/releases |
| 11:55:59 | <ncopa> | maybe i can kick ghc out of alpine after all |
| 11:59:17 | × | max22- quits (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Ping timeout: 258 seconds) |
| 11:59:54 | <merijn> | ncopa: I mean, GHC uses static linking (for haskell libraries, anwyay) by default. So if you don't have crazy external dependencies the only thing most Haskell binaries depend on is libc |
| 12:01:10 | × | amk quits (~amk@109.255.169.126) (Remote host closed the connection) |
| 12:02:12 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 12:02:18 | → | amk joins (~amk@109.255.169.126) |
| 12:03:02 | <ncopa> | alpine linux uses musl libc so normally a rebuild is needed for precompiled things that links to libc.so.6 |
| 12:03:34 | <merijn> | ncopa: Yes, but if the binary is built on alpine it will just statically link musl |
| 12:03:51 | <merijn> | (or dynamically, dunno what the default is) |
| 12:04:00 | → | burnsidesLlama joins (~burnsides@dhcp168-039.wadham.ox.ac.uk) |
| 12:04:16 | <ncopa> | hum... this is very tempting |
| 12:04:38 | <ncopa> | im pretty sure i will get a handful angry users if i remove ghc package |
| 12:04:56 | × | burnsidesLlama quits (~burnsides@dhcp168-039.wadham.ox.ac.uk) (Remote host closed the connection) |
| 12:05:03 | → | burnsidesLlama joins (~burnsides@dhcp168-039.wadham.ox.ac.uk) |
| 12:05:23 | <ncopa> | but i'll just point them to the "recommended" way to install and manage and keep the haskell stuff up dated |
| 12:05:37 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 12:05:43 | <ncopa> | would simplify things |
| 12:06:10 | <merijn> | ncopa: Basically, I feel that if installing, say, vim doesn't pull in gcc/clang on a distro, then shellcheck/pandoc shouldn't pull in GHC |
| 12:06:23 | <ncopa> | oh ofcourse not |
| 12:06:36 | <ncopa> | apk add vim does of course not install gcc |
| 12:06:44 | <ncopa> | and apk add shellcheck does not pull in ghc |
| 12:06:54 | <ncopa> | the problem is that we need those at build time |
| 12:07:14 | → | alzgh joins (~alzgh@user/alzgh) |
| 12:07:14 | <ncopa> | we cannot provide andy vim package without having a gcc compiler. nore can we build any kernel or anything else |
| 12:08:06 | <ncopa> | what im saying is that we need a ghc package to be able to build other packages that are written in haskell |
| 12:09:11 | <ncopa> | but if we can say: alpine does not use haskell (no shellcheck, no pandoc etc) then we can remove ghc package |
| 12:09:57 | <ncopa> | but that also means that we cannot provide any packages for anything in the (build time) dependency chain |
| 12:11:41 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 12:13:11 | <merijn> | Does the alpine package infrastructure not support separate build and runtime dependencies? |
| 12:13:13 | × | mei6 quits (~mei@user/mei) (Read error: Connection reset by peer) |
| 12:13:24 | <ncopa> | nope |
| 12:13:34 | <merijn> | Well, RIP |
| 12:13:43 | <ncopa> | alpine is very small and simple |
| 12:13:58 | <ncopa> | well |
| 12:14:00 | <ncopa> | sorry |
| 12:14:11 | <ncopa> | it does support separate build and runtime deps. i misread |
| 12:19:35 | → | Guest|27 joins (~Guest|27@185.207.140.160) |
| 12:20:11 | × | Guest|27 quits (~Guest|27@185.207.140.160) (Client Quit) |
| 12:20:22 | × | unit73e quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 258 seconds) |
| 12:21:58 | × | jollygood2 quits (~bc8165b6@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout)) |
| 12:26:26 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 12:29:45 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
| 12:31:15 | → | lavaman joins (~lavaman@98.38.249.169) |
| 12:35:56 | → | slowButPresent joins (~slowButPr@user/slowbutpresent) |
| 12:36:14 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 12:36:24 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 12:39:33 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 12:40:14 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 265 seconds) |
| 12:41:40 | → | Farzad joins (~FarzadBek@178.131.28.133) |
| 12:41:58 | → | waleee joins (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) |
| 12:42:23 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 12:43:39 | <janus> | how do people feel about replacing 'Nothing -> pure Nothing' branches with foldMapM? I think that should be possible but i wonder why that isn't a base function |
| 12:45:44 | <janus> | and why isn't there a flipped version of it so that i can use it like 'whenJust' ? |
| 12:46:04 | <merijn> | What's whenJust? |
| 12:46:11 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 12:46:22 | <janus> | merijn: https://hackage.haskell.org/package/extra-1.7.10/docs/Control-Monad-Extra.html#v:whenJust |
| 12:46:25 | <merijn> | Isn't that just for/for_ |
| 12:46:35 | × | ec quits (~ec@gateway/tor-sasl/ec) (Quit: ec) |
| 12:46:41 | <merijn> | Yeah, that's just for_ :p |
| 12:46:43 | <merijn> | :t for_ |
| 12:46:45 | <lambdabot> | (Foldable t, Applicative f) => t a -> (a -> f b) -> f () |
| 12:46:46 | <merijn> | :t forM_ |
| 12:46:48 | <lambdabot> | (Foldable t, Monad m) => t a -> (a -> m b) -> m () |
| 12:46:59 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 12:47:16 | <janus> | aaah cool! thank you so much! i should ask relude devs to point that out, hmm |
| 12:48:08 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 12:49:00 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 12:50:53 | → | machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca) |
| 12:51:36 | → | zebrag joins (~chris@user/zebrag) |
| 12:51:44 | <janus> | i'll try to ask neil mitchell to point that out in the whenJust docs |
| 12:53:30 | → | shapr joins (~user@pool-108-28-144-11.washdc.fios.verizon.net) |
| 12:53:36 | <janus> | how do i reference Data.Foldable.for in haddock syntax? |
| 12:53:45 | <sshine> | 'Data.Foldable.for' ? |
| 12:54:37 | <janus> | sshine: aah ok right, according to section 3.8.7 https://www.haskell.org/haddock/doc/html/ch03s08.html |
| 12:55:00 | <sshine> | yup :) |
| 12:55:18 | <sshine> | not sure how that works across package boundaries. |
| 12:56:05 | <merijn> | sshine: It does, if the module is imported/in scope |
| 12:56:08 | <sshine> | it probably needs to be present when generating the haddock. |
| 12:56:25 | <sshine> | yeah, I was gonna say "in scope", but not in the sense that it needs to be imported in the particular file. right? |
| 12:56:32 | × | uGest372 quits (~xxx@47.245.54.240) (Remote host closed the connection) |
| 12:56:39 | <geekosaur> | doesn't need to be imported, just known |
| 12:57:26 | <sshine> | it is known, Khaleesi. |
| 12:57:38 | × | stengah quits (~stengah@user/stengah) (Ping timeout: 260 seconds) |
| 12:57:38 | <geekosaur> | I think you can point a haddock run to other haddock metadata to use for such references |
| 12:58:38 | → | ArctVaulMarsHMPJ joins (~pjetcetal@2.95.44.252) |
| 12:58:46 | → | jespada joins (~jespada@2803:9800:9842:7a62:5d33:6404:2aef:9813) |
| 12:58:58 | → | Guest372 joins (~xxx@47.245.54.240) |
| 12:59:11 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) |
| 12:59:50 | × | ArctVaulMarsHMPJ quits (~pjetcetal@2.95.44.252) (Remote host closed the connection) |
| 13:03:31 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Ping timeout: 252 seconds) |
| 13:05:00 | → | xiongxin joins (~quassel@113.116.34.23) |
| 13:11:07 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:62eb:f958:5dc3:c1b9) (Quit: WeeChat 2.8) |
| 13:13:24 | → | slack1256 joins (~slack1256@45.4.2.52) |
| 13:13:45 | → | max22- joins (~maxime@2a01cb08833598001d1f311113516d41.ipv6.abo.wanadoo.fr) |
| 13:18:22 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 13:30:30 | × | max22- quits (~maxime@2a01cb08833598001d1f311113516d41.ipv6.abo.wanadoo.fr) (Ping timeout: 260 seconds) |
| 13:30:56 | → | stengah joins (~stengah@user/stengah) |
| 13:42:52 | <ph88> | what type should i make to use blaze-html with State monad ? |
| 13:42:59 | <ph88> | https://hackage.haskell.org/package/blaze-html-0.9.1.2 |
| 13:46:21 | × | hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1) |
| 13:46:50 | → | hendursaga joins (~weechat@user/hendursaga) |
| 13:51:05 | → | shriekingnoise joins (~shrieking@186.137.144.80) |
| 13:51:59 | → | max22- joins (~maxime@2a01cb0883359800342ef13833bd6f3b.ipv6.abo.wanadoo.fr) |
| 13:52:05 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 13:52:05 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
| 13:52:05 | → | wroathe joins (~wroathe@user/wroathe) |
| 13:57:58 | × | acidjnk_new quits (~acidjnk@p200300d0c703cb87055cde397d58ef4b.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 13:58:10 | × | MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer) |
| 13:59:07 | → | MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
| 14:01:48 | → | Midjak joins (~Midjak@82-65-111-221.subs.proxad.net) |
| 14:05:33 | × | burnsidesLlama quits (~burnsides@dhcp168-039.wadham.ox.ac.uk) (Remote host closed the connection) |
| 14:05:43 | × | jonathanx quits (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection) |
| 14:07:44 | → | jonathanx joins (~jonathan@dyn-8-sc.cdg.chalmers.se) |
| 14:07:44 | × | MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer) |
| 14:11:22 | → | sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
| 14:12:11 | × | xff0x quits (~xff0x@2001:1a81:5338:8400:6a8d:1ab1:8641:5267) (Ping timeout: 245 seconds) |
| 14:12:35 | → | MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
| 14:13:50 | × | stengah quits (~stengah@user/stengah) (Quit: stengah) |
| 14:15:05 | → | Guest|60 joins (~Guest|60@ip-95-223-74-231.hsi16.unitymediagroup.de) |
| 14:15:35 | × | Guest|60 quits (~Guest|60@ip-95-223-74-231.hsi16.unitymediagroup.de) (Client Quit) |
| 14:15:54 | <ph88> | i forgot how to work with two monads at the same time and when to use lift, is there a good tutorial for it ? |
| 14:16:08 | × | sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds) |
| 14:22:52 | → | xff0x joins (~xff0x@2001:1a81:5338:8400:6a8d:1ab1:8641:5267) |
| 14:23:14 | <Hecate> | ph88: book of monads I think |
| 14:25:55 | × | amk quits (~amk@109.255.169.126) (Remote host closed the connection) |
| 14:28:01 | → | ASSISTENZA joins (~Username@net-47-53-74-164.cust.vodafonedsl.it) |
| 14:28:19 | × | ASSISTENZA quits (~Username@net-47-53-74-164.cust.vodafonedsl.it) (Excess Flood) |
| 14:41:23 | → | o1lo01ol1o joins (~o1lo01ol1@bl13-86-242.dsl.telepac.pt) |
| 14:41:37 | → | burnsidesLlama joins (~burnsides@dhcp168-039.wadham.ox.ac.uk) |
| 14:42:11 | → | ASSISTENZA joins (~Username@net-47-53-74-164.cust.vodafonedsl.it) |
| 14:42:30 | × | ASSISTENZA quits (~Username@net-47-53-74-164.cust.vodafonedsl.it) (Excess Flood) |
| 14:42:48 | → | ASSISTENZA joins (~Username@net-47-53-74-164.cust.vodafonedsl.it) |
| 14:44:02 | × | xiongxin quits (~quassel@113.116.34.23) (Ping timeout: 260 seconds) |
| 14:44:12 | → | xiongxin_ joins (~quassel@113.116.35.81) |
| 14:44:57 | × | ASSISTENZA quits (~Username@net-47-53-74-164.cust.vodafonedsl.it) (Client Quit) |
| 14:45:52 | → | sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
| 14:46:02 | × | ubert quits (~Thunderbi@91.141.50.28.wireless.dyn.drei.com) (Ping timeout: 258 seconds) |
| 14:46:48 | × | o1lo01ol1o quits (~o1lo01ol1@bl13-86-242.dsl.telepac.pt) (Ping timeout: 258 seconds) |
| 14:48:14 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:62eb:f958:5dc3:c1b9) |
| 14:48:20 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 258 seconds) |
| 14:50:46 | × | sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds) |
| 14:51:28 | × | Farzad quits (~FarzadBek@178.131.28.133) (Quit: Leaving) |
| 14:51:40 | → | o1lo01ol1o joins (~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) |
| 14:56:46 | × | o1lo01ol1o quits (~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) (Ping timeout: 258 seconds) |
| 14:58:31 | → | o1lo01ol1o joins (~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) |
| 14:59:01 | → | wonko joins (~wjc@62.115.229.50) |
| 14:59:55 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 15:00:50 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) |
| 15:04:37 | × | mc47 quits (~mc47@xmonad/TheMC47) (Client Quit) |
| 15:05:37 | × | hendursaga quits (~weechat@user/hendursaga) (Remote host closed the connection) |
| 15:05:47 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Ping timeout: 264 seconds) |
| 15:07:21 | → | sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
| 15:08:19 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 15:09:06 | → | hendursaga joins (~weechat@user/hendursaga) |
| 15:09:40 | → | hnOsmium0001 joins (uid453710@id-453710.hampstead.irccloud.com) |
| 15:09:42 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 15:09:49 | → | kupi joins (uid212005@id-212005.hampstead.irccloud.com) |
| 15:16:29 | → | myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net) |
| 15:17:24 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) |
| 15:18:10 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:62eb:f958:5dc3:c1b9) (Quit: WeeChat 2.8) |
| 15:19:40 | × | burnsidesLlama quits (~burnsides@dhcp168-039.wadham.ox.ac.uk) (Remote host closed the connection) |
| 15:19:48 | → | burnsidesLlama joins (~burnsides@dhcp168-039.wadham.ox.ac.uk) |
| 15:24:52 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 15:26:49 | → | meltedbrain_y2k joins (~tekserf@94.73.36.197) |
| 15:32:30 | → | jstolarek joins (~jstolarek@137.220.120.162) |
| 15:33:34 | × | xiongxin_ quits (~quassel@113.116.35.81) (Ping timeout: 258 seconds) |
| 15:33:42 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 15:34:10 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection) |
| 15:34:32 | <sshine> | ph88, you mean nested? |
| 15:35:10 | <sshine> | ph88, https://www.fpcomplete.com/haskell/tutorial/monad-transformers/ |
| 15:36:30 | → | lavaman joins (~lavaman@98.38.249.169) |
| 15:36:54 | <sshine> | I wonder how many kittens god kills when someone writes a tutorial about transformers in particular. |
| 15:38:04 | <monochrom> | I thought there has been too many blogs on that. |
| 15:38:33 | <monochrom> | typeclassopedia has monad transformers |
| 15:39:08 | <maerwald> | and it's a rather disappointing design pattern, is it not? |
| 15:39:41 | × | k60 quits (~k60@broadband-95-84-168-218.ip.moscow.rt.ru) (Quit: k60) |
| 15:39:55 | <monochrom> | Yesterday I found a MuniHac 2020 talk explaining monad transformers too (and then it goes on to free monads and polysemy, basically exploring your options). |
| 15:40:12 | <monochrom> | I don't find it disappointing. |
| 15:41:07 | <monochrom> | I teach my students String -> Maybe (String, a) as a parser monad, but secretly it's a transformed monad, too. |
| 15:41:15 | <maerwald> | Well, I don't miss them in any other language :p |
| 15:41:19 | <monochrom> | StateT String Maybe |
| 15:41:27 | → | k60 joins (~k60@broadband-95-84-168-218.ip.moscow.rt.ru) |
| 15:42:13 | <maerwald> | exactly, state, reader etc are so easy to express without it |
| 15:43:08 | <maerwald> | but given the ecosystem support, it's easier to just give in |
| 15:44:17 | <monochrom> | No. Writing >>= by hand for even String -> Maybe (String, a) gets old pretty quickly. |
| 15:44:55 | <maerwald> | it's our way to emulate OOP, because we want to hide the state object parameter |
| 15:45:00 | <monochrom> | And the code really cries "I am a transformed monad". |
| 15:45:57 | <monochrom> | Let me put it this way. |
| 15:46:11 | <monochrom> | I don't teach monad transformers to students. |
| 15:46:56 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 15:47:46 | <monochrom> | This allows me to give "challenging" assignments and exam questions that are like, "make this a monad: Bool -> Integer -> ([(a, Integer)], String)" |
| 15:48:51 | <janus> | monochrom: is it this one ? https://www.youtube.com/watch?v=XZxNp7wgA4Q&t=9m20s "MuniHac 2020 Workshop: Michael Sperber - Control your Effects" |
| 15:48:56 | <monochrom> | If only you knew monad transformers, those would be trivial, not challenging. |
| 15:49:04 | <monochrom> | Yeah! |
| 15:50:13 | <monochrom> | Also, I don't think OOP covers the Alternative-ness of my String -> Maybe (String, a) parser monad. |
| 15:51:06 | <monochrom> | Only Haskell and Prolog come close to making choice a first-class thing. |
| 15:51:23 | × | rkrishnan quits (~user@2402:e280:215c:2cd:1c4a:bf17:a651:381c) (Ping timeout: 264 seconds) |
| 15:51:26 | <monochrom> | I miss it in any other language. |
| 15:52:06 | <monochrom> | The reason you don't miss it in other languages is because you haven't tried to express algorithms in terms of choice. |
| 15:52:26 | <monochrom> | Sapir-Worf strikes once again. |
| 15:52:54 | <monochrom> | If your vocab does not have <|>, you will never miss it, sure. |
| 15:53:00 | <maerwald> | I've completed an entire computational geometry algorithms course in Haskell with zero monad transformers |
| 15:53:27 | <ph88> | do i need a monad transformer when i want to combine blaze-html and state ? |
| 15:53:29 | × | coot quits (~coot@37.30.48.91.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 15:53:53 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 15:54:21 | <monochrom> | I don't know about "need". You can always try StateT X <which monad blaze-html dictates>". |
| 15:54:34 | <monochrom> | s/which/whichever/ |
| 15:54:55 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Quit: Leaving) |
| 15:57:20 | <ph88> | hmm i read here: It is worth noting that the Blaze builder overloads do-notation as some EDSLs do, but the Html type is not a monad. It is functionally a monoid. |
| 15:57:23 | × | myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 264 seconds) |
| 15:57:26 | <ph88> | https://www.stephendiehl.com/posts/haskell_web.html |
| 15:57:39 | <ph88> | i guess i can not use transformer when i don't have an inner monad |
| 15:58:35 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 15:59:30 | <monochrom> | Syntactically, you can say that you would complete my course with zero monad transformers, too. |
| 16:00:30 | <monochrom> | You can always handcode >>= for String -> Maybe (String, a), and then again for String -> Either Error (String, a), and then again for Bool -> Integer -> ([(a, Integer)], String). |
| 16:00:38 | <monochrom> | Is that supposed to be healthy? |
| 16:00:41 | → | lbseale joins (~lbseale@user/ep1ctetus) |
| 16:00:53 | <maerwald> | rust does fine with that |
| 16:01:08 | <monochrom> | But rust is not in my course. |
| 16:01:12 | <maerwald> | not massively more unergonomic |
| 16:01:30 | → | myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net) |
| 16:01:31 | <maerwald> | and the tooling works better, so that my code completion actually works :) |
| 16:02:00 | <maerwald> | of course you lack all the neat stuff you can do with monadic combinators |
| 16:02:02 | <maerwald> | but meh |
| 16:02:32 | <maerwald> | I get much more angry about languages that don't provide my with proper ADTs |
| 16:02:36 | <monochrom> | Well yeah I need <|> |
| 16:02:41 | <kronicmage> | maerwald: whats wrong with hls completion? it works beautifully for me |
| 16:02:48 | <maerwald> | kronicmage: not for me |
| 16:02:54 | <maerwald> | probably due to TH |
| 16:03:07 | <maerwald> | crashes a lot |
| 16:03:14 | <kronicmage> | :( |
| 16:03:26 | <monochrom> | which is not even a monadic combinator. It's an alternative combinator. |
| 16:03:26 | <maerwald> | not that I miss TH in any other language ;) |
| 16:03:52 | <maerwald> | TH is probably the least thought-through feature in Haskell |
| 16:04:07 | <geekosaur> | you give it too much credit |
| 16:04:19 | geekosaur | doesn't think it was thought through at all |
| 16:04:55 | <maerwald> | also... do you really want access to the entire AST of the language? |
| 16:05:00 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds) |
| 16:05:05 | <maerwald> | and then, it's still not the actual AST |
| 16:05:09 | <maerwald> | confusing |
| 16:06:10 | × | hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 260 seconds) |
| 16:06:29 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 16:06:35 | <gentauro> | Does GHC run on the M1's? |
| 16:06:37 | <gentauro> | :) |
| 16:06:47 | <ph88> | my code type checks now using blaze-html and state https://bpa.st/4QHQ just that i had to give only 1 element on line 9 .. how can i go from a list of these [H.Html] pieces to one big one ? like roll-up as if i would have written it in do notation which each one on it's own line |
| 16:06:54 | <maerwald> | gentauro: yes |
| 16:06:56 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 16:07:16 | <ph88> | gentauro, would be cool if you can benchmark it |
| 16:07:33 | <maerwald> | monochrom: well, I did use <|> |
| 16:07:58 | <maerwald> | https://git.io/J6l6m |
| 16:08:41 | <maerwald> | but attoparsecs parser isn't really a monad transformer |
| 16:09:17 | <gentauro> | maerwald: nice |
| 16:09:42 | <maerwald> | I doubt I would have cared whether it's <|> or some other combinator |
| 16:09:48 | <gentauro> | ph88: by week 44 I will be able to (the M1 MAX) :) |
| 16:10:25 | <gentauro> | ph88: somebody already ask me to benchmark `rust` x |
| 16:10:27 | <gentauro> | xD |
| 16:11:09 | <monochrom> | Sure, my Bool -> Integer -> ([(a, Integer)], String) montrosity is "not" a monad transformer either. Syntactically. |
| 16:11:13 | <monochrom> | Or is it? |
| 16:12:11 | <monochrom> | What does "is" mean? |
| 16:12:47 | <maerwald> | monad transformer to me means ">>= is so overloaded with meaning that you end up reasoning about code operationally" |
| 16:13:13 | × | poljar quits (~poljar@93-139-113-226.adsl.net.t-com.hr) (Remote host closed the connection) |
| 16:13:36 | → | poljar joins (~poljar@93-139-113-226.adsl.net.t-com.hr) |
| 16:13:37 | <maerwald> | and then it becomes intellectual complexity you carry around, unless you're fine with "it roughly does this" |
| 16:14:27 | <maerwald> | but when you get used to it, then it becomes fine too |
| 16:14:30 | <maerwald> | you train it, so... |
| 16:14:35 | <maerwald> | still doesn't make it a good thing |
| 16:15:27 | <maerwald> | but that's the difference between "I use it" and "I miss this in other languages" |
| 16:15:36 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 16:15:49 | <monochrom> | I am not sure that you, or anyone, ever do any better than "it roughly does this", in/for/with any language. |
| 16:15:53 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 16:16:09 | <maerwald> | there are levels of uncertainty |
| 16:16:33 | <maerwald> | ultimately, we're uncertain what our code does |
| 16:16:39 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 16:16:43 | <maerwald> | but that doesn't mean we have to throw away the nuances |
| 16:16:45 | <gentauro> | maerwald: I tend to use `>>=` as the pipe operator in bash: `someLogic >>= \ value -> fooBar value` |
| 16:16:54 | <gentauro> | I find it kind of readable |
| 16:17:07 | <gentauro> | if you are in a monadic context and you use a lot of line-spaces |
| 16:17:09 | <gentauro> | :) |
| 16:17:27 | <maerwald> | would we really use monads that much if we didn't have do-notation? |
| 16:17:30 | <maerwald> | Change my mind! |
| 16:17:47 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) |
| 16:17:47 | <monochrom> | I would. I already did. |
| 16:17:54 | → | amk joins (~amk@109.255.169.126) |
| 16:18:06 | <geekosaur> | I use >>= directly a fair amount, if it's short enough |
| 16:18:20 | <geekosaur> | really I only use do because I hate long lines |
| 16:18:39 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 16:19:20 | <maerwald> | what I'm getting at is... is it really monads that we care about or a concise way to describe sequential effect computations? If there was a different way to write and do it, so what? |
| 16:19:28 | → | Vajb joins (~Vajb@n8vwdu04eps78g521-2.v6.elisa-mobile.fi) |
| 16:19:54 | × | azimut_ quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 16:19:55 | <monochrom> | A concise way to describe effects. |
| 16:20:30 | <monochrom> | Indeed I have found a way to stick to Alternative in parsers. |
| 16:21:29 | <geekosaur> | if you're using monads just to use monads, you're doing something wrong |
| 16:21:31 | <monochrom> | That doesn't change the real point behind my stance of taking monad transforming as useful though. |
| 16:21:42 | <monochrom> | Because I'm just s/monad/alternative/ |
| 16:21:48 | <geekosaur> | but monads do useful things beyond just sequencing effects |
| 16:22:07 | <maerwald> | monochrom: sure, but useful isn't elegant :p |
| 16:22:19 | × | jstolarek quits (~jstolarek@137.220.120.162) (Quit: leaving) |
| 16:22:50 | <maerwald> | monads aren't burritos |
| 16:22:56 | <maerwald> | they are cows: useful, but not elegant |
| 16:23:26 | <monochrom> | Handwriting <*> and <|> for String -> [(a, String)] is the inelegant choice. And the missing-the-forest-for-the-trees choice. |
| 16:24:29 | → | hyiltiz joins (~quassel@31.220.5.250) |
| 16:24:38 | <monochrom> | Recognizing that it is a certain composition of StateT and [], and using that knowledge to connect the <*> and <|> of State with the <*> and <|> of [], is better, and useful to know. |
| 16:24:46 | <gentauro> | I only used monads if I need to `take some decision` on the `outputted` value. Example: `fooBar >>= \ foo -> if foo then …`. Otherwise I opt for `<$>` or `_ <$> … <*>` |
| 16:24:50 | <monochrom> | err |
| 16:24:59 | <maerwald> | I dunno, maybe we'll figure out a better way to express effects/computations one day |
| 16:25:12 | <monochrom> | using that knowledge to connect the <*> and <|> of String -> [(a, String)] to those of State and []. |
| 16:25:19 | <gentauro> | maerwald: I like monadic effects |
| 16:25:20 | <maerwald> | especially in light of combining them |
| 16:25:37 | <monochrom> | There will always be better ways in the future. |
| 16:25:52 | <maerwald> | and there I agree that algebraic effects seem saner, but also more intellectual complexity (polysemy and friends) |
| 16:26:04 | <maerwald> | to the point that no one really understands semantics anymore either |
| 16:26:31 | <monochrom> | For here and now, StateT String [] is the best known fit to my use case. |
| 16:26:33 | <maerwald> | I haven't made up my mind about verbosity |
| 16:26:52 | <maerwald> | I'm fine with verbose languages like rust and python... but damn they make my fingers hurt |
| 16:27:32 | <monochrom> | Indeed StateT String [] is less remotely-abstract than all the more advanced theories. Given that you are against remotely-abstract as a principle. |
| 16:28:48 | <monochrom> | StateT String [] is sufficiently concrete and sufficiently elegant for its purpose. |
| 16:29:12 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection) |
| 16:29:19 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 16:29:28 | <maerwald> | the thing with concise expressions is... how sharp can you mentally isolate the underlying concept. Sometimes you can't, but there's a way to express it very concise regardless |
| 16:29:30 | <maerwald> | what to do? |
| 16:29:33 | × | ph88 quits (~ph88@2a02:8109:9e00:7e5c::3d56) (Remote host closed the connection) |
| 16:29:45 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 16:30:32 | <maerwald> | while... once you got used to verbose code (and there are a couple of rules everyone follows), then reading verbose code can be very efficient |
| 16:30:55 | <maerwald> | (like not introducing new variables in the middle of a C function) |
| 16:31:10 | <monochrom> | I do that all the time. Bite me. |
| 16:31:49 | <monochrom> | I can be talked into "if you do that, add { } around its real scope" though. |
| 16:32:24 | <monochrom> | But I will refuse "there are only two levels, top and function". Because there aren't. |
| 16:32:26 | <maerwald> | ok, I'm off buying soap (need to clean myself after this conversation) |
| 16:32:28 | <maerwald> | :D |
| 16:33:02 | <monochrom> | There is nothing wrong with "for (int i = ...) { int s = 0; ... }" |
| 16:33:14 | <maerwald> | I think I'd allow that exception |
| 16:33:32 | <maerwald> | also, in rust it's a bit harder to follow this rule |
| 16:33:53 | <maerwald> | because of all the shenanigans you have to do to trick the borrow checker into thinking your code is safe |
| 16:34:35 | <monochrom> | The only thing you can complain about is if I have "x = 0; int y; ...", it is a bit harder to spot the introduction of y, and it's also a bit harder to spot the end of relevance of y. |
| 16:35:14 | <monochrom> | For the former, I have blank lines already. For the latter, that's why I offer "x = 0; { int y; ... } ..." |
| 16:35:34 | <monochrom> | That rule is stupid. |
| 16:36:02 | <monochrom> | I can take everything you said and say it about that rule, too. |
| 16:36:08 | → | segfaultfizzbuzz joins (~segfaultf@135-180-0-138.static.sonic.net) |
| 16:36:31 | <maerwald[m]> | That was just an example :D |
| 16:36:35 | → | fendor joins (~fendor@77.119.169.61.wireless.dyn.drei.com) |
| 16:36:59 | × | dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 264 seconds) |
| 16:37:04 | → | lavaman joins (~lavaman@98.38.249.169) |
| 16:37:36 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) |
| 16:38:27 | <maerwald[m]> | My point was that expressing things, that you can't easily isolate mentally, in a concise way is an open question |
| 16:38:41 | <maerwald[m]> | As to whether that's a good idea |
| 16:38:47 | <maerwald[m]> | I don't really know |
| 16:38:58 | <monochrom> | Oh sure, I balance many factors. |
| 16:39:23 | <maerwald[m]> | My mtl code usually ends up like that: a mess. |
| 16:39:34 | <monochrom> | Mine doesn't. |
| 16:39:46 | × | hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 260 seconds) |
| 16:39:54 | <maerwald[m]> | You look at the type signature and go "yeah right, whatever" |
| 16:40:54 | <monochrom> | I don't use MonadState all that much either, if that's what you mean. |
| 16:41:25 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 258 seconds) |
| 16:41:25 | × | MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer) |
| 16:41:42 | <maerwald[m]> | MonadIO, MonadUnliftIO, MonadFail, MonadMask, MonadThrow, MonadMe... |
| 16:41:50 | <monochrom> | But I have "eof :: Parser ()" and Parser is either "newtype Parser a = P (String -> Maybe (String, a))" or "newtype Parser a = P (StateT String Maybe a)" |
| 16:42:02 | → | MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
| 16:42:36 | <monochrom> | And I would really love to use the latter in my course if I had time to teach StateT. |
| 16:43:15 | <monochrom> | Then again, if I did that, I would run out of assignment and exam questions. |
| 16:43:34 | <monochrom> | In the same sense as: |
| 16:43:43 | <maerwald[m]> | I forgot obscure LabelOptics |
| 16:45:12 | <monochrom> | Suppose a teacher concealed "x+y = y+x" from you. Then they would have a larger pool of homework questions for you, for example they could put both "34 + 57 = ?" and "57 + 34 = ?" on the same exam, even right next to each other. |
| 16:45:58 | → | unit73e joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) |
| 16:50:25 | → | mastarija joins (~mastarija@31.217.25.149) |
| 16:50:40 | <maerwald[m]> | So does flexibility to add effects freely lead to better or worse design? And what about custom monad newtypes, like `App`? Are they really better? |
| 16:50:48 | <maerwald[m]> | Questions |
| 16:51:23 | × | Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 264 seconds) |
| 16:52:46 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 16:53:47 | → | Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
| 16:55:11 | → | mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) |
| 16:56:00 | × | Vajb quits (~Vajb@n8vwdu04eps78g521-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer) |
| 16:56:32 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 16:58:35 | × | mbuf quits (~Shakthi@27.58.140.141) (Quit: Leaving) |
| 17:00:41 | → | marinelli joins (~marinelli@gateway/tor-sasl/marinelli) |
| 17:01:34 | → | mastarija_ joins (~mastarija@31.217.25.149) |
| 17:01:53 | × | mastarija_ quits (~mastarija@31.217.25.149) (Client Quit) |
| 17:02:00 | × | mastarija quits (~mastarija@31.217.25.149) (Quit: Leaving) |
| 17:02:18 | → | emf joins (~emf@2620:10d:c090:400::5:c0de) |
| 17:03:27 | × | alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection) |
| 17:03:47 | → | alzgh joins (~alzgh@user/alzgh) |
| 17:08:29 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 17:08:54 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 17:12:43 | → | lavaman joins (~lavaman@98.38.249.169) |
| 17:13:19 | × | xff0x quits (~xff0x@2001:1a81:5338:8400:6a8d:1ab1:8641:5267) (Ping timeout: 265 seconds) |
| 17:13:38 | → | hyiltiz joins (~quassel@31.220.5.250) |
| 17:15:28 | → | betelgeuse joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 17:16:39 | × | burnsidesLlama quits (~burnsides@dhcp168-039.wadham.ox.ac.uk) (Remote host closed the connection) |
| 17:17:23 | → | xff0x joins (~xff0x@2001:1a81:5338:8400:382c:44d1:e85b:95f9) |
| 17:23:12 | × | LiaoTao quits (~LiaoTao@gateway/tor-sasl/liaotao) (Remote host closed the connection) |
| 17:23:33 | → | LiaoTao joins (~LiaoTao@gateway/tor-sasl/liaotao) |
| 17:26:07 | → | fendor_ joins (~fendor@77.119.200.149.wireless.dyn.drei.com) |
| 17:26:26 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 17:27:14 | × | ubert2 quits (~Thunderbi@91.141.50.28.wireless.dyn.drei.com) (Remote host closed the connection) |
| 17:27:14 | × | unit73e quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Remote host closed the connection) |
| 17:28:18 | × | fendor quits (~fendor@77.119.169.61.wireless.dyn.drei.com) (Ping timeout: 260 seconds) |
| 17:29:37 | × | mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Read error: No route to host) |
| 17:30:05 | → | mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) |
| 17:31:51 | → | mmhat joins (~mmh@55d45bcb.access.ecotel.net) |
| 17:35:17 | _________ | is now known as __________ |
| 17:35:19 | __________ | is now known as noodly |
| 17:35:23 | noodly | is now known as _________ |
| 17:41:50 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds) |
| 17:41:56 | → | fendor__ joins (~fendor@212095005159.public.telering.at) |
| 17:42:22 | × | fendor_ quits (~fendor@77.119.200.149.wireless.dyn.drei.com) (Ping timeout: 258 seconds) |
| 17:43:45 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 17:46:26 | × | kuribas quits (~user@ptr-25vy0i72e2u2h548zvl.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
| 17:50:09 | → | coot joins (~coot@37.30.48.91.nat.umts.dynamic.t-mobile.pl) |
| 17:51:07 | → | burnsidesLlama joins (~burnsides@dhcp168-039.wadham.ox.ac.uk) |
| 17:55:34 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection) |
| 17:56:33 | × | burnsidesLlama quits (~burnsides@dhcp168-039.wadham.ox.ac.uk) (Ping timeout: 258 seconds) |
| 17:58:50 | → | Null_A joins (~null_a@c-98-210-133-39.hsd1.ca.comcast.net) |
| 17:59:19 | → | unit73e joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) |
| 18:05:10 | × | peterhil quits (~peterhil@dsl-hkibng32-54fb56-2.dhcp.inet.fi) (Ping timeout: 260 seconds) |
| 18:12:44 | × | wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Remote host closed the connection) |
| 18:12:59 | → | wyrd joins (~wyrd@gateway/tor-sasl/wyrd) |
| 18:14:16 | → | fendor_ joins (~fendor@178.115.49.60.wireless.dyn.drei.com) |
| 18:15:36 | × | Null_A quits (~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Remote host closed the connection) |
| 18:15:36 | × | MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer) |
| 18:15:44 | → | MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
| 18:16:11 | → | Null_A joins (~null_a@2601:645:8700:2290:30d6:67dd:64ca:a12a) |
| 18:16:50 | × | fendor__ quits (~fendor@212095005159.public.telering.at) (Ping timeout: 260 seconds) |
| 18:20:47 | × | Null_A quits (~null_a@2601:645:8700:2290:30d6:67dd:64ca:a12a) (Ping timeout: 264 seconds) |
| 18:23:18 | → | Null_A joins (~null_a@2601:645:8700:2290:30d6:67dd:64ca:a12a) |
| 18:24:46 | × | marinelli quits (~marinelli@gateway/tor-sasl/marinelli) (Quit: marinelli) |
| 18:25:11 | → | dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net) |
| 18:25:59 | → | ubert joins (~Thunderbi@91.141.50.28.wireless.dyn.drei.com) |
| 18:28:03 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 18:36:27 | → | econo joins (uid147250@user/econo) |
| 18:37:16 | × | MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 265 seconds) |
| 18:38:43 | × | dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 258 seconds) |
| 18:53:45 | <zzz> | class Commutative (f :: a -> b -> c) where ? |
| 18:54:19 | <monochrom> | no understand |
| 18:54:37 | <awpr> | `swap :: f a b -> f b a` + law that `swap . swap` is `id`? |
| 18:54:50 | <awpr> | although s/c/Type/ I think |
| 18:55:01 | <[exa]> | I vote for `commute` |
| 18:55:04 | <zzz> | it's not supposed to be understood. just writing nonsense |
| 18:55:26 | <zzz> | [exa]: commute (f a b) = f b a ? |
| 18:55:29 | <awpr> | although it can't have poly-kinds with different kinds for the two sides either |
| 18:55:38 | <awpr> | `f :: k -> k -> Type` |
| 18:55:59 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) |
| 18:57:20 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection) |
| 18:57:29 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) |
| 18:58:36 | → | lavaman joins (~lavaman@98.38.249.169) |
| 19:02:22 | → | MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
| 19:03:02 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 260 seconds) |
| 19:04:35 | × | myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 264 seconds) |
| 19:08:56 | × | o1lo01ol1o quits (~o1lo01ol1@2001:8a0:6d7a:df01:dde2:6c49:6076:e5ad) (Remote host closed the connection) |
| 19:10:54 | → | myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net) |
| 19:11:24 | <xerox> | does anybody know how to find which branch/commit made up the ghc release 9.2.0.20210821 ? |
| 19:11:56 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection) |
| 19:12:05 | <geekosaur> | you can query git log by date, that should at least narrow it down |
| 19:12:57 | → | dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net) |
| 19:13:11 | <geekosaur> | the branch should be the 9.2 branch |
| 19:13:18 | × | hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 260 seconds) |
| 19:13:32 | <xerox> | the 9.2 branch does not build for me, 0.2 seconds into make I get this https://i.imgur.com/DJOMeiZ.png |
| 19:14:14 | <geekosaur> | that one you'll have to ask about in #ghc |
| 19:14:25 | <xerox> | but I guessed since that one built... :) |
| 19:14:44 | <xerox> | nothing comes up green with a search like this https://gitlab.haskell.org/ghc/ghc/-/tags?sort=updated_desc&search=9.2 |
| 19:14:46 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) |
| 19:15:00 | <xerox> | nor on the branches |
| 19:15:28 | <xerox> | maerwald: how did you figure out that one in particular built, so you could add it to ghcup? |
| 19:16:21 | → | lavaman joins (~lavaman@98.38.249.169) |
| 19:19:04 | × | Null_A quits (~null_a@2601:645:8700:2290:30d6:67dd:64ca:a12a) (Remote host closed the connection) |
| 19:20:41 | → | hyiltiz joins (~quassel@31.220.5.250) |
| 19:22:25 | × | dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 258 seconds) |
| 19:23:41 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 19:27:51 | amirouche | is now known as amazigh |
| 19:36:43 | <maerwald> | what? |
| 19:37:41 | <maerwald> | https://downloads.haskell.org/~ghc/9.2.1-rc1/ |
| 19:39:44 | <xerox> | ah that's what it is |
| 19:39:57 | <maerwald> | probably this https://gitlab.haskell.org/ghc/ghc/-/pipelines/33913 |
| 19:40:06 | <maerwald> | go to the pipelines and click on tags |
| 19:40:11 | <maerwald> | https://gitlab.haskell.org/ghc/ghc/-/pipelines?scope=tags&page=1 |
| 19:40:12 | <xerox> | maybe I'm asking for trouble using *that* to build another ghc |
| 19:40:33 | <xerox> | everything fails with that error about safe haskell |
| 19:41:05 | <monochrom> | Is that why 9.2 is stalled? That no one knows how to build it now? :) |
| 19:42:02 | <xerox> | using 8.10.7 seems to be liking at least starting to build master, yay |
| 19:42:25 | <maerwald> | xerox: you usually go one major version back |
| 19:42:29 | <maerwald> | for building |
| 19:43:00 | <xerox> | didn't know that! |
| 19:43:37 | → | Null_A joins (~null_a@2601:645:8700:2290:30d6:67dd:64ca:a12a) |
| 19:44:20 | → | o1lo01ol1o joins (~o1lo01ol1@2001:8a0:6d7a:df01:d1f9:60a1:52fb:92f3) |
| 19:44:21 | <geekosaur> | 1-2 versions currently accepted. using 9.2 to build 9.2 is I think known not to work |
| 19:44:30 | × | o1lo01ol1o quits (~o1lo01ol1@2001:8a0:6d7a:df01:d1f9:60a1:52fb:92f3) (Remote host closed the connection) |
| 19:44:31 | <geekosaur> | so 9.0.1 or 8.10.7 |
| 19:44:38 | <xerox> | how peculiar |
| 19:45:02 | → | o1lo01ol1o joins (~o1lo01ol1@2001:8a0:6d7a:df01:d1f9:60a1:52fb:92f3) |
| 19:45:06 | <xerox> | does this mean you have to do a chain of compilations if you are stuck with having an old binary, or no binary (yuck!) |
| 19:45:28 | <geekosaur> | yes |
| 19:45:31 | <xerox> | wow |
| 19:46:00 | <geekosaur> | and I think there's no way to bootstrap from scratch any more because yoou need to find a working hbc binary to start the bootstrap chain |
| 19:46:37 | <geekosaur> | the alternative is -funregisterised which outputs ANSI C |
| 19:47:30 | <geekosaur> | and requires a custom built compiler to enable -funregisterised, since release compilers have it disabled |
| 19:47:43 | × | k60 quits (~k60@broadband-95-84-168-218.ip.moscow.rt.ru) (Quit: k60) |
| 19:47:50 | <xerox> | but can you build such custom comppiler |
| 19:48:00 | → | evocatus joins (~evocatus@84.51.113.13) |
| 19:49:14 | <geekosaur> | you'd start on a platform with a working ghc and use that to build a dev compiler that supports -funregisterised, then use that to build ghc again with -funregisterised, then collect the output sources and take them to the target machine |
| 19:49:20 | <geekosaur> | it's a royal pain |
| 19:49:25 | × | o1lo01ol1o quits (~o1lo01ol1@2001:8a0:6d7a:df01:d1f9:60a1:52fb:92f3) (Ping timeout: 252 seconds) |
| 19:50:11 | <geekosaur> | a newer way if LLVM is supported is compile with -fllvm -keep-llvm-files (I think that's the option) and run llc/opt/lld on the target |
| 19:50:37 | <xerox> | that seems nice |
| 19:50:40 | <geekosaur> | basically ghc is really not friendly to this kind of thing currently |
| 19:50:54 | <geekosaur> | there's supposedly some work going on to improve things a bit |
| 19:52:31 | × | nckx quits (~nckx@tobias.gr) (Quit: Updating my Guix System <https://guix.gnu.org>) |
| 19:52:33 | <geekosaur> | but this general issue is a problem with any self-hosted compiler. I think you have to dig up some ancient gcc that could be built with non-gcc (1.40?) to bootstrap a current one from scratch |
| 19:53:18 | × | Null_A quits (~null_a@2601:645:8700:2290:30d6:67dd:64ca:a12a) (Ping timeout: 265 seconds) |
| 19:54:08 | → | lionrouge_ joins (~evocatus@84.51.113.13) |
| 19:54:33 | × | lionrouge_ quits (~evocatus@84.51.113.13) (Remote host closed the connection) |
| 19:54:43 | → | nckx joins (~nckx@tobias.gr) |
| 19:55:23 | × | wonko quits (~wjc@62.115.229.50) (Ping timeout: 258 seconds) |
| 19:57:00 | → | evocatus_ joins (~evocatus@84.51.113.13) |
| 19:57:10 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 19:58:48 | → | dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net) |
| 20:04:41 | → | Null_A joins (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) |
| 20:05:34 | × | juhp quits (~juhp@128.106.188.220) (Ping timeout: 260 seconds) |
| 20:06:20 | × | Midjak quits (~Midjak@82-65-111-221.subs.proxad.net) (Quit: This computer has gone to sleep) |
| 20:07:24 | → | Midjak joins (~Midjak@82-65-111-221.subs.proxad.net) |
| 20:07:48 | → | juhp joins (~juhp@128.106.188.220) |
| 20:09:35 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection) |
| 20:12:31 | × | alx741 quits (~alx741@186.178.108.68) (Ping timeout: 252 seconds) |
| 20:12:46 | → | acidjnk_new joins (~acidjnk@p200300d0c703cb87055cde397d58ef4b.dip0.t-ipconnect.de) |
| 20:14:51 | <xerox> | Build completed in 28m59s -- there we go |
| 20:15:39 | <shapr> | 4883 weeds *cries* |
| 20:15:51 | <shapr> | that's from https://github.com/ocharles/weeder |
| 20:16:51 | × | mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 258 seconds) |
| 20:17:01 | → | k60 joins (~k60@broadband-95-84-168-218.ip.moscow.rt.ru) |
| 20:18:43 | → | mikoto-chan joins (~mikoto-ch@185.237.102.114) |
| 20:19:19 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 20:20:07 | <sshine> | I'm trying to add a package to stackage, but I'm told that sqlite-simple isn't found: https://gist.github.com/sshine/d3a715326791746eb20d7bc857f4686e -- it's kinda strange, because if I look up that package, it does appear to be in nightly-2021-06-14 and in lts-18.13. but apparently not in nightly-2021-10-19. I wonder how I find out why. |
| 20:20:09 | → | o1lo01ol1o joins (~o1lo01ol1@2001:8a0:6d7a:df01:d1f9:60a1:52fb:92f3) |
| 20:20:16 | × | _xor quits (~xor@72.49.199.147) (Read error: Connection reset by peer) |
| 20:20:45 | <juri_> | ugh. property tests and doubles are sadness. |
| 20:21:02 | <sshine> | juri_, doubles are sadness. |
| 20:21:14 | <Hecate> | sadness. |
| 20:21:50 | <juri_> | Hecate: you win. |
| 20:22:46 | <sshine> | ha, I was going to demonstrate that at least you can prove that anything plus NaN is NaN, but you can't, because it isn't equal to itself. |
| 20:23:28 | × | evocatus_ quits (~evocatus@84.51.113.13) (Quit: Leaving) |
| 20:23:33 | <sshine> | and saying it isn't equal to NaN is about as trivial as saying it isn't equal to anything else. |
| 20:23:35 | × | evocatus quits (~evocatus@84.51.113.13) (Quit: Leaving) |
| 20:23:37 | <awpr> | > :t isNaN -- can do this though |
| 20:23:39 | <lambdabot> | <hint>:1:1: error: parse error on input ‘:’ |
| 20:23:46 | <sshine> | awpr, nice. |
| 20:23:48 | <geekosaur> | :t isNaN |
| 20:23:49 | <lambdabot> | RealFloat a => a -> Bool |
| 20:25:10 | → | elmoloko joins (~Adium@2600:6c64:4a7f:faa6:2863:d742:7416:5b9e) |
| 20:26:03 | → | _xor joins (~xor@72.49.199.147) |
| 20:26:30 | → | alx741 joins (~alx741@186.178.109.50) |
| 20:27:52 | → | burnsidesLlama joins (~burnsides@dhcp168-039.wadham.ox.ac.uk) |
| 20:29:06 | → | peterhil joins (~peterhil@mobile-access-56734e-227.dhcp.inet.fi) |
| 20:29:09 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) |
| 20:30:16 | × | mikoto-chan quits (~mikoto-ch@185.237.102.114) (Ping timeout: 258 seconds) |
| 20:32:01 | → | mikoto-chan joins (~mikoto-ch@185.237.102.122) |
| 20:32:25 | × | mikoto-chan quits (~mikoto-ch@185.237.102.122) (Client Quit) |
| 20:37:04 | × | connrs quits (~connrs@conners.plus.com) (Quit: ZNC 1.8.2 - https://znc.in) |
| 20:38:01 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 20:38:14 | × | dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 260 seconds) |
| 20:38:17 | → | connrs joins (~connrs@conners.plus.com) |
| 20:39:42 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 20:46:24 | → | acidjnk_new3 joins (~acidjnk@p200300d0c703cb879d3ec1aa44300f05.dip0.t-ipconnect.de) |
| 20:46:47 | → | Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) |
| 20:49:49 | × | acidjnk_new quits (~acidjnk@p200300d0c703cb87055cde397d58ef4b.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
| 20:54:00 | → | fawful joins (~guy@c-76-104-217-93.hsd1.wa.comcast.net) |
| 20:55:35 | <monochrom> | > isNan (sqrt (-1)) |
| 20:55:37 | <lambdabot> | error: |
| 20:55:37 | <lambdabot> | • Variable not in scope: isNan :: t0 -> t |
| 20:55:37 | <lambdabot> | • Perhaps you meant ‘isNaN’ (imported from Prelude) |
| 20:55:45 | <monochrom> | > isNaN (sqrt (-1)) |
| 20:55:47 | <lambdabot> | True |
| 20:55:51 | <monochrom> | > isNaN (1 + sqrt (-1)) |
| 20:55:52 | <lambdabot> | True |
| 20:55:54 | <monochrom> | :) |
| 20:56:11 | <fawful> | :) |
| 20:57:28 | <monochrom> | I am not very sympathetic to "you can't use (==)". If I have x :: [Int->Int], you can't use "x == []" either. You are supposed to use null. |
| 21:00:33 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:02:24 | <sm> | sshine: you can look at https://github.com/commercialhaskell/stackage/blob/master/build-constraints.yaml , eg for a line like https://github.com/commercialhaskell/stackage/blob/master/build-constraints.yaml#L6535 |
| 21:02:52 | <sm> | and there might be an issue discussing it |
| 21:04:50 | × | peterhil quits (~peterhil@mobile-access-56734e-227.dhcp.inet.fi) (Ping timeout: 260 seconds) |
| 21:04:53 | × | Megant quits (megant@user/megant) (Ping timeout: 264 seconds) |
| 21:04:53 | × | Moyst quits (~moyst@user/moyst) (Ping timeout: 264 seconds) |
| 21:06:22 | → | aln448 joins (~aln448@2a00:23c7:3480:b700:fdb9:39e2:1024:88b1) |
| 21:06:32 | → | acidjnk_new joins (~acidjnk@pd9e0b933.dip0.t-ipconnect.de) |
| 21:07:23 | × | Null_A quits (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) (Remote host closed the connection) |
| 21:07:40 | <aln448> | fluent in maths and functional programming. wrote a postgrad thesis on a maths topic in haskell, but haven't touched and barely thought about FP in close to a decade. looking to play with it again, but can't think of a toy project to implement - any ideas? |
| 21:07:54 | <sm> | (I didn't find it, otherwise dig in the history to find out who done it) |
| 21:07:58 | → | Null_A joins (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) |
| 21:08:15 | → | Moyst joins (~moyst@user/moyst) |
| 21:08:40 | <aln448> | not looking for anything flashy, no 'how to develop a game in x days' - i used to enjoy solving maths problems, deriving logic from first principles (played around with idris etc a lot) |
| 21:08:58 | <aln448> | agda with few to no libraries, etc |
| 21:09:08 | <fawful> | :) |
| 21:09:22 | <aln448> | can anyone suggest something fun that might pique my interest and give me a reason to re-learn FP paradigm? |
| 21:09:31 | <fawful> | do you like visual art |
| 21:09:32 | <sm> | project euler problems |
| 21:09:45 | × | acidjnk_new3 quits (~acidjnk@p200300d0c703cb879d3ec1aa44300f05.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
| 21:09:56 | <aln448> | fawful: i'm afraid not |
| 21:10:16 | <fawful> | I find creative projects to motivate me, but you might be different |
| 21:10:24 | × | Null_A quits (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) (Remote host closed the connection) |
| 21:10:28 | <aln448> | sm: have done this in a dozen programming languages a dozen times, they get boring. i'd like something that allows me to rely on my own intuition and be a little creative |
| 21:10:32 | <monochrom> | Parsing or interpreting of a toy language. |
| 21:10:39 | → | Null_A joins (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) |
| 21:10:57 | <sm> | aln448: ok, then the christmas puzzles.. darn what's it called |
| 21:11:03 | <fawful> | try to create a mind out of code |
| 21:11:08 | <c_wraith> | advent of code |
| 21:11:18 | <aln448> | cannot count how many times i've started writing a lisp but gotten bored half-way through :( been a long time since i've done it functionally, but still looking for something more 'fresh' |
| 21:11:22 | <sm> | ^^ |
| 21:11:22 | <fawful> | maybe you will succeed who knows |
| 21:11:25 | <aln448> | advent of code is coming up, that's right |
| 21:11:29 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 21:11:41 | <monochrom> | No, interpreting lisp is boring. Try interpreting a toy prolog. |
| 21:11:55 | <c_wraith> | if you go back to the year with intcode and try to build your interpreter in a really reusable way, that's an interesting challenge. |
| 21:12:18 | <geekosaur> | interpret a toy sml and confuse everyone :þ |
| 21:12:22 | <aln448> | hah |
| 21:12:33 | <monochrom> | intepret C, and turn the table around :) |
| 21:12:43 | <aln448> | was thinking maybe a static site generator, pushing the 'practical' element here |
| 21:12:45 | <monochrom> | In fact it would turn two tables around. |
| 21:13:07 | <awpr> | or a language with linear logic at its core. that's similar enough to Haskell's core to have something to draw inspiration from, but novel enough to have room for creativity |
| 21:13:15 | <aln448> | would be interested in anything involved in prop/first/maybe even second (been a while) level logic though |
| 21:13:38 | <aln448> | i kinda missed out on hott the first time around and from blog posts at least, it sounds interesting |
| 21:13:46 | <monochrom> | theorem prover? |
| 21:13:51 | <sm> | if you want practical, how about some new accounting/investing reports for hledger |
| 21:14:26 | <monochrom> | HOL4 is a theorem prover written in SML. So implement an SML interpreter, there you have it? |
| 21:15:34 | <monochrom> | OTOH a theorem prover in Haskell directly has its upsides too. In particular, tactical theorem proving is a monad. HOL4 misses out on that. |
| 21:16:48 | <aln448> | perhaps i could implement prelude in some other language? |
| 21:16:58 | <monochrom> | StateT Goal [] to be exact. |
| 21:18:55 | <monochrom> | Err oops, no, more complicated than StateT Goal [] |
| 21:19:35 | × | Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 264 seconds) |
| 21:19:57 | <aln448> | thanks for the thoughts here guys, some nice ideas |
| 21:20:35 | <geekosaur> | you could also consider contributing to a project; hledger was already mentioned, and xmonad-contrib is always open to new submissions |
| 21:21:44 | <aln448> | i'm familiar with xmonad, and daily-drive dwm, have contributed a bunch of stuff (C though) |
| 21:22:02 | <aln448> | that's perhaps a nice idea - i'm sure there are some plugins for dwm that i could port to xmonad |
| 21:24:55 | × | cjay quits (cjay@nerdbox.nerd2nerd.org) (Quit: peepoLeave) |
| 21:25:15 | → | cjay joins (cjay@nerdbox.nerd2nerd.org) |
| 21:26:04 | → | boxscape_ joins (~boxscape_@p54a3581e.dip0.t-ipconnect.de) |
| 21:26:14 | <aln448> | thanks, people - i should head off now, but one last question given i'm here and there's a good chance someone here will know |
| 21:27:19 | <aln448> | is conor mcbride still active/around? last i heard from a friend was that he was having some health problems, but the only contact i had with him was on twitter, and i believe he was banned/left/deactivated from the platform a while back |
| 21:31:05 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection) |
| 21:31:16 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) |
| 21:31:32 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 21:31:45 | × | coot quits (~coot@37.30.48.91.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 21:35:39 | × | Null_A quits (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) (Remote host closed the connection) |
| 21:35:46 | × | fendor_ quits (~fendor@178.115.49.60.wireless.dyn.drei.com) (Remote host closed the connection) |
| 21:40:27 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed) |
| 21:42:14 | × | michalz quits (~michalz@185.246.204.77) (Remote host closed the connection) |
| 21:43:16 | → | Null_A joins (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) |
| 21:44:32 | <dsal> | aln448: A couple years ago AoC was basically a course in interpretation and stuff. I tend to write more parsers than necessary, but you had to build an interpreter, then you'd get puzzles that were built for programs your interpreter's language and you had to build solutions on top of that runtime with foreign programs. It was pretty good. |
| 21:44:42 | <dsal> | I think a few from last year were solved almost entirely in the parser. |
| 21:45:01 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 21:49:02 | → | pavonia joins (~user@user/siracusa) |
| 21:49:38 | × | slack1256 quits (~slack1256@45.4.2.52) (Ping timeout: 265 seconds) |
| 21:53:04 | × | pmk quits (~user@2a02:587:9418:a234:40de:ca53:4e3:4a70) (Ping timeout: 258 seconds) |
| 21:54:12 | × | ubert quits (~Thunderbi@91.141.50.28.wireless.dyn.drei.com) (Remote host closed the connection) |
| 21:59:28 | × | burnsidesLlama quits (~burnsides@dhcp168-039.wadham.ox.ac.uk) (Remote host closed the connection) |
| 22:00:02 | → | burnsidesLlama joins (~burnsides@dhcp168-039.wadham.ox.ac.uk) |
| 22:00:40 | × | Midjak quits (~Midjak@82-65-111-221.subs.proxad.net) (Quit: This computer has gone to sleep) |
| 22:00:45 | × | jess quits (~jess@libera/staff/jess) (Quit: Lost terminal) |
| 22:00:51 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 22:01:10 | → | jess joins (~jess@libera/staff/jess) |
| 22:02:00 | × | max22- quits (~maxime@2a01cb0883359800342ef13833bd6f3b.ipv6.abo.wanadoo.fr) (Quit: Leaving) |
| 22:04:34 | × | burnsidesLlama quits (~burnsides@dhcp168-039.wadham.ox.ac.uk) (Ping timeout: 260 seconds) |
| 22:07:02 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 22:07:44 | × | aln448 quits (~aln448@2a00:23c7:3480:b700:fdb9:39e2:1024:88b1) (Quit: Client closed) |
| 22:08:09 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection) |
| 22:11:00 | → | ph88 joins (~ph88@2a02:8109:9e00:7e5c::3d56) |
| 22:11:57 | × | meltedbrain_y2k quits (~tekserf@94.73.36.197) (Read error: Connection reset by peer) |
| 22:13:56 | <janus> | mcbride is still active: https://github.com/pigworker |
| 22:17:03 | × | k60 quits (~k60@broadband-95-84-168-218.ip.moscow.rt.ru) (Quit: k60) |
| 22:17:07 | <shapr> | What's the status of GHC on M1 macs? Does anyone know if it's fully supported? |
| 22:17:40 | <shapr> | Is there anything more recent than https://www.haskell.org/ghc/blog/20210309-apple-m1-story.html ? |
| 22:17:40 | <geekosaur> | via llvm only in 8.10.7, to be fully supported in 9.2.1 |
| 22:17:41 | <dsal> | shapr: I was able to build most of my projects. |
| 22:17:49 | <shapr> | dsal: most? |
| 22:17:57 | <shapr> | We have a 500kloc codebase, most worries me |
| 22:18:10 | <dsal> | The latest stack LTS has an older `network` library. I didn't go through and redo them all. |
| 22:18:18 | <dsal> | But my gopro project has all the deps and that one worked. |
| 22:18:30 | <dsal> | /Users/dustin/.local/bin/gopro: Mach-O 64-bit executable arm64 |
| 22:19:33 | <dsal> | `network` was the only thing I tripped up on, and it was already fixed. |
| 22:19:39 | <dsal> | Also, there are a bunch of annoying warnings while stuff builds. |
| 22:20:38 | <dsal> | I just found out I can replace my mac with one that's about the same size, but with 10 cores and 64GB of RAM… |
| 22:23:13 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 22:24:49 | <shapr> | dsal: thanks for the info |
| 22:25:28 | <dsal> | I switched my nix over two days ago to try that, so it's fresh on my mind. :) |
| 22:26:26 | <dsal> | I switched it back, though. It's a little annoying to override `network` just for that. |
| 22:28:19 | <shapr> | dsal: are you using ghc 8.10.7 ? or ghc 9? |
| 22:31:35 | → | Megant joins (megant@user/megant) |
| 22:33:31 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) |
| 22:33:48 | → | Midjak joins (~Midjak@82-65-111-221.subs.proxad.net) |
| 22:34:05 | × | Null_A quits (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) (Remote host closed the connection) |
| 22:34:19 | × | Midjak quits (~Midjak@82-65-111-221.subs.proxad.net) (Read error: Connection reset by peer) |
| 22:34:39 | <dsal> | I just ran stack LTS-18.13 |
| 22:35:33 | <dsal> | LTS 18.13 for ghc-8.10.7 |
| 22:35:44 | <dsal> | I may have tried a nightly. I'll do that real quick and see what happens. |
| 22:36:38 | <dsal> | It's downloading 9.0.1… Nothing can go wrong now. |
| 22:39:22 | → | slack1256 joins (~slack1256@45.4.2.52) |
| 22:40:00 | × | theproffesor quits (~theproffe@user/theproffesor) (Ping timeout: 268 seconds) |
| 22:42:47 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 22:42:51 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3) |
| 22:46:34 | × | slack1256 quits (~slack1256@45.4.2.52) (Ping timeout: 260 seconds) |
| 22:47:47 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 22:48:20 | → | vicfred joins (~vicfred@user/vicfred) |
| 22:49:18 | → | brainfreeze joins (~brainfree@2a03:1b20:4:f011::20d) |
| 22:51:23 | × | ArtVandelayer quits (~ArtVandel@ip174-68-147-20.lv.lv.cox.net) (Ping timeout: 264 seconds) |
| 22:52:04 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 22:54:14 | × | voldial quits (~user@195.179.201.175) (Changing host) |
| 22:54:14 | → | voldial joins (~user@user/voldial) |
| 22:57:56 | × | tomsmeding quits (~tomsmedin@tomsmeding.com) (Ping timeout: 265 seconds) |
| 22:58:37 | × | beaky quits (~beaky@198.211.118.219) (Ping timeout: 252 seconds) |
| 22:59:00 | × | sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds) |
| 22:59:14 | × | quintasan quits (~quassel@quintasan.pl) (Ping timeout: 265 seconds) |
| 22:59:23 | × | Dykam quits (Dykam@dykam.nl) (Ping timeout: 265 seconds) |
| 22:59:31 | × | synthmeat quits (~synthmeat@user/synthmeat) (Ping timeout: 268 seconds) |
| 22:59:34 | ← | voldial parts (~user@user/voldial) (WeeChat 1.6) |
| 23:00:35 | → | dsrt^ joins (~dsrt@68.101.53.15) |
| 23:02:42 | <shapr> | dsal: is it still downloading? |
| 23:04:08 | → | sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
| 23:04:30 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 23:09:04 | × | sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds) |
| 23:09:37 | × | alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection) |
| 23:09:57 | → | alzgh joins (~alzgh@user/alzgh) |
| 23:10:02 | <Cajun> | so im looking into a small project of changing a program from a pretty unorganized mtl stack (abusing a lot of state changing stuff) to some effect system and im wondering which library is the library of choice? fused-effects, polysemy, and freer-simple all look like good options |
| 23:11:08 | <Cajun> | s/?/. |
| 23:13:30 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 23:18:27 | <oak-> | I think polysemy had some problems with performance in the past (if that is a concern), but I'm not sure if it is already fixed. I think in the past it needed some GHC-patch |
| 23:19:05 | × | elmoloko quits (~Adium@2600:6c64:4a7f:faa6:2863:d742:7416:5b9e) (Quit: Leaving.) |
| 23:19:57 | <ph88> | I have a function [b] -> (Maybe a, [b]) what helper function can i use to keep my function running on [b] (using the output again as input) until i find Nothing and then returning ([Just a], [b]). I don't think i can use a normal foldl' here because the input is determined from the output of previous call |
| 23:21:07 | <geekosaur> | unfoldr? |
| 23:23:10 | → | sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
| 23:23:49 | <Cajun> | well what inspired the project was this (https://reasonablypolymorphic.com/blog/porting-to-polysemy/index.html) post, and it seems like a very interesting system. i have no performance concerns (as long as it can still work at ~13fps in a console window, not a high bar) |
| 23:27:25 | × | Tuplanolla quits (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:27:41 | → | synthmeat joins (~synthmeat@user/synthmeat) |
| 23:27:45 | × | sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds) |
| 23:27:54 | → | tomsmeding joins (~tomsmedin@tomsmeding.com) |
| 23:28:29 | → | quintasan joins (~quassel@quintasan.pl) |
| 23:28:41 | <ph88> | geekosaur, that function looks pretty neat thanks |
| 23:36:47 | → | hexology joins (~hexology@user/hexology) |
| 23:39:14 | → | sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
| 23:42:01 | → | ArtVandelayer joins (~ArtVandel@ip174-68-147-20.lv.lv.cox.net) |
| 23:42:10 | → | beaky joins (~beaky@2a03:b0c0:0:1010::1e:a001) |
| 23:43:43 | × | sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds) |
| 23:43:58 | → | sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
| 23:44:13 | → | lavaman joins (~lavaman@98.38.249.169) |
| 23:47:16 | × | MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer) |
| 23:48:49 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 23:49:01 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 265 seconds) |
| 23:49:37 | → | pragma- joins (~chaos@user/pragmatic-chaos) |
| 23:49:41 | × | sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 245 seconds) |
| 23:50:06 | → | MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
| 23:52:29 | → | sprout joins (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
| 23:52:42 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Quit: Lost terminal) |
| 23:53:10 | → | machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca) |
| 23:54:06 | × | pragma- quits (~chaos@user/pragmatic-chaos) (Client Quit) |
| 23:54:38 | <dsal> | shapr: oops. it broke because of libs. Got a call. Gonna try again. |
| 23:55:35 | → | pragma- joins (~chaos@user/pragmatic-chaos) |
| 23:55:51 | <dsal> | Oh yes. I remember now. |
| 23:55:59 | <shapr> | dsal: oh? |
| 23:56:43 | <dsal> | Pages of this sort of thing: https://usercontent.irccloud-cdn.com/file/sZpPstHP/errs.png |
| 23:56:52 | × | ystael quits (~ystael@user/ystael) (Ping timeout: 252 seconds) |
| 23:58:02 | × | sprout quits (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds) |
| 23:58:31 | → | ystael joins (~ystael@user/ystael) |
| 23:59:39 | × | MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 265 seconds) |
All times are in UTC on 2021-10-19.