Logs on 2022-04-07 (liberachat/#haskell)
| 00:01:14 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5) |
| 00:01:29 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 00:03:34 | → | califax joins (~califax@user/califx) |
| 00:03:47 | × | theproffesor quits (~theproffe@2601:282:847f:7f00::87) (Quit: ¯\_(ツ)_/¯) |
| 00:04:00 | → | theproffesor joins (~theprofff@2601:282:847f:7f00::87) |
| 00:04:11 | × | theproffesor quits (~theprofff@2601:282:847f:7f00::87) (Changing host) |
| 00:04:11 | → | theproffesor joins (~theprofff@user/theproffesor) |
| 00:04:18 | × | Akiva quits (~Akiva@user/Akiva) (Ping timeout: 260 seconds) |
| 00:07:07 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 268 seconds) |
| 00:07:43 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 00:08:23 | × | bezmuth quits (~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7) (Ping timeout: 260 seconds) |
| 00:11:15 | × | Guest89 quits (~Guest89@2a01:41e1:47ec:c500:e741:fb6e:5f12:6189) (Quit: Client closed) |
| 00:11:43 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 00:13:26 | <abastro[m]> | Morning |
| 00:14:09 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 256 seconds) |
| 00:16:59 | × | Guest27 quits (~Guest27@2601:281:d47f:1590::e9d9) (Quit: Client closed) |
| 00:17:12 | → | Guest27 joins (~Guest27@2601:281:d47f:1590::e9d9) |
| 00:18:24 | → | bezmuth joins (~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7) |
| 00:18:33 | × | Guest27 quits (~Guest27@2601:281:d47f:1590::e9d9) (Client Quit) |
| 00:20:54 | <Axman6> | o/ |
| 00:23:21 | → | redb joins (~nmh@136.49.49.211) |
| 00:31:47 | → | yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
| 00:36:14 | × | lbseale quits (~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer) |
| 00:38:09 | → | exilepilot joins (~exilepilo@2a00:23c4:ba88:fc01:d059:aa64:8c3f:a223) |
| 00:38:23 | × | exilepilot quits (~exilepilo@2a00:23c4:ba88:fc01:d059:aa64:8c3f:a223) (Remote host closed the connection) |
| 00:38:44 | → | exilepilot joins (~exilepilo@2a00:23c4:ba88:fc01:d059:aa64:8c3f:a223) |
| 00:39:33 | <dons> | its a ghc -j6 +RTS -A256m -n4m -RTS sort of day |
| 00:39:48 | Andrew | is now known as LeetPeet |
| 00:42:35 | × | LeetPeet quits (Andrew@user/AndrewYu) (Quit: Leaving) |
| 00:42:48 | → | AndrewYu joins (Andrew@user/AndrewYu) |
| 00:45:01 | × | bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 250 seconds) |
| 00:45:47 | AndrewYu | is now known as Andrew |
| 00:48:20 | <energizer> | are there languages where an expression can have more than one type? |
| 00:50:54 | × | xff0x quits (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) (Ping timeout: 268 seconds) |
| 00:51:03 | <dons> | you mean like generics? or polymorphism? |
| 00:51:07 | <Axman6> | the expression `1` in Haskell has many possible types |
| 00:51:13 | <Axman6> | :t 1 |
| 00:51:14 | <lambdabot> | Num p => p |
| 00:51:16 | <Axman6> | :t 1 : Int |
| 00:51:17 | <lambdabot> | error: |
| 00:51:17 | <lambdabot> | • Data constructor not in scope: Int :: [a] |
| 00:51:17 | <lambdabot> | • Perhaps you meant variable ‘int’ (imported from Text.PrettyPrint.HughesPJ) |
| 00:51:19 | <Axman6> | :t 1 : Integer |
| 00:51:20 | <lambdabot> | error: |
| 00:51:20 | <lambdabot> | • Data constructor not in scope: Integer :: [a] |
| 00:51:20 | <lambdabot> | • Perhaps you meant one of these: |
| 00:51:22 | <Axman6> | :t 1 :: Integer |
| 00:51:23 | <lambdabot> | Integer |
| 00:51:25 | <Axman6> | too much Daml |
| 00:51:32 | <Axman6> | :t 1 :: Expr |
| 00:51:33 | <lambdabot> | Expr |
| 00:51:36 | <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 .. |
| 00:52:34 | <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 |
| 00:53:12 | <dons> | but its just a form of polymorphism, similar to class-based in haskell ( class T a ;; instance T Int ; instance T Bool |
| 00:53:34 | <dons> | or data T = TInt Int | TBool Bool is maybe closer to the Flow version |
| 00:53:45 | <energizer> | is "Num p => p" a type? |
| 00:54:35 | <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` |
| 00:54:41 | <dons> | but yeah, its a type. |
| 00:54:49 | <dons> | (what is a type ?!? is a big question) |
| 00:56:00 | <dons> | "Num p => p" |
| 00:56:28 | <energizer> | if i take what you said literally i get p is a type and "Num p => p" represents the type of that p? |
| 00:56:36 | <energizer> | but i dont think that's what you meant |
| 00:56:43 | <dons> | nope. |
| 00:57:04 | <dons> | type systems let you specifify types for values in computer programs, right? |
| 00:57:21 | <energizer> | i dunno they seem to be about expressions |
| 00:57:29 | <dons> | well, expressions are values too |
| 00:57:40 | <energizer> | an expression has exactly one type, iirc |
| 00:58:05 | <dons> | so, v is a value. v :: Num p => p, says that the value `v` has a type, "Num p => p" |
| 00:58:22 | <dons> | , and that type is a generic one, meaning the concrete type `p` is one of a member of the set Num |
| 00:58:38 | <dons> | right. our type checkers go to a lot of lengths to ensure there's precisely one type |
| 00:58:52 | <cheater> | o/ dons |
| 00:58:58 | <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 |
| 00:59:22 | <dons> | you can write a lot of haskell programs without every writing down the type signatures, yeah? |
| 00:59:43 | <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 |
| 00:59:58 | <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 |
| 01:00:30 | <dons> | so "Num p => p" is such a signature. if attached to a value with ":: " it specifies the valid types for the value |
| 01:01:50 | <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" |
| 01:02:03 | × | alp_ quits (~alp@user/alp) (Ping timeout: 260 seconds) |
| 01:02:10 | <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 |
| 01:02:19 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
| 01:02:56 | <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 |
| 01:03:14 | <dons> | more common types are things like, length :: [a] -> Int |
| 01:03:36 | <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 |
| 01:04:31 | × | szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 01:05:45 | → | mud joins (~mud@user/kadoban) |
| 01:06:24 | <energizer> | how would you compare PFPL vs TAPL? |
| 01:07:03 | <dons> | I found PFPL more foundational. it changed how I think about programming languages |
| 01:12:06 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 01:14:02 | <energizer> | dons: i noticed you said value instead of expression |
| 01:14:44 | <dons> | different languages distinguish values and expressions, but in a lazy language like haskell its less clear |
| 01:14:53 | → | redb joins (~nmh@136.49.49.211) |
| 01:15:04 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 01:15:04 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 01:15:04 | → | wroathe joins (~wroathe@user/wroathe) |
| 01:16:05 | <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?) |
| 01:16:05 | <energizer> | what is the difference between a value and expression in ocaml or nix or whatever? |
| 01:16:26 | <energizer> | er, not nix |
| 01:16:28 | <dons> | you might have some evaluation to do, to get the expression down to a value. |
| 01:16:33 | → | abastro joins (~abab9579@192.249.26.131) |
| 01:16:39 | <dons> | and you can probably do different things with values than expressions |
| 01:17:03 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
| 01:17:04 | <dons> | similarly with values that have unboxed types in haskell. they are a bit more restricted, can't be bottom |
| 01:17:46 | <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 |
| 01:18:34 | <dons> | at least more typed functional languages let you write some knid of type signature for expressions, or values, almost anywhere. |
| 01:19:36 | → | xff0x joins (~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp) |
| 01:20:06 | → | neurocyte8614492 joins (~neurocyte@IP-185238252073.dynamic.medianet-world.de) |
| 01:20:06 | × | neurocyte8614492 quits (~neurocyte@IP-185238252073.dynamic.medianet-world.de) (Changing host) |
| 01:20:06 | → | neurocyte8614492 joins (~neurocyte@user/neurocyte) |
| 01:22:21 | × | neurocyte861449 quits (~neurocyte@user/neurocyte) (Ping timeout: 268 seconds) |
| 01:22:21 | neurocyte8614492 | is now known as neurocyte861449 |
| 01:23:16 | → | frost joins (~frost@user/frost) |
| 01:23:58 | <dons> | we don't really distinguish expressions and commands, but lots of languages do. |
| 01:24:23 | <dons> | other than in the do-notation, which I guess does make syntactic sugar for a particular kind of expression (monadically-typed sones) |
| 01:27:01 | <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. |
| 01:27:32 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 01:27:54 | × | kaph quits (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) (Ping timeout: 268 seconds) |
| 01:28:24 | → | vysn joins (~vysn@user/vysn) |
| 01:30:02 | × | Chai-T-Rex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 01:30:28 | → | Chai-T-Rex joins (~ChaiTRex@user/chaitrex) |
| 01:35:11 | × | yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 246 seconds) |
| 01:36:32 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 01:38:01 | × | Kaipi quits (~Kaiepi@156.34.47.253) (Ping timeout: 248 seconds) |
| 01:38:58 | × | exilepilot quits (~exilepilo@2a00:23c4:ba88:fc01:d059:aa64:8c3f:a223) (Quit: Leaving) |
| 01:39:13 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 01:39:25 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 01:41:13 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds) |
| 01:44:34 | <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} |
| 01:44:51 | → | bezmuth_ joins (~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7) |
| 01:45:01 | × | bezmuth quits (~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7) (Ping timeout: 240 seconds) |
| 01:45:27 | <dons> | yeah |
| 01:45:27 | bezmuth_ | is now known as bezmuth |
| 01:48:44 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 01:53:29 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds) |
| 01:56:01 | ← | danso parts (~danso@danso.ca) () |
| 01:59:58 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 268 seconds) |
| 02:00:57 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 02:01:26 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds) |
| 02:01:34 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 02:05:47 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
| 02:12:59 | × | ubert quits (~Thunderbi@p200300ecdf15881ccd0eab025279bcac.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 02:13:09 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 02:13:16 | → | ubert joins (~Thunderbi@p200300ecdf15885c99f35b3e45127b02.dip0.t-ipconnect.de) |
| 02:17:32 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds) |
| 02:18:52 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 02:19:07 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 02:19:14 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 02:19:29 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 02:19:36 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 02:21:26 | → | redb joins (~nmh@136.49.49.211) |
| 02:26:11 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 02:26:38 | × | ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Remote host closed the connection) |
| 02:28:02 | → | ezzieyguywuf joins (~Unknown@user/ezzieyguywuf) |
| 02:28:05 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 02:30:58 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 272 seconds) |
| 02:31:11 | × | abastro quits (~abab9579@192.249.26.131) (Ping timeout: 246 seconds) |
| 02:31:41 | × | liz quits (~liz@host109-151-125-217.range109-151.btcentralplus.com) (Quit: Lost terminal) |
| 02:35:52 | <jackdk> | Axman6: https://github.com/system-f/fp-course#demonstrate-io-maintains-referential-transparency |
| 02:36:40 | × | ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Remote host closed the connection) |
| 02:37:39 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 02:37:41 | → | ezzieyguywuf joins (~Unknown@user/ezzieyguywuf) |
| 02:37:45 | × | bezmuth quits (~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7) (Ping timeout: 248 seconds) |
| 02:42:22 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds) |
| 02:43:08 | → | redb joins (~nmh@136.49.49.211) |
| 02:43:34 | <abastro[m]> | Tho that is more relevant with pure sharing |
| 02:43:37 | <abastro[m]> | Using pure let |
| 02:48:04 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 268 seconds) |
| 02:48:35 | × | terrorjack quits (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat) |
| 02:49:50 | → | terrorjack joins (~terrorjac@2a01:4f8:1c1e:509a::1) |
| 02:49:52 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 02:54:31 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
| 02:56:36 | <Axman6> | dons: why do you need `Foreign.CPP.Dynamic.parseJSON line`? |
| 02:57:45 | <dons> | that's the folly json parser, bytestring -> Value |
| 02:58:01 | <dons> | tends to be 2-3x more efficient than aeson |
| 02:58:06 | <dons> | though i should probably test that |
| 03:00:00 | <abastro[m]> | Thin layer around C++ json parser? |
| 03:00:15 | <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 |
| 03:00:56 | <dons> | right, ideally here i would not build the intermediate Value from parseJSON, just to build a LSIF KeyFact |
| 03:01:06 | <dons> | stream into the result, fusing the intermediate data away |
| 03:02:05 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 03:02:35 | <abastro[m]> | C++ is faster than Haskell anyway |
| 03:03:22 | <Axman6> | that isn't findamentally true |
| 03:03:26 | <zero> | abastro[m]: can you really say a language is faster than another? |
| 03:03:39 | <Axman6> | (In fact, dons has several blog posts showing that can be untrue) |
| 03:03:57 | <dons> | haha |
| 03:04:12 | <abastro[m]> | I mean, in average it is faster |
| 03:04:27 | <zero> | abastro[m]: what do you mean by average? |
| 03:04:31 | <abastro[m]> | With fastest library of C++ faster than fastest library of Haskell |
| 03:04:32 | <zero> | and what do you mean by faster? |
| 03:04:34 | → | redb joins (~nmh@136.49.49.211) |
| 03:05:21 | <dons> | its often slower if you factor in developer time fixing segfaults as a cost ;) |
| 03:05:33 | <zero> | :) there we go |
| 03:05:57 | <zero> | that is *one* good point |
| 03:07:11 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds) |
| 03:07:41 | <sm> | also for some problems it will be slower to express it in C++ (and for others, vice versa) |
| 03:08:46 | <abastro[m]> | I mean in time taken in runtime |
| 03:09:02 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 268 seconds) |
| 03:09:35 | → | redb joins (~nmh@136.49.49.211) |
| 03:09:55 | <sm> | for simple problems that's typically true, for complicated ones, less so |
| 03:10:12 | <abastro[m]> | So I mean, for simple problems like this, C++ is speedier |
| 03:10:17 | → | cdman joins (~dcm@27.2.216.134) |
| 03:10:17 | × | cdman quits (~dcm@27.2.216.134) (Changing host) |
| 03:10:17 | → | cdman joins (~dcm@user/dmc/x-4369397) |
| 03:10:46 | <sm> | you're not wrong, we're just point out the nuances |
| 03:11:10 | <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. |
| 03:11:12 | <dibblego> | red cars are faster than C++ |
| 03:11:27 | <dons> | i also wouldn't write the rest of it in C++ :} since its all symbolic manipulation stuff |
| 03:11:48 | <dons> | also the service is sensitive to the performance of JSON ingestion |
| 03:11:51 | <dons> | so worth spending a bit of effort |
| 03:11:56 | <dons> | make sensible tradeoffs |
| 03:12:00 | <dons> | be pragmatic |
| 03:12:46 | <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 |
| 03:13:00 | <dons> | lesson here is: don't use json |
| 03:13:13 | <sm> | programming! hurrah! 🎉 |
| 03:13:45 | <dons> | the first mistake was writing programs. that made things slower |
| 03:13:58 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 268 seconds) |
| 03:14:30 | <abastro[m]> | Ye I am just sharing opinion that for simple parts which need performance, thin wrapper around C++ libs would be the best |
| 03:14:31 | sm | spent the last hour bulletproofing a stupid 50 line haskell script |
| 03:14:50 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 03:14:59 | <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. |
| 03:15:42 | <sm> | hurrah! |
| 03:17:17 | <dons> | nice |
| 03:17:51 | <abastro[m]> | Nice exception |
| 03:18:17 | <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. |
| 03:19:14 | <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 |
| 03:19:27 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
| 03:20:36 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 03:22:02 | <abastro[m]> | My dumb brain says to use TCP communication |
| 03:24:22 | <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. |
| 03:24:39 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds) |
| 03:26:36 | <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. |
| 03:27:49 | <sm> | do you need it to be fast ? |
| 03:28:20 | → | Dorkside62 joins (~dorkside@208.190.197.222) |
| 03:28:35 | → | deadmarshal_ joins (~deadmarsh@95.38.112.46) |
| 03:28:41 | × | Dorkside6 quits (~dorkside@208.190.197.222) (Read error: Connection reset by peer) |
| 03:28:41 | Dorkside62 | is now known as Dorkside6 |
| 03:31:29 | <sm> | I guess both haskell and python have FFI that can see the C-ish structures |
| 03:31:38 | <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. |
| 03:33:46 | <abastro[m]> | Wait using TCP is buggy? |
| 03:35:27 | <abastro[m]> | The rock bottom technology underlining the entire internet? |
| 03:35:37 | sm | is shocked |
| 03:35:40 | <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 |
| 03:36:59 | <Henson> | dealing with disconnects and timeouts, and reconnections was unpleasant. |
| 03:38:17 | <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 |
| 03:38:52 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 03:41:04 | → | awpr joins (uid446117@id-446117.lymington.irccloud.com) |
| 03:43:06 | → | redb joins (~nmh@136.49.49.211) |
| 03:43:15 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
| 03:44:45 | <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 |
| 03:46:57 | → | mbuf joins (~Shakthi@122.162.142.187) |
| 03:47:46 | → | [_] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 03:48:14 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 272 seconds) |
| 03:49:18 | → | redb joins (~nmh@136.49.49.211) |
| 03:49:57 | <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! |
| 03:51:08 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 03:51:28 | <monochrom> | Use invisible characters for filenames, too. |
| 03:51:35 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 268 seconds) |
| 03:52:04 | <monochrom> | open(" \n\n \n\n\n", ...) |
| 03:52:07 | <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. |
| 03:52:53 | <Henson> | monochrom: haha, that would be a nasty filename |
| 03:53:52 | <abastro[m]> | Oh, so TCP was too low level for you |
| 03:54:01 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
| 03:54:25 | → | redb joins (~nmh@136.49.49.211) |
| 03:54:58 | <abastro[m]> | Oh, making files is a briliant idea |
| 03:55:07 | <abastro[m]> | Memory-mapped files good |
| 03:55:37 | <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 |
| 03:55:43 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
| 03:56:16 | <Henson> | Axman6++ |
| 03:57:05 | <Henson> | hmm, maybe I'm thinkin of the bot in the #nixos channel. |
| 03:57:09 | <Axman6> | "Fark, did I call the final version "\t\n \t" or "\n\t \t"???" |
| 03:57:20 | <Axman6> | @karma Axman6 |
| 03:57:20 | <lambdabot> | You have a karma of 2 |
| 03:57:24 | <Henson> | Axman6: thanks for the suggestion. |
| 03:57:36 | <Axman6> | Honestyl it was a joke, but it would probably work |
| 03:57:53 | <Henson> | Axman6: well, I think it would work, and it was a good suggestion, even if it was a joke. |
| 03:58:17 | <Axman6> | I think it would work too, particularly if you don't need to persist the data |
| 03:58:33 | <Axman6> | even allows you to have the reading side read data as soon as it's written |
| 03:59:00 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 03:59:07 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
| 03:59:36 | <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) |
| 04:01:08 | × | Ram-Z quits (~Ram-Z@li1814-254.members.linode.com) (Ping timeout: 260 seconds) |
| 04:02:59 | <Axman6> | no time like the present! |
| 04:03:05 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 256 seconds) |
| 04:03:47 | <abastro[m]> | Well tbh using web technology for everything is quite a meme |
| 04:12:46 | × | abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Remote host closed the connection) |
| 04:12:48 | → | Ram-Z joins (~Ram-Z@li1814-254.members.linode.com) |
| 04:15:37 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 04:18:03 | <Axman6> | web technology has also moved much more towards networking technology too though |
| 04:18:38 | × | Henson quits (~kvirc@107-179-133-201.cpe.teksavvy.com) (Quit: thanks for the help!) |
| 04:18:41 | <Axman6> | like WebSockets give you bidirectional sockets |
| 04:20:09 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds) |
| 04:20:44 | × | solrize quits (~solrize@user/solrize) (Remote host closed the connection) |
| 04:22:23 | <Axman6> | @hoogle Optic s s a a -> s -> Maybe a -> s |
| 04:22:23 | <lambdabot> | No results found |
| 04:22:36 | <Axman6> | @hoogle Optic p s s a a -> s -> Maybe a -> s |
| 04:22:37 | <lambdabot> | No results found |
| 04:23:56 | <abastro[m]> | I should totally rename my secret folder into "\n" |
| 04:24:53 | <abastro[m]> | That should make it hard to find |
| 04:25:43 | → | redb joins (~nmh@136.49.49.211) |
| 04:27:52 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 04:29:04 | <Axman6> | @hoogle ASetter' s a -> Maybe a -> s -> s |
| 04:29:05 | <lambdabot> | No results found |
| 04:30:24 | → | benin joins (~benin@183.82.204.110) |
| 04:30:25 | <Axman6> | given how massive lens is, I'm surprised that doesn't exist! |
| 04:30:27 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 260 seconds) |
| 04:30:41 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 04:30:56 | → | redb joins (~nmh@136.49.49.211) |
| 04:31:59 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
| 04:32:25 | <dibblego> | write it |
| 04:32:47 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
| 04:34:23 | <Axman6> | :t let l .~? m = maybe identity (set l) m in (.~?) |
| 04:34:24 | <lambdabot> | error: |
| 04:34:24 | <lambdabot> | • Variable not in scope: identity :: s1 -> t1 |
| 04:34:24 | <lambdabot> | • Perhaps you meant one of these: |
| 04:34:31 | <Axman6> | :t let l .~? m = maybe id (set l) m in (.~?) |
| 04:34:32 | <lambdabot> | ASetter a1 a1 a2 b -> Maybe b -> a1 -> a1 |
| 04:36:08 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 246 seconds) |
| 04:36:43 | <dibblego> | let iWishThisExists = maybe mempty in iWishThisExists . set |
| 04:38:14 | → | redb joins (~nmh@136.49.49.211) |
| 04:38:38 | × | cdman quits (~dcm@user/dmc/x-4369397) (Remote host closed the connection) |
| 04:38:49 | <jackdk> | % :t \setter -> ala Endo foldMap . fmap (set setter) -- Axman6 |
| 04:38:50 | <yahb> | jackdk: (Foldable f, Functor f) => ASetter b b a1 a2 -> f a2 -> b -> b |
| 04:39:35 | → | cdman joins (~dcm@27.2.216.134) |
| 04:39:35 | × | cdman quits (~dcm@27.2.216.134) (Changing host) |
| 04:39:35 | → | cdman joins (~dcm@user/dmc/x-4369397) |
| 04:39:44 | <abastro[m]> | It feels like lens is huge with lots of utilities ppl crave for missing |
| 04:39:54 | <abastro[m]> | But that's just my feeling |
| 04:40:05 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 04:42:26 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 246 seconds) |
| 04:44:23 | → | bahamas joins (~lucian@84.232.140.158) |
| 04:44:32 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds) |
| 04:46:19 | <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: (<<%=) |
| 04:48:17 | <jackdk> | and _this_ is why we allow custom operators - the power of a consistent visual language |
| 04:50:10 | <abastro[m]> | But instead you get the bloat |
| 04:50:20 | <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 |
| 04:51:15 | → | Guest|85 joins (~Guest|85@103.57.84.94) |
| 04:51:27 | → | yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
| 04:52:20 | <jackdk> | lens isn't bloated, half the functions are actually `id` |
| 04:52:21 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 04:52:42 | × | Guest|85 quits (~Guest|85@103.57.84.94) (Client Quit) |
| 04:52:45 | × | Andrew quits (Andrew@user/AndrewYu) (Quit: Leaving) |
| 04:53:22 | <Axman6> | lens is, imo, incredibly elegant, consistent, and solves real problems, that are more relevant the larger your programs become |
| 04:53:33 | → | AndrewYu joins (Andrew@user/AndrewYu) |
| 04:53:37 | → | Kaiepi joins (~Kaiepi@156.34.47.253) |
| 04:54:42 | → | redb joins (~nmh@136.49.49.211) |
| 04:54:46 | <sm> | they say optics is both more usable and more principled though |
| 04:55:21 | <sm> | I should not say "though".. I meant "also" |
| 04:55:43 | <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 |
| 04:56:04 | <Axman6> | to use optics, you need to have it as a dependency of your project as far as I understand it |
| 04:56:21 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 256 seconds) |
| 04:56:46 | <sm> | nod |
| 04:56:57 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds) |
| 04:57:25 | <jackdk> | yes, and first mover advantage - I don't want to fracture the ecosystem so I write lenses |
| 04:57:38 | <sm> | (is that really a problem, in these days of a zillion deps) |
| 04:58:18 | <sm> | I don't recall the recent post where I read about the extra "principledness", but it was interesting |
| 04:58:31 | <abastro[m]> | "Fracturing ecosystem" |
| 04:58:31 | <abastro[m]> | Come on, we already have gazillions of stream libraries |
| 04:58:42 | <abastro[m]> | And MTL/RIO/Effects |
| 04:59:23 | sm | used microlens but deps use lens, some probably use optics too |
| 04:59:45 | <jackdk> | Yeah getting streaming right is not straightforward, but doesn't mean I have to gleefully make a problem worse |
| 05:00:32 | <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 |
| 05:01:29 | <sm> | hmm no, only microlens here now |
| 05:01:58 | <Axman6> | and prisms are half the reason to use lens anyway |
| 05:03:09 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
| 05:03:53 | <sm> | ah, it was this: https://www.brunogavranovic.com/posts/2022-02-10-optics-vs-lenses-operationally.html |
| 05:04:32 | → | lispy joins (~lispy@82.212.112.246) |
| 05:04:37 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 05:04:46 | <sm> | "optics do a better job of modelling the internals" |
| 05:06:47 | <dolio> | I'm not convinced that article's claim makes any sense. |
| 05:06:56 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 246 seconds) |
| 05:08:10 | × | yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 05:08:20 | × | AndrewYu quits (Andrew@user/AndrewYu) (Quit: Leaving) |
| 05:08:44 | → | yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
| 05:09:00 | × | zmt00 quits (~zmt00@user/zmt00) (Quit: Leaving) |
| 05:09:07 | → | AndrewYu joins (Andrew@user/AndrewYu) |
| 05:09:17 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds) |
| 05:09:55 | <sm> | dolio: after reading it ? |
| 05:09:58 | <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#OpticKind |
| 05:10:13 | <dolio> | I skimmed it. |
| 05:10:27 | <sm> | ok, just wondering |
| 05:10:47 | <jackdk> | Axman6: `-XStandaloneKindSignatures` are `-XStandaloneKingSignatures` |
| 05:10:53 | → | zmt00 joins (~zmt00@user/zmt00) |
| 05:10:59 | <dolio> | It appears to be entirely based on defining a "lens" to only mean a pair of functions (s -> a, s -> b -> t). |
| 05:11:11 | <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." |
| 05:11:51 | <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 |
| 05:11:59 | <dolio> | Except people were representing them as `s -> (a, b -> t)` like 10 years ago or something, for the obvious performance reasons. |
| 05:12:26 | <dolio> | 10 is probably underestimating. |
| 05:12:45 | <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 |
| 05:13:34 | <dolio> | And the `b -> t` part can close over any internal state you want. Perfect abstraction. |
| 05:14:09 | <Axman6> | exactly |
| 05:14:13 | × | yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
| 05:15:16 | <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. |
| 05:16:54 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 05:17:11 | <sm> | Axman6 good question, it's probably talking about the abstractions now that you mention it (which the libraries may or may not match) |
| 05:17:28 | <Axman6> | they both have internally the same representation |
| 05:17:32 | → | redb joins (~nmh@136.49.49.211) |
| 05:18:48 | × | [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
| 05:20:01 | AndrewYu | is now known as Andrew |
| 05:20:10 | <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. |
| 05:20:42 | <Axman6> | yeah |
| 05:21:17 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
| 05:21:39 | <Axman6> | yeah it basically looks like that article exactly describes the implementation of both the lens and optics libraries |
| 05:22:33 | <dolio> | I don't think the lens library uses the naive representation, except as a convenient way of defining a lens. |
| 05:22:34 | <Axman6> | optics doesn't have zippers? D: |
| 05:22:59 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
| 05:24:41 | → | chomwitt joins (~chomwitt@2a02:587:dc0e:4f00:e2a4:4df9:d340:7660) |
| 05:29:02 | <Axman6> | admittedly a feature that I haven't had a need for, but it's extremely cool that it does exist in lens |
| 05:29:14 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 05:31:45 | <Axman6> | @hoogle equality |
| 05:31:45 | <lambdabot> | Control.Lens.Combinators equality :: (s :~: a) -> (b :~: t) -> Equality s t a b |
| 05:31:45 | <lambdabot> | Control.Lens.Equality equality :: (s :~: a) -> (b :~: t) -> Equality s t a b |
| 05:31:45 | <lambdabot> | Diagrams.Prelude equality :: () => (s :~: a) -> (b :~: t) -> Equality s t a b |
| 05:33:45 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
| 05:34:31 | <abastro[m]> | I mean, optics give better error messages |
| 05:35:00 | <abastro[m]> | Call me dumb and idiotic and smooth brained, I can never make sense of the lens error messages |
| 05:35:27 | <abastro[m]> | I wish I could just look at lens error messages and see what to fix |
| 05:37:51 | <jackdk> | It's practice, like building up an understanding of any other error message. I agree that it's hard |
| 05:38:22 | × | frost quits (~frost@user/frost) (Quit: Client closed) |
| 05:38:47 | <abastro[m]> | I see, so it is possible |
| 05:39:17 | <abastro[m]> | Tho I think I am indeed too smooth-brained to ever understand it |
| 05:39:21 | <dolio> | I don't think lens errors are likely to be useful. That's the major downside. |
| 05:39:25 | <abastro[m]> | For this kind of me, optics is a godsend |
| 05:39:34 | <dolio> | The only useful part is the line number. |
| 05:39:46 | × | lispy quits (~lispy@82.212.112.246) (Quit: Client closed) |
| 05:40:02 | <abastro[m]> | Haha line number XD |
| 05:41:27 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 05:42:40 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 05:42:42 | <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 |
| 05:42:59 | <jackdk> | I have a friend who learned lens mostly by cranking through optics by example and then moving over to lens |
| 05:43:17 | <abastro[m]> | I also personally feel that using van Laarhoven encoding is alike leaking implementation details |
| 05:43:32 | <abastro[m]> | (While lens do indeed provide more features) |
| 05:43:51 | <Axman6> | sometimes those are useful details though |
| 05:46:17 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds) |
| 05:50:08 | → | coot joins (~coot@213.134.190.95) |
| 05:52:11 | <abastro[m]> | Useful? |
| 05:52:53 | → | michalz joins (~michalz@185.246.204.122) |
| 05:52:56 | → | redb joins (~nmh@136.49.49.211) |
| 05:53:45 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 05:54:09 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 05:56:42 | → | fef joins (~thedawn@user/thedawn) |
| 05:57:33 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
| 05:58:02 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds) |
| 06:01:22 | <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. |
| 06:02:42 | <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. |
| 06:05:07 | → | alp_ joins (~alp@user/alp) |
| 06:05:20 | → | yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
| 06:05:44 | × | FragByte quits (~christian@user/fragbyte) (Quit: Quit) |
| 06:05:57 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 06:06:15 | <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) |
| 06:07:25 | <abastro[m]> | Well tbh theoretical details of lens is quite hard to understand for beginners anyway |
| 06:07:38 | <abastro[m]> | Implementation details, ppl usually gloss over |
| 06:09:31 | <Axman6> | I think lens is easier to use once you understand the implementation details |
| 06:10:17 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds) |
| 06:12:12 | <Axman6> | like, lens is better used if you accept that it just a new way of thinking about things you already know |
| 06:12:21 | → | odnes joins (~odnes@5-203-209-2.pat.nym.cosmote.net) |
| 06:14:02 | → | odnes_ joins (~odnes@5-203-209-2.pat.nym.cosmote.net) |
| 06:14:26 | <abastro[m]> | Easier to use? Eh |
| 06:15:56 | <abastro[m]> | I mean, is it worth the poor error messages |
| 06:16:57 | × | odnes quits (~odnes@5-203-209-2.pat.nym.cosmote.net) (Ping timeout: 248 seconds) |
| 06:18:11 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 06:19:34 | <Axman6> | yes |
| 06:20:08 | <Axman6> | well, an optic library is worth using, trying to work on my current project without lenses would be a nightmare |
| 06:20:19 | <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. |
| 06:20:43 | <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 |
| 06:22:32 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds) |
| 06:24:35 | → | redb joins (~nmh@136.49.49.211) |
| 06:25:27 | → | acidjnk joins (~acidjnk@p200300d0c7049f25b15f97e32406cde6.dip0.t-ipconnect.de) |
| 06:27:28 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 06:27:40 | → | califax joins (~califax@user/califx) |
| 06:28:35 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 06:29:27 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 268 seconds) |
| 06:30:25 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 06:33:04 | × | littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection) |
| 06:33:23 | × | odnes_ quits (~odnes@5-203-209-2.pat.nym.cosmote.net) (Ping timeout: 246 seconds) |
| 06:33:26 | → | littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo) |
| 06:34:07 | → | dyeplexer joins (~dyeplexer@user/dyeplexer) |
| 06:35:05 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds) |
| 06:35:53 | × | yuriy quits (uid548749@id-548749.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 06:36:10 | <boxscape> | Is `Just x <- pure a` the same as `let Just x = y` inside a do block? |
| 06:36:10 | <boxscape> | I'm asking because they seem to do the same thing, but confusingly only the latter warns about incomplete uni-patterns.. |
| 06:36:20 | <boxscape> | I suppose I could just look at the report |
| 06:37:27 | <boxscape> | hm no, report doesn't say that `let` gets desugared with fail |
| 06:39:32 | <boxscape> | guess I should figure out why my program doesn't fail then if I replace <- with let |
| 06:39:47 | → | dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be) |
| 06:41:01 | → | redb joins (~nmh@136.49.49.211) |
| 06:42:39 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 06:45:29 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 268 seconds) |
| 06:47:25 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
| 06:51:05 | → | redb joins (~nmh@136.49.49.211) |
| 06:51:51 | → | MajorBiscuit joins (~MajorBisc@86-88-79-148.fixed.kpn.net) |
| 06:52:51 | → | cfricke joins (~cfricke@user/cfricke) |
| 06:53:22 | → | Major_Biscuit joins (~MajorBisc@c-001-005-034.client.tudelft.eduvpn.nl) |
| 06:54:55 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 06:56:50 | × | MajorBiscuit quits (~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 246 seconds) |
| 07:00:08 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds) |
| 07:03:22 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds) |
| 07:03:26 | → | wildsebastian joins (~wildsebas@2001:470:69fc:105::1:14b1) |
| 07:04:34 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 07:07:08 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 07:11:53 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
| 07:13:24 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 07:15:35 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 07:18:35 | × | Chai-T-Rex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 240 seconds) |
| 07:19:20 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 07:20:52 | <maerwald[m]> | Axman6: did you just say lens is easier than optics for newcomers? |
| 07:20:55 | → | Chai-T-Rex joins (~ChaiTRex@user/chaitrex) |
| 07:21:44 | <dons> | fclabels 4eva |
| 07:22:24 | → | zeenk joins (~zeenk@2a02:2f04:a313:d600:8d26:ec9f:3ff6:fc94) |
| 07:22:55 | × | fockerized quits (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Quit: WeeChat 3.3) |
| 07:24:03 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
| 07:24:12 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:cb75:3834:c1c1:ff4e) |
| 07:27:13 | × | dextaa_54 quits (~dextaa@user/dextaa) (Remote host closed the connection) |
| 07:29:36 | <abastro[m]> | > Axman6: did you just say lens is easier than optics for newcomers? |
| 07:29:37 | <abastro[m]> | >.> |
| 07:29:38 | <lambdabot> | <hint>:1:67: error: |
| 07:29:38 | <lambdabot> | parse error (possibly incorrect indentation or mismatched brackets) |
| 07:30:46 | <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! |
| 07:31:18 | → | Galaxion-tech joins (~Galaxion-@122.162.144.183) |
| 07:31:35 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 07:31:59 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 07:33:00 | → | odnes joins (~odnes@5-203-209-2.pat.nym.cosmote.net) |
| 07:33:40 | × | Galaxion-tech quits (~Galaxion-@122.162.144.183) (Client Quit) |
| 07:35:38 | → | bahamas joins (~lucian@84.232.140.158) |
| 07:36:23 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
| 07:37:03 | <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 |
| 07:40:03 | <Hecate> | yeah this really sucks |
| 07:43:13 | <sm> | yeah it should probably be changed as > is markdown for quotation and increasingly common as a convention in chat |
| 07:43:48 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 07:44:40 | <sm> | (but FYI abastro, try to use element's reply feature sparingly in bridged IRC rooms, it creates too much noise) |
| 07:44:48 | <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 |
| 07:45:01 | <dminuoso> | That is a weird proposition |
| 07:45:13 | <Hecate> | eh, we already do this for Haskell :-P |
| 07:45:45 | <dminuoso> | Well, if something requires intricate understanding of the internals to use, then it's not necessarily a good abstraction. |
| 07:45:59 | <dminuoso> | For example, I dont want to know how GHC works internally to appreciate Haskell. |
| 07:48:09 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds) |
| 07:49:11 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 256 seconds) |
| 07:49:16 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 07:49:37 | <Hecate> | not everything is an abstraction either! |
| 07:49:45 | × | dminuoso quits (~dminuoso@static.88-198-218-68.clients.your-server.de) (Changing host) |
| 07:49:45 | → | dminuoso joins (~dminuoso@user/dminuoso) |
| 07:54:07 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 07:54:23 | × | pooryorick quits (~pooryoric@87-119-174-173.tll.elisa.ee) (Ping timeout: 260 seconds) |
| 07:54:58 | → | pooryorick joins (~pooryoric@87-119-174-173.tll.elisa.ee) |
| 07:56:22 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 07:57:32 | → | mikoto-chan joins (~mikoto-ch@213.177.151.239) |
| 08:00:12 | → | mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 08:00:57 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds) |
| 08:01:14 | <abastro[m]> | Meh I see, IRC from matrix is so hard |
| 08:02:28 | <abastro[m]> | If lens is not an abstraction, what is it? |
| 08:02:34 | <[exa]> | abastro[m]: liberate yourself from convenient interfaces, telnet here |
| 08:02:59 | <abastro[m]> | I'm on mobile |
| 08:03:20 | <[exa]> | ay. |
| 08:03:37 | <abastro[m]> | Is lens poor man's nested record modification? |
| 08:04:08 | <[exa]> | no |
| 08:04:15 | × | littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds) |
| 08:04:23 | <[exa]> | lens is a package, full of materialized affine traversals and their specializations |
| 08:04:41 | <sm> | you're not really using telnet are you |
| 08:04:41 | <abastro[m]> | Then what is it, if it is not an abstraction? |
| 08:05:06 | → | ccntrq joins (~Thunderbi@2a01:e34:eccb:b060:ba9d:69d8:b4f8:4092) |
| 08:05:31 | <[exa]> | abastro[m]: perhaps a "common composable interface for doing stuff on parts on structures"? |
| 08:05:53 | <[exa]> | sm: not really but pretty close :] |
| 08:06:28 | <abastro[m]> | Composable Interface, imho that implies abstraction tbh |
| 08:06:28 | → | littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo) |
| 08:07:11 | → | DNH joins (~DNH@2a02:8108:1100:16d8:c8af:4307:df41:9668) |
| 08:08:17 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 08:08:47 | <[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) |
| 08:09:12 | → | x_kuru joins (xkuru@user/xkuru) |
| 08:09:43 | <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 |
| 08:10:08 | → | mncheck joins (~mncheck@193.224.205.254) |
| 08:10:26 | <tdammers> | if you think of lenses as "a getter/setter pair", then the van Laarhoven implementation seems like it only works by strange coincidence |
| 08:10:32 | <abastro[m]> | I mean, while function type looks concrete, it is an abstraction after all. |
| 08:10:33 | × | mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 248 seconds) |
| 08:10:55 | <tdammers> | it is, and it isn't |
| 08:10:57 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 08:11:15 | → | x_kuru_ joins (~xkuru@user/xkuru) |
| 08:11:19 | <abastro[m]> | van Laarhoven implementation looks like mathematical incidence to me |
| 08:11:37 | <abastro[m]> | And in the end, with lens there is a problem of: "What is the point of all this?" |
| 08:11:56 | <[exa]> | did you try traversals? |
| 08:12:23 | <abastro[m]> | Ofc I did, I see that Lens generalizes to Traversals as well |
| 08:12:38 | <abastro[m]> | But for library users, it could better be implementation details |
| 08:12:46 | → | mikoto-chan joins (~mikoto-ch@213.177.151.239) |
| 08:12:58 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds) |
| 08:13:03 | <abastro[m]> | Also you could easily explain how getter/setter pair could be used for a traversal as well |
| 08:13:08 | × | xkuru quits (~xkuru@user/xkuru) (Ping timeout: 260 seconds) |
| 08:13:30 | → | dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net) |
| 08:14:54 | × | x_kuru quits (xkuru@user/xkuru) (Ping timeout: 268 seconds) |
| 08:14:58 | <[exa]> | abastro[m]: then I probably don't get your question. Maybe we feel differently about what qualifies as an abstraction |
| 08:15:01 | <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?" |
| 08:15:36 | → | jgeerds joins (~jgeerds@d5364b87.access.ecotel.net) |
| 08:15:57 | <abastro[m]> | "What abstraction means" is terminology after all. |
| 08:16:53 | <[exa]> | yeah, still I tend to avoid this "hide the complex-looking ___ in a box" meaning |
| 08:17:25 | <abastro[m]> | Hmm, interesting. Yea, that is how I was taught what abstraction is |
| 08:17:45 | <[exa]> | I prefer saying encapsulation |
| 08:17:57 | <abastro[m]> | The outsiders seem to get the impression that haskellers are masochists from these parts, where we do things in seemingly overcomplicated way |
| 08:18:01 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 248 seconds) |
| 08:18:33 | <abastro[m]> | So I think it is good to meticulously reason about the *why* part |
| 08:19:02 | <abastro[m]> | If it was just because of nice mathematical property.. that's going to veer towards masochism |
| 08:19:28 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 08:20:06 | → | CiaoSen joins (~Jura@p200300c9572d40002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 08:21:07 | <[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 |
| 08:21:37 | <Franciman> | wise words [exa] |
| 08:21:58 | <[exa]> | first guess tbh |
| 08:21:59 | <Franciman> | congrats to the haskell community for getting delconts (almost, since the MR must still be merged) |
| 08:22:07 | <Franciman> | what are you planning to do with them? |
| 08:22:24 | <[exa]> | delconts as in "delimited continuations" I guess? :D |
| 08:22:28 | × | jgeerds quits (~jgeerds@d5364b87.access.ecotel.net) (Ping timeout: 272 seconds) |
| 08:22:29 | <Franciman> | yep |
| 08:22:36 | <Franciman> | sorry my morning feel is LAZYNESS |
| 08:22:40 | <Franciman> | you should understand it right? |
| 08:22:51 | <abastro[m]> | [exa]: I see that point, tho I don't get the reason to not encapsulate the composition details |
| 08:23:47 | <[exa]> | Franciman: same here tbh, atmospheric pressure too low for thinking :D |
| 08:24:03 | <[exa]> | abastro[m]: so that people may tinker with it easily? |
| 08:24:17 | <abastro[m]> | Delimited continuation is in? So we can have native Cont monad I guess |
| 08:24:29 | <abastro[m]> | Tinker with implementation details? Ehh |
| 08:25:39 | <Franciman> | abastro[m]: no not yet, but https://gitlab.haskell.org/ghc/ghc/-/merge_requests/7942#5e75a5cad76eb00a51db49bf823e85050009544e |
| 08:26:27 | <abastro[m]> | I see, I legit thought it wasn't going forward and bam! It is here |
| 08:26:40 | <abastro[m]> | So lexi actually got time to write it down I guess? |
| 08:27:07 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.4.1) |
| 08:27:12 | <abastro[m]> | Btw regarding lens & tinkering, this is where ppl get the masochist feel, haskellers seem to like to mess with complex type internals |
| 08:27:38 | <lexi-lambda> | well, someone decided they were willing to pay me to finish it it :) |
| 08:27:39 | <[exa]> | abastro[m]: the "masochist" feeling means "having a bit of control if something goes awry" for others |
| 08:29:01 | <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 |
| 08:29:31 | × | bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 08:29:39 | <tdammers> | you see an abstraction opportunity, you grab it, you run with it, and then you try out how far you can take it |
| 08:30:12 | <[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 |
| 08:30:52 | → | dcoutts_ joins (~duncan@host213-122-143-81.range213-122.btcentralplus.com) |
| 08:31:08 | <tdammers> | we still put complex things in boxes, it's just that the boxes aren't usually object-shaped |
| 08:31:34 | → | Pickchea joins (~private@user/pickchea) |
| 08:32:36 | <[exa]> | actually, looking at it from the point of lambda calculi, lens type _is_ a type-level abstraction, it's got the forall there :] |
| 08:32:43 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 08:35:06 | <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 |
| 08:37:01 | <[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) |
| 08:37:27 | <[exa]> | (probably just needs to be reposted a few times on reddit or so :D) |
| 08:37:34 | <lexi-lambda> | not sure I understand what you mean |
| 08:37:38 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
| 08:38:20 | × | mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 268 seconds) |
| 08:39:42 | × | DNH quits (~DNH@2a02:8108:1100:16d8:c8af:4307:df41:9668) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 08:42:45 | <Franciman> | lexi-lambda: well, maybe they could be used to simplify exceptions semantics |
| 08:43:28 | <lexi-lambda> | in what sense? |
| 08:43:40 | <Franciman> | you can implement try-catch with delconts |
| 08:43:52 | <lexi-lambda> | sure, but the semantics is identical |
| 08:43:53 | <Franciman> | and to my inferior brain delconts semantics is a tad easier to model |
| 08:44:08 | <Franciman> | not in the presence of multiple threads! |
| 08:44:23 | <lexi-lambda> | I don’t understand—both exceptions and delconts are single-thread phenomena |
| 08:44:53 | <Franciman> | aren't async exceptions a problem? |
| 08:44:55 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 08:45:25 | <lexi-lambda> | async exceptions are orthogonal to the semantics of exceptions within a given thread, mostly |
| 08:45:38 | <Franciman> | i see |
| 08:46:03 | × | yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 08:46:05 | <lexi-lambda> | async exceptions just allow an interrupt between any given reduction step for which interrupts are not masked |
| 08:46:22 | <lexi-lambda> | and async exceptions are generally a Good Thing |
| 08:46:30 | → | FragByte joins (~christian@user/fragbyte) |
| 08:47:11 | → | yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
| 08:47:39 | <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) |
| 08:48:14 | Franciman | confusedly nods |
| 08:48:28 | <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 |
| 08:48:46 | <lexi-lambda> | err, independent of the RTS implementation of delconts, I mean |
| 08:48:47 | <lexi-lambda> | lol |
| 08:48:50 | × | zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection) |
| 08:48:54 | <Franciman> | delconts don't make sense in pure code ~~~? |
| 08:48:59 | <Franciman> | sure |
| 08:49:12 | → | frost joins (~frost@user/frost) |
| 08:49:21 | <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 |
| 08:49:48 | <lexi-lambda> | they can still exist in code for which evaluation order is only *locally* well-defined, in the ST monad sense |
| 08:49:49 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
| 08:50:34 | <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 |
| 08:50:37 | → | dschremp1 joins (~dominik@070-207.dynamic.dsl.fonira.net) |
| 08:51:04 | <lexi-lambda> | whereas RTS exceptions can be raised arbitrarily in pure evaluation (for better or for worse) |
| 08:51:42 | <Franciman> | if they have the same semantics |
| 08:51:45 | <Franciman> | how is this possible? |
| 08:51:54 | × | dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 268 seconds) |
| 08:52:07 | <lexi-lambda> | well, exceptions are a more restricted case of delconts, but those restrictions are relevant here |
| 08:52:13 | <Franciman> | ah ahh okko |
| 08:52:15 | <Franciman> | makes sense |
| 08:52:20 | × | mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 246 seconds) |
| 08:52:31 | × | yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
| 08:52:51 | <Franciman> | so monads are basically imposing a cps to your code |
| 08:52:59 | <Franciman> | in fact, |
| 08:53:02 | <Franciman> | :t (>>=) |
| 08:53:03 | <lambdabot> | Monad m => m a -> (a -> m b) -> m b |
| 08:53:05 | <Franciman> | is cps |
| 08:53:12 | <lexi-lambda> | yes, indeed, it’s a very literal correspondence |
| 08:54:13 | → | azimut_ joins (~azimut@gateway/tor-sasl/azimut) |
| 08:54:35 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds) |
| 08:54:44 | <Franciman> | thanks lexi-lambda it's clear now |
| 08:55:10 | <Franciman> | so far the "only" usecase i found for delconts is implementing effect systems |
| 08:55:13 | <Franciman> | and type safe print! |
| 08:55:17 | <Franciman> | type safe print is very nice lol |
| 08:55:25 | <lexi-lambda> | type safe print? |
| 08:55:30 | <abastro[m]> | [exa]: Eh, I doubt that type scaffolding helps you that much. It still requires quite a bit of cognitive overhead |
| 08:55:53 | <Franciman> | 1seq |
| 08:56:09 | <[exa]> | abastro[m]: it yells at me when I try to mess it up, I'm happy |
| 08:56:14 | <lexi-lambda> | but yes, I would say that, in a sense, effect systems are primarily a more structured, more typed interface to delimited continuations |
| 08:56:45 | <abastro[m]> | Well it yells when you mess up, but it is still hard to know which way to go for right |
| 08:57:01 | <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 |
| 08:57:05 | <abastro[m]> | I wonder if with delcont we could have native Cont monad |
| 08:57:21 | <lexi-lambda> | yes, but not ContT |
| 08:57:28 | <lexi-lambda> | which makes it somewhat less useful |
| 08:57:29 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 08:57:33 | <abastro[m]> | Cont monad which provides efficient delimited continuation |
| 08:57:38 | <abastro[m]> | Oh no why mot ContT? |
| 08:57:46 | <Franciman> | lexi-lambda: https://okmij.org/ftp/continuations/implementations.html#genuine-shift |
| 08:57:50 | <abastro[m]> | s/mot/not |
| 08:57:59 | <lexi-lambda> | abastro[m]: the same reason you can’t have IOT/STT |
| 08:58:11 | <abastro[m]> | Wow thanks |
| 08:58:25 | <abastro[m]> | So straightforwardly put |
| 08:58:39 | <abastro[m]> | Tbh ContT is a bit messy, isn't it? |
| 08:59:03 | <abastro[m]> | IIRC `ContT m` is always monad whatever m is |
| 08:59:58 | <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 |
| 09:00:23 | <abastro[m]> | Hmm |
| 09:00:27 | <abastro[m]> | What about Monad itself |
| 09:00:47 | <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 |
| 09:01:14 | <lexi-lambda> | I’m not sure what you mean by “what about Monad itself”—what about it? |
| 09:01:26 | → | mikoto-chan joins (~mikoto-ch@213.177.151.239) |
| 09:01:36 | <lexi-lambda> | ContT is a perfectly well-behaved monad transformer in the sense that it is always a monad when applied to a monad |
| 09:02:17 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
| 09:02:21 | <abastro[m]> | Well, it also makes a monad when given any m |
| 09:02:35 | <lexi-lambda> | sure |
| 09:03:44 | → | DNH joins (~DNH@2a02:8108:1100:16d8:c8af:4307:df41:9668) |
| 09:06:17 | → | mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 09:06:21 | <lexi-lambda> | I guess for that reason you could, strictly speaking, have native ContT, just not native CCT (from CC-delcont) |
| 09:06:41 | <lexi-lambda> | but I’m not sure how useful it would be, regardless |
| 09:06:43 | × | asocialblade quits (~qsl@user/asocialblade) (Ping timeout: 260 seconds) |
| 09:07:23 | → | yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
| 09:09:41 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 09:09:42 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 09:11:24 | × | mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 240 seconds) |
| 09:11:38 | → | kaph joins (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) |
| 09:14:06 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 245 seconds) |
| 09:15:13 | × | odnes quits (~odnes@5-203-209-2.pat.nym.cosmote.net) (Remote host closed the connection) |
| 09:15:34 | → | odnes joins (~odnes@5-203-209-2.pat.nym.cosmote.net) |
| 09:15:37 | → | Inst joins (~Liam@2601:6c4:4080:3f80:88f1:8b95:b5a0:872d) |
| 09:16:40 | × | shriekingnoise quits (~shrieking@201.231.16.156) (Quit: Quit) |
| 09:20:11 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 09:22:26 | <Franciman> | delimited continuations can also be used to implement call by need evaluation |
| 09:22:31 | <Franciman> | in a cbv environment |
| 09:23:31 | <Franciman> | and maybe a better macro system too |
| 09:23:36 | <Franciman> | but i don't know how |
| 09:24:41 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 248 seconds) |
| 09:28:53 | <maerwald[m]> | Isn't the man point eff? |
| 09:29:06 | <lexi-lambda> | in theory, yes |
| 09:29:26 | <maerwald[m]> | How's that going? |
| 09:29:45 | <lexi-lambda> | there are still open questions about eff’s semantics in some tricky cases that I don’t yet have answers for |
| 09:30:52 | <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 |
| 09:31:58 | <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 |
| 09:33:49 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 09:36:51 | × | m1dnight quits (~christoph@78-22-9-5.access.telenet.be) (Quit: WeeChat 3.5) |
| 09:37:30 | → | m1dnight joins (~christoph@78-22-9-5.access.telenet.be) |
| 09:38:18 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
| 09:42:07 | → | _dmc_ joins (~dcm@user/dmc/x-4369397) |
| 09:42:55 | × | cdman quits (~dcm@user/dmc/x-4369397) (Ping timeout: 272 seconds) |
| 09:46:01 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 09:46:28 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 09:48:01 | → | cdman joins (~dcm@user/dmc/x-4369397) |
| 09:48:45 | × | _dmc_ quits (~dcm@user/dmc/x-4369397) (Ping timeout: 256 seconds) |
| 09:49:47 | → | coot joins (~coot@213.134.190.95) |
| 09:50:27 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
| 09:52:49 | × | raym quits (~raym@user/raym) (Quit: Failed to initialize NVML: Driver/library version mismatch) |
| 09:54:49 | → | kaph_ joins (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) |
| 09:55:13 | → | raym joins (~raym@user/raym) |
| 09:56:02 | × | CiaoSen quits (~Jura@p200300c9572d40002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
| 09:57:13 | × | kaph quits (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) (Ping timeout: 248 seconds) |
| 09:58:13 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 09:58:44 | → | cfricke joins (~cfricke@user/cfricke) |
| 10:00:58 | × | kaph_ quits (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) (Ping timeout: 268 seconds) |
| 10:02:55 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
| 10:08:08 | → | zaquest joins (~notzaques@5.130.79.72) |
| 10:10:26 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 10:14:49 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
| 10:16:28 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 272 seconds) |
| 10:18:14 | × | xff0x quits (~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp) (Ping timeout: 268 seconds) |
| 10:18:33 | × | deadmarshal_ quits (~deadmarsh@95.38.112.46) (Ping timeout: 248 seconds) |
| 10:22:39 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 10:23:49 | × | Inst quits (~Liam@2601:6c4:4080:3f80:88f1:8b95:b5a0:872d) (Ping timeout: 240 seconds) |
| 10:23:49 | × | yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 10:24:23 | → | yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
| 10:27:29 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds) |
| 10:30:42 | × | haskl quits (~haskl@user/haskl) (Read error: Connection reset by peer) |
| 10:33:07 | → | haskl joins (~haskl@user/haskl) |
| 10:33:29 | × | mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 248 seconds) |
| 10:34:16 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 268 seconds) |
| 10:34:53 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 10:34:58 | × | dschremp1 quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.4.1) |
| 10:36:09 | → | __monty__ joins (~toonn@user/toonn) |
| 10:37:32 | → | gurkenglas joins (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) |
| 10:38:19 | → | Inst joins (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) |
| 10:39:33 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds) |
| 10:39:42 | → | ub joins (~Thunderbi@p200300ecdf15885c0dce6310edc9e9e7.dip0.t-ipconnect.de) |
| 10:39:54 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds) |
| 10:40:26 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 10:41:14 | × | ub quits (~Thunderbi@p200300ecdf15885c0dce6310edc9e9e7.dip0.t-ipconnect.de) (Client Quit) |
| 10:44:33 | → | redb joins (~nmh@136.49.49.211) |
| 10:44:41 | × | Inst quits (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 246 seconds) |
| 10:45:21 | → | mikoto-chan joins (~mikoto-ch@213.177.151.239) |
| 10:45:46 | → | akegalj joins (~akegalj@93.140.126.69) |
| 10:46:09 | → | bahamas joins (~lucian@84.232.140.158) |
| 10:46:55 | → | boxscape_ joins (~boxscape_@p4ff0b7be.dip0.t-ipconnect.de) |
| 10:47:05 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 10:48:09 | <boxscape_> | Is there an explanation somewhere of Data.Data's gmapMo and gmapMp? |
| 10:48:36 | → | _dmc_ joins (~dcm@27.2.216.134) |
| 10:48:36 | × | _dmc_ quits (~dcm@27.2.216.134) (Changing host) |
| 10:48:36 | → | _dmc_ joins (~dcm@user/dmc/x-4369397) |
| 10:48:57 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 248 seconds) |
| 10:49:23 | × | cdman quits (~dcm@user/dmc/x-4369397) (Ping timeout: 256 seconds) |
| 10:49:39 | × | _dmc_ quits (~dcm@user/dmc/x-4369397) (Max SendQ exceeded) |
| 10:50:21 | → | _dmc_ joins (~dcm@user/dmc/x-4369397) |
| 10:51:20 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds) |
| 10:51:33 | → | deadmarshal_ joins (~deadmarsh@95.38.112.46) |
| 10:55:53 | × | deadmarshal_ quits (~deadmarsh@95.38.112.46) (Ping timeout: 246 seconds) |
| 10:56:22 | <lortabac> | boxscape_: maybe this blog post talks about them, I don't remember https://chrisdone.com/posts/data-typeable/ |
| 10:56:46 | <boxscape_> | doesn't look like it unfortunately but could still be helpful, thanks |
| 10:58:32 | → | Macbethwin joins (~chargen@D964062A.static.ziggozakelijk.nl) |
| 10:59:19 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 10:59:29 | → | xff0x joins (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) |
| 11:01:21 | Macbethwin | is now known as rttixian |
| 11:02:29 | → | Guest89 joins (~Guest89@2a01:41e1:440f:2c00:f9ba:f616:34ce:27bb) |
| 11:03:32 | → | odnes_ joins (~odnes@5-203-246-201.pat.nym.cosmote.net) |
| 11:04:03 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
| 11:04:26 | × | odnes quits (~odnes@5-203-209-2.pat.nym.cosmote.net) (Read error: Connection reset by peer) |
| 11:04:47 | → | mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 11:09:47 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 256 seconds) |
| 11:11:31 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 11:12:13 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 11:13:08 | → | Midjak joins (~Midjak@10.233.130.77.rev.sfr.net) |
| 11:14:03 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 11:15:59 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
| 11:19:35 | → | redb joins (~nmh@136.49.49.211) |
| 11:22:36 | → | shriekingnoise joins (~shrieking@201.231.16.156) |
| 11:24:09 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 248 seconds) |
| 11:33:15 | × | cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 260 seconds) |
| 11:33:27 | → | chddr joins (~Thunderbi@91.226.35.164) |
| 11:33:32 | → | ub joins (~Thunderbi@p200300ecdf15885c0dce6310edc9e9e7.dip0.t-ipconnect.de) |
| 11:33:32 | × | ub quits (~Thunderbi@p200300ecdf15885c0dce6310edc9e9e7.dip0.t-ipconnect.de) (Client Quit) |
| 11:36:33 | × | hololeap_ quits (~hololeap@user/hololeap) (Remote host closed the connection) |
| 11:36:41 | → | hololeap joins (~hololeap@user/hololeap) |
| 11:37:28 | → | redb joins (~nmh@136.49.49.211) |
| 11:39:31 | <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 |
| 11:40:24 | <merijn> | chddr: I don't think so, but defining your own instance for a newtype should be trivial |
| 11:40:40 | <merijn> | chddr: Also, let me introduce you to your friend: The monoid instance of Ordering :p |
| 11:40:47 | <merijn> | :t orderBy |
| 11:40:48 | <lambdabot> | error: Variable not in scope: orderBy |
| 11:40:55 | <merijn> | eh, wait |
| 11:41:02 | <merijn> | :t sortBy |
| 11:41:03 | <lambdabot> | (a -> a -> Ordering) -> [a] -> [a] |
| 11:41:09 | <merijn> | :t comparing |
| 11:41:10 | <lambdabot> | Ord a => (b -> a) -> b -> b -> Ordering |
| 11:41:45 | <chddr> | merijn: Yep, just thought there might be a clever way to avoid writing it entirely :) |
| 11:41:46 | <merijn> | > sortBy (comparing snd <> comparing fst) $ zip [5,4..1] [1..5] |
| 11:41:48 | <lambdabot> | [(5,1),(4,2),(3,3),(2,4),(1,5)] |
| 11:42:09 | <sm> | neat, I had not discovered that |
| 11:42:23 | <merijn> | chddr: Basically, the monoid on Ordering prefers the left-most non-EQ value |
| 11:42:32 | <boxscape_> | > sortBy (comparing swap) $ zip [5,4..1] [1..5] |
| 11:42:33 | <lambdabot> | [(5,1),(4,2),(3,3),(2,4),(1,5)] |
| 11:42:46 | <merijn> | boxscape_: Mine is more generically useful, though :p |
| 11:42:49 | <boxscape_> | that is true |
| 11:43:01 | <merijn> | Since you can compose arbitrary complex sub-orderings |
| 11:43:11 | <boxscape_> | (and my version should have used sortOn) |
| 11:43:51 | <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 |
| 11:44:58 | <chddr> | impressive... |
| 11:45:05 | <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 |
| 11:45:30 | <merijn> | Also of note here is: Down |
| 11:46:07 | <merijn> | Which is a newtype using a flipped comparison |
| 11:46:12 | <merijn> | > sortOn Down [1..5] |
| 11:46:14 | <lambdabot> | [5,4,3,2,1] |
| 11:46:36 | <merijn> | And semi-relatedly Dual (which is a newtype for Monoid with flipped mappend |
| 11:46:46 | <merijn> | > [1..5] <> [6..10] |
| 11:46:47 | <lambdabot> | [1,2,3,4,5,6,7,8,9,10] |
| 11:46:51 | <merijn> | > Dual [1..5] <> Dual [6..10] |
| 11:46:53 | <lambdabot> | Dual {getDual = [6,7,8,9,10,1,2,3,4,5]} |
| 11:50:35 | <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 |
| 11:51:09 | <merijn> | Monoid instance of functions and monoid on Ordering are two of my favourite monoids :) |
| 11:52:17 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 256 seconds) |
| 11:54:47 | <hpc> | my favorite monoid is in the category of endofunctors :D |
| 11:55:15 | × | fef quits (~thedawn@user/thedawn) (Ping timeout: 240 seconds) |
| 11:56:25 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 11:56:33 | × | acidjnk quits (~acidjnk@p200300d0c7049f25b15f97e32406cde6.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 11:56:47 | × | cfricke quits (~cfricke@user/cfricke) (Ping timeout: 246 seconds) |
| 12:00:24 | × | wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Remote host closed the connection) |
| 12:01:21 | → | wyrd joins (~wyrd@gateway/tor-sasl/wyrd) |
| 12:01:36 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 272 seconds) |
| 12:01:55 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
| 12:02:41 | → | Pickchea joins (~private@user/pickchea) |
| 12:04:01 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 12:04:44 | → | toulene joins (~toulene@user/toulene) |
| 12:09:46 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 12:11:53 | × | bw quits (sid2730@user/betawaffle) (Ping timeout: 256 seconds) |
| 12:12:05 | <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 |
| 12:14:01 | → | kaph_ joins (~kaph@151.68.121.66) |
| 12:14:47 | → | bahamas joins (~lucian@84.232.140.158) |
| 12:14:56 | × | x_kuru_ quits (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
| 12:15:35 | <hpc> | if you think about it, that's basically the same way ghc knows how GADTs work |
| 12:15:42 | <boxscape_> | yeah, that's true |
| 12:15:44 | <hpc> | so i bet you could get a pretty nice implementation of that feature fairly easily |
| 12:15:58 | <boxscape_> | however, it doesn't seem to ever warn about x.a, even if x is B :( |
| 12:16:08 | <hpc> | :( |
| 12:16:09 | → | bw joins (sid2730@user/betawaffle) |
| 12:16:27 | <boxscape_> | time to open another GHC issue I guess |
| 12:21:56 | <boxscape_> | never mind, already exists https://gitlab.haskell.org/ghc/ghc/-/issues/18650 |
| 12:22:49 | × | _dmc_ quits (~dcm@user/dmc/x-4369397) (Ping timeout: 248 seconds) |
| 12:27:13 | → | cdman joins (~dcm@user/dmc/x-4369397) |
| 12:28:42 | → | abastro joins (~abab9579@220.75.216.63) |
| 12:28:54 | × | abastro quits (~abab9579@220.75.216.63) (Remote host closed the connection) |
| 12:29:10 | → | abastro joins (~abab9579@220.75.216.63) |
| 12:29:20 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds) |
| 12:30:40 | → | redb joins (~nmh@136.49.49.211) |
| 12:31:23 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 12:34:56 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 246 seconds) |
| 12:40:35 | → | cfricke joins (~cfricke@user/cfricke) |
| 12:40:50 | <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 |
| 12:41:33 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 12:44:29 | → | deadmarshal_ joins (~deadmarsh@95.38.112.46) |
| 12:46:03 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
| 12:46:34 | × | mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 272 seconds) |
| 12:47:43 | × | yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 12:48:19 | → | yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
| 12:49:38 | × | elkcl quits (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (Ping timeout: 246 seconds) |
| 12:50:20 | → | bontaq joins (~user@ool-45779fe5.dyn.optonline.net) |
| 12:50:39 | × | kaph_ quits (~kaph@151.68.121.66) (Ping timeout: 256 seconds) |
| 12:51:36 | → | redb joins (~nmh@136.49.49.211) |
| 12:53:07 | × | immae quits (~immae@2a01:4f8:141:53e7::) (Quit: WeeChat 3.3) |
| 12:54:21 | → | immae joins (~immae@2a01:4f8:141:53e7::) |
| 12:55:56 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 246 seconds) |
| 12:57:20 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 272 seconds) |
| 12:58:03 | → | fef joins (~thedawn@user/thedawn) |
| 13:01:53 | → | elkcl joins (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) |
| 13:03:43 | → | doyougnu joins (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) |
| 13:06:44 | <abastro> | Wow is it hard to add extension to compile a dependency? |
| 13:07:44 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 13:12:01 | → | redb joins (~nmh@136.49.49.211) |
| 13:12:23 | <boxscape_> | abastro could be just me but it's not clear to me what you're asking |
| 13:13:26 | <merijn> | boxscape_: You can't safely used record accessors with sumtypes, no |
| 13:14:10 | <merijn> | Which is why -XNoFieldSelectors is so great |
| 13:14:27 | <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 |
| 13:14:28 | <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`? |
| 13:14:49 | <boxscape_> | merijn but you still have the same problem if you want to use -XNoFieldSelectors with OverloadedRecordDot. Though resolving 18650 would fix that |
| 13:15:23 | <merijn> | boxscape_: I think OverloadedRecordDot is an absolute atrocity, so I have no sympathy for it blowing up in people's faces :) |
| 13:15:30 | <boxscape_> | fair enough |
| 13:15:49 | <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 |
| 13:16:13 | <merijn> | boxscape_: In most of those cases just using regular record syntax would just fine too, though? |
| 13:16:25 | <boxscape_> | merijn I like OverloadedRecordDot better though |
| 13:16:41 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 248 seconds) |
| 13:16:46 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 13:16:54 | <merijn> | It turns the grammar into a confusing, contextual nightmare |
| 13:17:01 | × | BlackboardN quits (~Blackboar@user/BlackboardN) (Ping timeout: 245 seconds) |
| 13:17:30 | <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. |
| 13:17:47 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 260 seconds) |
| 13:18:08 | <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 |
| 13:18:39 | <merijn> | spaces around operators would have solved the whole stupid unary vs binary minus problem too |
| 13:18:53 | <boxscape_> | I put spaces around all my operators anyway so I don't find it that confusing in my own code, at least |
| 13:19:41 | <merijn> | boxscape_: So do I, but the grammar has to handle cases where that's not true |
| 13:20:10 | <boxscape_> | yeah but the complexity in the compiler exists whether I enable the extension or not :) |
| 13:20:48 | <merijn> | boxscape_: The extension makes it ambiguous what "foo.bar" means for anyone reading your code, though |
| 13:21:02 | <merijn> | 'cause the reader cannot assume you consistently space operators |
| 13:22:18 | <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. |
| 13:23:19 | <boxscape_> | I would be inclined to believe that people a priori tend to assume that compose (.) will have spaces around it |
| 13:23:42 | <merijn> | boxscape_: I've seen *a lot* of haskell without spaces for composition |
| 13:23:53 | <boxscape_> | hm, fair enough |
| 13:23:57 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 13:28:28 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.4.1) |
| 13:28:31 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
| 13:29:21 | × | cdman quits (~dcm@user/dmc/x-4369397) (Quit: Leaving) |
| 13:31:33 | → | cdman joins (~dcm@user/dmc/x-4369397) |
| 13:32:42 | → | bahamas joins (~lucian@84.232.140.158) |
| 13:36:25 | × | cdman quits (~dcm@user/dmc/x-4369397) (Client Quit) |
| 13:37:14 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 246 seconds) |
| 13:39:42 | × | yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 13:40:16 | → | yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
| 13:42:29 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 13:42:29 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 13:42:29 | → | wroathe joins (~wroathe@user/wroathe) |
| 13:43:32 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 246 seconds) |
| 13:43:54 | → | cosimone joins (~user@93-47-228-79.ip115.fastwebnet.it) |
| 13:44:24 | → | bezmuth joins (~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7) |
| 13:45:31 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 13:45:54 | → | redb joins (~nmh@136.49.49.211) |
| 13:47:23 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 246 seconds) |
| 13:48:24 | → | ub joins (~Thunderbi@p200300ecdf15885c0dce6310edc9e9e7.dip0.t-ipconnect.de) |
| 13:48:29 | × | ub quits (~Thunderbi@p200300ecdf15885c0dce6310edc9e9e7.dip0.t-ipconnect.de) (Client Quit) |
| 13:50:32 | <abastro> | Yea my question was quite vague, boxscape_ |
| 13:50:32 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 272 seconds) |
| 13:50:45 | <abastro> | Anyway I forked the repo to solve it |
| 13:53:03 | → | CiaoSen joins (~Jura@p200300c9572d40002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 13:55:28 | × | yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 13:55:33 | → | odnes__ joins (~odnes@5-203-246-201.pat.nym.cosmote.net) |
| 13:56:07 | → | yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
| 13:57:13 | × | alp_ quits (~alp@user/alp) (Ping timeout: 248 seconds) |
| 13:58:17 | × | odnes_ quits (~odnes@5-203-246-201.pat.nym.cosmote.net) (Ping timeout: 248 seconds) |
| 14:00:04 | → | kaph joins (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) |
| 14:00:39 | → | bahamas joins (~lucian@84.232.140.158) |
| 14:01:28 | × | yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
| 14:04:33 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
| 14:07:18 | × | frost quits (~frost@user/frost) (Ping timeout: 250 seconds) |
| 14:09:32 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds) |
| 14:10:50 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 14:12:30 | × | benin quits (~benin@183.82.204.110) (Quit: The Lounge - https://thelounge.chat) |
| 14:15:02 | × | doyougnu quits (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Ping timeout: 246 seconds) |
| 14:15:19 | → | benin joins (~benin@183.82.204.110) |
| 14:17:35 | × | littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds) |
| 14:19:28 | → | redb joins (~nmh@136.49.49.211) |
| 14:22:31 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 14:23:53 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 248 seconds) |
| 14:24:14 | → | Akiva joins (~Akiva@user/Akiva) |
| 14:26:34 | × | azimut_ quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 14:26:55 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 14:28:31 | → | Pickchea joins (~private@user/pickchea) |
| 14:31:55 | × | Guest89 quits (~Guest89@2a01:41e1:440f:2c00:f9ba:f616:34ce:27bb) (Quit: Client closed) |
| 14:32:49 | <lortabac> | is there a way to coerce between two records if all the fields are coercible? |
| 14:33:25 | → | Guest89 joins (~Guest89@2a01:41e1:440f:2c00:f9ba:f616:34ce:27bb) |
| 14:33:26 | <lortabac> | maybe some library that relies on Generics |
| 14:34:38 | × | akegalj quits (~akegalj@93.140.126.69) (Quit: leaving) |
| 14:38:17 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 248 seconds) |
| 14:40:09 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 14:42:20 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 14:43:50 | → | yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
| 14:46:33 | → | sander joins (~sander@user/sander) |
| 14:46:50 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 14:49:21 | × | rttixian quits (~chargen@D964062A.static.ziggozakelijk.nl) (Read error: Connection reset by peer) |
| 14:50:36 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 240 seconds) |
| 14:53:39 | × | cosimone quits (~user@93-47-228-79.ip115.fastwebnet.it) (Remote host closed the connection) |
| 14:54:48 | → | redb joins (~nmh@136.49.49.211) |
| 14:59:03 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 260 seconds) |
| 14:59:08 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 15:01:15 | → | xpika joins (~alan@n175-34-18-168.sun1.vic.optusnet.com.au) |
| 15:01:15 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 15:03:48 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
| 15:08:04 | × | kaph quits (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) (Read error: Connection reset by peer) |
| 15:10:20 | × | sammelweis quits (~quassel@c-68-48-18-140.hsd1.mi.comcast.net) (Ping timeout: 246 seconds) |
| 15:10:45 | → | kaph joins (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) |
| 15:12:05 | ← | xpika parts (~alan@n175-34-18-168.sun1.vic.optusnet.com.au) () |
| 15:12:21 | → | xpika joins (~alan@n175-34-18-168.sun1.vic.optusnet.com.au) |
| 15:13:44 | <xpika> | is there a haskell library for converting html to ascii table? |
| 15:14:13 | <maerwald> | pandoc can convert between html and markdown |
| 15:14:59 | → | mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 15:15:32 | → | redb joins (~nmh@136.49.49.211) |
| 15:16:38 | → | alp_ joins (~alp@user/alp) |
| 15:16:51 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 256 seconds) |
| 15:19:04 | → | lbseale joins (~ep1ctetus@user/ep1ctetus) |
| 15:22:01 | × | boxscape_ quits (~boxscape_@p4ff0b7be.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
| 15:25:26 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 15:25:49 | → | zebrag joins (~chris@user/zebrag) |
| 15:26:17 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 248 seconds) |
| 15:26:38 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 15:27:04 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 15:30:16 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds) |
| 15:32:54 | <xpika> | is there a library function for horizontally appending two 2d blocks of text? |
| 15:33:24 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:cb75:3834:c1c1:ff4e) (Quit: WeeChat 2.8) |
| 15:33:42 | <geekosaur> | not in base. there are several pretty-printling libraries that can do it among other things |
| 15:34:00 | <xpika> | which one? |
| 15:34:43 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 260 seconds) |
| 15:34:59 | <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-Annotated-HughesPJ.html |
| 15:35:26 | <geekosaur> | mm, not quite that one, but see Text.PrettyPrint in general, from |
| 15:35:31 | <geekosaur> | @hackage pretty |
| 15:35:31 | <lambdabot> | https://hackage.haskell.org/package/pretty |
| 15:35:47 | <geekosaur> | again,this ships with ghc since ghc uses it to format error messages |
| 15:36:08 | <geekosaur> | I think it's the <+> operator that combines two 2D Docs |
| 15:40:45 | <maerwald> | and adds a space |
| 15:41:52 | <xpika> | hcat [vcat [text "Hello" , text "^"] , text " World"] |
| 15:41:54 | <geekosaur> | Ithink simple mappend /<> works to do it without a space, though |
| 15:42:00 | × | jespada quits (~jespada@cpc121022-nmal24-2-0-cust171.19-2.cable.virginm.net) (Quit: Textual IRC Client: www.textualapp.com) |
| 15:42:04 | <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) |
| 15:42:11 | <xpika> | gives |
| 15:42:11 | <xpika> | Hello |
| 15:42:11 | <xpika> | ^ World |
| 15:42:32 | <xpika> | I want |
| 15:42:32 | <xpika> | Hello World |
| 15:42:32 | <xpika> | ^ |
| 15:43:01 | <glguy> | oh nevermind, I guess. It worked on the third try o.O |
| 15:43:18 | → | jespada joins (~jespada@2a0c:5c84:1:4000::91c2) |
| 15:46:08 | geekosaur | looks for other prettyprinter libs |
| 15:46:19 | <geekosaur> | I think I'm not surprised since it's used for error messages |
| 15:48:52 | <geekosaur> | in particular I'm remembering one which allowed specification of how two 2d blocks were aligned |
| 15:49:38 | × | mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Remote host closed the connection) |
| 15:50:25 | × | gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 15:51:07 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 15:52:11 | × | Guest89 quits (~Guest89@2a01:41e1:440f:2c00:f9ba:f616:34ce:27bb) (Quit: Client closed) |
| 15:53:18 | <geekosaur> | mrrgh. allI'm finding so far uses the Wadler algorithm which isn't designed for multicolumn |
| 15:55:31 | <geekosaur> | https://hackage.haskell.org/package/boxes-0.1.5/docs/Text-PrettyPrint-Boxes.html if it still builds |
| 15:55:51 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 15:56:10 | × | bezmuth quits (~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7) (Ping timeout: 268 seconds) |
| 15:57:50 | × | ix quits (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Remote host closed the connection) |
| 15:58:00 | → | ix joins (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) |
| 16:00:39 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds) |
| 16:02:31 | × | CiaoSen quits (~Jura@p200300c9572d40002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 16:02:49 | × | ccntrq quits (~Thunderbi@2a01:e34:eccb:b060:ba9d:69d8:b4f8:4092) (Remote host closed the connection) |
| 16:03:21 | × | yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 16:04:07 | × | gdd quits (~gdd@129.199.146.230) (Ping timeout: 250 seconds) |
| 16:04:21 | → | yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
| 16:06:49 | → | epolanski joins (uid312403@id-312403.helmsley.irccloud.com) |
| 16:08:42 | → | haskellberryfinn joins (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 16:09:08 | × | yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 246 seconds) |
| 16:09:23 | → | gdd joins (~gdd@129.199.146.230) |
| 16:10:43 | → | eaii^ joins (~eaii@c-24-99-107-170.hsd1.ga.comcast.net) |
| 16:11:05 | → | cosimone joins (~user@93-47-228-79.ip115.fastwebnet.it) |
| 16:16:50 | × | haskellberryfinn quits (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 246 seconds) |
| 16:17:57 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 16:20:48 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 16:21:34 | → | yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
| 16:24:26 | → | bezmuth joins (~bezmuth@host86-136-197-212.range86-136.btcentralplus.com) |
| 16:24:42 | → | doyougnu joins (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) |
| 16:24:46 | <xpika> | Text.PrettyPrint.Boxes> printBox $ (text "hello" // text "1") <+> ( text "world" // text "2") |
| 16:24:46 | <xpika> | hello world |
| 16:24:46 | <xpika> | 1 2 |
| 16:25:06 | <xpika> | not bad |
| 16:25:58 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 16:26:42 | × | Cale quits (~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com) (Remote host closed the connection) |
| 16:28:34 | × | zeenk quits (~zeenk@2a02:2f04:a313:d600:8d26:ec9f:3ff6:fc94) (Quit: Konversation terminated!) |
| 16:28:56 | → | vicfred joins (~vicfred@user/vicfred) |
| 16:29:53 | → | haskellberryfinn joins (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 16:30:08 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds) |
| 16:40:36 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 240 seconds) |
| 16:49:56 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Remote host closed the connection) |
| 16:50:03 | → | tzh_ joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 16:51:31 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
| 16:51:43 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 16:52:40 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 16:53:19 | → | redb joins (~nmh@136.49.49.211) |
| 16:53:57 | × | abastro quits (~abab9579@220.75.216.63) (Ping timeout: 246 seconds) |
| 16:54:37 | → | pretty_d1 joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 16:54:49 | × | mbuf quits (~Shakthi@122.162.142.187) (Quit: Leaving) |
| 16:55:21 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 245 seconds) |
| 17:01:03 | × | haskellberryfinn quits (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 260 seconds) |
| 17:01:11 | × | agrosant quits (~agrosant@79.103.182.92.dsl.dyn.forthnet.gr) (Ping timeout: 272 seconds) |
| 17:04:28 | → | BlackboardN joins (~Blackboar@user/BlackboardN) |
| 17:05:35 | <lechner> | Hi, with the word 'package' a bit overloaded, is there a more precise term for a particular source version on Hackage? |
| 17:06:24 | <maerwald> | package version |
| 17:10:33 | <lechner> | Yeah, we used that for everything in Debian too until I introduced 'sources' and 'installables'. Can I go with 'hackage source version'? |
| 17:11:07 | <maerwald> | a hackable |
| 17:11:19 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 17:11:56 | <lechner> | i'll take it if it's not a joke |
| 17:12:18 | × | cosimone quits (~user@93-47-228-79.ip115.fastwebnet.it) (Remote host closed the connection) |
| 17:12:19 | <monochrom> | We already have a name for "installables": build product. Therefore, "package version" already refers to source code, without emphasizing "source code". |
| 17:13:27 | <lechner> | in my mind hackage is a misnomer. it should not refer to the repo but to each source version |
| 17:14:20 | <lechner> | perhaps turning Hackage intoa plural hackages.haskell.org |
| 17:14:23 | × | odnes__ quits (~odnes@5-203-246-201.pat.nym.cosmote.net) (Quit: Leaving) |
| 17:14:55 | <monochrom> | Huh? Hackage is a gathering place. |
| 17:15:15 | <maerwald> | lechner: are you seriously thinking you could rename hackage? |
| 17:15:34 | <monochrom> | We say "Trafalga Plaza", not "Trafalga Plazas" just because "it has many persons". |
| 17:15:59 | <lechner> | you can't be more stubborn than my colleages at Debian |
| 17:16:01 | <monochrom> | Err I guess s/Plaza/Square/ |
| 17:16:26 | <lechner> | Haskell is all about accurate terminology |
| 17:16:59 | <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. |
| 17:17:26 | <lechner> | hackage would stand for Haskell Package |
| 17:17:37 | <lechner> | singular |
| 17:17:40 | <monochrom> | N. O. |
| 17:18:25 | <monochrom> | You don't say "debian would stand for deb package, singluar" either. |
| 17:19:11 | <lechner> | .deb refers to Ian's ex-wife |
| 17:19:26 | <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? |
| 17:19:47 | <monochrom> | I mean, sheesh. |
| 17:25:57 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 17:30:04 | × | gawen quits (~gawen@user/gawen) (Quit: cya) |
| 17:31:24 | → | gawen joins (~gawen@user/gawen) |
| 17:31:25 | × | Major_Biscuit quits (~MajorBisc@c-001-005-034.client.tudelft.eduvpn.nl) (Ping timeout: 240 seconds) |
| 17:32:00 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 17:34:17 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds) |
| 17:36:37 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 17:37:13 | → | Vajb joins (~Vajb@2001:999:62:aa00:7f5a:4f10:c894:3813) |
| 17:39:40 | <monochrom> | https://bartoszmilewski.com/2022/04/05/teaching-optics-through-conspiracy-theories/ is pretty nice. |
| 17:39:41 | → | mvk joins (~mvk@2607:fea8:5ce3:8500::9d5a) |
| 17:43:08 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 17:44:35 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
| 17:46:07 | <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? |
| 17:46:33 | × | cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds) |
| 17:46:38 | × | Unicorn_Princess quits (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection) |
| 17:46:49 | <siraben> | Oh I guess I can define type level If |
| 17:50:34 | × | deadmarshal_ quits (~deadmarsh@95.38.112.46) (Ping timeout: 272 seconds) |
| 17:52:01 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 17:52:42 | → | cheater joins (~Username@user/cheater) |
| 17:54:24 | → | hololeap_ joins (~hololeap@user/hololeap) |
| 17:55:11 | × | vysn quits (~vysn@user/vysn) (Ping timeout: 268 seconds) |
| 17:55:15 | × | hololeap quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
| 17:56:12 | <siraben> | oh that doesn't work because type-level evaluation is strict |
| 18:00:51 | → | zincy joins (~zincy@host86-160-236-152.range86-160.btcentralplus.com) |
| 18:00:58 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 18:01:05 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 18:02:02 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 18:02:27 | × | asivitz quits (uid178348@id-178348.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
| 18:03:20 | × | tubogram4 quits (~tubogram@user/tubogram) (*.net *.split) |
| 18:03:20 | × | dons quits (~dons@user/dons) (*.net *.split) |
| 18:03:20 | × | Axman6 quits (~Axman6@user/axman6) (*.net *.split) |
| 18:05:04 | → | Axman6 joins (~Axman6@user/axman6) |
| 18:05:04 | → | tubogram4 joins (~tubogram@user/tubogram) |
| 18:05:04 | → | dons joins (~dons@user/dons) |
| 18:05:46 | × | neurocyte861449 quits (~neurocyte@user/neurocyte) (Read error: Connection reset by peer) |
| 18:07:20 | → | neurocyte8614492 joins (~neurocyte@IP-185238252073.dynamic.medianet-world.de) |
| 18:07:20 | × | neurocyte8614492 quits (~neurocyte@IP-185238252073.dynamic.medianet-world.de) (Changing host) |
| 18:07:20 | → | neurocyte8614492 joins (~neurocyte@user/neurocyte) |
| 18:09:24 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
| 18:10:11 | → | Cale joins (~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com) |
| 18:10:23 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 18:11:08 | → | hololeap joins (~hololeap@user/hololeap) |
| 18:11:23 | → | dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net) |
| 18:12:15 | × | hololeap_ quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
| 18:13:10 | → | dextaa_54 joins (~dextaa@user/dextaa) |
| 18:14:43 | × | dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
| 18:15:20 | → | littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo) |
| 18:19:02 | → | deadmarshal_ joins (~deadmarsh@95.38.112.46) |
| 18:19:03 | × | Vajb quits (~Vajb@2001:999:62:aa00:7f5a:4f10:c894:3813) (Read error: Connection reset by peer) |
| 18:19:37 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 248 seconds) |
| 18:19:48 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 18:20:59 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 18:21:35 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
| 18:21:42 | × | mvk quits (~mvk@2607:fea8:5ce3:8500::9d5a) (Ping timeout: 268 seconds) |
| 18:22:15 | × | hololeap quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
| 18:23:51 | × | deadmarshal_ quits (~deadmarsh@95.38.112.46) (Ping timeout: 256 seconds) |
| 18:27:56 | → | Guest89 joins (~Guest89@2a01:41e1:440f:2c00:f9ba:f616:34ce:27bb) |
| 18:28:05 | → | _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl) |
| 18:28:35 | → | hololeap joins (~hololeap@user/hololeap) |
| 18:29:05 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 18:37:22 | → | econo joins (uid147250@user/econo) |
| 18:39:36 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 18:42:48 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 246 seconds) |
| 18:43:07 | × | dyeplexer quits (~dyeplexer@user/dyeplexer) (Ping timeout: 256 seconds) |
| 18:45:45 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 248 seconds) |
| 18:46:37 | × | epolanski quits (uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
| 18:47:50 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 18:48:50 | × | alp_ quits (~alp@user/alp) (Ping timeout: 268 seconds) |
| 18:50:15 | × | yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 18:50:52 | → | yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
| 18:53:27 | → | coot joins (~coot@213.134.190.95) |
| 18:55:53 | × | yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 248 seconds) |
| 18:57:07 | × | lbseale quits (~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer) |
| 18:58:32 | × | bezmuth quits (~bezmuth@host86-136-197-212.range86-136.btcentralplus.com) (Ping timeout: 246 seconds) |
| 19:02:46 | × | benin quits (~benin@183.82.204.110) (Ping timeout: 272 seconds) |
| 19:07:00 | → | redb joins (~nmh@136.49.49.211) |
| 19:09:33 | → | benin joins (~benin@183.82.204.110) |
| 19:11:24 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 240 seconds) |
| 19:12:16 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds) |
| 19:14:11 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 19:17:25 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 19:26:13 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 19:26:31 | → | Pickchea joins (~private@user/pickchea) |
| 19:27:47 | → | haskellberryfinn joins (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 19:27:54 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 19:30:18 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 19:30:40 | → | redb joins (~nmh@136.49.49.211) |
| 19:31:31 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 19:32:36 | × | vicfred quits (~vicfred@user/vicfred) (Quit: Leaving) |
| 19:32:41 | → | rekahsoft joins (~rekahsoft@cpe001b21a2fd89-cm64777ddc63a0.cpe.net.cable.rogers.com) |
| 19:32:45 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 19:32:47 | → | mvk joins (~mvk@2607:fea8:5ce3:8500::9d5a) |
| 19:33:02 | → | acidjnk joins (~acidjnk@p200300d0c7049f25b15f97e32406cde6.dip0.t-ipconnect.de) |
| 19:34:08 | × | rekahsoft quits (~rekahsoft@cpe001b21a2fd89-cm64777ddc63a0.cpe.net.cable.rogers.com) (Remote host closed the connection) |
| 19:37:02 | → | Kaipi joins (~Kaiepi@156.34.47.253) |
| 19:37:58 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 260 seconds) |
| 19:38:10 | × | Kaiepi quits (~Kaiepi@156.34.47.253) (Ping timeout: 268 seconds) |
| 19:38:46 | → | jgeerds joins (~jgeerds@d5364b87.access.ecotel.net) |
| 19:40:18 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
| 19:41:18 | × | Kaipi quits (~Kaiepi@156.34.47.253) (Remote host closed the connection) |
| 19:41:52 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 268 seconds) |
| 19:43:15 | × | fef quits (~thedawn@user/thedawn) (Ping timeout: 240 seconds) |
| 19:44:19 | × | awpr quits (uid446117@id-446117.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 19:46:29 | × | doyougnu quits (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Ping timeout: 246 seconds) |
| 19:47:15 | × | shapr quits (~user@pool-173-73-44-186.washdc.fios.verizon.net) (Remote host closed the connection) |
| 19:47:20 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 19:47:32 | × | pooryorick quits (~pooryoric@87-119-174-173.tll.elisa.ee) (Ping timeout: 246 seconds) |
| 19:48:14 | → | redb joins (~nmh@136.49.49.211) |
| 19:52:10 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds) |
| 19:52:36 | → | rekahsoft joins (~rekahsoft@cpe001b21a2fd89-cm64777ddc63a0.cpe.net.cable.rogers.com) |
| 19:54:30 | → | pooryorick joins (~pooryoric@87-119-174-173.tll.elisa.ee) |
| 19:58:25 | → | liz_ joins (~liz@host109-151-125-217.range109-151.btcentralplus.com) |
| 20:02:46 | × | dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4.1) |
| 20:03:19 | × | orcus quits (~orcus@user/brprice) (Ping timeout: 260 seconds) |
| 20:03:47 | → | orcus joins (~orcus@user/brprice) |
| 20:03:55 | × | _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection) |
| 20:05:53 | → | alp_ joins (~alp@user/alp) |
| 20:07:24 | × | vjoki quits (~vjoki@2a00:d880:3:1::fea1:9ae) (Ping timeout: 240 seconds) |
| 20:08:23 | × | neurocyte8614492 quits (~neurocyte@user/neurocyte) (Ping timeout: 268 seconds) |
| 20:09:24 | → | yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
| 20:09:30 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 20:09:42 | → | zeenk joins (~zeenk@2a02:2f04:a313:d600:8d26:ec9f:3ff6:fc94) |
| 20:09:51 | → | vjoki joins (~vjoki@2a00:d880:3:1::fea1:9ae) |
| 20:12:47 | × | zincy quits (~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Remote host closed the connection) |
| 20:14:21 | × | yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
| 20:14:33 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds) |
| 20:15:15 | → | vicfred joins (~vicfred@user/vicfred) |
| 20:15:53 | × | chddr quits (~Thunderbi@91.226.35.164) (Ping timeout: 248 seconds) |
| 20:17:32 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 20:19:21 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 20:19:34 | → | hololeap_ joins (~hololeap@user/hololeap) |
| 20:20:06 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds) |
| 20:20:15 | × | hololeap quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
| 20:20:38 | Lord_of_Life_ | is now known as Lord_of_Life |
| 20:21:56 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 20:26:18 | × | vjoki quits (~vjoki@2a00:d880:3:1::fea1:9ae) (Quit: ...) |
| 20:26:23 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds) |
| 20:27:01 | → | vjoki joins (~vjoki@2a00:d880:3:1::fea1:9ae) |
| 20:29:06 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 20:31:15 | × | hololeap_ quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
| 20:31:21 | → | xkuru joins (~xkuru@user/xkuru) |
| 20:32:10 | → | hololeap_ joins (~hololeap@user/hololeap) |
| 20:33:50 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 20:34:03 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 20:34:57 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 20:35:05 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 248 seconds) |
| 20:37:10 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 20:37:17 | → | shapr joins (~user@pool-173-73-44-186.washdc.fios.verizon.net) |
| 20:38:10 | × | tzh_ quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Remote host closed the connection) |
| 20:38:58 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 20:39:28 | → | zincy joins (~zincy@2a00:23c8:970c:4801:dc35:500f:d0de:de53) |
| 20:39:48 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
| 20:42:10 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Remote host closed the connection) |
| 20:42:52 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 20:43:36 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 20:44:34 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 20:48:07 | × | jgeerds quits (~jgeerds@d5364b87.access.ecotel.net) (Remote host closed the connection) |
| 20:48:24 | → | jgeerds joins (~jgeerds@d5364b87.access.ecotel.net) |
| 20:48:40 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Remote host closed the connection) |
| 20:49:03 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
| 20:51:40 | × | xkuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
| 20:53:14 | → | img joins (~img@user/img) |
| 20:53:45 | × | michalz quits (~michalz@185.246.204.122) (Remote host closed the connection) |
| 20:53:49 | → | xkuru joins (~xkuru@user/xkuru) |
| 20:55:05 | liz_ | is now known as liz |
| 20:55:32 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 21:00:15 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
| 21:06:15 | × | pretty_d1 quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5) |
| 21:08:48 | × | jgeerds quits (~jgeerds@d5364b87.access.ecotel.net) (Ping timeout: 272 seconds) |
| 21:12:21 | → | yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
| 21:12:29 | × | zincy quits (~zincy@2a00:23c8:970c:4801:dc35:500f:d0de:de53) (Remote host closed the connection) |
| 21:16:41 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds) |
| 21:17:27 | × | yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
| 21:18:34 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 21:19:35 | × | zyklotomic quits (~ethan@res380d-128-61-86-37.res.gatech.edu) (Ping timeout: 250 seconds) |
| 21:21:27 | → | zyklotomic joins (~ethan@res380d-128-61-81-124.res.gatech.edu) |
| 21:26:29 | → | Guest53 joins (~Guest53@190.192.80.102) |
| 21:28:33 | × | dfordivam1 quits (~dfordivam@tk2-219-19469.vs.sakura.ne.jp) (Ping timeout: 252 seconds) |
| 21:29:34 | → | dfordivam1 joins (~dfordivam@tk2-219-19469.vs.sakura.ne.jp) |
| 21:39:55 | × | acidjnk quits (~acidjnk@p200300d0c7049f25b15f97e32406cde6.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 21:43:15 | × | wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 240 seconds) |
| 21:45:28 | × | Teacup quits (~teacup@user/teacup) (Remote host closed the connection) |
| 21:45:40 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:45:43 | → | Teacup joins (~teacup@user/teacup) |
| 21:50:15 | × | hololeap_ quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
| 21:50:24 | → | wyrd joins (~wyrd@gateway/tor-sasl/wyrd) |
| 21:52:51 | → | cosimone joins (~user@93-47-228-79.ip115.fastwebnet.it) |
| 21:52:59 | × | dcoutts_ quits (~duncan@host213-122-143-81.range213-122.btcentralplus.com) (Ping timeout: 260 seconds) |
| 21:53:53 | → | hololeap_ joins (~hololeap@user/hololeap) |
| 21:59:07 | → | awschnap joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 21:59:07 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Read error: Connection reset by peer) |
| 21:59:55 | × | hololeap_ quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
| 22:01:25 | → | hololeap_ joins (~hololeap@user/hololeap) |
| 22:03:14 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 22:03:23 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 22:03:31 | × | vicfred quits (~vicfred@user/vicfred) (Quit: Leaving) |
| 22:04:26 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 22:07:35 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 22:09:17 | × | awschnap quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:09:29 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:10:14 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 22:15:42 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:15:57 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:16:04 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:16:22 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:16:29 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:16:45 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:16:53 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:17:08 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:17:15 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:17:30 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:17:37 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:17:50 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:17:58 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:18:14 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:18:21 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:18:35 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:18:42 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:18:56 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:19:03 | → | Guest2780 joins (~Guest27@2601:281:d47f:1590::a504) |
| 22:19:04 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:19:19 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:19:26 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:19:41 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:19:47 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:20:01 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:20:08 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 246 seconds) |
| 22:20:09 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:20:23 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:20:31 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:20:45 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:20:52 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:21:06 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:21:14 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:21:28 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:21:36 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:21:51 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:21:58 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:22:12 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:22:20 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:22:35 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:22:41 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:22:56 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:23:03 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:23:17 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:23:25 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:23:32 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds) |
| 22:23:39 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:23:46 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:24:02 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:24:09 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:24:23 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:24:31 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:24:46 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:24:52 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:25:07 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:25:14 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:25:23 | × | mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 246 seconds) |
| 22:25:28 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:25:36 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:25:51 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:25:57 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:26:12 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:26:19 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:26:26 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 22:26:34 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:26:42 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:26:45 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 22:26:57 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:27:04 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:27:18 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:27:25 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:27:41 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:27:48 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:28:03 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:28:10 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:28:25 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:28:32 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:28:46 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:28:53 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:29:09 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:29:16 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:29:30 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:29:37 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:29:51 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:29:59 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:30:17 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:30:24 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:30:39 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:30:46 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:31:00 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:31:08 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:31:15 | × | haskellberryfinn quits (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 260 seconds) |
| 22:31:23 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:31:29 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:31:45 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:31:52 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:32:05 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:32:13 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:32:29 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:32:35 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:32:49 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:32:57 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:33:12 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:33:19 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 22:36:47 | <Guest89> | Inside a Stack project is there anywhere else I need to add `ghc-lib-parser` as a dependency other than inside the `package.yaml`? Other libraries work just fine. |
| 22:38:51 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 22:38:59 | × | zeenk quits (~zeenk@2a02:2f04:a313:d600:8d26:ec9f:3ff6:fc94) (Quit: Konversation terminated!) |
| 22:43:14 | → | dcoutts_ joins (~duncan@host213-122-143-81.range213-122.btcentralplus.com) |
| 22:43:48 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds) |
| 22:46:57 | × | Guest2780 quits (~Guest27@2601:281:d47f:1590::a504) (Quit: Client closed) |
| 22:47:07 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 260 seconds) |
| 22:49:10 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 22:53:39 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
| 22:55:51 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
| 23:01:38 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 23:02:01 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 23:08:34 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 23:13:25 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
| 23:15:12 | → | bezmuth joins (~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7) |
| 23:16:29 | → | yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
| 23:18:30 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 23:19:13 | × | liz quits (~liz@host109-151-125-217.range109-151.btcentralplus.com) (Quit: Lost terminal) |
| 23:20:07 | × | xff0x quits (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) (Quit: xff0x) |
| 23:21:45 | → | xff0x joins (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) |
| 23:22:26 | × | xff0x quits (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) (Client Quit) |
| 23:23:03 | × | alphabeta quits (~kilolympu@31.205.200.235) (Ping timeout: 260 seconds) |
| 23:23:15 | → | pera joins (~pera@user/pera) |
| 23:23:42 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds) |
| 23:24:00 | → | xff0x joins (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) |
| 23:24:02 | × | xff0x quits (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) (Client Quit) |
| 23:25:03 | → | xff0x joins (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) |
| 23:26:17 | × | xff0x quits (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) (Client Quit) |
| 23:26:29 | → | xff0x joins (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) |
| 23:26:53 | × | yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 23:27:20 | × | xff0x quits (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) (Client Quit) |
| 23:27:36 | → | xff0x joins (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) |
| 23:28:17 | → | yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) |
| 23:29:51 | × | mncheck quits (~mncheck@193.224.205.254) (Ping timeout: 256 seconds) |
| 23:29:53 | <dons> | morning all |
| 23:29:54 | → | kilolympus joins (~kilolympu@31.205.200.235) |
| 23:31:55 | × | lemonsnicks quits (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Ping timeout: 260 seconds) |
| 23:31:57 | <geekosaur> | o/ |
| 23:33:15 | × | yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
| 23:33:39 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 23:34:04 | → | chenqisu1 joins (~chenqisu1@183.217.200.239) |
| 23:37:00 | × | alp_ quits (~alp@user/alp) (Ping timeout: 240 seconds) |
| 23:37:32 | → | lemonsnicks joins (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) |
| 23:37:54 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 23:42:09 | × | xff0x quits (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) (Quit: xff0x) |
| 23:42:23 | → | xff0x joins (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) |
| 23:45:15 | → | liz joins (~liz@host109-151-125-217.range109-151.btcentralplus.com) |
| 23:46:27 | × | xff0x quits (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) (Client Quit) |
| 23:46:45 | → | xff0x joins (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) |
| 23:51:34 | × | ec quits (~ec@gateway/tor-sasl/ec) (Quit: ec) |
| 23:55:44 | × | TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 260 seconds) |
| 23:58:07 | → | TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker) |
| 23:59:01 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds) |
| 23:59:31 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
All times are in UTC on 2022-04-07.