2022-04-07 00:00:06 +0200 | <monochrom> | I'll post my proof paste in a moment. |
2022-04-07 00:01:17 +0200 | MajorBiscuit | (~MajorBisc@86-88-79-148.fixed.kpn.net) (Quit: WeeChat 3.4) |
2022-04-07 00:01:55 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-04-07 00:02:25 +0200 | <monochrom> | https://paste.tomsmeding.com/m6GansIE |
2022-04-07 00:04:18 +0200 | <monochrom> | I should put it on an exam and devastate the whole class! |
2022-04-07 00:04:50 +0200 | mikoto-chan | (~mikoto-ch@213.177.151.239) (Ping timeout: 246 seconds) |
2022-04-07 00:06:39 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
2022-04-07 00:07:18 +0200 | Akiva | (~Akiva@user/Akiva) |
2022-04-07 00:10:13 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds) |
2022-04-07 00:10:56 +0200 | Guest27 | (~Guest27@2601:281:d47f:1590::e9d9) (Ping timeout: 250 seconds) |
2022-04-07 00:12:04 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
2022-04-07 00:12:38 +0200 | acidjnk | (~acidjnk@p200300d0c7049f39b8d686b04cd6897b.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2022-04-07 00:15:42 +0200 | chargen | (~chargen@8.31.163.87) (Leaving) |
2022-04-07 00:25:41 +0200 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2022-04-07 00:25:48 +0200 | coot | (~coot@213.134.190.95) (Quit: coot) |
2022-04-07 00:29:53 +0200 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-04-07 00:30:18 +0200 | <maerwald[m]> | You like to torment students, don't you? ; ) |
2022-04-07 00:34:14 +0200 | img | (~img@user/img) |
2022-04-07 00:35:22 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 272 seconds) |
2022-04-07 00:35:26 +0200 | <monochrom> | The class average is always too high, I always look for upping the game! |
2022-04-07 00:36:57 +0200 | <hpc> | it's like configuring a sound system, you get the full range of the class > 0 and < 100 (non-inclusive), and then adjust the curve :D |
2022-04-07 00:37:42 +0200 | <maerwald[m]> | So ppl get punished for being above average? |
2022-04-07 00:39:32 +0200 | <hpc> | so you find the limit of everyone's knowledge and have an accurate basis to decide the curve from |
2022-04-07 00:39:40 +0200 | <hpc> | maybe "punishing", maybe "rewarding" |
2022-04-07 00:40:01 +0200 | <hpc> | if almost everyone is getting 100s, maybe the class is too easy |
2022-04-07 00:40:18 +0200 | <hpc> | and you can go through the concepts faster, or get more advanced |
2022-04-07 00:41:02 +0200 | jgeerds | (~jgeerds@d5364b87.access.ecotel.net) (Ping timeout: 260 seconds) |
2022-04-07 00:41:11 +0200 | <maerwald[m]> | Maybe they just want to be done so they can go home and you pour more stuff at them :D |
2022-04-07 00:41:50 +0200 | <maerwald[m]> | They'll lern that too and then pretend to be average |
2022-04-07 00:42:53 +0200 | <monochrom> | Ppl get punished. Period. >:) |
2022-04-07 00:42:56 +0200 | <hpc> | if they want to be lazy that's on them |
2022-04-07 00:42:56 +0200 | stef204 | (~stef204@user/stef204) (Quit: WeeChat 3.5) |
2022-04-07 00:44:05 +0200 | <maerwald[m]> | They're usually lazy, because that allows fusing homework close before the class |
2022-04-07 00:44:54 +0200 | <abastro[m]> | Well, Haskell has laziness so |
2022-04-07 00:45:06 +0200 | dcoutts_ | (~duncan@host213-122-143-81.range213-122.btcentralplus.com) (Ping timeout: 268 seconds) |
2022-04-07 00:45:13 +0200 | <hpc> | strictly speaking, haskell is just non-strict :P |
2022-04-07 00:45:21 +0200 | <abastro[m]> | Students learning it would be kind of lazy |
2022-04-07 00:45:31 +0200 | <abastro[m]> | Ah :P |
2022-04-07 00:45:50 +0200 | bezmuth | (~bezmuth@host86-136-197-212.range86-136.btcentralplus.com) |
2022-04-07 00:47:32 +0200 | <abastro[m]> | Wait what is that exam problem, that sounds hellish |
2022-04-07 00:47:45 +0200 | <maerwald[m]> | This is how laziness works: this should be evaluated, unless... or maybe not. Ohh...let me check that in the debugger. |
2022-04-07 00:47:59 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 00:48:44 +0200 | <hpc> | that's the beauty of IO |
2022-04-07 00:48:48 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2022-04-07 00:48:53 +0200 | <abastro[m]> | Yep, laziness allows doing what is necessary, being more efficient |
2022-04-07 00:48:54 +0200 | <hpc> | the students are evaluated just before being execut- i mean, what? |
2022-04-07 00:49:18 +0200 | <abastro[m]> | Haha |
2022-04-07 00:49:30 +0200 | <maerwald[m]> | abastro: that's a gross oversimplification |
2022-04-07 00:49:56 +0200 | <maerwald[m]> | Laziness gets you punished by monochrom |
2022-04-07 00:50:00 +0200 | <abastro[m]> | Lmao |
2022-04-07 00:50:24 +0200 | <abastro[m]> | <del>But..but sensei haskell is lazy by default</del> |
2022-04-07 00:50:46 +0200 | <maerwald[m]> | Unless you're above average, then you get punished even of you are strict |
2022-04-07 00:51:30 +0200 | <abastro[m]> | Wait why? |
2022-04-07 00:53:28 +0200 | <monochrom> | abastro[m]: I was just kidding, my courses are really in no position to talk about MonadFix, too many other topics of relevance already. But the question was "from MonadFix laws can you prove mfix (const t) = t". My solution is at https://paste.tomsmeding.com/m6GansIE |
2022-04-07 00:54:26 +0200 | <abastro[m]> | Oh, interesting |
2022-04-07 00:56:49 +0200 | <abastro[m]> | Btw is your profession professor? |
2022-04-07 00:56:50 +0200 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-04-07 00:57:35 +0200 | hololeap_ | (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
2022-04-07 00:57:51 +0200 | hololeap_ | (~hololeap@user/hololeap) |
2022-04-07 00:58:45 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-04-07 01:00:18 +0200 | alp_ | (~alp@user/alp) |
2022-04-07 01:00:21 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2022-04-07 01:01:01 +0200 | mvk | (~mvk@2607:fea8:5ce3:8500::9d5a) (Ping timeout: 240 seconds) |
2022-04-07 01:01:18 +0200 | Guest89 | (~Guest89@2a01:41e1:47ec:c500:e741:fb6e:5f12:6189) (Quit: Client closed) |
2022-04-07 01:02:24 +0200 | <abastro[m]> | Oh I'm sorry for asking.. |
2022-04-07 01:03:17 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds) |
2022-04-07 01:03:18 +0200 | Guest89 | (~Guest89@2a01:41e1:47ec:c500:e741:fb6e:5f12:6189) |
2022-04-07 01:03:43 +0200 | johnw | (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) |
2022-04-07 01:05:46 +0200 | mcgroin | (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 272 seconds) |
2022-04-07 01:06:14 +0200 | koz | (~koz@121.99.240.58) (Ping timeout: 260 seconds) |
2022-04-07 01:10:09 +0200 | Guest|3 | (~Guest|3@taffa.wpa.dal.ca) |
2022-04-07 01:10:38 +0200 | Akiva | (~Akiva@user/Akiva) (Ping timeout: 246 seconds) |
2022-04-07 01:10:50 +0200 | <Guest|3> | getting the error message "curl: (60) SSL certificate problem: certificate has expired |
2022-04-07 01:10:51 +0200 | <Guest|3> | More details here: https://curl.haxx.se/docs/sslcerts.html" |
2022-04-07 01:11:08 +0200 | <Guest|3> | when trying to install GHC |
2022-04-07 01:11:29 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 01:11:57 +0200 | koz | (~koz@121.99.240.58) |
2022-04-07 01:12:02 +0200 | chomwitt | (~chomwitt@athedsl-31574.home.otenet.gr) (Ping timeout: 252 seconds) |
2022-04-07 01:12:33 +0200 | bezmuth | (~bezmuth@host86-136-197-212.range86-136.btcentralplus.com) (Quit: bezmuth) |
2022-04-07 01:12:45 +0200 | <Guest|3> | can somebody please help me figure out how to download GHC? |
2022-04-07 01:12:55 +0200 | bezmuth | (~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7) |
2022-04-07 01:15:06 +0200 | <geekosaur> | works here. are you sure you don't have out of date root certificates? |
2022-04-07 01:16:32 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds) |
2022-04-07 01:21:46 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-04-07 01:21:53 +0200 | <hpc> | have you tried the fixes on that link? |
2022-04-07 01:24:58 +0200 | <Guest|3> | I have fixed it now, thank you for the responses |
2022-04-07 01:25:02 +0200 | Guest|3 | (~Guest|3@taffa.wpa.dal.ca) (Quit: Connection closed) |
2022-04-07 01:27:22 +0200 | Akiva | (~Akiva@user/Akiva) |
2022-04-07 01:29:08 +0200 | Guest27 | (~Guest27@2601:281:d47f:1590::e9d9) |
2022-04-07 01:30:03 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-04-07 01:31:21 +0200 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds) |
2022-04-07 01:32:15 +0200 | gurkenglas | (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) (Ping timeout: 260 seconds) |
2022-04-07 01:34:52 +0200 | wrengr | (~wrengr@249.189.233.35.bc.googleusercontent.com) |
2022-04-07 01:36:23 +0200 | DNH | (~DNH@2a02:8108:1100:16d8:c8af:4307:df41:9668) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-04-07 01:43:55 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Quit: ec) |
2022-04-07 01:44:45 +0200 | <dons> | moin moin |
2022-04-07 01:45:49 +0200 | <geekosaur> | o/ |
2022-04-07 01:53:29 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2022-04-07 01:58:51 +0200 | Midjak | (~Midjak@226.34.136.77.rev.sfr.net) (Quit: This computer has gone to sleep) |
2022-04-07 02:01:14 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5) |
2022-04-07 02:01:29 +0200 | califax | (~califax@user/califx) (Remote host closed the connection) |
2022-04-07 02:03:34 +0200 | califax | (~califax@user/califx) |
2022-04-07 02:03:47 +0200 | theproffesor | (~theproffe@2601:282:847f:7f00::87) (Quit: ¯\_(ツ)_/¯) |
2022-04-07 02:04:00 +0200 | theproffesor | (~theprofff@2601:282:847f:7f00::87) |
2022-04-07 02:04:11 +0200 | theproffesor | (~theprofff@2601:282:847f:7f00::87) (Changing host) |
2022-04-07 02:04:11 +0200 | theproffesor | (~theprofff@user/theproffesor) |
2022-04-07 02:04:18 +0200 | Akiva | (~Akiva@user/Akiva) (Ping timeout: 260 seconds) |
2022-04-07 02:07:07 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 268 seconds) |
2022-04-07 02:07:43 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2022-04-07 02:08:23 +0200 | bezmuth | (~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7) (Ping timeout: 260 seconds) |
2022-04-07 02:11:15 +0200 | Guest89 | (~Guest89@2a01:41e1:47ec:c500:e741:fb6e:5f12:6189) (Quit: Client closed) |
2022-04-07 02:11:43 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2022-04-07 02:13:26 +0200 | <abastro[m]> | Morning |
2022-04-07 02:14:09 +0200 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 256 seconds) |
2022-04-07 02:16:59 +0200 | Guest27 | (~Guest27@2601:281:d47f:1590::e9d9) (Quit: Client closed) |
2022-04-07 02:17:12 +0200 | Guest27 | (~Guest27@2601:281:d47f:1590::e9d9) |
2022-04-07 02:18:24 +0200 | bezmuth | (~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7) |
2022-04-07 02:18:33 +0200 | Guest27 | (~Guest27@2601:281:d47f:1590::e9d9) (Client Quit) |
2022-04-07 02:20:54 +0200 | <Axman6> | o/ |
2022-04-07 02:23:21 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 02:31:47 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
2022-04-07 02:36:14 +0200 | lbseale | (~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer) |
2022-04-07 02:38:09 +0200 | exilepilot | (~exilepilo@2a00:23c4:ba88:fc01:d059:aa64:8c3f:a223) |
2022-04-07 02:38:23 +0200 | exilepilot | (~exilepilo@2a00:23c4:ba88:fc01:d059:aa64:8c3f:a223) (Remote host closed the connection) |
2022-04-07 02:38:44 +0200 | exilepilot | (~exilepilo@2a00:23c4:ba88:fc01:d059:aa64:8c3f:a223) |
2022-04-07 02:39:33 +0200 | <dons> | its a ghc -j6 +RTS -A256m -n4m -RTS sort of day |
2022-04-07 02:39:48 +0200 | Andrew | LeetPeet |
2022-04-07 02:42:35 +0200 | LeetPeet | (Andrew@user/AndrewYu) (Quit: Leaving) |
2022-04-07 02:42:48 +0200 | AndrewYu | (Andrew@user/AndrewYu) |
2022-04-07 02:45:01 +0200 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 250 seconds) |
2022-04-07 02:45:47 +0200 | AndrewYu | Andrew |
2022-04-07 02:48:20 +0200 | <energizer> | are there languages where an expression can have more than one type? |
2022-04-07 02:50:54 +0200 | xff0x | (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) (Ping timeout: 268 seconds) |
2022-04-07 02:51:03 +0200 | <dons> | you mean like generics? or polymorphism? |
2022-04-07 02:51:07 +0200 | <Axman6> | the expression `1` in Haskell has many possible types |
2022-04-07 02:51:13 +0200 | <Axman6> | :t 1 |
2022-04-07 02:51:14 +0200 | <lambdabot> | Num p => p |
2022-04-07 02:51:16 +0200 | <Axman6> | :t 1 : Int |
2022-04-07 02:51:17 +0200 | <lambdabot> | error: |
2022-04-07 02:51:17 +0200 | <lambdabot> | • Data constructor not in scope: Int :: [a] |
2022-04-07 02:51:17 +0200 | <lambdabot> | • Perhaps you meant variable ‘int’ (imported from Text.PrettyPrint.HughesPJ) |
2022-04-07 02:51:19 +0200 | <Axman6> | :t 1 : Integer |
2022-04-07 02:51:20 +0200 | <lambdabot> | error: |
2022-04-07 02:51:20 +0200 | <lambdabot> | • Data constructor not in scope: Integer :: [a] |
2022-04-07 02:51:20 +0200 | <lambdabot> | • Perhaps you meant one of these: |
2022-04-07 02:51:22 +0200 | <Axman6> | :t 1 :: Integer |
2022-04-07 02:51:23 +0200 | <lambdabot> | Integer |
2022-04-07 02:51:25 +0200 | <Axman6> | too much Daml |
2022-04-07 02:51:32 +0200 | <Axman6> | :t 1 :: Expr |
2022-04-07 02:51:33 +0200 | <lambdabot> | Expr |
2022-04-07 02:51:36 +0200 | <dons> | something like, C a => [a] , is a type that has more than one type of `a` , right? could be two more types, or infinite or .. |
2022-04-07 02:52:34 +0200 | <dons> | you sometimes see very specific versions of this in disjoint types, e.g. in the Flow language, you write something as type T = Int | Bool |
2022-04-07 02:53:12 +0200 | <dons> | but its just a form of polymorphism, similar to class-based in haskell ( class T a ;; instance T Int ; instance T Bool |
2022-04-07 02:53:34 +0200 | <dons> | or data T = TInt Int | TBool Bool is maybe closer to the Flow version |
2022-04-07 02:53:45 +0200 | <energizer> | is "Num p => p" a type? |
2022-04-07 02:54:35 +0200 | <dons> | I would say its a type signature, or type expression. it represent the type of some `p` where `p` is a member of the set of types in Class `p` |
2022-04-07 02:54:41 +0200 | <dons> | but yeah, its a type. |
2022-04-07 02:54:49 +0200 | <dons> | (what is a type ?!? is a big question) |
2022-04-07 02:56:00 +0200 | <dons> | "Num p => p" |
2022-04-07 02:56:28 +0200 | <energizer> | if i take what you said literally i get p is a type and "Num p => p" represents the type of that p? |
2022-04-07 02:56:36 +0200 | <energizer> | but i dont think that's what you meant |
2022-04-07 02:56:43 +0200 | <dons> | nope. |
2022-04-07 02:57:04 +0200 | <dons> | type systems let you specifify types for values in computer programs, right? |
2022-04-07 02:57:21 +0200 | <energizer> | i dunno they seem to be about expressions |
2022-04-07 02:57:29 +0200 | <dons> | well, expressions are values too |
2022-04-07 02:57:40 +0200 | <energizer> | an expression has exactly one type, iirc |
2022-04-07 02:58:05 +0200 | <dons> | so, v is a value. v :: Num p => p, says that the value `v` has a type, "Num p => p" |
2022-04-07 02:58:22 +0200 | <dons> | , and that type is a generic one, meaning the concrete type `p` is one of a member of the set Num |
2022-04-07 02:58:38 +0200 | <dons> | right. our type checkers go to a lot of lengths to ensure there's precisely one type |
2022-04-07 02:58:52 +0200 | <cheater> | o/ dons |
2022-04-07 02:58:58 +0200 | <dons> | but sometimes that type can be quite rich, e.g. a set of possible values, or universally quantified, or a disjoint limited set or something |
2022-04-07 02:59:22 +0200 | <dons> | you can write a lot of haskell programs without every writing down the type signatures, yeah? |
2022-04-07 02:59:43 +0200 | <dons> | the compiler just figures out a unique type to assign to everything, such that it is sound and there are no conflicts in assigning types |
2022-04-07 02:59:58 +0200 | <dons> | if it can't do that, you might a type error, or need to specify a type signature to help the compiler solve things |
2022-04-07 03:00:30 +0200 | <dons> | so "Num p => p" is such a signature. if attached to a value with ":: " it specifies the valid types for the value |
2022-04-07 03:01:50 +0200 | <energizer> | i think "v :: Num p => p" means "p is a type, Num p is true about p, and v is an expression of type p" |
2022-04-07 03:02:03 +0200 | alp_ | (~alp@user/alp) (Ping timeout: 260 seconds) |
2022-04-07 03:02:10 +0200 | <dons> | this is a really really good book if you want to learn how this works. how the type system checks the possible types permitted for values in a program, and how to do all the fancy featuers like polymorphic types, https://www.cs.cmu.edu/~rwh/pfpl/2nded.pdf |
2022-04-07 03:02:19 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
2022-04-07 03:02:56 +0200 | <dons> | `v` has type `p` where `p` is a member of the set of types in Num, something like that. `v` can be instantiated to any of those types, and the program will still work |
2022-04-07 03:03:14 +0200 | <dons> | more common types are things like, length :: [a] -> Int |
2022-04-07 03:03:36 +0200 | <dons> | e.g. the function that tells you the length of a list, regardless of what types the value are. It guarantees to work no matter what is in the list |
2022-04-07 03:04:31 +0200 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
2022-04-07 03:05:45 +0200 | mud | (~mud@user/kadoban) |
2022-04-07 03:06:24 +0200 | <energizer> | how would you compare PFPL vs TAPL? |
2022-04-07 03:07:03 +0200 | <dons> | I found PFPL more foundational. it changed how I think about programming languages |
2022-04-07 03:12:06 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 03:14:02 +0200 | <energizer> | dons: i noticed you said value instead of expression |
2022-04-07 03:14:44 +0200 | <dons> | different languages distinguish values and expressions, but in a lazy language like haskell its less clear |
2022-04-07 03:14:53 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 03:15:04 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-04-07 03:15:04 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-04-07 03:15:04 +0200 | wroathe | (~wroathe@user/wroathe) |
2022-04-07 03:16:05 +0200 | <dons> | let v = (\x -> x + 1) 2) :: Int or v :: Int , don't realy distinguish expressions and primitive values ? (you're thinking about literals or value that are reduced to a concrete, primitive type?) |
2022-04-07 03:16:05 +0200 | <energizer> | what is the difference between a value and expression in ocaml or nix or whatever? |
2022-04-07 03:16:26 +0200 | <energizer> | er, not nix |
2022-04-07 03:16:28 +0200 | <dons> | you might have some evaluation to do, to get the expression down to a value. |
2022-04-07 03:16:33 +0200 | abastro | (~abab9579@192.249.26.131) |
2022-04-07 03:16:39 +0200 | <dons> | and you can probably do different things with values than expressions |
2022-04-07 03:17:03 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
2022-04-07 03:17:04 +0200 | <dons> | similarly with values that have unboxed types in haskell. they are a bit more restricted, can't be bottom |
2022-04-07 03:17:46 +0200 | <dons> | how languages distingush values in various evaluation strategies, lazy, by name, by need etc is a huge topic too. whether one thing can be substituted for the other without anyone noticing |
2022-04-07 03:18:34 +0200 | <dons> | at least more typed functional languages let you write some knid of type signature for expressions, or values, almost anywhere. |
2022-04-07 03:19:36 +0200 | xff0x | (~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp) |
2022-04-07 03:20:06 +0200 | neurocyte8614492 | (~neurocyte@IP-185238252073.dynamic.medianet-world.de) |
2022-04-07 03:20:06 +0200 | neurocyte8614492 | (~neurocyte@IP-185238252073.dynamic.medianet-world.de) (Changing host) |
2022-04-07 03:20:06 +0200 | neurocyte8614492 | (~neurocyte@user/neurocyte) |
2022-04-07 03:22:21 +0200 | neurocyte861449 | (~neurocyte@user/neurocyte) (Ping timeout: 268 seconds) |
2022-04-07 03:22:21 +0200 | neurocyte8614492 | neurocyte861449 |
2022-04-07 03:23:16 +0200 | frost | (~frost@user/frost) |
2022-04-07 03:23:58 +0200 | <dons> | we don't really distinguish expressions and commands, but lots of languages do. |
2022-04-07 03:24:23 +0200 | <dons> | other than in the do-notation, which I guess does make syntactic sugar for a particular kind of expression (monadically-typed sones) |
2022-04-07 03:27:01 +0200 | <dons> | in haskell, you can generally use variables as placebolders for expressions. they can be substituted freely. that's not true of commands or statements (e.g. fire the missles). and we can't usually distinguish how a value is different from an expression. other than by evaluating it. |
2022-04-07 03:27:32 +0200 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-04-07 03:27:54 +0200 | kaph | (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) (Ping timeout: 268 seconds) |
2022-04-07 03:28:24 +0200 | vysn | (~vysn@user/vysn) |
2022-04-07 03:30:02 +0200 | Chai-T-Rex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-04-07 03:30:28 +0200 | Chai-T-Rex | (~ChaiTRex@user/chaitrex) |
2022-04-07 03:35:11 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 246 seconds) |
2022-04-07 03:36:32 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 03:38:01 +0200 | Kaipi | (~Kaiepi@156.34.47.253) (Ping timeout: 248 seconds) |
2022-04-07 03:38:58 +0200 | exilepilot | (~exilepilo@2a00:23c4:ba88:fc01:d059:aa64:8c3f:a223) (Quit: Leaving) |
2022-04-07 03:39:13 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
2022-04-07 03:39:25 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
2022-04-07 03:41:13 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds) |
2022-04-07 03:44:34 +0200 | <Axman6> | I think a useful things to remember when talking about monadic code being more expression like is the difference between f (g x) (g x) being the same as let y = g x in f y y being always true in Haskell, but do {a <- g x; b <- g x; f a b} not being the same as do {a <- g x; f a a} |
2022-04-07 03:44:51 +0200 | bezmuth_ | (~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7) |
2022-04-07 03:45:01 +0200 | bezmuth | (~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7) (Ping timeout: 240 seconds) |
2022-04-07 03:45:27 +0200 | <dons> | yeah |
2022-04-07 03:45:27 +0200 | bezmuth_ | bezmuth |
2022-04-07 03:48:44 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 03:53:29 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds) |
2022-04-07 03:56:01 +0200 | danso | (~danso@danso.ca) () |
2022-04-07 03:59:58 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 268 seconds) |
2022-04-07 04:00:57 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 04:01:26 +0200 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds) |
2022-04-07 04:01:34 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-04-07 04:05:47 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
2022-04-07 04:12:59 +0200 | ubert | (~Thunderbi@p200300ecdf15881ccd0eab025279bcac.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2022-04-07 04:13:09 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 04:13:16 +0200 | ubert | (~Thunderbi@p200300ecdf15885c99f35b3e45127b02.dip0.t-ipconnect.de) |
2022-04-07 04:17:32 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds) |
2022-04-07 04:18:52 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
2022-04-07 04:19:07 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
2022-04-07 04:19:14 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
2022-04-07 04:19:29 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
2022-04-07 04:19:36 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
2022-04-07 04:21:26 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 04:26:11 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-04-07 04:26:38 +0200 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) (Remote host closed the connection) |
2022-04-07 04:28:02 +0200 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) |
2022-04-07 04:28:05 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-04-07 04:30:58 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 272 seconds) |
2022-04-07 04:31:11 +0200 | abastro | (~abab9579@192.249.26.131) (Ping timeout: 246 seconds) |
2022-04-07 04:31:41 +0200 | liz | (~liz@host109-151-125-217.range109-151.btcentralplus.com) (Quit: Lost terminal) |
2022-04-07 04:35:52 +0200 | <jackdk> | Axman6: https://github.com/system-f/fp-course#demonstrate-io-maintains-referential-transparency |
2022-04-07 04:36:40 +0200 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) (Remote host closed the connection) |
2022-04-07 04:37:39 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 04:37:41 +0200 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) |
2022-04-07 04:37:45 +0200 | bezmuth | (~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7) (Ping timeout: 248 seconds) |
2022-04-07 04:42:22 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds) |
2022-04-07 04:43:08 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 04:43:34 +0200 | <abastro[m]> | Tho that is more relevant with pure sharing |
2022-04-07 04:43:37 +0200 | <abastro[m]> | Using pure let |
2022-04-07 04:48:04 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 268 seconds) |
2022-04-07 04:48:35 +0200 | terrorjack | (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat) |
2022-04-07 04:49:50 +0200 | terrorjack | (~terrorjac@2a01:4f8:1c1e:509a::1) |
2022-04-07 04:49:52 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 04:54:31 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
2022-04-07 04:56:36 +0200 | <Axman6> | dons: why do you need `Foreign.CPP.Dynamic.parseJSON line`? |
2022-04-07 04:57:45 +0200 | <dons> | that's the folly json parser, bytestring -> Value |
2022-04-07 04:58:01 +0200 | <dons> | tends to be 2-3x more efficient than aeson |
2022-04-07 04:58:06 +0200 | <dons> | though i should probably test that |
2022-04-07 05:00:00 +0200 | <abastro[m]> | Thin layer around C++ json parser? |
2022-04-07 05:00:15 +0200 | <Axman6> | definitely reckon you should look at Waargonaut, it avoids the need to parse via anm intermediate type, and it's possible to do things like fail early on a map that has unexpected keys |
2022-04-07 05:00:56 +0200 | <dons> | right, ideally here i would not build the intermediate Value from parseJSON, just to build a LSIF KeyFact |
2022-04-07 05:01:06 +0200 | <dons> | stream into the result, fusing the intermediate data away |
2022-04-07 05:02:05 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 05:02:35 +0200 | <abastro[m]> | C++ is faster than Haskell anyway |
2022-04-07 05:03:22 +0200 | <Axman6> | that isn't findamentally true |
2022-04-07 05:03:26 +0200 | <zero> | abastro[m]: can you really say a language is faster than another? |
2022-04-07 05:03:39 +0200 | <Axman6> | (In fact, dons has several blog posts showing that can be untrue) |
2022-04-07 05:03:57 +0200 | <dons> | haha |
2022-04-07 05:04:12 +0200 | <abastro[m]> | I mean, in average it is faster |
2022-04-07 05:04:27 +0200 | <zero> | abastro[m]: what do you mean by average? |
2022-04-07 05:04:31 +0200 | <abastro[m]> | With fastest library of C++ faster than fastest library of Haskell |
2022-04-07 05:04:32 +0200 | <zero> | and what do you mean by faster? |
2022-04-07 05:04:34 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 05:05:21 +0200 | <dons> | its often slower if you factor in developer time fixing segfaults as a cost ;) |
2022-04-07 05:05:33 +0200 | <zero> | :) there we go |
2022-04-07 05:05:57 +0200 | <zero> | that is *one* good point |
2022-04-07 05:07:11 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds) |
2022-04-07 05:07:41 +0200 | <sm> | also for some problems it will be slower to express it in C++ (and for others, vice versa) |
2022-04-07 05:08:46 +0200 | <abastro[m]> | I mean in time taken in runtime |
2022-04-07 05:09:02 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 268 seconds) |
2022-04-07 05:09:35 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 05:09:55 +0200 | <sm> | for simple problems that's typically true, for complicated ones, less so |
2022-04-07 05:10:12 +0200 | <abastro[m]> | So I mean, for simple problems like this, C++ is speedier |
2022-04-07 05:10:17 +0200 | cdman | (~dcm@27.2.216.134) |
2022-04-07 05:10:17 +0200 | cdman | (~dcm@27.2.216.134) (Changing host) |
2022-04-07 05:10:17 +0200 | cdman | (~dcm@user/dmc/x-4369397) |
2022-04-07 05:10:46 +0200 | <sm> | you're not wrong, we're just point out the nuances |
2022-04-07 05:11:10 +0200 | <dons> | in this case I have a hyrid C++/Haskell project, and a C++ ffi to folly, and it just happens to be a bit convenient to call the folly C++ JSON parser. In other circumstances that wouldn't make sense. |
2022-04-07 05:11:12 +0200 | <dibblego> | red cars are faster than C++ |
2022-04-07 05:11:27 +0200 | <dons> | i also wouldn't write the rest of it in C++ :} since its all symbolic manipulation stuff |
2022-04-07 05:11:48 +0200 | <dons> | also the service is sensitive to the performance of JSON ingestion |
2022-04-07 05:11:51 +0200 | <dons> | so worth spending a bit of effort |
2022-04-07 05:11:56 +0200 | <dons> | make sensible tradeoffs |
2022-04-07 05:12:00 +0200 | <dons> | be pragmatic |
2022-04-07 05:12:46 +0200 | <dons> | i suspect i could hand write a json parser that is faster than either aeson or the folly one, for the specific json i'm accepting, btu that's also nuts, as its better to switch to a typed binary format. yay programming |
2022-04-07 05:13:00 +0200 | <dons> | lesson here is: don't use json |
2022-04-07 05:13:13 +0200 | <sm> | programming! hurrah! 🎉 |
2022-04-07 05:13:45 +0200 | <dons> | the first mistake was writing programs. that made things slower |
2022-04-07 05:13:58 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 268 seconds) |
2022-04-07 05:14:30 +0200 | <abastro[m]> | Ye I am just sharing opinion that for simple parts which need performance, thin wrapper around C++ libs would be the best |
2022-04-07 05:14:31 +0200 | sm | spent the last hour bulletproofing a stupid 50 line haskell script |
2022-04-07 05:14:50 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 05:14:59 +0200 | <Henson> | I benchmarked Haskell's Set libary against the C++ STL set objects, for some common set operations, and to my surprise, Haskell was faster by a few times. |
2022-04-07 05:15:42 +0200 | <sm> | hurrah! |
2022-04-07 05:17:17 +0200 | <dons> | nice |
2022-04-07 05:17:51 +0200 | <abastro[m]> | Nice exception |
2022-04-07 05:18:17 +0200 | <Henson> | has anyone done IPC in Haskell? I'm trying to communicate large protobufs of images (maybe 100 MB in size) from Haskell to Python. I'm thinking of trying to mash Haskell's interprocess library and Python's mmap library together to see if I can get shared-memory IPC to work. |
2022-04-07 05:19:14 +0200 | <Henson> | I could use Redis, which would be easier, but would it be higher performance? I wouldn't want Redis to try persisting several hundred MBs to disk when it only needs to be ephemeral |
2022-04-07 05:19:27 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
2022-04-07 05:20:36 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
2022-04-07 05:22:02 +0200 | <abastro[m]> | My dumb brain says to use TCP communication |
2022-04-07 05:24:22 +0200 | <sm> | FWIW: 0.50s to interpret a stack script with stack, 0.25s to interpret it with runghc, 0.02s to run the compiled version. 0.5s is ok, feels like python. I decided to keep interpreting it, it's nice to have only one file to think about. |
2022-04-07 05:24:39 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds) |
2022-04-07 05:26:36 +0200 | <Henson> | abastro[m]: I was considering that using the sockets library. But many years ago I tried rolling my own BSD socket communicate between two processes, and found out it was a bad idea because I had bugs all over the place. Using ZeroMQ was much better for the project as it handled all the bug-prone negotiation. Hmm, I'll take a look at ZeroMQ again to see if it'll work in my case. |
2022-04-07 05:27:49 +0200 | <sm> | do you need it to be fast ? |
2022-04-07 05:28:20 +0200 | Dorkside62 | (~dorkside@208.190.197.222) |
2022-04-07 05:28:35 +0200 | deadmarshal_ | (~deadmarsh@95.38.112.46) |
2022-04-07 05:28:41 +0200 | Dorkside6 | (~dorkside@208.190.197.222) (Read error: Connection reset by peer) |
2022-04-07 05:28:41 +0200 | Dorkside62 | Dorkside6 |
2022-04-07 05:31:29 +0200 | <sm> | I guess both haskell and python have FFI that can see the C-ish structures |
2022-04-07 05:31:38 +0200 | <Henson> | sm: preferably yes. Each thing being sent out will likely be around 100 MB in size, and I'd like it to take at most 0.5 seconds, preferably less. That gets into maybe the 500 MB/sec to 1 GB/sec write range. |
2022-04-07 05:33:46 +0200 | <abastro[m]> | Wait using TCP is buggy? |
2022-04-07 05:35:27 +0200 | <abastro[m]> | The rock bottom technology underlining the entire internet? |
2022-04-07 05:35:37 +0200 | sm | is shocked |
2022-04-07 05:35:40 +0200 | <Henson> | abastro[m]: no, trying to roll your own client-server communication using BSD sockets is buggy. Just a simple connect-send is not, but what I was trying to do was more complicated than that |
2022-04-07 05:36:59 +0200 | <Henson> | dealing with disconnects and timeouts, and reconnections was unpleasant. |
2022-04-07 05:38:17 +0200 | <sm> | I'm out of my depth here, but maybe it could be: use haskell FFI to allocate a pinned byte array (https://downloads.haskell.org/ghc/latest/docs/html/users_guide/exts/ffi.html#pinned-byte-arrays), then send python its address to read with https://cffi.readthedocs.io |
2022-04-07 05:38:52 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 05:41:04 +0200 | awpr | (uid446117@id-446117.lymington.irccloud.com) |
2022-04-07 05:43:06 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 05:43:15 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
2022-04-07 05:44:45 +0200 | <Axman6> | dons: "i suspect i could hand write a json parser that is faster than either aeson or the folly one" that's basically what Ambiata was doing, they were parsing CSV data, which could include embeded JSON of a known shape, and they'd output C specifically for that CSV schema. IIRC they were achieveing parsing more than one byte instruction |
2022-04-07 05:46:57 +0200 | mbuf | (~Shakthi@122.162.142.187) |
2022-04-07 05:47:46 +0200 | [_] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-04-07 05:48:14 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 272 seconds) |
2022-04-07 05:49:18 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 05:49:57 +0200 | <Axman6> | Henson: make RAM disk, write files to disk, and notify other process of its path. other process deleted it, and bam, you're done! |
2022-04-07 05:51:08 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 05:51:28 +0200 | <monochrom> | Use invisible characters for filenames, too. |
2022-04-07 05:51:35 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 268 seconds) |
2022-04-07 05:52:04 +0200 | <monochrom> | open(" \n\n \n\n\n", ...) |
2022-04-07 05:52:07 +0200 | <Henson> | Axman6: yes, that is a good suggestion! I could just use temporary files in /dev/shm, and that eliminates any worry of synchronizing access if it were a shared memory resource that was being overwritten while the other one was reading it. |
2022-04-07 05:52:53 +0200 | <Henson> | monochrom: haha, that would be a nasty filename |
2022-04-07 05:53:52 +0200 | <abastro[m]> | Oh, so TCP was too low level for you |
2022-04-07 05:54:01 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
2022-04-07 05:54:25 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 05:54:58 +0200 | <abastro[m]> | Oh, making files is a briliant idea |
2022-04-07 05:55:07 +0200 | <abastro[m]> | Memory-mapped files good |
2022-04-07 05:55:37 +0200 | <Henson> | abastro[m]: well a TCP socket would be too low level. ZeroMQ might have been suitable, but writing to files is way simpler, and checks all of the boxes for what I need to do. file-based IPC shared memory is what I was going after, and this is pretty much the same thing but is simpler and solve the shared resource access problem |
2022-04-07 05:55:43 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
2022-04-07 05:56:16 +0200 | <Henson> | Axman6++ |
2022-04-07 05:57:05 +0200 | <Henson> | hmm, maybe I'm thinkin of the bot in the #nixos channel. |
2022-04-07 05:57:09 +0200 | <Axman6> | "Fark, did I call the final version "\t\n \t" or "\n\t \t"???" |
2022-04-07 05:57:20 +0200 | <Axman6> | @karma Axman6 |
2022-04-07 05:57:20 +0200 | <lambdabot> | You have a karma of 2 |
2022-04-07 05:57:24 +0200 | <Henson> | Axman6: thanks for the suggestion. |
2022-04-07 05:57:36 +0200 | <Axman6> | Honestyl it was a joke, but it would probably work |
2022-04-07 05:57:53 +0200 | <Henson> | Axman6: well, I think it would work, and it was a good suggestion, even if it was a joke. |
2022-04-07 05:58:17 +0200 | <Axman6> | I think it would work too, particularly if you don't need to persist the data |
2022-04-07 05:58:33 +0200 | <Axman6> | even allows you to have the reading side read data as soon as it's written |
2022-04-07 05:59:00 +0200 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-04-07 05:59:07 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
2022-04-07 05:59:36 +0200 | <jackdk> | I have always wanted an excuse to use ZMQ beyond https://git.sr.ht/~jack/mudcore , and to write a typesafe wrapper for its sockets using linear types (Axman6 may recall an aborted attempt using indexed monads) |
2022-04-07 06:01:08 +0200 | Ram-Z | (~Ram-Z@li1814-254.members.linode.com) (Ping timeout: 260 seconds) |
2022-04-07 06:02:59 +0200 | <Axman6> | no time like the present! |
2022-04-07 06:03:05 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 256 seconds) |
2022-04-07 06:03:47 +0200 | <abastro[m]> | Well tbh using web technology for everything is quite a meme |
2022-04-07 06:12:46 +0200 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Remote host closed the connection) |
2022-04-07 06:12:48 +0200 | Ram-Z | (~Ram-Z@li1814-254.members.linode.com) |
2022-04-07 06:15:37 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 06:18:03 +0200 | <Axman6> | web technology has also moved much more towards networking technology too though |
2022-04-07 06:18:38 +0200 | Henson | (~kvirc@107-179-133-201.cpe.teksavvy.com) (Quit: thanks for the help!) |
2022-04-07 06:18:41 +0200 | <Axman6> | like WebSockets give you bidirectional sockets |
2022-04-07 06:20:09 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds) |
2022-04-07 06:20:44 +0200 | solrize | (~solrize@user/solrize) (Remote host closed the connection) |
2022-04-07 06:22:23 +0200 | <Axman6> | @hoogle Optic s s a a -> s -> Maybe a -> s |
2022-04-07 06:22:23 +0200 | <lambdabot> | No results found |
2022-04-07 06:22:36 +0200 | <Axman6> | @hoogle Optic p s s a a -> s -> Maybe a -> s |
2022-04-07 06:22:37 +0200 | <lambdabot> | No results found |
2022-04-07 06:23:56 +0200 | <abastro[m]> | I should totally rename my secret folder into "\n" |
2022-04-07 06:24:53 +0200 | <abastro[m]> | That should make it hard to find |
2022-04-07 06:25:43 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 06:27:52 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 06:29:04 +0200 | <Axman6> | @hoogle ASetter' s a -> Maybe a -> s -> s |
2022-04-07 06:29:05 +0200 | <lambdabot> | No results found |
2022-04-07 06:30:24 +0200 | benin | (~benin@183.82.204.110) |
2022-04-07 06:30:25 +0200 | <Axman6> | given how massive lens is, I'm surprised that doesn't exist! |
2022-04-07 06:30:27 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 260 seconds) |
2022-04-07 06:30:41 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
2022-04-07 06:30:56 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 06:31:59 +0200 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
2022-04-07 06:32:25 +0200 | <dibblego> | write it |
2022-04-07 06:32:47 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
2022-04-07 06:34:23 +0200 | <Axman6> | :t let l .~? m = maybe identity (set l) m in (.~?) |
2022-04-07 06:34:24 +0200 | <lambdabot> | error: |
2022-04-07 06:34:24 +0200 | <lambdabot> | • Variable not in scope: identity :: s1 -> t1 |
2022-04-07 06:34:24 +0200 | <lambdabot> | • Perhaps you meant one of these: |
2022-04-07 06:34:31 +0200 | <Axman6> | :t let l .~? m = maybe id (set l) m in (.~?) |
2022-04-07 06:34:32 +0200 | <lambdabot> | ASetter a1 a1 a2 b -> Maybe b -> a1 -> a1 |
2022-04-07 06:36:08 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 246 seconds) |
2022-04-07 06:36:43 +0200 | <dibblego> | let iWishThisExists = maybe mempty in iWishThisExists . set |
2022-04-07 06:38:14 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 06:38:38 +0200 | cdman | (~dcm@user/dmc/x-4369397) (Remote host closed the connection) |
2022-04-07 06:38:49 +0200 | <jackdk> | % :t \setter -> ala Endo foldMap . fmap (set setter) -- Axman6 |
2022-04-07 06:38:50 +0200 | <yahb> | jackdk: (Foldable f, Functor f) => ASetter b b a1 a2 -> f a2 -> b -> b |
2022-04-07 06:39:35 +0200 | cdman | (~dcm@27.2.216.134) |
2022-04-07 06:39:35 +0200 | cdman | (~dcm@27.2.216.134) (Changing host) |
2022-04-07 06:39:35 +0200 | cdman | (~dcm@user/dmc/x-4369397) |
2022-04-07 06:39:44 +0200 | <abastro[m]> | It feels like lens is huge with lots of utilities ppl crave for missing |
2022-04-07 06:39:54 +0200 | <abastro[m]> | But that's just my feeling |
2022-04-07 06:40:05 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 06:42:26 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 246 seconds) |
2022-04-07 06:44:23 +0200 | bahamas | (~lucian@84.232.140.158) |
2022-04-07 06:44:32 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds) |
2022-04-07 06:46:19 +0200 | <Axman6> | I remember the day that jackdk came to me with a function that was about five lines, and updated something in a state monad, and needed to return the old version. It worked fine, but I said "... I'm pretty sure there's a lens operator for that", and sure enough, it not only was, but it had the name we expected it to have: (<<%=) |
2022-04-07 06:48:17 +0200 | <jackdk> | and _this_ is why we allow custom operators - the power of a consistent visual language |
2022-04-07 06:50:10 +0200 | <abastro[m]> | But instead you get the bloat |
2022-04-07 06:50:20 +0200 | <Axman6> | <X = Return the value that was the focus after applying the function, <<X return the value befoere the change, X%Y apply a function, passing in the focus, X~ set a field "purely", X= = set a field statefully |
2022-04-07 06:51:15 +0200 | Guest|85 | (~Guest|85@103.57.84.94) |
2022-04-07 06:51:27 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
2022-04-07 06:52:20 +0200 | <jackdk> | lens isn't bloated, half the functions are actually `id` |
2022-04-07 06:52:21 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 06:52:42 +0200 | Guest|85 | (~Guest|85@103.57.84.94) (Client Quit) |
2022-04-07 06:52:45 +0200 | Andrew | (Andrew@user/AndrewYu) (Quit: Leaving) |
2022-04-07 06:53:22 +0200 | <Axman6> | lens is, imo, incredibly elegant, consistent, and solves real problems, that are more relevant the larger your programs become |
2022-04-07 06:53:33 +0200 | AndrewYu | (Andrew@user/AndrewYu) |
2022-04-07 06:53:37 +0200 | Kaiepi | (~Kaiepi@156.34.47.253) |
2022-04-07 06:54:42 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 06:54:46 +0200 | <sm> | they say optics is both more usable and more principled though |
2022-04-07 06:55:21 +0200 | <sm> | I should not say "though".. I meant "also" |
2022-04-07 06:55:43 +0200 | <Axman6> | there are reasons for using optics, but I'm extremely familliar with lens, and the fact you can add optics for lens without having lens as a dependency is very compelling |
2022-04-07 06:56:04 +0200 | <Axman6> | to use optics, you need to have it as a dependency of your project as far as I understand it |
2022-04-07 06:56:21 +0200 | bahamas | (~lucian@84.232.140.158) (Ping timeout: 256 seconds) |
2022-04-07 06:56:46 +0200 | <sm> | nod |
2022-04-07 06:56:57 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds) |
2022-04-07 06:57:25 +0200 | <jackdk> | yes, and first mover advantage - I don't want to fracture the ecosystem so I write lenses |
2022-04-07 06:57:38 +0200 | <sm> | (is that really a problem, in these days of a zillion deps) |
2022-04-07 06:58:18 +0200 | <sm> | I don't recall the recent post where I read about the extra "principledness", but it was interesting |
2022-04-07 06:58:31 +0200 | <abastro[m]> | "Fracturing ecosystem" |
2022-04-07 06:58:31 +0200 | <abastro[m]> | Come on, we already have gazillions of stream libraries |
2022-04-07 06:58:42 +0200 | <abastro[m]> | And MTL/RIO/Effects |
2022-04-07 06:59:23 +0200 | sm | used microlens but deps use lens, some probably use optics too |
2022-04-07 06:59:45 +0200 | <jackdk> | Yeah getting streaming right is not straightforward, but doesn't mean I have to gleefully make a problem worse |
2022-04-07 07:00:32 +0200 | <jackdk> | microlens is great for libs if you can get away with it, but if you want to write prisms or isos you end up having to pull in `profunctors` which pulls in a few more Ed packages than you might like |
2022-04-07 07:01:29 +0200 | <sm> | hmm no, only microlens here now |
2022-04-07 07:01:58 +0200 | <Axman6> | and prisms are half the reason to use lens anyway |
2022-04-07 07:03:09 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
2022-04-07 07:03:53 +0200 | <sm> | ah, it was this: https://www.brunogavranovic.com/posts/2022-02-10-optics-vs-lenses-operationally.html |
2022-04-07 07:04:32 +0200 | lispy | (~lispy@82.212.112.246) |
2022-04-07 07:04:37 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 07:04:46 +0200 | <sm> | "optics do a better job of modelling the internals" |
2022-04-07 07:06:47 +0200 | <dolio> | I'm not convinced that article's claim makes any sense. |
2022-04-07 07:06:56 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 246 seconds) |
2022-04-07 07:08:10 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-04-07 07:08:20 +0200 | AndrewYu | (Andrew@user/AndrewYu) (Quit: Leaving) |
2022-04-07 07:08:44 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
2022-04-07 07:09:00 +0200 | zmt00 | (~zmt00@user/zmt00) (Quit: Leaving) |
2022-04-07 07:09:07 +0200 | AndrewYu | (Andrew@user/AndrewYu) |
2022-04-07 07:09:17 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds) |
2022-04-07 07:09:55 +0200 | <sm> | dolio: after reading it ? |
2022-04-07 07:09:58 +0200 | <Axman6> | huh, I've never seen this before, specifying the kind that a data definition has: https://hackage.haskell.org/package/optics-core-0.4.1/docs/src/Optics.Internal.Optic.Types.html#Op… |
2022-04-07 07:10:13 +0200 | <dolio> | I skimmed it. |
2022-04-07 07:10:27 +0200 | <sm> | ok, just wondering |
2022-04-07 07:10:47 +0200 | <jackdk> | Axman6: `-XStandaloneKindSignatures` are `-XStandaloneKingSignatures` |
2022-04-07 07:10:53 +0200 | zmt00 | (~zmt00@user/zmt00) |
2022-04-07 07:10:59 +0200 | <dolio> | It appears to be entirely based on defining a "lens" to only mean a pair of functions (s -> a, s -> b -> t). |
2022-04-07 07:11:11 +0200 | <Axman6> | I'm not sure I even agree with the beginning of it: "The type of the internal state of a lens (A, A') -> (B, B') is always equal to A." |
2022-04-07 07:11:51 +0200 | <Axman6> | I have always interpreted the type of the internal state to be basically the function which takes a B' and produced an A', and not an A |
2022-04-07 07:11:59 +0200 | <dolio> | Except people were representing them as `s -> (a, b -> t)` like 10 years ago or something, for the obvious performance reasons. |
2022-04-07 07:12:26 +0200 | <dolio> | 10 is probably underestimating. |
2022-04-07 07:12:45 +0200 | <Axman6> | is this article even talking about the difference between the lens package and the optics package? or the general idea of optics in general, which both libraries implement |
2022-04-07 07:13:34 +0200 | <dolio> | And the `b -> t` part can close over any internal state you want. Perfect abstraction. |
2022-04-07 07:14:09 +0200 | <Axman6> | exactly |
2022-04-07 07:14:13 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
2022-04-07 07:15:16 +0200 | <dolio> | At first it was unclear if other representations, like the one using quantification over functors, actually matched the performance benefits of this representation, although they do. |
2022-04-07 07:16:54 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 07:17:11 +0200 | <sm> | Axman6 good question, it's probably talking about the abstractions now that you mention it (which the libraries may or may not match) |
2022-04-07 07:17:28 +0200 | <Axman6> | they both have internally the same representation |
2022-04-07 07:17:32 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 07:18:48 +0200 | [_] | (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
2022-04-07 07:20:01 +0200 | AndrewYu | Andrew |
2022-04-07 07:20:10 +0200 | <dolio> | It's also confusing to me that it would compare 'optics' to lenses, because historically 'optic' was the catch all term for all the different notions people realised you could do by quantifying over different sorts of things. Like traversals, prisms, etc. |
2022-04-07 07:20:42 +0200 | <Axman6> | yeah |
2022-04-07 07:21:17 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
2022-04-07 07:21:39 +0200 | <Axman6> | yeah it basically looks like that article exactly describes the implementation of both the lens and optics libraries |
2022-04-07 07:22:33 +0200 | <dolio> | I don't think the lens library uses the naive representation, except as a convenient way of defining a lens. |
2022-04-07 07:22:34 +0200 | <Axman6> | optics doesn't have zippers? D: |
2022-04-07 07:22:59 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
2022-04-07 07:24:41 +0200 | chomwitt | (~chomwitt@2a02:587:dc0e:4f00:e2a4:4df9:d340:7660) |
2022-04-07 07:29:02 +0200 | <Axman6> | admittedly a feature that I haven't had a need for, but it's extremely cool that it does exist in lens |
2022-04-07 07:29:14 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 07:31:45 +0200 | <Axman6> | @hoogle equality |
2022-04-07 07:31:45 +0200 | <lambdabot> | Control.Lens.Combinators equality :: (s :~: a) -> (b :~: t) -> Equality s t a b |
2022-04-07 07:31:45 +0200 | <lambdabot> | Control.Lens.Equality equality :: (s :~: a) -> (b :~: t) -> Equality s t a b |
2022-04-07 07:31:45 +0200 | <lambdabot> | Diagrams.Prelude equality :: () => (s :~: a) -> (b :~: t) -> Equality s t a b |
2022-04-07 07:33:45 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
2022-04-07 07:34:31 +0200 | <abastro[m]> | I mean, optics give better error messages |
2022-04-07 07:35:00 +0200 | <abastro[m]> | Call me dumb and idiotic and smooth brained, I can never make sense of the lens error messages |
2022-04-07 07:35:27 +0200 | <abastro[m]> | I wish I could just look at lens error messages and see what to fix |
2022-04-07 07:37:51 +0200 | <jackdk> | It's practice, like building up an understanding of any other error message. I agree that it's hard |
2022-04-07 07:38:22 +0200 | frost | (~frost@user/frost) (Quit: Client closed) |
2022-04-07 07:38:47 +0200 | <abastro[m]> | I see, so it is possible |
2022-04-07 07:39:17 +0200 | <abastro[m]> | Tho I think I am indeed too smooth-brained to ever understand it |
2022-04-07 07:39:21 +0200 | <dolio> | I don't think lens errors are likely to be useful. That's the major downside. |
2022-04-07 07:39:25 +0200 | <abastro[m]> | For this kind of me, optics is a godsend |
2022-04-07 07:39:34 +0200 | <dolio> | The only useful part is the line number. |
2022-04-07 07:39:46 +0200 | lispy | (~lispy@82.212.112.246) (Quit: Client closed) |
2022-04-07 07:40:02 +0200 | <abastro[m]> | Haha line number XD |
2022-04-07 07:41:27 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 07:42:40 +0200 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2022-04-07 07:42:42 +0200 | <Axman6> | it's definitely possible to learn to understand lens' errors, but the effort that's been put into optics to improve that is definitly a big advantage, particularly when learning |
2022-04-07 07:42:59 +0200 | <jackdk> | I have a friend who learned lens mostly by cranking through optics by example and then moving over to lens |
2022-04-07 07:43:17 +0200 | <abastro[m]> | I also personally feel that using van Laarhoven encoding is alike leaking implementation details |
2022-04-07 07:43:32 +0200 | <abastro[m]> | (While lens do indeed provide more features) |
2022-04-07 07:43:51 +0200 | <Axman6> | sometimes those are useful details though |
2022-04-07 07:46:17 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds) |
2022-04-07 07:50:08 +0200 | coot | (~coot@213.134.190.95) |
2022-04-07 07:52:11 +0200 | <abastro[m]> | Useful? |
2022-04-07 07:52:53 +0200 | michalz | (~michalz@185.246.204.122) |
2022-04-07 07:52:56 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 07:53:45 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 07:54:09 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2022-04-07 07:56:42 +0200 | fef | (~thedawn@user/thedawn) |
2022-04-07 07:57:33 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
2022-04-07 07:58:02 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds) |
2022-04-07 08:01:22 +0200 | <Axman6> | you can arbitrarilly add new functionality to lens without depending on it, just because you know that the optics are just functions of the form (Functor|Applicative|Other) f => (a -> f b) -> (s -> f t), and having that detail exposed means you know what constraints you're working under, whether you can actually do applicative things, ect. |
2022-04-07 08:02:42 +0200 | <Axman6> | lens is, imo, fundamentally easier to understand its implementation because of this, because optics uses the same implementation, but also adds a lot of type level computation, which is much more foreign to newcomers than familliar type classes like Functor, Applicative etc. |
2022-04-07 08:05:07 +0200 | alp_ | (~alp@user/alp) |
2022-04-07 08:05:20 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
2022-04-07 08:05:44 +0200 | FragByte | (~christian@user/fragbyte) (Quit: Quit) |
2022-04-07 08:05:57 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 08:06:15 +0200 | <Axman6> | learning you can add your own lenses without the need to import anything is imo useful: data MyFoo a = MyFoo {_fooA :: Int, _fooB :: [Bool]; _fooC :: c}; fooA :: Lens' (MtFoo a) Int; fooA f myFoo = (\newFooA -> myFoo { fooA = newFooA) <$> f (fooA myFoo) |
2022-04-07 08:07:25 +0200 | <abastro[m]> | Well tbh theoretical details of lens is quite hard to understand for beginners anyway |
2022-04-07 08:07:38 +0200 | <abastro[m]> | Implementation details, ppl usually gloss over |
2022-04-07 08:09:31 +0200 | <Axman6> | I think lens is easier to use once you understand the implementation details |
2022-04-07 08:10:17 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds) |
2022-04-07 08:12:12 +0200 | <Axman6> | like, lens is better used if you accept that it just a new way of thinking about things you already know |
2022-04-07 08:12:21 +0200 | odnes | (~odnes@5-203-209-2.pat.nym.cosmote.net) |
2022-04-07 08:14:02 +0200 | odnes_ | (~odnes@5-203-209-2.pat.nym.cosmote.net) |
2022-04-07 08:14:26 +0200 | <abastro[m]> | Easier to use? Eh |
2022-04-07 08:15:56 +0200 | <abastro[m]> | I mean, is it worth the poor error messages |
2022-04-07 08:16:57 +0200 | odnes | (~odnes@5-203-209-2.pat.nym.cosmote.net) (Ping timeout: 248 seconds) |
2022-04-07 08:18:11 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 08:19:34 +0200 | <Axman6> | yes |
2022-04-07 08:20:08 +0200 | <Axman6> | well, an optic library is worth using, trying to work on my current project without lenses would be a nightmare |
2022-04-07 08:20:19 +0200 | <tdammers> | It kind of depends though. "Ability to add lenses without depending on lens", for example, is more important for library authors than for application authors. |
2022-04-07 08:20:43 +0200 | <Axman6> | and with experience, you don't get the the error messages very often at all, because you know what not to do ahead of time |
2022-04-07 08:22:32 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds) |
2022-04-07 08:24:35 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 08:25:27 +0200 | acidjnk | (~acidjnk@p200300d0c7049f25b15f97e32406cde6.dip0.t-ipconnect.de) |
2022-04-07 08:27:28 +0200 | califax | (~califax@user/califx) (Remote host closed the connection) |
2022-04-07 08:27:40 +0200 | califax | (~califax@user/califx) |
2022-04-07 08:28:35 +0200 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-04-07 08:29:27 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 268 seconds) |
2022-04-07 08:30:25 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 08:33:04 +0200 | littlebobeep | (~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection) |
2022-04-07 08:33:23 +0200 | odnes_ | (~odnes@5-203-209-2.pat.nym.cosmote.net) (Ping timeout: 246 seconds) |
2022-04-07 08:33:26 +0200 | littlebobeep | (~alMalsamo@gateway/tor-sasl/almalsamo) |
2022-04-07 08:34:07 +0200 | dyeplexer | (~dyeplexer@user/dyeplexer) |
2022-04-07 08:35:05 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds) |
2022-04-07 08:35:53 +0200 | yuriy | (uid548749@id-548749.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2022-04-07 08:36:10 +0200 | <boxscape> | Is `Just x <- pure a` the same as `let Just x = y` inside a do block? |
2022-04-07 08:36:10 +0200 | <boxscape> | I'm asking because they seem to do the same thing, but confusingly only the latter warns about incomplete uni-patterns.. |
2022-04-07 08:36:20 +0200 | <boxscape> | I suppose I could just look at the report |
2022-04-07 08:37:27 +0200 | <boxscape> | hm no, report doesn't say that `let` gets desugared with fail |
2022-04-07 08:39:32 +0200 | <boxscape> | guess I should figure out why my program doesn't fail then if I replace <- with let |
2022-04-07 08:39:47 +0200 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) |
2022-04-07 08:41:01 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 08:42:39 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 08:45:29 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 268 seconds) |
2022-04-07 08:47:25 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
2022-04-07 08:51:05 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 08:51:51 +0200 | MajorBiscuit | (~MajorBisc@86-88-79-148.fixed.kpn.net) |
2022-04-07 08:52:51 +0200 | cfricke | (~cfricke@user/cfricke) |
2022-04-07 08:53:22 +0200 | Major_Biscuit | (~MajorBisc@c-001-005-034.client.tudelft.eduvpn.nl) |
2022-04-07 08:54:55 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 08:56:50 +0200 | MajorBiscuit | (~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 246 seconds) |
2022-04-07 09:00:08 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds) |
2022-04-07 09:03:22 +0200 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds) |
2022-04-07 09:03:26 +0200 | wildsebastian | (~wildsebas@2001:470:69fc:105::1:14b1) |
2022-04-07 09:04:34 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
2022-04-07 09:07:08 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 09:11:53 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
2022-04-07 09:13:24 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2022-04-07 09:15:35 +0200 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-04-07 09:18:35 +0200 | Chai-T-Rex | (~ChaiTRex@user/chaitrex) (Ping timeout: 240 seconds) |
2022-04-07 09:19:20 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 09:20:52 +0200 | <maerwald[m]> | Axman6: did you just say lens is easier than optics for newcomers? |
2022-04-07 09:20:55 +0200 | Chai-T-Rex | (~ChaiTRex@user/chaitrex) |
2022-04-07 09:21:44 +0200 | <dons> | fclabels 4eva |
2022-04-07 09:22:24 +0200 | zeenk | (~zeenk@2a02:2f04:a313:d600:8d26:ec9f:3ff6:fc94) |
2022-04-07 09:22:55 +0200 | fockerized | (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Quit: WeeChat 3.3) |
2022-04-07 09:24:03 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
2022-04-07 09:24:12 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:cb75:3834:c1c1:ff4e) |
2022-04-07 09:27:13 +0200 | dextaa_54 | (~dextaa@user/dextaa) (Remote host closed the connection) |
2022-04-07 09:29:36 +0200 | <abastro[m]> | > Axman6: did you just say lens is easier than optics for newcomers? |
2022-04-07 09:29:37 +0200 | <abastro[m]> | >.> |
2022-04-07 09:29:38 +0200 | <lambdabot> | <hint>:1:67: error: |
2022-04-07 09:29:38 +0200 | <lambdabot> | parse error (possibly incorrect indentation or mismatched brackets) |
2022-04-07 09:30:46 +0200 | <abastro[m]> | <Axman6> "and with experience, you don't..." <- Sure, of course that is why dynamic languages are great. While the error messages might be confusing and hard to fix, you won't face them often once you get expertise in it and write proper tests! |
2022-04-07 09:31:18 +0200 | Galaxion-tech | (~Galaxion-@122.162.144.183) |
2022-04-07 09:31:35 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 09:31:59 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-04-07 09:33:00 +0200 | odnes | (~odnes@5-203-209-2.pat.nym.cosmote.net) |
2022-04-07 09:33:40 +0200 | Galaxion-tech | (~Galaxion-@122.162.144.183) (Client Quit) |
2022-04-07 09:35:38 +0200 | bahamas | (~lucian@84.232.140.158) |
2022-04-07 09:36:23 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
2022-04-07 09:37:03 +0200 | <tdammers> | abastro[m]: starting a line with > triggers lambdabot, please don't do that unless you actually intend to have lambdabot run what follows as Haskell code |
2022-04-07 09:40:03 +0200 | <Hecate> | yeah this really sucks |
2022-04-07 09:43:13 +0200 | <sm> | yeah it should probably be changed as > is markdown for quotation and increasingly common as a convention in chat |
2022-04-07 09:43:48 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 09:44:40 +0200 | <sm> | (but FYI abastro, try to use element's reply feature sparingly in bridged IRC rooms, it creates too much noise) |
2022-04-07 09:44:48 +0200 | <dminuoso> | 09:44:09 Axman6 | [06:12:12] like, lens is better used if you accept that it just a new way of thinking about things you already know |
2022-04-07 09:45:01 +0200 | <dminuoso> | That is a weird proposition |
2022-04-07 09:45:13 +0200 | <Hecate> | eh, we already do this for Haskell :-P |
2022-04-07 09:45:45 +0200 | <dminuoso> | Well, if something requires intricate understanding of the internals to use, then it's not necessarily a good abstraction. |
2022-04-07 09:45:59 +0200 | <dminuoso> | For example, I dont want to know how GHC works internally to appreciate Haskell. |
2022-04-07 09:48:09 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds) |
2022-04-07 09:49:11 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 256 seconds) |
2022-04-07 09:49:16 +0200 | machinedgod | (~machinedg@24.105.81.50) |
2022-04-07 09:49:37 +0200 | <Hecate> | not everything is an abstraction either! |
2022-04-07 09:49:45 +0200 | dminuoso | (~dminuoso@static.88-198-218-68.clients.your-server.de) (Changing host) |
2022-04-07 09:49:45 +0200 | dminuoso | (~dminuoso@user/dminuoso) |
2022-04-07 09:54:07 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2022-04-07 09:54:23 +0200 | pooryorick | (~pooryoric@87-119-174-173.tll.elisa.ee) (Ping timeout: 260 seconds) |
2022-04-07 09:54:58 +0200 | pooryorick | (~pooryoric@87-119-174-173.tll.elisa.ee) |
2022-04-07 09:56:22 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 09:57:32 +0200 | mikoto-chan | (~mikoto-ch@213.177.151.239) |
2022-04-07 10:00:12 +0200 | mcgroin | (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
2022-04-07 10:00:57 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds) |
2022-04-07 10:01:14 +0200 | <abastro[m]> | Meh I see, IRC from matrix is so hard |
2022-04-07 10:02:28 +0200 | <abastro[m]> | If lens is not an abstraction, what is it? |
2022-04-07 10:02:34 +0200 | <[exa]> | abastro[m]: liberate yourself from convenient interfaces, telnet here |
2022-04-07 10:02:59 +0200 | <abastro[m]> | I'm on mobile |
2022-04-07 10:03:20 +0200 | <[exa]> | ay. |
2022-04-07 10:03:37 +0200 | <abastro[m]> | Is lens poor man's nested record modification? |
2022-04-07 10:04:08 +0200 | <[exa]> | no |
2022-04-07 10:04:15 +0200 | littlebobeep | (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds) |
2022-04-07 10:04:23 +0200 | <[exa]> | lens is a package, full of materialized affine traversals and their specializations |
2022-04-07 10:04:41 +0200 | <sm> | you're not really using telnet are you |
2022-04-07 10:04:41 +0200 | <abastro[m]> | Then what is it, if it is not an abstraction? |
2022-04-07 10:05:06 +0200 | ccntrq | (~Thunderbi@2a01:e34:eccb:b060:ba9d:69d8:b4f8:4092) |
2022-04-07 10:05:31 +0200 | <[exa]> | abastro[m]: perhaps a "common composable interface for doing stuff on parts on structures"? |
2022-04-07 10:05:53 +0200 | <[exa]> | sm: not really but pretty close :] |
2022-04-07 10:06:28 +0200 | <abastro[m]> | Composable Interface, imho that implies abstraction tbh |
2022-04-07 10:06:28 +0200 | littlebobeep | (~alMalsamo@gateway/tor-sasl/almalsamo) |
2022-04-07 10:07:11 +0200 | DNH | (~DNH@2a02:8108:1100:16d8:c8af:4307:df41:9668) |
2022-04-07 10:08:17 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 10:08:47 +0200 | <[exa]> | not sure, if there was a typeclass for it I'd say it is an abstract thing, but most of the lensy things are perfectly concrete, just sharing some of the optics types (such as Lens) |
2022-04-07 10:09:12 +0200 | x_kuru | (xkuru@user/xkuru) |
2022-04-07 10:09:43 +0200 | <tdammers> | the intriguing thing about van Laarhoven lenses is that they look a lot like implementation details bleeding through, until you start seeing the bigger picture |
2022-04-07 10:10:08 +0200 | mncheck | (~mncheck@193.224.205.254) |
2022-04-07 10:10:26 +0200 | <tdammers> | if you think of lenses as "a getter/setter pair", then the van Laarhoven implementation seems like it only works by strange coincidence |
2022-04-07 10:10:32 +0200 | <abastro[m]> | I mean, while function type looks concrete, it is an abstraction after all. |
2022-04-07 10:10:33 +0200 | mikoto-chan | (~mikoto-ch@213.177.151.239) (Ping timeout: 248 seconds) |
2022-04-07 10:10:55 +0200 | <tdammers> | it is, and it isn't |
2022-04-07 10:10:57 +0200 | coot | (~coot@213.134.190.95) (Quit: coot) |
2022-04-07 10:11:15 +0200 | x_kuru_ | (~xkuru@user/xkuru) |
2022-04-07 10:11:19 +0200 | <abastro[m]> | van Laarhoven implementation looks like mathematical incidence to me |
2022-04-07 10:11:37 +0200 | <abastro[m]> | And in the end, with lens there is a problem of: "What is the point of all this?" |
2022-04-07 10:11:56 +0200 | <[exa]> | did you try traversals? |
2022-04-07 10:12:23 +0200 | <abastro[m]> | Ofc I did, I see that Lens generalizes to Traversals as well |
2022-04-07 10:12:38 +0200 | <abastro[m]> | But for library users, it could better be implementation details |
2022-04-07 10:12:46 +0200 | mikoto-chan | (~mikoto-ch@213.177.151.239) |
2022-04-07 10:12:58 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds) |
2022-04-07 10:13:03 +0200 | <abastro[m]> | Also you could easily explain how getter/setter pair could be used for a traversal as well |
2022-04-07 10:13:08 +0200 | xkuru | (~xkuru@user/xkuru) (Ping timeout: 260 seconds) |
2022-04-07 10:13:30 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2022-04-07 10:14:54 +0200 | x_kuru | (xkuru@user/xkuru) (Ping timeout: 268 seconds) |
2022-04-07 10:14:58 +0200 | <[exa]> | abastro[m]: then I probably don't get your question. Maybe we feel differently about what qualifies as an abstraction |
2022-04-07 10:15:01 +0200 | <abastro[m]> | Oftentimes, whenever I explain lens to someone they say, "What is the point of all this? For lens, setter & getter suffices. Can't we have intricate details like 'lens being traversal' abstracted out?" |
2022-04-07 10:15:36 +0200 | jgeerds | (~jgeerds@d5364b87.access.ecotel.net) |
2022-04-07 10:15:57 +0200 | <abastro[m]> | "What abstraction means" is terminology after all. |
2022-04-07 10:16:53 +0200 | <[exa]> | yeah, still I tend to avoid this "hide the complex-looking ___ in a box" meaning |
2022-04-07 10:17:25 +0200 | <abastro[m]> | Hmm, interesting. Yea, that is how I was taught what abstraction is |
2022-04-07 10:17:45 +0200 | <[exa]> | I prefer saying encapsulation |
2022-04-07 10:17:57 +0200 | <abastro[m]> | The outsiders seem to get the impression that haskellers are masochists from these parts, where we do things in seemingly overcomplicated way |
2022-04-07 10:18:01 +0200 | bahamas | (~lucian@84.232.140.158) (Ping timeout: 248 seconds) |
2022-04-07 10:18:33 +0200 | <abastro[m]> | So I think it is good to meticulously reason about the *why* part |
2022-04-07 10:19:02 +0200 | <abastro[m]> | If it was just because of nice mathematical property.. that's going to veer towards masochism |
2022-04-07 10:19:28 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-04-07 10:20:06 +0200 | CiaoSen | (~Jura@p200300c9572d40002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-04-07 10:21:07 +0200 | <[exa]> | the point of the advanced type magic in Lenses is AFAIK to ensure that all stuff that can be composed really composes and doesn't cause runtime errors, such as if (trivial case:) someone forgot they are getting the value of a prism and expected it without the Maybe |
2022-04-07 10:21:37 +0200 | <Franciman> | wise words [exa] |
2022-04-07 10:21:58 +0200 | <[exa]> | first guess tbh |
2022-04-07 10:21:59 +0200 | <Franciman> | congrats to the haskell community for getting delconts (almost, since the MR must still be merged) |
2022-04-07 10:22:07 +0200 | <Franciman> | what are you planning to do with them? |
2022-04-07 10:22:24 +0200 | <[exa]> | delconts as in "delimited continuations" I guess? :D |
2022-04-07 10:22:28 +0200 | jgeerds | (~jgeerds@d5364b87.access.ecotel.net) (Ping timeout: 272 seconds) |
2022-04-07 10:22:29 +0200 | <Franciman> | yep |
2022-04-07 10:22:36 +0200 | <Franciman> | sorry my morning feel is LAZYNESS |
2022-04-07 10:22:40 +0200 | <Franciman> | you should understand it right? |
2022-04-07 10:22:51 +0200 | <abastro[m]> | [exa]: I see that point, tho I don't get the reason to not encapsulate the composition details |
2022-04-07 10:23:47 +0200 | <[exa]> | Franciman: same here tbh, atmospheric pressure too low for thinking :D |
2022-04-07 10:24:03 +0200 | <[exa]> | abastro[m]: so that people may tinker with it easily? |
2022-04-07 10:24:17 +0200 | <abastro[m]> | Delimited continuation is in? So we can have native Cont monad I guess |
2022-04-07 10:24:29 +0200 | <abastro[m]> | Tinker with implementation details? Ehh |
2022-04-07 10:25:39 +0200 | <Franciman> | abastro[m]: no not yet, but https://gitlab.haskell.org/ghc/ghc/-/merge_requests/7942#5e75a5cad76eb00a51db49bf823e85050009544e |
2022-04-07 10:26:27 +0200 | <abastro[m]> | I see, I legit thought it wasn't going forward and bam! It is here |
2022-04-07 10:26:40 +0200 | <abastro[m]> | So lexi actually got time to write it down I guess? |
2022-04-07 10:27:07 +0200 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.4.1) |
2022-04-07 10:27:12 +0200 | <abastro[m]> | Btw regarding lens & tinkering, this is where ppl get the masochist feel, haskellers seem to like to mess with complex type internals |
2022-04-07 10:27:38 +0200 | <lexi-lambda> | well, someone decided they were willing to pay me to finish it it :) |
2022-04-07 10:27:39 +0200 | <[exa]> | abastro[m]: the "masochist" feeling means "having a bit of control if something goes awry" for others |
2022-04-07 10:29:01 +0200 | <tdammers> | it's the same kind of masochism you see in other languages, the only difference is that it happens more often at the type level in haskell |
2022-04-07 10:29:31 +0200 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2022-04-07 10:29:39 +0200 | <tdammers> | you see an abstraction opportunity, you grab it, you run with it, and then you try out how far you can take it |
2022-04-07 10:30:12 +0200 | <[exa]> | abastro[m]: I usually argue about this with the OOP crowd, the traditional approach there is to contain the complex details by putting them into boxes, contrary to haskell where you contain the complex details by making a (much less complex) type scaffolding sufficient for the compiler to help you do the complex thing easily |
2022-04-07 10:30:52 +0200 | dcoutts_ | (~duncan@host213-122-143-81.range213-122.btcentralplus.com) |
2022-04-07 10:31:08 +0200 | <tdammers> | we still put complex things in boxes, it's just that the boxes aren't usually object-shaped |
2022-04-07 10:31:34 +0200 | Pickchea | (~private@user/pickchea) |
2022-04-07 10:32:36 +0200 | <[exa]> | actually, looking at it from the point of lambda calculi, lens type _is_ a type-level abstraction, it's got the forall there :] |
2022-04-07 10:32:43 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 10:35:06 +0200 | <lexi-lambda> | Franciman: to be honest, the Haskell community has had delconts for quite some time (see CC-delcont on Hackage), and they haven’t seen terribly much use, so I’m not sure this is likely to change that |
2022-04-07 10:37:01 +0200 | <[exa]> | lexi-lambda: actually, the plot from the MR looks to me like most people who weren't very happy about the effect systems could just jump in now (me included) |
2022-04-07 10:37:27 +0200 | <[exa]> | (probably just needs to be reposted a few times on reddit or so :D) |
2022-04-07 10:37:34 +0200 | <lexi-lambda> | not sure I understand what you mean |
2022-04-07 10:37:38 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
2022-04-07 10:38:20 +0200 | mikoto-chan | (~mikoto-ch@213.177.151.239) (Ping timeout: 268 seconds) |
2022-04-07 10:39:42 +0200 | DNH | (~DNH@2a02:8108:1100:16d8:c8af:4307:df41:9668) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-04-07 10:42:45 +0200 | <Franciman> | lexi-lambda: well, maybe they could be used to simplify exceptions semantics |
2022-04-07 10:43:28 +0200 | <lexi-lambda> | in what sense? |
2022-04-07 10:43:40 +0200 | <Franciman> | you can implement try-catch with delconts |
2022-04-07 10:43:52 +0200 | <lexi-lambda> | sure, but the semantics is identical |
2022-04-07 10:43:53 +0200 | <Franciman> | and to my inferior brain delconts semantics is a tad easier to model |
2022-04-07 10:44:08 +0200 | <Franciman> | not in the presence of multiple threads! |
2022-04-07 10:44:23 +0200 | <lexi-lambda> | I don’t understand—both exceptions and delconts are single-thread phenomena |
2022-04-07 10:44:53 +0200 | <Franciman> | aren't async exceptions a problem? |
2022-04-07 10:44:55 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 10:45:25 +0200 | <lexi-lambda> | async exceptions are orthogonal to the semantics of exceptions within a given thread, mostly |
2022-04-07 10:45:38 +0200 | <Franciman> | i see |
2022-04-07 10:46:03 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-04-07 10:46:05 +0200 | <lexi-lambda> | async exceptions just allow an interrupt between any given reduction step for which interrupts are not masked |
2022-04-07 10:46:22 +0200 | <lexi-lambda> | and async exceptions are generally a Good Thing |
2022-04-07 10:46:30 +0200 | FragByte | (~christian@user/fragbyte) |
2022-04-07 10:47:11 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
2022-04-07 10:47:39 +0200 | <lexi-lambda> | the delimited continuations MR is mostly orthogonal to RTS exceptions, though it does have to go to some special care to respect the async exception masking state (which is itself largely independent of the operation of async exceptions, it’s more like a “continuation mark” in Scheme parlance) |
2022-04-07 10:48:14 +0200 | Franciman | confusedly nods |
2022-04-07 10:48:28 +0200 | <lexi-lambda> | and it’s valuable for the RTS implementation of exceptions to be independent of the RTS implementation of exceptions, because exceptions can be raised in pure code, whereas delconts don’t make sense in pure code |
2022-04-07 10:48:46 +0200 | <lexi-lambda> | err, independent of the RTS implementation of delconts, I mean |
2022-04-07 10:48:47 +0200 | <lexi-lambda> | lol |
2022-04-07 10:48:50 +0200 | zaquest | (~notzaques@5.130.79.72) (Remote host closed the connection) |
2022-04-07 10:48:54 +0200 | <Franciman> | delconts don't make sense in pure code ~~~? |
2022-04-07 10:48:59 +0200 | <Franciman> | sure |
2022-04-07 10:49:12 +0200 | frost | (~frost@user/frost) |
2022-04-07 10:49:21 +0200 | <lexi-lambda> | delconts don’t make sense in pure code in the sense that they are only well-defined if you have a well-defined evaluation order |
2022-04-07 10:49:48 +0200 | <lexi-lambda> | they can still exist in code for which evaluation order is only *locally* well-defined, in the ST monad sense |
2022-04-07 10:49:49 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
2022-04-07 10:50:34 +0200 | <lexi-lambda> | but the point is that they don’t make sense in Haskell without some kind of monadic structure to pin down the evaluation context |
2022-04-07 10:50:37 +0200 | dschremp1 | (~dominik@070-207.dynamic.dsl.fonira.net) |
2022-04-07 10:51:04 +0200 | <lexi-lambda> | whereas RTS exceptions can be raised arbitrarily in pure evaluation (for better or for worse) |
2022-04-07 10:51:42 +0200 | <Franciman> | if they have the same semantics |
2022-04-07 10:51:45 +0200 | <Franciman> | how is this possible? |
2022-04-07 10:51:54 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 268 seconds) |
2022-04-07 10:52:07 +0200 | <lexi-lambda> | well, exceptions are a more restricted case of delconts, but those restrictions are relevant here |
2022-04-07 10:52:13 +0200 | <Franciman> | ah ahh okko |
2022-04-07 10:52:15 +0200 | <Franciman> | makes sense |
2022-04-07 10:52:20 +0200 | mcgroin | (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 246 seconds) |
2022-04-07 10:52:31 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
2022-04-07 10:52:51 +0200 | <Franciman> | so monads are basically imposing a cps to your code |
2022-04-07 10:52:59 +0200 | <Franciman> | in fact, |
2022-04-07 10:53:02 +0200 | <Franciman> | :t (>>=) |
2022-04-07 10:53:03 +0200 | <lambdabot> | Monad m => m a -> (a -> m b) -> m b |
2022-04-07 10:53:05 +0200 | <Franciman> | is cps |
2022-04-07 10:53:12 +0200 | <lexi-lambda> | yes, indeed, it’s a very literal correspondence |
2022-04-07 10:54:13 +0200 | azimut_ | (~azimut@gateway/tor-sasl/azimut) |
2022-04-07 10:54:35 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds) |
2022-04-07 10:54:44 +0200 | <Franciman> | thanks lexi-lambda it's clear now |
2022-04-07 10:55:10 +0200 | <Franciman> | so far the "only" usecase i found for delconts is implementing effect systems |
2022-04-07 10:55:13 +0200 | <Franciman> | and type safe print! |
2022-04-07 10:55:17 +0200 | <Franciman> | type safe print is very nice lol |
2022-04-07 10:55:25 +0200 | <lexi-lambda> | type safe print? |
2022-04-07 10:55:30 +0200 | <abastro[m]> | [exa]: Eh, I doubt that type scaffolding helps you that much. It still requires quite a bit of cognitive overhead |
2022-04-07 10:55:53 +0200 | <Franciman> | 1seq |
2022-04-07 10:56:09 +0200 | <[exa]> | abastro[m]: it yells at me when I try to mess it up, I'm happy |
2022-04-07 10:56:14 +0200 | <lexi-lambda> | but yes, I would say that, in a sense, effect systems are primarily a more structured, more typed interface to delimited continuations |
2022-04-07 10:56:45 +0200 | <abastro[m]> | Well it yells when you mess up, but it is still hard to know which way to go for right |
2022-04-07 10:57:01 +0200 | <lexi-lambda> | haskell programmers do not think about things this way very much, but in a very real way, libraries like polysemy provided monads that implement delimited continuations |
2022-04-07 10:57:05 +0200 | <abastro[m]> | I wonder if with delcont we could have native Cont monad |
2022-04-07 10:57:21 +0200 | <lexi-lambda> | yes, but not ContT |
2022-04-07 10:57:28 +0200 | <lexi-lambda> | which makes it somewhat less useful |
2022-04-07 10:57:29 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 10:57:33 +0200 | <abastro[m]> | Cont monad which provides efficient delimited continuation |
2022-04-07 10:57:38 +0200 | <abastro[m]> | Oh no why mot ContT? |
2022-04-07 10:57:46 +0200 | <Franciman> | lexi-lambda: https://okmij.org/ftp/continuations/implementations.html#genuine-shift |
2022-04-07 10:57:50 +0200 | <abastro[m]> | s/mot/not |
2022-04-07 10:57:59 +0200 | <lexi-lambda> | abastro[m]: the same reason you can’t have IOT/STT |
2022-04-07 10:58:11 +0200 | <abastro[m]> | Wow thanks |
2022-04-07 10:58:25 +0200 | <abastro[m]> | So straightforwardly put |
2022-04-07 10:58:39 +0200 | <abastro[m]> | Tbh ContT is a bit messy, isn't it? |
2022-04-07 10:59:03 +0200 | <abastro[m]> | IIRC `ContT m` is always monad whatever m is |
2022-04-07 10:59:58 +0200 | <lexi-lambda> | I don’t think ContT itself is particularly messy, per se, but it doesn’t cooperate very nicely with mtl-style MonadError, MonadWriter, etc. classes |
2022-04-07 11:00:23 +0200 | <abastro[m]> | Hmm |
2022-04-07 11:00:27 +0200 | <abastro[m]> | What about Monad itself |
2022-04-07 11:00:47 +0200 | <lexi-lambda> | however, I am largely of the opinion that those classes don’t really do what you want for lots of monad transformers, not just ContT |
2022-04-07 11:01:14 +0200 | <lexi-lambda> | I’m not sure what you mean by “what about Monad itself”—what about it? |
2022-04-07 11:01:26 +0200 | mikoto-chan | (~mikoto-ch@213.177.151.239) |
2022-04-07 11:01:36 +0200 | <lexi-lambda> | ContT is a perfectly well-behaved monad transformer in the sense that it is always a monad when applied to a monad |
2022-04-07 11:02:17 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
2022-04-07 11:02:21 +0200 | <abastro[m]> | Well, it also makes a monad when given any m |
2022-04-07 11:02:35 +0200 | <lexi-lambda> | sure |
2022-04-07 11:03:44 +0200 | DNH | (~DNH@2a02:8108:1100:16d8:c8af:4307:df41:9668) |
2022-04-07 11:06:17 +0200 | mcgroin | (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
2022-04-07 11:06:21 +0200 | <lexi-lambda> | I guess for that reason you could, strictly speaking, have native ContT, just not native CCT (from CC-delcont) |
2022-04-07 11:06:41 +0200 | <lexi-lambda> | but I’m not sure how useful it would be, regardless |
2022-04-07 11:06:43 +0200 | asocialblade | (~qsl@user/asocialblade) (Ping timeout: 260 seconds) |
2022-04-07 11:07:23 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
2022-04-07 11:09:41 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 11:09:42 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2022-04-07 11:11:24 +0200 | mikoto-chan | (~mikoto-ch@213.177.151.239) (Ping timeout: 240 seconds) |
2022-04-07 11:11:38 +0200 | kaph | (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) |
2022-04-07 11:14:06 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 245 seconds) |
2022-04-07 11:15:13 +0200 | odnes | (~odnes@5-203-209-2.pat.nym.cosmote.net) (Remote host closed the connection) |
2022-04-07 11:15:34 +0200 | odnes | (~odnes@5-203-209-2.pat.nym.cosmote.net) |
2022-04-07 11:15:37 +0200 | Inst | (~Liam@2601:6c4:4080:3f80:88f1:8b95:b5a0:872d) |
2022-04-07 11:16:40 +0200 | shriekingnoise | (~shrieking@201.231.16.156) (Quit: Quit) |
2022-04-07 11:20:11 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-04-07 11:22:26 +0200 | <Franciman> | delimited continuations can also be used to implement call by need evaluation |
2022-04-07 11:22:31 +0200 | <Franciman> | in a cbv environment |
2022-04-07 11:23:31 +0200 | <Franciman> | and maybe a better macro system too |
2022-04-07 11:23:36 +0200 | <Franciman> | but i don't know how |
2022-04-07 11:24:41 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 248 seconds) |
2022-04-07 11:28:53 +0200 | <maerwald[m]> | Isn't the man point eff? |
2022-04-07 11:29:06 +0200 | <lexi-lambda> | in theory, yes |
2022-04-07 11:29:26 +0200 | <maerwald[m]> | How's that going? |
2022-04-07 11:29:45 +0200 | <lexi-lambda> | there are still open questions about eff’s semantics in some tricky cases that I don’t yet have answers for |
2022-04-07 11:30:52 +0200 | <lexi-lambda> | for the past couple years I’ve been struggling to come up with answers to them that I have felt remotely satisfied with, and I was a bit disillusioned as to whether it was even possible, but I think I might have had some new ideas recently |
2022-04-07 11:31:58 +0200 | <lexi-lambda> | the semantics has always been more important to me than the performance (though ofc that’s important, too), and I’m not satisfied with the semantics of any existing effect system in haskell |
2022-04-07 11:33:49 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 11:36:51 +0200 | m1dnight | (~christoph@78-22-9-5.access.telenet.be) (Quit: WeeChat 3.5) |
2022-04-07 11:37:30 +0200 | m1dnight | (~christoph@78-22-9-5.access.telenet.be) |
2022-04-07 11:38:18 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
2022-04-07 11:42:07 +0200 | _dmc_ | (~dcm@user/dmc/x-4369397) |
2022-04-07 11:42:55 +0200 | cdman | (~dcm@user/dmc/x-4369397) (Ping timeout: 272 seconds) |
2022-04-07 11:46:01 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 11:46:28 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
2022-04-07 11:48:01 +0200 | cdman | (~dcm@user/dmc/x-4369397) |
2022-04-07 11:48:45 +0200 | _dmc_ | (~dcm@user/dmc/x-4369397) (Ping timeout: 256 seconds) |
2022-04-07 11:49:47 +0200 | coot | (~coot@213.134.190.95) |
2022-04-07 11:50:27 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
2022-04-07 11:52:49 +0200 | raym | (~raym@user/raym) (Quit: Failed to initialize NVML: Driver/library version mismatch) |
2022-04-07 11:54:49 +0200 | kaph_ | (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) |
2022-04-07 11:55:13 +0200 | raym | (~raym@user/raym) |
2022-04-07 11:56:02 +0200 | CiaoSen | (~Jura@p200300c9572d40002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2022-04-07 11:57:13 +0200 | kaph | (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) (Ping timeout: 248 seconds) |
2022-04-07 11:58:13 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 11:58:44 +0200 | cfricke | (~cfricke@user/cfricke) |
2022-04-07 12:00:58 +0200 | kaph_ | (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) (Ping timeout: 268 seconds) |
2022-04-07 12:02:55 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
2022-04-07 12:08:08 +0200 | zaquest | (~notzaques@5.130.79.72) |
2022-04-07 12:10:26 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 12:14:49 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
2022-04-07 12:16:28 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 272 seconds) |
2022-04-07 12:18:14 +0200 | xff0x | (~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp) (Ping timeout: 268 seconds) |
2022-04-07 12:18:33 +0200 | deadmarshal_ | (~deadmarsh@95.38.112.46) (Ping timeout: 248 seconds) |
2022-04-07 12:22:39 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 12:23:49 +0200 | Inst | (~Liam@2601:6c4:4080:3f80:88f1:8b95:b5a0:872d) (Ping timeout: 240 seconds) |
2022-04-07 12:23:49 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-04-07 12:24:23 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
2022-04-07 12:27:29 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds) |
2022-04-07 12:30:42 +0200 | haskl | (~haskl@user/haskl) (Read error: Connection reset by peer) |
2022-04-07 12:33:07 +0200 | haskl | (~haskl@user/haskl) |
2022-04-07 12:33:29 +0200 | mcgroin | (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 248 seconds) |
2022-04-07 12:34:16 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 268 seconds) |
2022-04-07 12:34:53 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 12:34:58 +0200 | dschremp1 | (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.4.1) |
2022-04-07 12:36:09 +0200 | __monty__ | (~toonn@user/toonn) |
2022-04-07 12:37:32 +0200 | gurkenglas | (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) |
2022-04-07 12:38:19 +0200 | Inst | (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) |
2022-04-07 12:39:33 +0200 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds) |
2022-04-07 12:39:42 +0200 | ub | (~Thunderbi@p200300ecdf15885c0dce6310edc9e9e7.dip0.t-ipconnect.de) |
2022-04-07 12:39:54 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds) |
2022-04-07 12:40:26 +0200 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-04-07 12:41:14 +0200 | ub | (~Thunderbi@p200300ecdf15885c0dce6310edc9e9e7.dip0.t-ipconnect.de) (Client Quit) |
2022-04-07 12:44:33 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 12:44:41 +0200 | Inst | (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 246 seconds) |
2022-04-07 12:45:21 +0200 | mikoto-chan | (~mikoto-ch@213.177.151.239) |
2022-04-07 12:45:46 +0200 | akegalj | (~akegalj@93.140.126.69) |
2022-04-07 12:46:09 +0200 | bahamas | (~lucian@84.232.140.158) |
2022-04-07 12:46:55 +0200 | boxscape_ | (~boxscape_@p4ff0b7be.dip0.t-ipconnect.de) |
2022-04-07 12:47:05 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 12:48:09 +0200 | <boxscape_> | Is there an explanation somewhere of Data.Data's gmapMo and gmapMp? |
2022-04-07 12:48:36 +0200 | _dmc_ | (~dcm@27.2.216.134) |
2022-04-07 12:48:36 +0200 | _dmc_ | (~dcm@27.2.216.134) (Changing host) |
2022-04-07 12:48:36 +0200 | _dmc_ | (~dcm@user/dmc/x-4369397) |
2022-04-07 12:48:57 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 248 seconds) |
2022-04-07 12:49:23 +0200 | cdman | (~dcm@user/dmc/x-4369397) (Ping timeout: 256 seconds) |
2022-04-07 12:49:39 +0200 | _dmc_ | (~dcm@user/dmc/x-4369397) (Max SendQ exceeded) |
2022-04-07 12:50:21 +0200 | _dmc_ | (~dcm@user/dmc/x-4369397) |
2022-04-07 12:51:20 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds) |
2022-04-07 12:51:33 +0200 | deadmarshal_ | (~deadmarsh@95.38.112.46) |
2022-04-07 12:55:53 +0200 | deadmarshal_ | (~deadmarsh@95.38.112.46) (Ping timeout: 246 seconds) |
2022-04-07 12:56:22 +0200 | <lortabac> | boxscape_: maybe this blog post talks about them, I don't remember https://chrisdone.com/posts/data-typeable/ |
2022-04-07 12:56:46 +0200 | <boxscape_> | doesn't look like it unfortunately but could still be helpful, thanks |
2022-04-07 12:58:32 +0200 | Macbethwin | (~chargen@D964062A.static.ziggozakelijk.nl) |
2022-04-07 12:59:19 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 12:59:29 +0200 | xff0x | (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) |
2022-04-07 13:01:21 +0200 | Macbethwin | rttixian |
2022-04-07 13:02:29 +0200 | Guest89 | (~Guest89@2a01:41e1:440f:2c00:f9ba:f616:34ce:27bb) |
2022-04-07 13:03:32 +0200 | odnes_ | (~odnes@5-203-246-201.pat.nym.cosmote.net) |
2022-04-07 13:04:03 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
2022-04-07 13:04:26 +0200 | odnes | (~odnes@5-203-209-2.pat.nym.cosmote.net) (Read error: Connection reset by peer) |
2022-04-07 13:04:47 +0200 | mcgroin | (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
2022-04-07 13:09:47 +0200 | Pickchea | (~private@user/pickchea) (Ping timeout: 256 seconds) |
2022-04-07 13:11:31 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 13:12:13 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2022-04-07 13:13:08 +0200 | Midjak | (~Midjak@10.233.130.77.rev.sfr.net) |
2022-04-07 13:14:03 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2022-04-07 13:15:59 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
2022-04-07 13:19:35 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 13:22:36 +0200 | shriekingnoise | (~shrieking@201.231.16.156) |
2022-04-07 13:24:09 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 248 seconds) |
2022-04-07 13:33:15 +0200 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 260 seconds) |
2022-04-07 13:33:27 +0200 | chddr | (~Thunderbi@91.226.35.164) |
2022-04-07 13:33:32 +0200 | ub | (~Thunderbi@p200300ecdf15885c0dce6310edc9e9e7.dip0.t-ipconnect.de) |
2022-04-07 13:33:32 +0200 | ub | (~Thunderbi@p200300ecdf15885c0dce6310edc9e9e7.dip0.t-ipconnect.de) (Client Quit) |
2022-04-07 13:36:33 +0200 | hololeap_ | (~hololeap@user/hololeap) (Remote host closed the connection) |
2022-04-07 13:36:41 +0200 | hololeap | (~hololeap@user/hololeap) |
2022-04-07 13:37:28 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 13:39:31 +0200 | <chddr> | Is there a neat way to use deriving via with a newtype around tuple (a,a) to switch the order of comparison for a tuple? What I mean is to compare the second component first, and after it the first |
2022-04-07 13:40:24 +0200 | <merijn> | chddr: I don't think so, but defining your own instance for a newtype should be trivial |
2022-04-07 13:40:40 +0200 | <merijn> | chddr: Also, let me introduce you to your friend: The monoid instance of Ordering :p |
2022-04-07 13:40:47 +0200 | <merijn> | :t orderBy |
2022-04-07 13:40:48 +0200 | <lambdabot> | error: Variable not in scope: orderBy |
2022-04-07 13:40:55 +0200 | <merijn> | eh, wait |
2022-04-07 13:41:02 +0200 | <merijn> | :t sortBy |
2022-04-07 13:41:03 +0200 | <lambdabot> | (a -> a -> Ordering) -> [a] -> [a] |
2022-04-07 13:41:09 +0200 | <merijn> | :t comparing |
2022-04-07 13:41:10 +0200 | <lambdabot> | Ord a => (b -> a) -> b -> b -> Ordering |
2022-04-07 13:41:45 +0200 | <chddr> | merijn: Yep, just thought there might be a clever way to avoid writing it entirely :) |
2022-04-07 13:41:46 +0200 | <merijn> | > sortBy (comparing snd <> comparing fst) $ zip [5,4..1] [1..5] |
2022-04-07 13:41:48 +0200 | <lambdabot> | [(5,1),(4,2),(3,3),(2,4),(1,5)] |
2022-04-07 13:42:09 +0200 | <sm> | neat, I had not discovered that |
2022-04-07 13:42:23 +0200 | <merijn> | chddr: Basically, the monoid on Ordering prefers the left-most non-EQ value |
2022-04-07 13:42:32 +0200 | <boxscape_> | > sortBy (comparing swap) $ zip [5,4..1] [1..5] |
2022-04-07 13:42:33 +0200 | <lambdabot> | [(5,1),(4,2),(3,3),(2,4),(1,5)] |
2022-04-07 13:42:46 +0200 | <merijn> | boxscape_: Mine is more generically useful, though :p |
2022-04-07 13:42:49 +0200 | <boxscape_> | that is true |
2022-04-07 13:43:01 +0200 | <merijn> | Since you can compose arbitrary complex sub-orderings |
2022-04-07 13:43:11 +0200 | <boxscape_> | (and my version should have used sortOn) |
2022-04-07 13:43:51 +0200 | <merijn> | chddr: Basically, the monoid on functions ("instance Monoid r => Monoid (a -> r)") monoidally combines functions by passing arguments to each function and monoidally combining the results |
2022-04-07 13:44:58 +0200 | <chddr> | impressive... |
2022-04-07 13:45:05 +0200 | <merijn> | Combined with the left-biased monoid on Ordering it results in sorting first by the left-most argument, then ordering all things with the same left value by the next condition (so in my initial example first by snd, then by fst) but it scales up to arbitrarily complex comparisons |
2022-04-07 13:45:30 +0200 | <merijn> | Also of note here is: Down |
2022-04-07 13:46:07 +0200 | <merijn> | Which is a newtype using a flipped comparison |
2022-04-07 13:46:12 +0200 | <merijn> | > sortOn Down [1..5] |
2022-04-07 13:46:14 +0200 | <lambdabot> | [5,4,3,2,1] |
2022-04-07 13:46:36 +0200 | <merijn> | And semi-relatedly Dual (which is a newtype for Monoid with flipped mappend |
2022-04-07 13:46:46 +0200 | <merijn> | > [1..5] <> [6..10] |
2022-04-07 13:46:47 +0200 | <lambdabot> | [1,2,3,4,5,6,7,8,9,10] |
2022-04-07 13:46:51 +0200 | <merijn> | > Dual [1..5] <> Dual [6..10] |
2022-04-07 13:46:53 +0200 | <lambdabot> | Dual {getDual = [6,7,8,9,10,1,2,3,4,5]} |
2022-04-07 13:50:35 +0200 | <chddr> | Yeah, I first tried to fiddle with Down, but realised that what I need first is invert the order in which fst and snd are compared |
2022-04-07 13:51:09 +0200 | <merijn> | Monoid instance of functions and monoid on Ordering are two of my favourite monoids :) |
2022-04-07 13:52:17 +0200 | bahamas | (~lucian@84.232.140.158) (Ping timeout: 256 seconds) |
2022-04-07 13:54:47 +0200 | <hpc> | my favorite monoid is in the category of endofunctors :D |
2022-04-07 13:55:15 +0200 | fef | (~thedawn@user/thedawn) (Ping timeout: 240 seconds) |
2022-04-07 13:56:25 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 13:56:33 +0200 | acidjnk | (~acidjnk@p200300d0c7049f25b15f97e32406cde6.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2022-04-07 13:56:47 +0200 | cfricke | (~cfricke@user/cfricke) (Ping timeout: 246 seconds) |
2022-04-07 14:00:24 +0200 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) (Remote host closed the connection) |
2022-04-07 14:01:21 +0200 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) |
2022-04-07 14:01:36 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 272 seconds) |
2022-04-07 14:01:55 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
2022-04-07 14:02:41 +0200 | Pickchea | (~private@user/pickchea) |
2022-04-07 14:04:01 +0200 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2022-04-07 14:04:44 +0200 | toulene | (~toulene@user/toulene) |
2022-04-07 14:09:46 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 14:11:53 +0200 | bw | (sid2730@user/betawaffle) (Ping timeout: 256 seconds) |
2022-04-07 14:12:05 +0200 | <boxscape_> | Wow I just found out that if you have `data Foo = A {a :: Int} | B`, and you try to update `a` after you know (via pattern match) that your value must have the `A` constructor, GHC doesn't complain about an incomplete record update, that's pretty nice |
2022-04-07 14:14:01 +0200 | kaph_ | (~kaph@151.68.121.66) |
2022-04-07 14:14:47 +0200 | bahamas | (~lucian@84.232.140.158) |
2022-04-07 14:14:56 +0200 | x_kuru_ | (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
2022-04-07 14:15:35 +0200 | <hpc> | if you think about it, that's basically the same way ghc knows how GADTs work |
2022-04-07 14:15:42 +0200 | <boxscape_> | yeah, that's true |
2022-04-07 14:15:44 +0200 | <hpc> | so i bet you could get a pretty nice implementation of that feature fairly easily |
2022-04-07 14:15:58 +0200 | <boxscape_> | however, it doesn't seem to ever warn about x.a, even if x is B :( |
2022-04-07 14:16:08 +0200 | <hpc> | :( |
2022-04-07 14:16:09 +0200 | bw | (sid2730@user/betawaffle) |
2022-04-07 14:16:27 +0200 | <boxscape_> | time to open another GHC issue I guess |
2022-04-07 14:21:56 +0200 | <boxscape_> | never mind, already exists https://gitlab.haskell.org/ghc/ghc/-/issues/18650 |
2022-04-07 14:22:49 +0200 | _dmc_ | (~dcm@user/dmc/x-4369397) (Ping timeout: 248 seconds) |
2022-04-07 14:27:13 +0200 | cdman | (~dcm@user/dmc/x-4369397) |
2022-04-07 14:28:42 +0200 | abastro | (~abab9579@220.75.216.63) |
2022-04-07 14:28:54 +0200 | abastro | (~abab9579@220.75.216.63) (Remote host closed the connection) |
2022-04-07 14:29:10 +0200 | abastro | (~abab9579@220.75.216.63) |
2022-04-07 14:29:20 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds) |
2022-04-07 14:30:40 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 14:31:23 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
2022-04-07 14:34:56 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 246 seconds) |
2022-04-07 14:40:35 +0200 | cfricke | (~cfricke@user/cfricke) |
2022-04-07 14:40:50 +0200 | <boxscape_> | hpc Interestingly I just found out that it doesn't work in all cases where GADTs work https://gitlab.haskell.org/ghc/ghc/-/issues/21360 |
2022-04-07 14:41:33 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 14:44:29 +0200 | deadmarshal_ | (~deadmarsh@95.38.112.46) |
2022-04-07 14:46:03 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
2022-04-07 14:46:34 +0200 | mcgroin | (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 272 seconds) |
2022-04-07 14:47:43 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-04-07 14:48:19 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
2022-04-07 14:49:38 +0200 | elkcl | (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (Ping timeout: 246 seconds) |
2022-04-07 14:50:20 +0200 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) |
2022-04-07 14:50:39 +0200 | kaph_ | (~kaph@151.68.121.66) (Ping timeout: 256 seconds) |
2022-04-07 14:51:36 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 14:53:07 +0200 | immae | (~immae@2a01:4f8:141:53e7::) (Quit: WeeChat 3.3) |
2022-04-07 14:54:21 +0200 | immae | (~immae@2a01:4f8:141:53e7::) |
2022-04-07 14:55:56 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 246 seconds) |
2022-04-07 14:57:20 +0200 | bahamas | (~lucian@84.232.140.158) (Ping timeout: 272 seconds) |
2022-04-07 14:58:03 +0200 | fef | (~thedawn@user/thedawn) |
2022-04-07 15:01:53 +0200 | elkcl | (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) |
2022-04-07 15:03:43 +0200 | doyougnu | (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) |
2022-04-07 15:06:44 +0200 | <abastro> | Wow is it hard to add extension to compile a dependency? |
2022-04-07 15:07:44 +0200 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2022-04-07 15:12:01 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 15:12:23 +0200 | <boxscape_> | abastro could be just me but it's not clear to me what you're asking |
2022-04-07 15:13:26 +0200 | <merijn> | boxscape_: You can't safely used record accessors with sumtypes, no |
2022-04-07 15:14:10 +0200 | <merijn> | Which is why -XNoFieldSelectors is so great |
2022-04-07 15:14:27 +0200 | <Guest89> | I hope it's okay to ask a kinda vague question here: I am using `ghc-lib-parser` just like the example supplied at https://hackage.haskell.org/package/ghc-lib-parser-9.2.2.20220307/docs/GHC-Parser.html does to parse Haskell files. However when parsing files I frequently run into errors. Mostly with ifdefs but also with imports, but there are others |
2022-04-07 15:14:28 +0200 | <Guest89> | as well. The point being, simple files seem to work, anything a little unusual doesn't. The only setting I see to rectify this are the enabled `Extensions` within the `ParserOpts` which have to match the source file, but even with that it does not work. Is there something I am missing or didn't understand about using `ghc-lib-parser`? |
2022-04-07 15:14:49 +0200 | <boxscape_> | merijn but you still have the same problem if you want to use -XNoFieldSelectors with OverloadedRecordDot. Though resolving 18650 would fix that |
2022-04-07 15:15:23 +0200 | <merijn> | boxscape_: I think OverloadedRecordDot is an absolute atrocity, so I have no sympathy for it blowing up in people's faces :) |
2022-04-07 15:15:30 +0200 | <boxscape_> | fair enough |
2022-04-07 15:15:49 +0200 | <boxscape_> | I find it convenient mostly for small things where adding a lens dependency isn't worth it, but in those cases I suppose safety isn't as critical either |
2022-04-07 15:16:13 +0200 | <merijn> | boxscape_: In most of those cases just using regular record syntax would just fine too, though? |
2022-04-07 15:16:25 +0200 | <boxscape_> | merijn I like OverloadedRecordDot better though |
2022-04-07 15:16:41 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 248 seconds) |
2022-04-07 15:16:46 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2022-04-07 15:16:54 +0200 | <merijn> | It turns the grammar into a confusing, contextual nightmare |
2022-04-07 15:17:01 +0200 | BlackboardN | (~Blackboar@user/BlackboardN) (Ping timeout: 245 seconds) |
2022-04-07 15:17:30 +0200 | <merijn> | I got better things to spend brainpower on then guessing which of 3 (or is it 4 or 5 by now) syntactical constructs a specfic . is. |
2022-04-07 15:17:47 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 260 seconds) |
2022-04-07 15:18:08 +0200 | <merijn> | Had Haskell required spaces around operators (it should have, would solve a lot of annoying grammar issues), record-dot would be nice, but we don't live in that world |
2022-04-07 15:18:39 +0200 | <merijn> | spaces around operators would have solved the whole stupid unary vs binary minus problem too |
2022-04-07 15:18:53 +0200 | <boxscape_> | I put spaces around all my operators anyway so I don't find it that confusing in my own code, at least |
2022-04-07 15:19:41 +0200 | <merijn> | boxscape_: So do I, but the grammar has to handle cases where that's not true |
2022-04-07 15:20:10 +0200 | <boxscape_> | yeah but the complexity in the compiler exists whether I enable the extension or not :) |
2022-04-07 15:20:48 +0200 | <merijn> | boxscape_: The extension makes it ambiguous what "foo.bar" means for anyone reading your code, though |
2022-04-07 15:21:02 +0200 | <merijn> | 'cause the reader cannot assume you consistently space operators |
2022-04-07 15:22:18 +0200 | <boxscape_> | It does. I think it also makes it easier to understand what's going on though than using record selector functions, but I suppose the tradeoff between those is subjective. |
2022-04-07 15:23:19 +0200 | <boxscape_> | I would be inclined to believe that people a priori tend to assume that compose (.) will have spaces around it |
2022-04-07 15:23:42 +0200 | <merijn> | boxscape_: I've seen *a lot* of haskell without spaces for composition |
2022-04-07 15:23:53 +0200 | <boxscape_> | hm, fair enough |
2022-04-07 15:23:57 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-04-07 15:28:28 +0200 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.4.1) |
2022-04-07 15:28:31 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
2022-04-07 15:29:21 +0200 | cdman | (~dcm@user/dmc/x-4369397) (Quit: Leaving) |
2022-04-07 15:31:33 +0200 | cdman | (~dcm@user/dmc/x-4369397) |
2022-04-07 15:32:42 +0200 | bahamas | (~lucian@84.232.140.158) |
2022-04-07 15:36:25 +0200 | cdman | (~dcm@user/dmc/x-4369397) (Client Quit) |
2022-04-07 15:37:14 +0200 | bahamas | (~lucian@84.232.140.158) (Ping timeout: 246 seconds) |
2022-04-07 15:39:42 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-04-07 15:40:16 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
2022-04-07 15:42:29 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-04-07 15:42:29 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-04-07 15:42:29 +0200 | wroathe | (~wroathe@user/wroathe) |
2022-04-07 15:43:32 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 246 seconds) |
2022-04-07 15:43:54 +0200 | cosimone | (~user@93-47-228-79.ip115.fastwebnet.it) |
2022-04-07 15:44:24 +0200 | bezmuth | (~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7) |
2022-04-07 15:45:31 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-04-07 15:45:54 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 15:47:23 +0200 | Pickchea | (~private@user/pickchea) (Ping timeout: 246 seconds) |
2022-04-07 15:48:24 +0200 | ub | (~Thunderbi@p200300ecdf15885c0dce6310edc9e9e7.dip0.t-ipconnect.de) |
2022-04-07 15:48:29 +0200 | ub | (~Thunderbi@p200300ecdf15885c0dce6310edc9e9e7.dip0.t-ipconnect.de) (Client Quit) |
2022-04-07 15:50:32 +0200 | <abastro> | Yea my question was quite vague, boxscape_ |
2022-04-07 15:50:32 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 272 seconds) |
2022-04-07 15:50:45 +0200 | <abastro> | Anyway I forked the repo to solve it |
2022-04-07 15:53:03 +0200 | CiaoSen | (~Jura@p200300c9572d40002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-04-07 15:55:28 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-04-07 15:55:33 +0200 | odnes__ | (~odnes@5-203-246-201.pat.nym.cosmote.net) |
2022-04-07 15:56:07 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
2022-04-07 15:57:13 +0200 | alp_ | (~alp@user/alp) (Ping timeout: 248 seconds) |
2022-04-07 15:58:17 +0200 | odnes_ | (~odnes@5-203-246-201.pat.nym.cosmote.net) (Ping timeout: 248 seconds) |
2022-04-07 16:00:04 +0200 | kaph | (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) |
2022-04-07 16:00:39 +0200 | bahamas | (~lucian@84.232.140.158) |
2022-04-07 16:01:28 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
2022-04-07 16:04:33 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
2022-04-07 16:07:18 +0200 | frost | (~frost@user/frost) (Ping timeout: 250 seconds) |
2022-04-07 16:09:32 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds) |
2022-04-07 16:10:50 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-04-07 16:12:30 +0200 | benin | (~benin@183.82.204.110) (Quit: The Lounge - https://thelounge.chat) |
2022-04-07 16:15:02 +0200 | doyougnu | (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Ping timeout: 246 seconds) |
2022-04-07 16:15:19 +0200 | benin | (~benin@183.82.204.110) |
2022-04-07 16:17:35 +0200 | littlebobeep | (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds) |
2022-04-07 16:19:28 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 16:22:31 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2022-04-07 16:23:53 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 248 seconds) |
2022-04-07 16:24:14 +0200 | Akiva | (~Akiva@user/Akiva) |
2022-04-07 16:26:34 +0200 | azimut_ | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2022-04-07 16:26:55 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-04-07 16:28:31 +0200 | Pickchea | (~private@user/pickchea) |
2022-04-07 16:31:55 +0200 | Guest89 | (~Guest89@2a01:41e1:440f:2c00:f9ba:f616:34ce:27bb) (Quit: Client closed) |
2022-04-07 16:32:49 +0200 | <lortabac> | is there a way to coerce between two records if all the fields are coercible? |
2022-04-07 16:33:25 +0200 | Guest89 | (~Guest89@2a01:41e1:440f:2c00:f9ba:f616:34ce:27bb) |
2022-04-07 16:33:26 +0200 | <lortabac> | maybe some library that relies on Generics |
2022-04-07 16:34:38 +0200 | akegalj | (~akegalj@93.140.126.69) (Quit: leaving) |
2022-04-07 16:38:17 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 248 seconds) |
2022-04-07 16:40:09 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-04-07 16:42:20 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 16:43:50 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
2022-04-07 16:46:33 +0200 | sander | (~sander@user/sander) |
2022-04-07 16:46:50 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
2022-04-07 16:49:21 +0200 | rttixian | (~chargen@D964062A.static.ziggozakelijk.nl) (Read error: Connection reset by peer) |
2022-04-07 16:50:36 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 240 seconds) |
2022-04-07 16:53:39 +0200 | cosimone | (~user@93-47-228-79.ip115.fastwebnet.it) (Remote host closed the connection) |
2022-04-07 16:54:48 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 16:59:03 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 260 seconds) |
2022-04-07 16:59:08 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 17:01:15 +0200 | xpika | (~alan@n175-34-18-168.sun1.vic.optusnet.com.au) |
2022-04-07 17:01:15 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
2022-04-07 17:03:48 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
2022-04-07 17:08:04 +0200 | kaph | (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) (Read error: Connection reset by peer) |
2022-04-07 17:10:20 +0200 | sammelweis | (~quassel@c-68-48-18-140.hsd1.mi.comcast.net) (Ping timeout: 246 seconds) |
2022-04-07 17:10:45 +0200 | kaph | (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) |
2022-04-07 17:12:05 +0200 | xpika | (~alan@n175-34-18-168.sun1.vic.optusnet.com.au) () |
2022-04-07 17:12:21 +0200 | xpika | (~alan@n175-34-18-168.sun1.vic.optusnet.com.au) |
2022-04-07 17:13:44 +0200 | <xpika> | is there a haskell library for converting html to ascii table? |
2022-04-07 17:14:13 +0200 | <maerwald> | pandoc can convert between html and markdown |
2022-04-07 17:14:59 +0200 | mcgroin | (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
2022-04-07 17:15:32 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 17:16:38 +0200 | alp_ | (~alp@user/alp) |
2022-04-07 17:16:51 +0200 | bahamas | (~lucian@84.232.140.158) (Ping timeout: 256 seconds) |
2022-04-07 17:19:04 +0200 | lbseale | (~ep1ctetus@user/ep1ctetus) |
2022-04-07 17:22:01 +0200 | boxscape_ | (~boxscape_@p4ff0b7be.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
2022-04-07 17:25:26 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 17:25:49 +0200 | zebrag | (~chris@user/zebrag) |
2022-04-07 17:26:17 +0200 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 248 seconds) |
2022-04-07 17:26:38 +0200 | Pickchea | (~private@user/pickchea) (Quit: Leaving) |
2022-04-07 17:27:04 +0200 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-04-07 17:30:16 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds) |
2022-04-07 17:32:54 +0200 | <xpika> | is there a library function for horizontally appending two 2d blocks of text? |
2022-04-07 17:33:24 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:cb75:3834:c1c1:ff4e) (Quit: WeeChat 2.8) |
2022-04-07 17:33:42 +0200 | <geekosaur> | not in base. there are several pretty-printling libraries that can do it among other things |
2022-04-07 17:34:00 +0200 | <xpika> | which one? |
2022-04-07 17:34:43 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 260 seconds) |
2022-04-07 17:34:59 +0200 | <geekosaur> | actually, not in base but provided with ghc: https://downloads.haskell.org/ghc/8.10.7/docs/html/libraries/pretty-1.1.3.6/Text-PrettyPrint-Annot… |
2022-04-07 17:35:26 +0200 | <geekosaur> | mm, not quite that one, but see Text.PrettyPrint in general, from |
2022-04-07 17:35:31 +0200 | <geekosaur> | @hackage pretty |
2022-04-07 17:35:31 +0200 | <lambdabot> | https://hackage.haskell.org/package/pretty |
2022-04-07 17:35:47 +0200 | <geekosaur> | again,this ships with ghc since ghc uses it to format error messages |
2022-04-07 17:36:08 +0200 | <geekosaur> | I think it's the <+> operator that combines two 2D Docs |
2022-04-07 17:40:45 +0200 | <maerwald> | and adds a space |
2022-04-07 17:41:52 +0200 | <xpika> | hcat [vcat [text "Hello" , text "^"] , text " World"] |
2022-04-07 17:41:54 +0200 | <geekosaur> | Ithink simple mappend /<> works to do it without a space, though |
2022-04-07 17:42:00 +0200 | jespada | (~jespada@cpc121022-nmal24-2-0-cust171.19-2.cable.virginm.net) (Quit: Textual IRC Client: www.textualapp.com) |
2022-04-07 17:42:04 +0200 | <glguy> | Is it expected that haskell-src-exts-1.23.1 doesn't build on macOS with ghc 9.2.2? (some of that might be overconstrained, just listing what I tried) |
2022-04-07 17:42:11 +0200 | <xpika> | gives |
2022-04-07 17:42:11 +0200 | <xpika> | Hello |
2022-04-07 17:42:11 +0200 | <xpika> | ^ World |
2022-04-07 17:42:32 +0200 | <xpika> | I want |
2022-04-07 17:42:32 +0200 | <xpika> | Hello World |
2022-04-07 17:42:32 +0200 | <xpika> | ^ |
2022-04-07 17:43:01 +0200 | <glguy> | oh nevermind, I guess. It worked on the third try o.O |
2022-04-07 17:43:18 +0200 | jespada | (~jespada@2a0c:5c84:1:4000::91c2) |
2022-04-07 17:46:08 +0200 | geekosaur | looks for other prettyprinter libs |
2022-04-07 17:46:19 +0200 | <geekosaur> | I think I'm not surprised since it's used for error messages |
2022-04-07 17:48:52 +0200 | <geekosaur> | in particular I'm remembering one which allowed specification of how two 2d blocks were aligned |
2022-04-07 17:49:38 +0200 | mcgroin | (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Remote host closed the connection) |
2022-04-07 17:50:25 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Remote host closed the connection) |
2022-04-07 17:51:07 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2022-04-07 17:52:11 +0200 | Guest89 | (~Guest89@2a01:41e1:440f:2c00:f9ba:f616:34ce:27bb) (Quit: Client closed) |
2022-04-07 17:53:18 +0200 | <geekosaur> | mrrgh. allI'm finding so far uses the Wadler algorithm which isn't designed for multicolumn |
2022-04-07 17:55:31 +0200 | <geekosaur> | https://hackage.haskell.org/package/boxes-0.1.5/docs/Text-PrettyPrint-Boxes.html if it still builds |
2022-04-07 17:55:51 +0200 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-04-07 17:56:10 +0200 | bezmuth | (~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7) (Ping timeout: 268 seconds) |
2022-04-07 17:57:50 +0200 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Remote host closed the connection) |
2022-04-07 17:58:00 +0200 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) |
2022-04-07 18:00:39 +0200 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds) |
2022-04-07 18:02:31 +0200 | CiaoSen | (~Jura@p200300c9572d40002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2022-04-07 18:02:49 +0200 | ccntrq | (~Thunderbi@2a01:e34:eccb:b060:ba9d:69d8:b4f8:4092) (Remote host closed the connection) |
2022-04-07 18:03:21 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-04-07 18:04:07 +0200 | gdd | (~gdd@129.199.146.230) (Ping timeout: 250 seconds) |
2022-04-07 18:04:21 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
2022-04-07 18:06:49 +0200 | epolanski | (uid312403@id-312403.helmsley.irccloud.com) |
2022-04-07 18:08:42 +0200 | haskellberryfinn | (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
2022-04-07 18:09:08 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 246 seconds) |
2022-04-07 18:09:23 +0200 | gdd | (~gdd@129.199.146.230) |
2022-04-07 18:10:43 +0200 | eaii^ | (~eaii@c-24-99-107-170.hsd1.ga.comcast.net) |
2022-04-07 18:11:05 +0200 | cosimone | (~user@93-47-228-79.ip115.fastwebnet.it) |
2022-04-07 18:16:50 +0200 | haskellberryfinn | (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 246 seconds) |
2022-04-07 18:17:57 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2022-04-07 18:20:48 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-04-07 18:21:34 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
2022-04-07 18:24:26 +0200 | bezmuth | (~bezmuth@host86-136-197-212.range86-136.btcentralplus.com) |
2022-04-07 18:24:42 +0200 | doyougnu | (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) |
2022-04-07 18:24:46 +0200 | <xpika> | Text.PrettyPrint.Boxes> printBox $ (text "hello" // text "1") <+> ( text "world" // text "2") |
2022-04-07 18:24:46 +0200 | <xpika> | hello world |
2022-04-07 18:24:46 +0200 | <xpika> | 1 2 |
2022-04-07 18:25:06 +0200 | <xpika> | not bad |
2022-04-07 18:25:58 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-04-07 18:26:42 +0200 | Cale | (~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com) (Remote host closed the connection) |
2022-04-07 18:28:34 +0200 | zeenk | (~zeenk@2a02:2f04:a313:d600:8d26:ec9f:3ff6:fc94) (Quit: Konversation terminated!) |
2022-04-07 18:28:56 +0200 | vicfred | (~vicfred@user/vicfred) |
2022-04-07 18:29:53 +0200 | haskellberryfinn | (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
2022-04-07 18:30:08 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds) |
2022-04-07 18:40:36 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 240 seconds) |
2022-04-07 18:49:56 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Remote host closed the connection) |
2022-04-07 18:50:03 +0200 | tzh_ | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2022-04-07 18:51:31 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
2022-04-07 18:51:43 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-04-07 18:52:40 +0200 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2022-04-07 18:53:19 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 18:53:57 +0200 | abastro | (~abab9579@220.75.216.63) (Ping timeout: 246 seconds) |
2022-04-07 18:54:37 +0200 | pretty_d1 | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2022-04-07 18:54:49 +0200 | mbuf | (~Shakthi@122.162.142.187) (Quit: Leaving) |
2022-04-07 18:55:21 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 245 seconds) |
2022-04-07 19:01:03 +0200 | haskellberryfinn | (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 260 seconds) |
2022-04-07 19:01:11 +0200 | agrosant | (~agrosant@79.103.182.92.dsl.dyn.forthnet.gr) (Ping timeout: 272 seconds) |
2022-04-07 19:04:28 +0200 | BlackboardN | (~Blackboar@user/BlackboardN) |
2022-04-07 19:05:35 +0200 | <lechner> | Hi, with the word 'package' a bit overloaded, is there a more precise term for a particular source version on Hackage? |
2022-04-07 19:06:24 +0200 | <maerwald> | package version |
2022-04-07 19:10:33 +0200 | <lechner> | Yeah, we used that for everything in Debian too until I introduced 'sources' and 'installables'. Can I go with 'hackage source version'? |
2022-04-07 19:11:07 +0200 | <maerwald> | a hackable |
2022-04-07 19:11:19 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-04-07 19:11:56 +0200 | <lechner> | i'll take it if it's not a joke |
2022-04-07 19:12:18 +0200 | cosimone | (~user@93-47-228-79.ip115.fastwebnet.it) (Remote host closed the connection) |
2022-04-07 19:12:19 +0200 | <monochrom> | We already have a name for "installables": build product. Therefore, "package version" already refers to source code, without emphasizing "source code". |
2022-04-07 19:13:27 +0200 | <lechner> | in my mind hackage is a misnomer. it should not refer to the repo but to each source version |
2022-04-07 19:14:20 +0200 | <lechner> | perhaps turning Hackage intoa plural hackages.haskell.org |
2022-04-07 19:14:23 +0200 | odnes__ | (~odnes@5-203-246-201.pat.nym.cosmote.net) (Quit: Leaving) |
2022-04-07 19:14:55 +0200 | <monochrom> | Huh? Hackage is a gathering place. |
2022-04-07 19:15:15 +0200 | <maerwald> | lechner: are you seriously thinking you could rename hackage? |
2022-04-07 19:15:34 +0200 | <monochrom> | We say "Trafalga Plaza", not "Trafalga Plazas" just because "it has many persons". |
2022-04-07 19:15:59 +0200 | <lechner> | you can't be more stubborn than my colleages at Debian |
2022-04-07 19:16:01 +0200 | <monochrom> | Err I guess s/Plaza/Square/ |
2022-04-07 19:16:26 +0200 | <lechner> | Haskell is all about accurate terminology |
2022-04-07 19:16:59 +0200 | <monochrom> | You don't say "Debians" just because it also has many source versions, installable versions, and unusable versions too while we're at it. |
2022-04-07 19:17:26 +0200 | <lechner> | hackage would stand for Haskell Package |
2022-04-07 19:17:37 +0200 | <lechner> | singular |
2022-04-07 19:17:40 +0200 | <monochrom> | N. O. |
2022-04-07 19:18:25 +0200 | <monochrom> | You don't say "debian would stand for deb package, singluar" either. |
2022-04-07 19:19:11 +0200 | <lechner> | .deb refers to Ian's ex-wife |
2022-04-07 19:19:26 +0200 | <monochrom> | Let me hop over to #debian to suggest "lechner taught me the logic that debian would stand for a deb package, therefore the whole distro should be debianS". What do you think? |
2022-04-07 19:19:47 +0200 | <monochrom> | I mean, sheesh. |
2022-04-07 19:25:57 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 19:30:04 +0200 | gawen | (~gawen@user/gawen) (Quit: cya) |
2022-04-07 19:31:24 +0200 | gawen | (~gawen@user/gawen) |
2022-04-07 19:31:25 +0200 | Major_Biscuit | (~MajorBisc@c-001-005-034.client.tudelft.eduvpn.nl) (Ping timeout: 240 seconds) |
2022-04-07 19:32:00 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
2022-04-07 19:34:17 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds) |
2022-04-07 19:36:37 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-04-07 19:37:13 +0200 | Vajb | (~Vajb@2001:999:62:aa00:7f5a:4f10:c894:3813) |
2022-04-07 19:39:40 +0200 | <monochrom> | https://bartoszmilewski.com/2022/04/05/teaching-optics-through-conspiracy-theories/ is pretty nice. |
2022-04-07 19:39:41 +0200 | mvk | (~mvk@2607:fea8:5ce3:8500::9d5a) |
2022-04-07 19:43:08 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2022-04-07 19:44:35 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
2022-04-07 19:46:07 +0200 | <siraben> | I'm defining binary numbers using type families and I want to write type-level factorial for them, but don't want to expose the underlying representation, is there a ViewPatterns-like thing for type families? |
2022-04-07 19:46:33 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 268 seconds) |
2022-04-07 19:46:38 +0200 | Unicorn_Princess | (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection) |
2022-04-07 19:46:49 +0200 | <siraben> | Oh I guess I can define type level If |
2022-04-07 19:50:34 +0200 | deadmarshal_ | (~deadmarsh@95.38.112.46) (Ping timeout: 272 seconds) |
2022-04-07 19:52:01 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2022-04-07 19:52:42 +0200 | cheater | (~Username@user/cheater) |
2022-04-07 19:54:24 +0200 | hololeap_ | (~hololeap@user/hololeap) |
2022-04-07 19:55:11 +0200 | vysn | (~vysn@user/vysn) (Ping timeout: 268 seconds) |
2022-04-07 19:55:15 +0200 | hololeap | (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
2022-04-07 19:56:12 +0200 | <siraben> | oh that doesn't work because type-level evaluation is strict |
2022-04-07 20:00:51 +0200 | zincy | (~zincy@host86-160-236-152.range86-160.btcentralplus.com) |
2022-04-07 20:00:58 +0200 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-04-07 20:01:05 +0200 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-04-07 20:02:02 +0200 | coot | (~coot@213.134.190.95) (Quit: coot) |
2022-04-07 20:02:27 +0200 | asivitz | (uid178348@id-178348.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
2022-04-07 20:03:20 +0200 | tubogram4 | (~tubogram@user/tubogram) (*.net *.split) |
2022-04-07 20:03:20 +0200 | dons | (~dons@user/dons) (*.net *.split) |
2022-04-07 20:03:20 +0200 | Axman6 | (~Axman6@user/axman6) (*.net *.split) |
2022-04-07 20:05:04 +0200 | Axman6 | (~Axman6@user/axman6) |
2022-04-07 20:05:04 +0200 | tubogram4 | (~tubogram@user/tubogram) |
2022-04-07 20:05:04 +0200 | dons | (~dons@user/dons) |
2022-04-07 20:05:46 +0200 | neurocyte861449 | (~neurocyte@user/neurocyte) (Read error: Connection reset by peer) |
2022-04-07 20:07:20 +0200 | neurocyte8614492 | (~neurocyte@IP-185238252073.dynamic.medianet-world.de) |
2022-04-07 20:07:20 +0200 | neurocyte8614492 | (~neurocyte@IP-185238252073.dynamic.medianet-world.de) (Changing host) |
2022-04-07 20:07:20 +0200 | neurocyte8614492 | (~neurocyte@user/neurocyte) |
2022-04-07 20:09:24 +0200 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
2022-04-07 20:10:11 +0200 | Cale | (~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com) |
2022-04-07 20:10:23 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2022-04-07 20:11:08 +0200 | hololeap | (~hololeap@user/hololeap) |
2022-04-07 20:11:23 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2022-04-07 20:12:15 +0200 | hololeap_ | (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
2022-04-07 20:13:10 +0200 | dextaa_54 | (~dextaa@user/dextaa) |
2022-04-07 20:14:43 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
2022-04-07 20:15:20 +0200 | littlebobeep | (~alMalsamo@gateway/tor-sasl/almalsamo) |
2022-04-07 20:19:02 +0200 | deadmarshal_ | (~deadmarsh@95.38.112.46) |
2022-04-07 20:19:03 +0200 | Vajb | (~Vajb@2001:999:62:aa00:7f5a:4f10:c894:3813) (Read error: Connection reset by peer) |
2022-04-07 20:19:37 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 248 seconds) |
2022-04-07 20:19:48 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2022-04-07 20:20:59 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) |
2022-04-07 20:21:35 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
2022-04-07 20:21:42 +0200 | mvk | (~mvk@2607:fea8:5ce3:8500::9d5a) (Ping timeout: 268 seconds) |
2022-04-07 20:22:15 +0200 | hololeap | (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
2022-04-07 20:23:51 +0200 | deadmarshal_ | (~deadmarsh@95.38.112.46) (Ping timeout: 256 seconds) |
2022-04-07 20:27:56 +0200 | Guest89 | (~Guest89@2a01:41e1:440f:2c00:f9ba:f616:34ce:27bb) |
2022-04-07 20:28:05 +0200 | _ht | (~quassel@231-169-21-31.ftth.glasoperator.nl) |
2022-04-07 20:28:35 +0200 | hololeap | (~hololeap@user/hololeap) |
2022-04-07 20:29:05 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2022-04-07 20:37:22 +0200 | econo | (uid147250@user/econo) |
2022-04-07 20:39:36 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-04-07 20:42:48 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 246 seconds) |
2022-04-07 20:43:07 +0200 | dyeplexer | (~dyeplexer@user/dyeplexer) (Ping timeout: 256 seconds) |
2022-04-07 20:45:45 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 248 seconds) |
2022-04-07 20:46:37 +0200 | epolanski | (uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
2022-04-07 20:47:50 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-04-07 20:48:50 +0200 | alp_ | (~alp@user/alp) (Ping timeout: 268 seconds) |
2022-04-07 20:50:15 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-04-07 20:50:52 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
2022-04-07 20:53:27 +0200 | coot | (~coot@213.134.190.95) |
2022-04-07 20:55:53 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 248 seconds) |
2022-04-07 20:57:07 +0200 | lbseale | (~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer) |
2022-04-07 20:58:32 +0200 | bezmuth | (~bezmuth@host86-136-197-212.range86-136.btcentralplus.com) (Ping timeout: 246 seconds) |
2022-04-07 21:02:46 +0200 | benin | (~benin@183.82.204.110) (Ping timeout: 272 seconds) |
2022-04-07 21:07:00 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 21:09:33 +0200 | benin | (~benin@183.82.204.110) |
2022-04-07 21:11:24 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 240 seconds) |
2022-04-07 21:12:16 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds) |
2022-04-07 21:14:11 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-04-07 21:17:25 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
2022-04-07 21:26:13 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2022-04-07 21:26:31 +0200 | Pickchea | (~private@user/pickchea) |
2022-04-07 21:27:47 +0200 | haskellberryfinn | (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
2022-04-07 21:27:54 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2022-04-07 21:30:18 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
2022-04-07 21:30:40 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 21:31:31 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 21:32:36 +0200 | vicfred | (~vicfred@user/vicfred) (Quit: Leaving) |
2022-04-07 21:32:41 +0200 | rekahsoft | (~rekahsoft@cpe001b21a2fd89-cm64777ddc63a0.cpe.net.cable.rogers.com) |
2022-04-07 21:32:45 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-04-07 21:32:47 +0200 | mvk | (~mvk@2607:fea8:5ce3:8500::9d5a) |
2022-04-07 21:33:02 +0200 | acidjnk | (~acidjnk@p200300d0c7049f25b15f97e32406cde6.dip0.t-ipconnect.de) |
2022-04-07 21:34:08 +0200 | rekahsoft | (~rekahsoft@cpe001b21a2fd89-cm64777ddc63a0.cpe.net.cable.rogers.com) (Remote host closed the connection) |
2022-04-07 21:37:02 +0200 | Kaipi | (~Kaiepi@156.34.47.253) |
2022-04-07 21:37:58 +0200 | redb | (~nmh@136.49.49.211) (Ping timeout: 260 seconds) |
2022-04-07 21:38:10 +0200 | Kaiepi | (~Kaiepi@156.34.47.253) (Ping timeout: 268 seconds) |
2022-04-07 21:38:46 +0200 | jgeerds | (~jgeerds@d5364b87.access.ecotel.net) |
2022-04-07 21:40:18 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
2022-04-07 21:41:18 +0200 | Kaipi | (~Kaiepi@156.34.47.253) (Remote host closed the connection) |
2022-04-07 21:41:52 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) (Ping timeout: 268 seconds) |
2022-04-07 21:43:15 +0200 | fef | (~thedawn@user/thedawn) (Ping timeout: 240 seconds) |
2022-04-07 21:44:19 +0200 | awpr | (uid446117@id-446117.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2022-04-07 21:46:29 +0200 | doyougnu | (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Ping timeout: 246 seconds) |
2022-04-07 21:47:15 +0200 | shapr | (~user@pool-173-73-44-186.washdc.fios.verizon.net) (Remote host closed the connection) |
2022-04-07 21:47:20 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 21:47:32 +0200 | pooryorick | (~pooryoric@87-119-174-173.tll.elisa.ee) (Ping timeout: 246 seconds) |
2022-04-07 21:48:14 +0200 | redb | (~nmh@136.49.49.211) |
2022-04-07 21:52:10 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds) |
2022-04-07 21:52:36 +0200 | rekahsoft | (~rekahsoft@cpe001b21a2fd89-cm64777ddc63a0.cpe.net.cable.rogers.com) |
2022-04-07 21:54:30 +0200 | pooryorick | (~pooryoric@87-119-174-173.tll.elisa.ee) |
2022-04-07 21:58:25 +0200 | liz_ | (~liz@host109-151-125-217.range109-151.btcentralplus.com) |
2022-04-07 22:02:46 +0200 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4.1) |
2022-04-07 22:03:19 +0200 | orcus | (~orcus@user/brprice) (Ping timeout: 260 seconds) |
2022-04-07 22:03:47 +0200 | orcus | (~orcus@user/brprice) |
2022-04-07 22:03:55 +0200 | _ht | (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection) |
2022-04-07 22:05:53 +0200 | alp_ | (~alp@user/alp) |
2022-04-07 22:07:24 +0200 | vjoki | (~vjoki@2a00:d880:3:1::fea1:9ae) (Ping timeout: 240 seconds) |
2022-04-07 22:08:23 +0200 | neurocyte8614492 | (~neurocyte@user/neurocyte) (Ping timeout: 268 seconds) |
2022-04-07 22:09:24 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
2022-04-07 22:09:30 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 22:09:42 +0200 | zeenk | (~zeenk@2a02:2f04:a313:d600:8d26:ec9f:3ff6:fc94) |
2022-04-07 22:09:51 +0200 | vjoki | (~vjoki@2a00:d880:3:1::fea1:9ae) |
2022-04-07 22:12:47 +0200 | zincy | (~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Remote host closed the connection) |
2022-04-07 22:14:21 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
2022-04-07 22:14:33 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds) |
2022-04-07 22:15:15 +0200 | vicfred | (~vicfred@user/vicfred) |
2022-04-07 22:15:53 +0200 | chddr | (~Thunderbi@91.226.35.164) (Ping timeout: 248 seconds) |
2022-04-07 22:17:32 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-04-07 22:19:21 +0200 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2022-04-07 22:19:34 +0200 | hololeap_ | (~hololeap@user/hololeap) |
2022-04-07 22:20:06 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds) |
2022-04-07 22:20:15 +0200 | hololeap | (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
2022-04-07 22:20:38 +0200 | Lord_of_Life_ | Lord_of_Life |
2022-04-07 22:21:56 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 22:26:18 +0200 | vjoki | (~vjoki@2a00:d880:3:1::fea1:9ae) (Quit: ...) |
2022-04-07 22:26:23 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds) |
2022-04-07 22:27:01 +0200 | vjoki | (~vjoki@2a00:d880:3:1::fea1:9ae) |
2022-04-07 22:29:06 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-04-07 22:31:15 +0200 | hololeap_ | (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
2022-04-07 22:31:21 +0200 | xkuru | (~xkuru@user/xkuru) |
2022-04-07 22:32:10 +0200 | hololeap_ | (~hololeap@user/hololeap) |
2022-04-07 22:33:50 +0200 | coot | (~coot@213.134.190.95) (Quit: coot) |
2022-04-07 22:34:03 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 22:34:57 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
2022-04-07 22:35:05 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 248 seconds) |
2022-04-07 22:37:10 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-04-07 22:37:17 +0200 | shapr | (~user@pool-173-73-44-186.washdc.fios.verizon.net) |
2022-04-07 22:38:10 +0200 | tzh_ | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Remote host closed the connection) |
2022-04-07 22:38:58 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2022-04-07 22:39:28 +0200 | zincy | (~zincy@2a00:23c8:970c:4801:dc35:500f:d0de:de53) |
2022-04-07 22:39:48 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
2022-04-07 22:42:10 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Remote host closed the connection) |
2022-04-07 22:42:52 +0200 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-04-07 22:43:36 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2022-04-07 22:44:34 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 22:48:07 +0200 | jgeerds | (~jgeerds@d5364b87.access.ecotel.net) (Remote host closed the connection) |
2022-04-07 22:48:24 +0200 | jgeerds | (~jgeerds@d5364b87.access.ecotel.net) |
2022-04-07 22:48:40 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Remote host closed the connection) |
2022-04-07 22:49:03 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
2022-04-07 22:51:40 +0200 | xkuru | (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
2022-04-07 22:53:14 +0200 | img | (~img@user/img) |
2022-04-07 22:53:45 +0200 | michalz | (~michalz@185.246.204.122) (Remote host closed the connection) |
2022-04-07 22:53:49 +0200 | xkuru | (~xkuru@user/xkuru) |
2022-04-07 22:55:05 +0200 | liz_ | liz |
2022-04-07 22:55:32 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) |
2022-04-07 23:00:15 +0200 | seydar | (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
2022-04-07 23:06:15 +0200 | pretty_d1 | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5) |
2022-04-07 23:08:48 +0200 | jgeerds | (~jgeerds@d5364b87.access.ecotel.net) (Ping timeout: 272 seconds) |
2022-04-07 23:12:21 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
2022-04-07 23:12:29 +0200 | zincy | (~zincy@2a00:23c8:970c:4801:dc35:500f:d0de:de53) (Remote host closed the connection) |
2022-04-07 23:16:41 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds) |
2022-04-07 23:17:27 +0200 | yauhsien | (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
2022-04-07 23:18:34 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-04-07 23:19:35 +0200 | zyklotomic | (~ethan@res380d-128-61-86-37.res.gatech.edu) (Ping timeout: 250 seconds) |
2022-04-07 23:21:27 +0200 | zyklotomic | (~ethan@res380d-128-61-81-124.res.gatech.edu) |
2022-04-07 23:26:29 +0200 | Guest53 | (~Guest53@190.192.80.102) |
2022-04-07 23:28:33 +0200 | dfordivam1 | (~dfordivam@tk2-219-19469.vs.sakura.ne.jp) (Ping timeout: 252 seconds) |
2022-04-07 23:29:34 +0200 | dfordivam1 | (~dfordivam@tk2-219-19469.vs.sakura.ne.jp) |
2022-04-07 23:39:55 +0200 | acidjnk | (~acidjnk@p200300d0c7049f25b15f97e32406cde6.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2022-04-07 23:43:15 +0200 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 240 seconds) |
2022-04-07 23:45:28 +0200 | Teacup | (~teacup@user/teacup) (Remote host closed the connection) |
2022-04-07 23:45:40 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2022-04-07 23:45:43 +0200 | Teacup | (~teacup@user/teacup) |
2022-04-07 23:50:15 +0200 | hololeap_ | (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
2022-04-07 23:50:24 +0200 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) |
2022-04-07 23:52:51 +0200 | cosimone | (~user@93-47-228-79.ip115.fastwebnet.it) |
2022-04-07 23:52:59 +0200 | dcoutts_ | (~duncan@host213-122-143-81.range213-122.btcentralplus.com) (Ping timeout: 260 seconds) |
2022-04-07 23:53:53 +0200 | hololeap_ | (~hololeap@user/hololeap) |
2022-04-07 23:59:07 +0200 | awschnap | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
2022-04-07 23:59:07 +0200 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Read error: Connection reset by peer) |
2022-04-07 23:59:55 +0200 | hololeap_ | (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |