Logs on 2021-11-22 (liberachat/#haskell)
| 00:00:59 | → | alx741 joins (~alx741@186.178.108.219) |
| 00:01:09 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad) (Quit: gone to sleep. ZZZzzz…) |
| 00:01:36 | → | lavaman joins (~lavaman@98.38.249.169) |
| 00:01:55 | × | mmhat quits (~mmh@55d438c0.access.ecotel.net) (Quit: WeeChat 3.3) |
| 00:02:24 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:b4a8:9431:5c1:c0e0) (Remote host closed the connection) |
| 00:04:19 | → | Topsi1 joins (~Tobias@dyndsl-037-138-064-016.ewe-ip-backbone.de) |
| 00:04:25 | <dibblego> | or waargonaut, but it's not aeson |
| 00:04:31 | <dibblego> | also, g'day seanparsons |
| 00:04:39 | → | retroid_ joins (~retro@97e2ba2e.skybroadband.com) |
| 00:05:07 | × | retro_ quits (~retro@97e2ba2e.skybroadband.com) (Ping timeout: 268 seconds) |
| 00:05:19 | → | Topsi2 joins (~Tobias@dyndsl-037-138-064-016.ewe-ip-backbone.de) |
| 00:05:34 | × | myShoggoth quits (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 260 seconds) |
| 00:06:02 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 260 seconds) |
| 00:07:58 | × | Topsi quits (~Tobias@dyndsl-037-138-064-016.ewe-ip-backbone.de) (Ping timeout: 260 seconds) |
| 00:08:54 | × | Topsi1 quits (~Tobias@dyndsl-037-138-064-016.ewe-ip-backbone.de) (Ping timeout: 260 seconds) |
| 00:10:34 | <Axman6> | lens-aeson plus the uniplate stuff in the lens library lets you do some super powerful stuff with aeson Values - need to find all the URLs in strings anywhere? Bam, it's like 100 characters to do that |
| 00:13:35 | × | jinsun quits (~quassel@user/jinsun) (Ping timeout: 250 seconds) |
| 00:19:46 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 00:24:02 | × | jess quits (~jess@libera/staff/jess) () |
| 00:25:35 | × | Midjak quits (~Midjak@82-65-111-221.subs.proxad.net) (Quit: This computer has gone to sleep) |
| 00:26:42 | × | tabemann quits (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Quit: Leaving) |
| 00:32:44 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 00:34:08 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 246 seconds) |
| 00:34:27 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 00:35:01 | → | sub0 joins (~bc8165b6@217.29.117.252) |
| 00:37:09 | <sub0> | hi. what is the equivalent of this in haskell? TYPE *p = malloc(sizeof *p); cfunc(p); |
| 00:38:03 | <sub0> | closest I could get is this, but what if it was a pointer to a type where I can't or don't want to specify some dummy value: withArray [1] $ \p -> cfunc( p) |
| 00:41:04 | → | meinside joins (uid24933@id-24933.helmsley.irccloud.com) |
| 00:41:19 | <geekosaur> | @index alloca |
| 00:41:19 | <lambdabot> | Foreign.Marshal.Alloc, Foreign.Marshal, Foreign, Foreign.Safe, Foreign.Marshal.Safe |
| 00:42:07 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad) |
| 00:42:20 | <geekosaur> | there is also malloc but you'll really want to free it in a related value's finalizer |
| 00:45:38 | <sub0> | thanks, works nicely |
| 00:47:51 | <sub0> | alloca $ \p -> do cfunc p; peek p |
| 00:48:17 | → | mimmy_ joins (~mimmy@2607:fea8:6e0:7f90:7c3d:8173:a37e:d50a) |
| 00:52:10 | <jle`> | any guide on how to migrate template haskell to the ghc 9.0 version that uses 'Code' for typed quotations? |
| 00:53:14 | × | mimmy_ quits (~mimmy@2607:fea8:6e0:7f90:7c3d:8173:a37e:d50a) (Ping timeout: 268 seconds) |
| 00:53:58 | × | unit73e quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Quit: Leaving) |
| 00:54:58 | → | yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) |
| 00:55:18 | <jle`> | oh i just needed to add a newtype wrapper in a careful place |
| 00:58:50 | × | Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 260 seconds) |
| 00:59:08 | × | jmorris quits (uid433911@id-433911.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 00:59:31 | × | yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
| 01:02:53 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:b4a8:9431:5c1:c0e0) |
| 01:07:14 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 01:07:38 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:b4a8:9431:5c1:c0e0) (Ping timeout: 260 seconds) |
| 01:10:17 | <Axman6> | Be wery wery careful, we're huntin' newtypes |
| 01:11:25 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:13:35 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:b4a8:9431:5c1:c0e0) |
| 01:15:53 | ← | helby parts (helby@alpine/moderator/helby) () |
| 01:17:32 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:19:01 | → | mvk joins (~mvk@2607:fea8:5cc1:fa00::4702) |
| 01:26:57 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 01:27:16 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 01:28:00 | × | cjb quits (~cjb@user/cjb) (Ping timeout: 260 seconds) |
| 01:29:57 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3) |
| 01:31:21 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:b4a8:9431:5c1:c0e0) (Remote host closed the connection) |
| 01:31:39 | → | cjb joins (~cjb@user/cjb) |
| 01:37:20 | × | DNH quits (~DNH@2a02:8108:1100:16d8:14a5:84da:2caa:2854) (Quit: Textual IRC Client: www.textualapp.com) |
| 01:38:27 | × | burnsidesLlama quits (~burnsides@dhcp168-012.wadham.ox.ac.uk) (Remote host closed the connection) |
| 01:39:17 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad) (Quit: gone to sleep. ZZZzzz…) |
| 01:41:59 | → | mimmy_ joins (~mimmy@2607:fea8:6e0:7f90:d9be:afe3:4e5b:d63) |
| 01:47:19 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:d41b:9326:c4d8:9f2a) |
| 01:56:42 | → | mimmy joins (~mimmy@2607:fea8:6e0:7f90:9c35:bed7:e2c:e900) |
| 01:56:45 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 268 seconds) |
| 01:56:53 | × | mimmy quits (~mimmy@2607:fea8:6e0:7f90:9c35:bed7:e2c:e900) (Client Quit) |
| 01:58:13 | × | mimmy_ quits (~mimmy@2607:fea8:6e0:7f90:d9be:afe3:4e5b:d63) (Ping timeout: 250 seconds) |
| 02:00:59 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 02:06:18 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:b4a8:9431:5c1:c0e0) |
| 02:08:27 | × | alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection) |
| 02:16:39 | → | jmorris joins (uid433911@id-433911.hampstead.irccloud.com) |
| 02:20:56 | <Axman6> | @hoogle Lens s t a b -> (a -> m b) -> s -> m t |
| 02:20:57 | <lambdabot> | No results found |
| 02:22:37 | → | tabemann joins (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) |
| 02:23:34 | <Axman6> | there's definitely a lensy thing for that right? |
| 02:24:19 | <awpr> | > _1 print (2, 4) |
| 02:24:20 | <lambdabot> | <IO ((),Integer)> |
| 02:24:39 | <awpr> | the lens is already that result type to begin with (for any Functor m) |
| 02:25:01 | <awpr> | there might be a function `traverseOf` for that, but it's just `id` |
| 02:28:37 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 02:31:43 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 02:31:43 | <Boarders_> | do any of you know in brick how I can add a background colour behind each of the widgets (not changing any of the widget colours? |
| 02:31:58 | <Boarders_> | it seems like the drawApp thing should allow me to do it with layering but I can't figure it out |
| 02:33:09 | <Boarders_> | e.g. in this snake example: https://samtay.github.io/posts/introduction-to-brick how would one render the area outside of the boxes as another colour? |
| 02:34:03 | jackhill | is now known as KM4MBG |
| 02:34:33 | → | ceedon joins (~ceedon@h224.77.91.75.dynamic.ip.windstream.net) |
| 02:37:08 | <sm> | Boarders_: do something with the outermost/largest widget |
| 02:37:45 | <sm> | there is a `margin` function that puts a margin of a certain colour |
| 02:38:15 | <sm> | I guess you want it over the full screen, showing through transparent foreground widgets ? |
| 02:38:45 | <Boarders_> | yes, exactly that last thing |
| 02:39:21 | <Boarders_> | by outermost/largest, do you mean the last widget returned in appDraw? |
| 02:41:11 | <Boarders_> | ah no, I think that is something to do with buffering |
| 02:42:11 | <sm> | Boarders_: I don't see anything about transparency in brick or vty, unfortunately |
| 02:42:39 | × | ceedon quits (~ceedon@h224.77.91.75.dynamic.ip.windstream.net) (Ping timeout: 256 seconds) |
| 02:42:57 | <sm> | it might be in brick's issue tracker. If not I guess you have to implement it yourself (make a custom widget that combines your layers) |
| 02:43:35 | × | xff0x quits (~xff0x@2001:1a81:526f:1d00:d375:c485:c62f:a6f6) (Ping timeout: 264 seconds) |
| 02:43:42 | <Boarders_> | with the last option, do you make the widget and then just give it an attribute with the relevant background colour? |
| 02:43:47 | <sm> | ansi-terminal-game is a brick-like thing where transparency is easy, just FYI |
| 02:44:22 | <Boarders_> | thanks, I'll give that a look |
| 02:44:42 | <sm> | Boarders_: a widget that fills the window and within itself implements the painter's algorithm or something |
| 02:45:04 | → | xff0x joins (~xff0x@2001:1a81:52ae:a700:ef5b:bdbe:c8a4:8fd2) |
| 02:45:04 | <sm> | but I would ask jtdaugherty in the tracker, he is very responsive |
| 02:45:55 | <sm> | here's some discussion: https://github.com/jtdaugherty/brick/issues/74 |
| 02:47:25 | <sm> | seems like you could make transparent edges (padding), but maybe holes are harder |
| 02:52:49 | × | renzhi quits (~xp@2607:fa49:6500:b100::6e7f) (Ping timeout: 250 seconds) |
| 02:55:52 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Read error: Connection reset by peer) |
| 02:56:35 | → | yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) |
| 03:01:32 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 03:01:34 | × | yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Ping timeout: 260 seconds) |
| 03:03:22 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 03:04:40 | × | lemonsnicks quits (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Quit: ZNC 1.8.2 - https://znc.in) |
| 03:08:02 | <jackdk> | I have a function where I'm accumulating a result backwards, then reversing it at the end (like lisp `PUSH`/`NREVERSE` idiom, I guess). Does this have a common name or combinator somewhere? |
| 03:11:12 | → | myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net) |
| 03:11:17 | <EvanR> | no because if taken to extremes it can be pretty inefficient |
| 03:11:29 | <EvanR> | if you can, try to accumulate results forwards |
| 03:11:42 | <EvanR> | lazily |
| 03:12:08 | × | shailangsa quits (~shailangs@host86-186-133-114.range86-186.btcentralplus.com) (Remote host closed the connection) |
| 03:15:45 | → | lemonsnicks joins (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) |
| 03:18:14 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:d41b:9326:c4d8:9f2a) (Quit: gone to sleep. ZZZzzz…) |
| 03:21:31 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad) |
| 03:21:34 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad) (Client Quit) |
| 03:25:16 | KM4MBG | is now known as jackhill |
| 03:30:24 | <dsal> | Can someone make Num smaller for the next ghc release? |
| 03:30:40 | <dsal> | I'm not quite sure how to think about things like `negate` on types that be negative. |
| 03:30:43 | <jackdk> | thanks EvanR . it turned out my problem was compactly expressed as a Data.List.unfold anyway |
| 03:31:03 | <EvanR> | cool |
| 03:31:46 | <dsal> | Related: ghci line editing is severely mangled on my machine. Does this sound like a known issue? |
| 03:31:58 | <dsal> | 8.10.7 on M1 |
| 03:32:08 | → | mbuf joins (~Shakthi@223.178.114.167) |
| 03:32:59 | <dsal> | > negate (5 :: Word) |
| 03:33:01 | <lambdabot> | 18446744073709551611 |
| 03:33:06 | <dsal> | I guess I can do something like that. |
| 03:33:22 | <EvanR> | > negate (5 :: Natural) |
| 03:33:23 | <lambdabot> | error: |
| 03:33:23 | <lambdabot> | Not in scope: type constructor or class ‘Natural’ |
| 03:33:54 | <EvanR> | > negate (5 :: Numeric.Natural) |
| 03:33:55 | <lambdabot> | error: |
| 03:33:55 | <lambdabot> | Not in scope: type constructor or class ‘Numeric.Natural’ |
| 03:34:16 | <dsal> | That's the other option. |
| 03:34:21 | <EvanR> | I guess Natural was voted off the island |
| 03:34:23 | <dsal> | I don't really like either. |
| 03:34:52 | <dsal> | I'm using Data.Fixed, so I can at least do something reasonable. |
| 03:35:29 | <dsal> | Er, Data.Finite |
| 03:36:01 | <dsal> | λ> negate (5 :: Finite 11) |
| 03:36:01 | <dsal> | finite 6 |
| 03:36:16 | <dsal> | I guess since it already does it for me, I can just generalizednewtypederiving it and call it a day. |
| 03:37:41 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
| 03:38:17 | <dsal> | Oh, well, fromInteger is partial. I didn't expect that. |
| 03:41:04 | <awpr> | there's not really a good Num instance for the finite sets. modular arithmetic is okay enough, but in the not-uncommon case where people do arithmetic assuming it won't be out-of-range, having it silently wrap can hide bugs, and it's extra unintuitive for `fromInteger` |
| 03:42:00 | <awpr> | do you want Num for anything other than supporting integral literals? |
| 03:43:05 | <dsal> | Heh, not *really*. Maybe some addition or something. |
| 03:43:12 | <dsal> | I'm representing relative time as the number of minutes since midnight. |
| 03:43:28 | <dsal> | Yeah, addition might be nice, and them modulo is the right thing to do. |
| 03:43:56 | <awpr> | hmm, maybe. seems like you'd want modular addition with an overflow flag |
| 03:44:14 | <awpr> | like you'd have in adding digits of a positional number system |
| 03:44:29 | <dsal> | This is the kind of thing that's not likely to be used incorrectly, but I decided not to make it super difficult to use for the normal case where someone wants to just stick a number in a piece of code. |
| 03:46:14 | <awpr> | yeah, my thinking is that literals should be separate from the other parts of `Num`, and along with some extra features for validating literal values, that's `dependent-literals-plugin` |
| 03:46:30 | <awpr> | it was actually created specifically to deal with the problem of literals for `Fin`s |
| 03:48:04 | → | zhengcong joins (~zhengcong@113.140.11.120) |
| 03:49:36 | <dsal> | Yeah, I'd like to have just the representation thing, then maybe have + and * and abs/negate and - and stuff be all separate. |
| 03:50:02 | <dsal> | It's a small change, should be able to get in shortly. |
| 03:50:06 | × | td_ quits (~td@muedsl-82-207-238-154.citykom.de) (Ping timeout: 260 seconds) |
| 03:51:22 | → | Codaraxis_ joins (~Codaraxis@user/codaraxis) |
| 03:51:51 | <awpr> | lol that's why I went for a syntax plugin. very little chance for Num to grow a superclass or literals to move to another function, at least without some new typeclass features like implicit superclass impls |
| 03:51:58 | → | td_ joins (~td@94.134.91.148) |
| 03:52:09 | <awpr> | but just rewriting literals to my own typeclass method is easy |
| 03:53:11 | × | Codaraxis_ quits (~Codaraxis@user/codaraxis) (Remote host closed the connection) |
| 03:53:36 | <dsal> | For my use case, ~nobody's going to use this code and if I ever do, I'm just going to do a num literal probably. Or conversion from int that *should* fit. |
| 03:53:47 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 03:54:39 | <awpr> | yeah, fair enough. it was only worth it to me because there were Fin literals all over the place, and if literals or arithmetic was out of range, there was no stack trace |
| 03:55:11 | × | Codaraxis__ quits (~Codaraxis@user/codaraxis) (Ping timeout: 256 seconds) |
| 03:55:47 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 04:00:43 | → | yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) |
| 04:04:27 | × | nattiestnate quits (~nate@2001:448a:20a0:4134:25e:715f:d637:5263) (Quit: WeeChat 3.3) |
| 04:05:02 | × | yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
| 04:07:47 | × | lechner quits (~lechner@debian/lechner) (Ping timeout: 250 seconds) |
| 04:12:06 | × | nautical quits (~nautical@2601:602:900:1630::396f) (Quit: WeeChat 3.3) |
| 04:19:33 | × | ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Ping timeout: 256 seconds) |
| 04:21:25 | → | ralu joins (~ralu@static.211.245.203.116.clients.your-server.de) |
| 04:29:57 | → | jinsun joins (~quassel@user/jinsun) |
| 04:32:43 | × | drdo quits (~drdo@roach0.drdo.eu) (Ping timeout: 250 seconds) |
| 04:33:54 | × | waleee quits (~waleee@h-82-196-111-63.NA.cust.bahnhof.se) (Quit: WeeChat 3.3) |
| 04:35:04 | → | lavaman joins (~lavaman@98.38.249.169) |
| 04:40:05 | → | drdo joins (~drdo@roach0.drdo.eu) |
| 04:45:25 | → | deadmarshal joins (~deadmarsh@95.38.230.45) |
| 04:58:05 | × | monochrom quits (~trebla@216.138.220.146) (Ping timeout: 256 seconds) |
| 05:00:33 | → | alzgh joins (~alzgh@user/alzgh) |
| 05:00:50 | → | monochrom joins (~trebla@216.138.220.146) |
| 05:02:37 | × | raehik1 quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
| 05:07:59 | → | yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) |
| 05:09:25 | × | drdo quits (~drdo@roach0.drdo.eu) (Ping timeout: 256 seconds) |
| 05:15:06 | × | slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving) |
| 05:19:02 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 05:21:20 | → | drdo joins (~drdo@roach0.drdo.eu) |
| 05:22:21 | × | yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 05:27:56 | → | yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) |
| 05:28:23 | → | Topsi joins (~Tobias@dyndsl-095-033-023-020.ewe-ip-backbone.de) |
| 05:29:58 | × | Topsi2 quits (~Tobias@dyndsl-037-138-064-016.ewe-ip-backbone.de) (Ping timeout: 260 seconds) |
| 05:31:20 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 05:31:36 | → | lavaman joins (~lavaman@98.38.249.169) |
| 05:31:42 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 05:32:05 | × | drdo quits (~drdo@roach0.drdo.eu) (Ping timeout: 250 seconds) |
| 05:33:42 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 05:37:54 | × | deadmarshal quits (~deadmarsh@95.38.230.45) (Ping timeout: 260 seconds) |
| 05:38:37 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 05:44:18 | → | sagax joins (~sagax_nb@user/sagax) |
| 05:47:20 | → | Sgeo_ joins (~Sgeo@user/sgeo) |
| 05:47:53 | × | sub0 quits (~bc8165b6@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout)) |
| 05:48:48 | × | qwedfg_ quits (~qwedfg@user/qwedfg) (*.net *.split) |
| 05:48:48 | × | mcfrdy quits (~mcfrdy@user/mcfrdy) (*.net *.split) |
| 05:48:48 | × | dexterfoo quits (dexter@2a01:7e00::f03c:91ff:fe86:59ec) (*.net *.split) |
| 05:48:48 | × | feliix42 quits (~felix@gibbs.uberspace.de) (*.net *.split) |
| 05:48:48 | × | siers69 quits (~ij@user/ij) (*.net *.split) |
| 05:48:48 | × | bens quits (~bens@www.typius.com) (*.net *.split) |
| 05:48:48 | × | xstill- quits (xstill@fimu/xstill) (*.net *.split) |
| 05:48:48 | × | matijja quits (~matijja@193.77.181.201) (*.net *.split) |
| 05:48:48 | × | megaTherion quits (~therion@unix.io) (*.net *.split) |
| 05:48:48 | × | gabiruh quits (~gabiruh@vps19177.publiccloud.com.br) (*.net *.split) |
| 05:49:01 | → | feliix42 joins (~felix@gibbs.uberspace.de) |
| 05:49:01 | → | bens joins (~bens@www.typius.com) |
| 05:49:07 | → | xstill- joins (xstill@fimu/xstill) |
| 05:49:16 | → | dexterfoo joins (dexter@2a01:7e00::f03c:91ff:fe86:59ec) |
| 05:49:17 | → | gabiruh joins (~gabiruh@vps19177.publiccloud.com.br) |
| 05:49:28 | → | siers joins (~ij@user/ij) |
| 05:49:29 | → | mcfrdy joins (~mcfrdy@user/mcfrdy) |
| 05:49:34 | → | vysn joins (~vysn@user/vysn) |
| 05:49:34 | × | Sgeo quits (~Sgeo@user/sgeo) (Ping timeout: 260 seconds) |
| 05:50:21 | → | qwedfg joins (~qwedfg@user/qwedfg) |
| 05:53:04 | → | matijja joins (~matijja@193.77.181.201) |
| 05:54:59 | × | ircbrowse_tom quits (~ircbrowse@static.162.49.55.162.clients.your-server.de) (ZNC 1.7.5+deb4 - https://znc.in) |
| 05:56:36 | → | ircbrowse_tom joins (~ircbrowse@2a01:4f8:1c1c:9319::1) |
| 05:56:36 | Server | sets mode +Cnt |
| 05:56:41 | × | ikke quits (~kevin@delta.ikke.info) (Changing host) |
| 05:56:41 | → | ikke joins (~kevin@alpine/developer/ikke) |
| 05:56:42 | → | tolt joins (~weechat-h@li219-154.members.linode.com) |
| 05:56:42 | → | hexology joins (~hexology@user/hexology) |
| 05:56:45 | → | incertia joins (~incertia@d4-50-26-103.nap.wideopenwest.com) |
| 05:56:45 | → | maerwald joins (~maerwald@mail.hasufell.de) |
| 05:56:48 | → | arahael joins (~arahael@125-209-128-15.tpgi.com.au) |
| 05:56:50 | → | heath joins (~heath@user/heath) |
| 05:56:53 | → | mrkajetanp joins (~mrkajetan@2a01:4b00:ea36:6c00:7994:941c:3f5d:2b88) |
| 05:56:53 | → | pierrot joins (~pi@user/pierrot) |
| 05:56:57 | → | blades joins (~blades@204.48.29.163) |
| 05:56:57 | → | beaky joins (~beaky@2a03:b0c0:0:1010::1e:a001) |
| 05:57:05 | → | robbert-vdh joins (~robbert@robbertvanderhelm.nl) |
| 05:58:03 | → | megaTherion joins (~therion@unix.io) |
| 05:58:20 | → | lavaman joins (~lavaman@98.38.249.169) |
| 06:00:17 | → | tureba joins (~tureba@tureba.org) |
| 06:00:17 | → | ozzymcduff joins (~mathieu@81-234-151-21-no94.tbcn.telia.com) |
| 06:03:05 | → | Ekho joins (~Ekho@user/ekho) |
| 06:08:14 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 06:09:47 | × | myShoggoth quits (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 250 seconds) |
| 06:11:07 | × | yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 06:11:42 | → | yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) |
| 06:13:08 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:16:02 | × | yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
| 06:16:39 | × | xkuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
| 06:22:32 | × | xff0x quits (~xff0x@2001:1a81:52ae:a700:ef5b:bdbe:c8a4:8fd2) (Ping timeout: 268 seconds) |
| 06:23:10 | × | shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 260 seconds) |
| 06:23:15 | → | xff0x joins (~xff0x@2001:1a81:52ae:a700:d47e:fd11:5546:7b77) |
| 06:29:23 | × | cjb quits (~cjb@user/cjb) (Quit: rcirc on GNU Emacs 29.0.50) |
| 06:30:37 | → | fef joins (~thedawn@user/thedawn) |
| 06:35:18 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 06:44:43 | → | deadmarshal joins (~deadmarsh@95.38.230.45) |
| 06:47:44 | <hololeap_> | this might be a hard question to answer, but why does `cabal info` take so long to run? |
| 06:47:50 | hololeap_ | is now known as hololeap |
| 06:48:13 | → | emf joins (~emf@2620:10d:c090:400::5:b07b) |
| 06:49:06 | × | deadmarshal quits (~deadmarsh@95.38.230.45) (Ping timeout: 245 seconds) |
| 06:49:28 | × | emf quits (~emf@2620:10d:c090:400::5:b07b) (Client Quit) |
| 06:53:42 | → | deadmarshal joins (~deadmarsh@95.38.230.45) |
| 06:55:49 | → | mamehiko joins (~robbie@140.254.77.249) |
| 06:59:44 | → | drdo joins (~drdo@roach0.drdo.eu) |
| 07:03:31 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 07:03:52 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 07:04:51 | → | yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) |
| 07:05:41 | × | mamehiko quits (~robbie@140.254.77.249) (Quit: Leaving) |
| 07:07:39 | × | xff0x quits (~xff0x@2001:1a81:52ae:a700:d47e:fd11:5546:7b77) (Ping timeout: 260 seconds) |
| 07:08:26 | → | xff0x joins (~xff0x@2001:1a81:52ae:a700:2e71:8ba4:bf99:ed92) |
| 07:09:27 | × | yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Ping timeout: 264 seconds) |
| 07:19:12 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 07:21:36 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 07:24:03 | × | zhengcong quits (~zhengcong@113.140.11.120) (Remote host closed the connection) |
| 07:24:10 | → | max22- joins (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) |
| 07:32:34 | → | lechner joins (~lechner@debian/lechner) |
| 07:38:33 | → | jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
| 07:40:42 | × | jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection) |
| 07:48:00 | → | jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
| 07:48:33 | <sclv> | hololeap: it runs pretty quick for me on the latest cabal. but in general its got to (i think) scan through the entire zipped collection of hackage cabal files to find the ones of interest |
| 07:49:56 | × | deadmarshal quits (~deadmarsh@95.38.230.45) (Ping timeout: 245 seconds) |
| 07:50:35 | <sclv> | i.e. `cabal info bytestring` runs in 1.5 secs on my box |
| 07:51:57 | × | phma quits (~phma@2001:5b0:211f:e738:5c4d:dbc4:3f14:dae2) (Read error: Connection reset by peer) |
| 07:52:23 | × | Firedancer quits (sid336191@id-336191.hampstead.irccloud.com) (Ping timeout: 265 seconds) |
| 07:52:32 | × | meinside quits (uid24933@id-24933.helmsley.irccloud.com) (Ping timeout: 240 seconds) |
| 07:52:41 | × | davetapley quits (sid666@id-666.uxbridge.irccloud.com) (Ping timeout: 250 seconds) |
| 07:52:52 | × | nrr__ quits (sid20938@id-20938.lymington.irccloud.com) (Ping timeout: 265 seconds) |
| 07:53:01 | → | phma joins (phma@2001:5b0:211b:e388:ee5a:511e:22c4:3b06) |
| 07:53:07 | × | alanz quits (sid110616@id-110616.uxbridge.irccloud.com) (Ping timeout: 250 seconds) |
| 07:53:29 | → | alanz joins (sid110616@id-110616.uxbridge.irccloud.com) |
| 07:53:53 | → | yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) |
| 07:54:17 | → | meinside joins (uid24933@id-24933.helmsley.irccloud.com) |
| 07:54:32 | → | nrr__ joins (sid20938@id-20938.lymington.irccloud.com) |
| 07:54:51 | × | yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 07:55:29 | → | yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) |
| 07:55:35 | → | Firedancer joins (sid336191@id-336191.hampstead.irccloud.com) |
| 07:55:35 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 07:55:55 | → | davetapley joins (sid666@id-666.uxbridge.irccloud.com) |
| 07:56:23 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 07:57:30 | → | Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
| 07:58:18 | → | deadmarshal joins (~deadmarsh@95.38.230.45) |
| 07:59:08 | × | jmorris quits (uid433911@id-433911.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 07:59:56 | × | yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Ping timeout: 245 seconds) |
| 08:01:20 | × | Sgeo_ quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 08:03:54 | → | chele joins (~chele@user/chele) |
| 08:04:01 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:7c6d:4c33:f4a3:2a22) |
| 08:04:58 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 08:06:03 | → | trcc joins (~trcc@users-5343.st.net.au.dk) |
| 08:06:05 | × | trcc quits (~trcc@users-5343.st.net.au.dk) (Remote host closed the connection) |
| 08:06:55 | → | trcc joins (~trcc@users-5343.st.net.au.dk) |
| 08:10:03 | → | yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) |
| 08:10:09 | → | trcc_ joins (~trcc@eduroam09.au.dk) |
| 08:10:13 | → | dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be) |
| 08:12:26 | × | trcc_ quits (~trcc@eduroam09.au.dk) (Read error: Connection reset by peer) |
| 08:12:36 | → | trcc_ joins (~trcc@eduroam09.au.dk) |
| 08:13:27 | × | trcc quits (~trcc@users-5343.st.net.au.dk) (Ping timeout: 260 seconds) |
| 08:14:47 | × | yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 08:14:51 | × | deadmarshal quits (~deadmarsh@95.38.230.45) (Ping timeout: 264 seconds) |
| 08:15:21 | → | yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) |
| 08:25:37 | → | michalz joins (~michalz@185.246.204.33) |
| 08:30:32 | → | deadmarshal joins (~deadmarsh@95.38.230.45) |
| 08:30:38 | → | neurocyte0132889 joins (~neurocyte@45.10.60.180) |
| 08:30:38 | × | neurocyte0132889 quits (~neurocyte@45.10.60.180) (Changing host) |
| 08:30:38 | → | neurocyte0132889 joins (~neurocyte@user/neurocyte) |
| 08:33:00 | × | mvk quits (~mvk@2607:fea8:5cc1:fa00::4702) (Read error: Connection reset by peer) |
| 08:33:13 | → | mvk joins (~mvk@2607:fea8:5cc1:fa00::4702) |
| 08:40:25 | × | yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 08:43:45 | → | yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) |
| 08:48:41 | × | yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Ping timeout: 245 seconds) |
| 08:50:24 | → | machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca) |
| 08:51:34 | × | dsrt^ quits (~dsrt@68.101.63.101) (Remote host closed the connection) |
| 08:53:12 | → | fendor joins (~fendor@178.165.196.64.wireless.dyn.drei.com) |
| 08:55:13 | → | yauhsien joins (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) |
| 08:58:15 | × | deadmarshal quits (~deadmarsh@95.38.230.45) (Ping timeout: 260 seconds) |
| 09:02:40 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 09:02:41 | × | yauhsien quits (~yauhsien@118-167-40-224.dynamic-ip.hinet.net) (Read error: Connection reset by peer) |
| 09:02:53 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 09:03:45 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 09:04:22 | → | shailangsa joins (~shailangs@host86-186-133-114.range86-186.btcentralplus.com) |
| 09:11:37 | → | kuribas joins (~user@ptr-25vy0i9f20n8puprvgm.18120a2.ip6.access.telenet.be) |
| 09:12:23 | × | trcc_ quits (~trcc@eduroam09.au.dk) (Remote host closed the connection) |
| 09:16:09 | × | timCF quits (~timCF@200-149-20-81.sta.estpak.ee) (Quit: leaving) |
| 09:16:38 | → | trcc_ joins (~trcc@users-1190.st.net.au.dk) |
| 09:16:57 | → | cfricke joins (~cfricke@user/cfricke) |
| 09:17:28 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 09:17:28 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 09:17:31 | allbery_b | is now known as geekosaur |
| 09:17:49 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 09:19:51 | × | alzgh quits (~alzgh@user/alzgh) (Ping timeout: 256 seconds) |
| 09:20:15 | × | mvk quits (~mvk@2607:fea8:5cc1:fa00::4702) (Ping timeout: 264 seconds) |
| 09:20:20 | × | fef quits (~thedawn@user/thedawn) (Remote host closed the connection) |
| 09:24:50 | → | acidjnk joins (~acidjnk@2001:16b8:6720:5a00:f48d:53a:53a4:d2dc) |
| 09:27:39 | × | edmundnoble quits (sid229620@id-229620.helmsley.irccloud.com) (Ping timeout: 260 seconds) |
| 09:27:39 | × | SethTisue__ quits (sid14912@id-14912.ilkley.irccloud.com) (Ping timeout: 260 seconds) |
| 09:27:39 | × | caasih quits (sid13241@id-13241.ilkley.irccloud.com) (Ping timeout: 260 seconds) |
| 09:27:59 | × | jackdk quits (sid373013@cssa/jackdk) (Ping timeout: 264 seconds) |
| 09:27:59 | × | PotatoGim quits (sid99505@id-99505.lymington.irccloud.com) (Ping timeout: 264 seconds) |
| 09:27:59 | × | hongminhee quits (sid295@id-295.tinside.irccloud.com) (Ping timeout: 264 seconds) |
| 09:27:59 | × | truckasaurus quits (sid457088@id-457088.helmsley.irccloud.com) (Ping timeout: 264 seconds) |
| 09:28:08 | × | sa quits (sid1055@id-1055.tinside.irccloud.com) (Ping timeout: 268 seconds) |
| 09:28:08 | × | christiaanb quits (sid84827@id-84827.lymington.irccloud.com) (Ping timeout: 268 seconds) |
| 09:28:14 | × | dpratt__ quits (sid193493@id-193493.helmsley.irccloud.com) (Ping timeout: 246 seconds) |
| 09:28:14 | × | mrianbloom quits (sid350277@id-350277.ilkley.irccloud.com) (Ping timeout: 246 seconds) |
| 09:28:14 | × | AndreasK__ quits (sid320732@id-320732.uxbridge.irccloud.com) (Ping timeout: 246 seconds) |
| 09:28:14 | × | sa1_ quits (sid7690@id-7690.ilkley.irccloud.com) (Ping timeout: 246 seconds) |
| 09:28:14 | × | b20n quits (sid115913@id-115913.uxbridge.irccloud.com) (Ping timeout: 246 seconds) |
| 09:28:16 | × | Firedancer quits (sid336191@id-336191.hampstead.irccloud.com) (Ping timeout: 245 seconds) |
| 09:28:16 | × | alanz quits (sid110616@id-110616.uxbridge.irccloud.com) (Ping timeout: 245 seconds) |
| 09:28:27 | × | davetapley quits (sid666@id-666.uxbridge.irccloud.com) (Ping timeout: 250 seconds) |
| 09:28:27 | × | Adeon quits (sid418992@id-418992.lymington.irccloud.com) (Ping timeout: 250 seconds) |
| 09:28:27 | × | parseval quits (sid239098@id-239098.helmsley.irccloud.com) (Ping timeout: 250 seconds) |
| 09:28:27 | × | bjs quits (sid190364@user/bjs) (Ping timeout: 250 seconds) |
| 09:28:27 | × | cln quits (sid336875@id-336875.ilkley.irccloud.com) (Ping timeout: 250 seconds) |
| 09:28:27 | × | ysh quits (sid6017@id-6017.ilkley.irccloud.com) (Ping timeout: 250 seconds) |
| 09:28:27 | × | aristid quits (sid1599@id-1599.uxbridge.irccloud.com) (Ping timeout: 250 seconds) |
| 09:28:32 | × | whez quits (sid470288@id-470288.lymington.irccloud.com) (Ping timeout: 240 seconds) |
| 09:28:34 | × | Pent quits (sid313808@id-313808.lymington.irccloud.com) (Ping timeout: 265 seconds) |
| 09:28:34 | × | teehemkay quits (sid14792@id-14792.lymington.irccloud.com) (Ping timeout: 265 seconds) |
| 09:28:34 | × | alinab quits (sid468903@id-468903.helmsley.irccloud.com) (Ping timeout: 265 seconds) |
| 09:28:35 | × | elvishjerricco quits (sid237756@id-237756.helmsley.irccloud.com) (Ping timeout: 246 seconds) |
| 09:28:35 | × | carter quits (sid14827@id-14827.helmsley.irccloud.com) (Ping timeout: 246 seconds) |
| 09:28:35 | × | rune quits (sid21167@id-21167.ilkley.irccloud.com) (Ping timeout: 246 seconds) |
| 09:28:35 | × | enemeth79 quits (sid309041@id-309041.lymington.irccloud.com) (Ping timeout: 264 seconds) |
| 09:28:35 | × | taktoa[c] quits (sid282096@id-282096.tinside.irccloud.com) (Ping timeout: 264 seconds) |
| 09:28:35 | × | dsal quits (sid13060@id-13060.lymington.irccloud.com) (Ping timeout: 264 seconds) |
| 09:28:35 | × | supersven quits (sid501114@id-501114.ilkley.irccloud.com) (Ping timeout: 264 seconds) |
| 09:28:35 | × | rtpg quits (sid443069@id-443069.ilkley.irccloud.com) (Ping timeout: 260 seconds) |
| 09:28:35 | × | hook54321 quits (sid149355@user/hook54321) (Ping timeout: 260 seconds) |
| 09:28:35 | × | edwardk quits (sid47016@haskell/developer/edwardk) (Ping timeout: 260 seconds) |
| 09:28:35 | × | aarchi quits (sid486183@id-486183.uxbridge.irccloud.com) (Ping timeout: 260 seconds) |
| 09:28:35 | × | bw__ quits (sid2730@id-2730.ilkley.irccloud.com) (Ping timeout: 260 seconds) |
| 09:28:35 | × | systemfault quits (sid267009@id-267009.uxbridge.irccloud.com) (Ping timeout: 260 seconds) |
| 09:28:41 | × | nrr__ quits (sid20938@id-20938.lymington.irccloud.com) (Ping timeout: 245 seconds) |
| 09:28:45 | × | saolsen quits (sid26430@id-26430.lymington.irccloud.com) (Ping timeout: 268 seconds) |
| 09:28:53 | × | cbarrett quits (sid192934@id-192934.helmsley.irccloud.com) (Ping timeout: 250 seconds) |
| 09:28:53 | × | T_S_ quits (sid501726@id-501726.uxbridge.irccloud.com) (Ping timeout: 250 seconds) |
| 09:28:53 | × | obviyus quits (sid415299@user/obviyus) (Ping timeout: 250 seconds) |
| 09:28:56 | × | angerman quits (sid209936@id-209936.ilkley.irccloud.com) (Ping timeout: 246 seconds) |
| 09:28:56 | × | bradparker quits (sid262931@id-262931.uxbridge.irccloud.com) (Ping timeout: 246 seconds) |
| 09:28:56 | × | SrPx quits (sid108780@id-108780.uxbridge.irccloud.com) (Ping timeout: 246 seconds) |
| 09:29:02 | × | linkedlistist quits (uid528169@id-528169.lymington.irccloud.com) (Ping timeout: 240 seconds) |
| 09:29:03 | × | SanchayanMaity quits (sid478177@id-478177.hampstead.irccloud.com) (Ping timeout: 265 seconds) |
| 09:29:03 | × | integral quits (sid296274@user/integral) (Ping timeout: 265 seconds) |
| 09:29:03 | × | bbhoss quits (sid18216@id-18216.tinside.irccloud.com) (Ping timeout: 265 seconds) |
| 09:29:03 | × | joel135 quits (sid136450@id-136450.hampstead.irccloud.com) (Ping timeout: 265 seconds) |
| 09:29:03 | × | teehemkay_ quits (sid14792@id-14792.lymington.irccloud.com) (Ping timeout: 265 seconds) |
| 09:29:03 | × | kaizen quits (sid501599@id-501599.helmsley.irccloud.com) (Ping timeout: 265 seconds) |
| 09:29:03 | × | tnks quits (sid412124@id-412124.helmsley.irccloud.com) (Ping timeout: 265 seconds) |
| 09:29:03 | × | lightandlight quits (sid135476@id-135476.helmsley.irccloud.com) (Ping timeout: 260 seconds) |
| 09:29:03 | × | vito quits (sid1962@user/vito) (Ping timeout: 260 seconds) |
| 09:29:11 | × | agander_m quits (sid407952@id-407952.tinside.irccloud.com) (Ping timeout: 264 seconds) |
| 09:29:11 | × | mustafa quits (sid502723@rockylinux/releng/mustafa) (Ping timeout: 264 seconds) |
| 09:29:11 | × | kristjansson_ quits (sid126207@id-126207.tinside.irccloud.com) (Ping timeout: 264 seconds) |
| 09:29:11 | × | scav quits (sid309693@id-309693.helmsley.irccloud.com) (Ping timeout: 264 seconds) |
| 09:29:11 | × | degraafk quits (sid71464@id-71464.lymington.irccloud.com) (Ping timeout: 264 seconds) |
| 09:29:11 | × | JSharp quits (sid4580@id-4580.lymington.irccloud.com) (Ping timeout: 264 seconds) |
| 09:29:11 | × | grfn quits (sid449115@id-449115.helmsley.irccloud.com) (Ping timeout: 264 seconds) |
| 09:29:17 | × | S11001001 quits (sid42510@id-42510.ilkley.irccloud.com) (Ping timeout: 246 seconds) |
| 09:29:18 | → | linkedlistist joins (uid528169@lymington.irccloud.com) |
| 09:29:19 | × | tapas quits (sid467876@id-467876.ilkley.irccloud.com) (Ping timeout: 250 seconds) |
| 09:29:19 | × | pepeiborra quits (sid443799@id-443799.ilkley.irccloud.com) (Ping timeout: 250 seconds) |
| 09:29:19 | × | ProofTechnique quits (sid79547@id-79547.ilkley.irccloud.com) (Ping timeout: 250 seconds) |
| 09:29:19 | × | gmc_ quits (sid58314@id-58314.ilkley.irccloud.com) (Ping timeout: 250 seconds) |
| 09:29:19 | × | jonrh_ quits (sid5185@id-5185.ilkley.irccloud.com) (Ping timeout: 250 seconds) |
| 09:29:20 | → | rune joins (sid21167@ilkley.irccloud.com) |
| 09:29:21 | → | whez joins (sid470288@lymington.irccloud.com) |
| 09:29:21 | → | gregberns___ joins (sid315709@helmsley.irccloud.com) |
| 09:29:21 | → | alinab joins (sid468903@helmsley.irccloud.com) |
| 09:29:22 | → | tnks joins (sid412124@helmsley.irccloud.com) |
| 09:29:22 | → | agander_m joins (sid407952@tinside.irccloud.com) |
| 09:29:22 | × | _0x47 quits (sid508683@id-508683.tinside.irccloud.com) (Ping timeout: 268 seconds) |
| 09:29:22 | × | hamishmack quits (sid389057@id-389057.hampstead.irccloud.com) (Ping timeout: 268 seconds) |
| 09:29:22 | × | rubin55 quits (sid175221@id-175221.hampstead.irccloud.com) (Ping timeout: 268 seconds) |
| 09:29:22 | × | iphy quits (sid67735@id-67735.lymington.irccloud.com) (Ping timeout: 268 seconds) |
| 09:29:22 | × | dmj` quits (sid72307@id-72307.hampstead.irccloud.com) (Ping timeout: 268 seconds) |
| 09:29:22 | × | tritlo quits (sid58727@user/tritlo) (Ping timeout: 268 seconds) |
| 09:29:22 | × | gregberns__ quits (sid315709@id-315709.helmsley.irccloud.com) (Ping timeout: 268 seconds) |
| 09:29:23 | gregberns___ | is now known as gregberns__ |
| 09:29:23 | → | teehemkay_ joins (sid14792@lymington.irccloud.com) |
| 09:29:23 | → | degraafk joins (sid71464@lymington.irccloud.com) |
| 09:29:23 | → | parseval joins (sid239098@helmsley.irccloud.com) |
| 09:29:23 | → | amir_ joins (sid22336@user/amir) |
| 09:29:24 | → | iphy_ joins (sid67735@lymington.irccloud.com) |
| 09:29:24 | → | grfn joins (sid449115@helmsley.irccloud.com) |
| 09:29:24 | → | hamishmack_ joins (sid389057@hampstead.irccloud.com) |
| 09:29:25 | → | scav joins (sid309693@helmsley.irccloud.com) |
| 09:29:25 | → | _0x47_ joins (sid508683@tinside.irccloud.com) |
| 09:29:25 | → | bbhoss joins (sid18216@tinside.irccloud.com) |
| 09:29:27 | → | T_S_ joins (sid501726@uxbridge.irccloud.com) |
| 09:29:27 | → | gonz_____ joins (sid304396@lymington.irccloud.com) |
| 09:29:32 | × | awpr quits (uid446117@id-446117.lymington.irccloud.com) (Ping timeout: 240 seconds) |
| 09:29:32 | × | gonz____ quits (sid304396@id-304396.lymington.irccloud.com) (Ping timeout: 265 seconds) |
| 09:29:32 | × | sclv quits (sid39734@haskell/developer/sclv) (Ping timeout: 265 seconds) |
| 09:29:32 | × | NemesisD quits (sid24071@id-24071.lymington.irccloud.com) (Ping timeout: 265 seconds) |
| 09:29:32 | × | amir quits (sid22336@user/amir) (Ping timeout: 265 seconds) |
| 09:29:32 | × | NiKaN quits (sid385034@id-385034.helmsley.irccloud.com) (Ping timeout: 265 seconds) |
| 09:29:38 | × | aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) |
| 09:29:38 | amir_ | is now known as amir |
| 09:29:44 | → | deadmarshal joins (~deadmarsh@95.38.230.45) |
| 09:29:47 | → | angerman joins (sid209936@ilkley.irccloud.com) |
| 09:29:47 | × | hubvu quits (sid495858@user/hubvu) (Ping timeout: 264 seconds) |
| 09:29:47 | × | ephemient quits (uid407513@id-407513.lymington.irccloud.com) (Ping timeout: 264 seconds) |
| 09:29:47 | × | hendi quits (sid489601@id-489601.lymington.irccloud.com) (Ping timeout: 264 seconds) |
| 09:29:47 | × | Boarders_ quits (sid425905@id-425905.lymington.irccloud.com) (Ping timeout: 264 seconds) |
| 09:29:47 | × | acertain quits (sid470584@id-470584.hampstead.irccloud.com) (Ping timeout: 264 seconds) |
| 09:29:47 | × | astra` quits (sid289983@user/amish) (Ping timeout: 264 seconds) |
| 09:29:47 | × | idnar quits (sid12240@debian/mithrandi) (Ping timeout: 264 seconds) |
| 09:29:47 | × | mcfilib quits (sid302703@user/mcfilib) (Ping timeout: 264 seconds) |
| 09:29:50 | → | sclv joins (sid39734@haskell/developer/sclv) |
| 09:29:51 | × | meinside quits (uid24933@id-24933.helmsley.irccloud.com) (Ping timeout: 264 seconds) |
| 09:29:53 | → | obviyus joins (sid415299@user/obviyus) |
| 09:29:59 | × | typetetris quits (sid275937@id-275937.tinside.irccloud.com) (Ping timeout: 268 seconds) |
| 09:29:59 | × | philpax_ quits (sid516926@id-516926.lymington.irccloud.com) (Ping timeout: 268 seconds) |
| 09:29:59 | × | aria quits (sid380617@id-380617.lymington.irccloud.com) (Ping timeout: 268 seconds) |
| 09:29:59 | × | jmct_ quits (sid160793@id-160793.tinside.irccloud.com) (Ping timeout: 268 seconds) |
| 09:29:59 | × | pjlsergeant quits (sid143467@id-143467.hampstead.irccloud.com) (Ping timeout: 268 seconds) |
| 09:29:59 | × | ehamberg quits (sid18208@id-18208.hampstead.irccloud.com) (Ping timeout: 268 seconds) |
| 09:30:01 | × | glowcoil quits (sid3405@id-3405.tinside.irccloud.com) (Ping timeout: 265 seconds) |
| 09:30:01 | × | jakesyl_ quits (sid56879@id-56879.hampstead.irccloud.com) (Ping timeout: 265 seconds) |
| 09:30:01 | × | conjunctive quits (sid433686@id-433686.helmsley.irccloud.com) (Ping timeout: 265 seconds) |
| 09:30:01 | × | gaze___ quits (sid387101@id-387101.helmsley.irccloud.com) (Ping timeout: 265 seconds) |
| 09:30:03 | → | tritlo joins (sid58727@user/tritlo) |
| 09:30:04 | → | rubin55 joins (sid175221@hampstead.irccloud.com) |
| 09:30:16 | → | glowcoil joins (sid3405@tinside.irccloud.com) |
| 09:30:26 | → | aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net) |
| 09:30:28 | → | gaze___ joins (sid387101@helmsley.irccloud.com) |
| 09:30:33 | → | alanz joins (sid110616@uxbridge.irccloud.com) |
| 09:30:36 | → | taktoa[c] joins (sid282096@tinside.irccloud.com) |
| 09:30:38 | → | Boarders_ joins (sid425905@lymington.irccloud.com) |
| 09:30:41 | → | kristjansson_ joins (sid126207@tinside.irccloud.com) |
| 09:30:42 | → | mcfilib joins (sid302703@user/mcfilib) |
| 09:30:47 | → | pepeiborra joins (sid443799@ilkley.irccloud.com) |
| 09:30:48 | → | ysh joins (sid6017@ilkley.irccloud.com) |
| 09:30:50 | → | typetetris joins (sid275937@tinside.irccloud.com) |
| 09:30:50 | → | cln joins (sid336875@ilkley.irccloud.com) |
| 09:31:02 | × | acidjnk quits (~acidjnk@2001:16b8:6720:5a00:f48d:53a:53a4:d2dc) (Ping timeout: 240 seconds) |
| 09:31:06 | → | joel135 joins (sid136450@hampstead.irccloud.com) |
| 09:31:14 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 09:31:25 | → | ehamberg joins (sid18208@hampstead.irccloud.com) |
| 09:31:26 | → | jmct_ joins (sid160793@tinside.irccloud.com) |
| 09:31:29 | → | bjs joins (sid190364@user/bjs) |
| 09:31:35 | → | hubvu joins (sid495858@user/hubvu) |
| 09:31:44 | → | vito joins (sid1962@user/vito) |
| 09:31:46 | → | carter joins (sid14827@helmsley.irccloud.com) |
| 09:31:47 | → | nrr__ joins (sid20938@lymington.irccloud.com) |
| 09:31:48 | → | kaizen joins (sid501599@helmsley.irccloud.com) |
| 09:31:48 | → | conjunctive joins (sid433686@helmsley.irccloud.com) |
| 09:31:48 | → | NiKaN joins (sid385034@helmsley.irccloud.com) |
| 09:31:48 | → | JSharp joins (sid4580@lymington.irccloud.com) |
| 09:31:49 | → | meinside joins (uid24933@helmsley.irccloud.com) |
| 09:31:50 | → | ProofTechnique joins (sid79547@ilkley.irccloud.com) |
| 09:31:51 | → | CiaoSen joins (~Jura@p200300c95716ce002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 09:31:51 | → | dpratt__ joins (sid193493@helmsley.irccloud.com) |
| 09:31:56 | → | gmc_ joins (sid58314@ilkley.irccloud.com) |
| 09:32:08 | → | enemeth79 joins (sid309041@lymington.irccloud.com) |
| 09:32:08 | → | saolsen joins (sid26430@lymington.irccloud.com) |
| 09:32:11 | → | idnar joins (sid12240@debian/mithrandi) |
| 09:32:12 | → | tapas joins (sid467876@ilkley.irccloud.com) |
| 09:32:16 | → | ephemient joins (uid407513@lymington.irccloud.com) |
| 09:32:17 | → | jonrh_ joins (sid5185@ilkley.irccloud.com) |
| 09:32:22 | → | mustafa joins (sid502723@rockylinux/releng/mustafa) |
| 09:32:23 | → | dsal joins (sid13060@lymington.irccloud.com) |
| 09:32:32 | → | awpr joins (uid446117@lymington.irccloud.com) |
| 09:32:47 | → | SanchayanMaity joins (sid478177@hampstead.irccloud.com) |
| 09:32:47 | → | pjlsergeant joins (sid143467@hampstead.irccloud.com) |
| 09:32:49 | → | astra` joins (sid289983@user/amish) |
| 09:32:54 | → | dmj` joins (sid72307@hampstead.irccloud.com) |
| 09:33:02 | → | hook54321 joins (sid149355@user/hook54321) |
| 09:33:05 | → | truckasaurus joins (sid457088@helmsley.irccloud.com) |
| 09:33:07 | → | elvishjerricco joins (sid237756@helmsley.irccloud.com) |
| 09:33:13 | → | jakesyl_ joins (sid56879@hampstead.irccloud.com) |
| 09:33:16 | → | NemesisD joins (sid24071@lymington.irccloud.com) |
| 09:33:17 | → | hendi joins (sid489601@lymington.irccloud.com) |
| 09:33:18 | → | philpax_ joins (sid516926@lymington.irccloud.com) |
| 09:33:21 | → | Adeon joins (sid418992@lymington.irccloud.com) |
| 09:33:27 | → | systemfault joins (sid267009@uxbridge.irccloud.com) |
| 09:33:39 | → | SrPx joins (sid108780@uxbridge.irccloud.com) |
| 09:33:40 | → | alzgh joins (alzgh@user/alzgh) |
| 09:33:41 | → | bw__ joins (sid2730@ilkley.irccloud.com) |
| 09:33:57 | × | aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Client Quit) |
| 09:33:57 | → | acertain joins (sid470584@hampstead.irccloud.com) |
| 09:33:58 | → | aria joins (sid380617@lymington.irccloud.com) |
| 09:34:03 | → | cbarrett joins (sid192934@helmsley.irccloud.com) |
| 09:34:06 | → | Firedancer joins (sid336191@hampstead.irccloud.com) |
| 09:34:07 | → | S11001001 joins (sid42510@ilkley.irccloud.com) |
| 09:34:39 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 09:34:51 | → | Pent joins (sid313808@lymington.irccloud.com) |
| 09:34:58 | → | integral joins (sid296274@user/integral) |
| 09:35:02 | → | sa joins (sid1055@tinside.irccloud.com) |
| 09:35:04 | → | aarchi joins (sid486183@uxbridge.irccloud.com) |
| 09:35:07 | → | bradparker joins (sid262931@uxbridge.irccloud.com) |
| 09:35:08 | → | edwardk joins (sid47016@haskell/developer/edwardk) |
| 09:35:12 | → | aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net) |
| 09:36:53 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:b4a8:9431:5c1:c0e0) (Remote host closed the connection) |
| 09:37:32 | × | ProofTechnique quits (sid79547@ilkley.irccloud.com) (Ping timeout: 240 seconds) |
| 09:37:54 | × | Pent quits (sid313808@lymington.irccloud.com) (Max SendQ exceeded) |
| 09:37:55 | × | jakesyl_ quits (sid56879@hampstead.irccloud.com) (Max SendQ exceeded) |
| 09:38:02 | × | rubin55 quits (sid175221@hampstead.irccloud.com) (Ping timeout: 240 seconds) |
| 09:38:09 | → | Pent joins (sid313808@id-313808.lymington.irccloud.com) |
| 09:38:15 | × | typetetris quits (sid275937@tinside.irccloud.com) (Ping timeout: 264 seconds) |
| 09:38:33 | → | jakesyl_ joins (sid56879@id-56879.hampstead.irccloud.com) |
| 09:38:41 | × | philpax_ quits (sid516926@lymington.irccloud.com) (Ping timeout: 245 seconds) |
| 09:38:52 | → | philpax_ joins (sid516926@id-516926.lymington.irccloud.com) |
| 09:39:12 | → | rubin55 joins (sid175221@id-175221.hampstead.irccloud.com) |
| 09:40:42 | → | ProofTechnique joins (sid79547@id-79547.ilkley.irccloud.com) |
| 09:41:26 | → | typetetris joins (sid275937@id-275937.tinside.irccloud.com) |
| 09:42:17 | → | jackdk joins (sid373013@cssa/jackdk) |
| 09:42:18 | → | hongminhee joins (sid295@id-295.tinside.irccloud.com) |
| 09:42:21 | → | christiaanb joins (sid84827@id-84827.lymington.irccloud.com) |
| 09:42:26 | → | PotatoGim joins (sid99505@id-99505.lymington.irccloud.com) |
| 09:42:34 | → | SethTisue__ joins (sid14912@id-14912.ilkley.irccloud.com) |
| 09:42:35 | → | edmundnoble joins (sid229620@id-229620.helmsley.irccloud.com) |
| 09:42:41 | → | caasih joins (sid13241@id-13241.ilkley.irccloud.com) |
| 09:42:51 | → | supersven joins (sid501114@id-501114.ilkley.irccloud.com) |
| 09:43:05 | → | lightandlight joins (sid135476@id-135476.helmsley.irccloud.com) |
| 09:43:35 | → | AndreasK__ joins (sid320732@id-320732.uxbridge.irccloud.com) |
| 09:43:36 | → | b20n joins (sid115913@id-115913.uxbridge.irccloud.com) |
| 09:43:37 | → | mrianbloom joins (sid350277@id-350277.ilkley.irccloud.com) |
| 09:43:37 | → | rtpg joins (sid443069@id-443069.ilkley.irccloud.com) |
| 09:43:41 | → | sa1_ joins (sid7690@id-7690.ilkley.irccloud.com) |
| 09:43:45 | → | aristid joins (sid1599@id-1599.uxbridge.irccloud.com) |
| 09:43:47 | → | davetapley joins (sid666@id-666.uxbridge.irccloud.com) |
| 09:43:56 | → | teehemkay joins (sid14792@id-14792.lymington.irccloud.com) |
| 09:47:12 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 09:49:30 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 09:56:16 | → | DNH joins (~DNH@2a02:8108:1100:16d8:64b0:a3f2:ec06:e597) |
| 09:59:33 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 10:00:17 | → | enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) |
| 10:01:54 | × | fendor quits (~fendor@178.165.196.64.wireless.dyn.drei.com) (Read error: Connection reset by peer) |
| 10:02:28 | → | acidjnk joins (~acidjnk@p200300d0c7271e45b900d7f27b1ad71c.dip0.t-ipconnect.de) |
| 10:02:45 | → | cosimone joins (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) |
| 10:03:09 | → | max1984 joins (~Massi@host-79-33-240-217.retail.telecomitalia.it) |
| 10:06:24 | ← | max1984 parts (~Massi@host-79-33-240-217.retail.telecomitalia.it) () |
| 10:16:12 | → | ph88 joins (~ph88@95.90.240.104) |
| 10:16:39 | × | deadmarshal quits (~deadmarsh@95.38.230.45) (Ping timeout: 264 seconds) |
| 10:16:43 | × | ph88 quits (~ph88@95.90.240.104) (Client Quit) |
| 10:17:17 | → | ph88 joins (~ph88@95.90.240.104) |
| 10:18:29 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 10:18:38 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 10:20:21 | → | rribeiro joins (~rodrigo@2804:5c:55cc:9e00:440a:f8e5:a6cd:124c) |
| 10:22:04 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 10:23:04 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 10:24:37 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 10:25:43 | → | sprout_ joins (~quassel@2a02:a467:ccd6:1:990:f1e:8987:d5f9) |
| 10:29:11 | × | sprout quits (~quassel@2a02:a467:ccd6:1:7816:2c69:3dcc:933a) (Ping timeout: 264 seconds) |
| 10:29:51 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 264 seconds) |
| 10:32:04 | → | sprout joins (~quassel@2a02:a467:ccd6:1:e931:44b2:abc5:155b) |
| 10:33:46 | × | sagax quits (~sagax_nb@user/sagax) (Excess Flood) |
| 10:33:52 | × | maerwald quits (~maerwald@mail.hasufell.de) (Changing host) |
| 10:33:52 | → | maerwald joins (~maerwald@user/maerwald) |
| 10:35:23 | → | Axma55388 joins (~Axman6@user/axman6) |
| 10:35:51 | × | sprout_ quits (~quassel@2a02:a467:ccd6:1:990:f1e:8987:d5f9) (Ping timeout: 264 seconds) |
| 10:35:58 | × | Axman6 quits (~Axman6@user/axman6) (Ping timeout: 260 seconds) |
| 10:37:18 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) |
| 10:39:58 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 10:40:05 | → | chele_ joins (~chele@user/chele) |
| 10:43:03 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Ping timeout: 264 seconds) |
| 10:43:55 | → | sprout_ joins (~quassel@2a02:a467:ccd6:1:29bf:5ae9:f17:83c0) |
| 10:43:58 | chele_ | is now known as chele |
| 10:47:01 | × | sprout quits (~quassel@2a02:a467:ccd6:1:e931:44b2:abc5:155b) (Ping timeout: 245 seconds) |
| 10:51:20 | → | raoul joins (~raoul@95.179.203.88) |
| 10:58:11 | × | vysn quits (~vysn@user/vysn) (Ping timeout: 268 seconds) |
| 11:00:20 | → | deadmarshal joins (~deadmarsh@95.38.230.45) |
| 11:00:29 | → | sagax joins (~sagax_nb@user/sagax) |
| 11:02:28 | × | Topsi quits (~Tobias@dyndsl-095-033-023-020.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
| 11:03:50 | → | __monty__ joins (~toonn@user/toonn) |
| 11:04:10 | × | xsperry quits (~xs@user/xsperry) () |
| 11:05:16 | × | Axma55388 quits (~Axman6@user/axman6) (Ping timeout: 260 seconds) |
| 11:07:30 | → | Axman6 joins (~Axman6@user/axman6) |
| 11:10:04 | × | Unhammer quits (~Unhammer@user/unhammer) (Ping timeout: 265 seconds) |
| 11:10:05 | × | blackcap quits (~blackcap@144.89-10-135.nextgentel.com) (Read error: Connection reset by peer) |
| 11:10:15 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 11:10:19 | × | neurocyte0132889 quits (~neurocyte@user/neurocyte) (Ping timeout: 260 seconds) |
| 11:10:53 | → | neurocyte0132889 joins (~neurocyte@45.10.60.180) |
| 11:10:53 | × | neurocyte0132889 quits (~neurocyte@45.10.60.180) (Changing host) |
| 11:10:53 | → | neurocyte0132889 joins (~neurocyte@user/neurocyte) |
| 11:14:37 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 250 seconds) |
| 11:15:46 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 11:15:51 | → | blackcap joins (~blackcap@144.89-10-135.nextgentel.com) |
| 11:17:22 | × | Axman6 quits (~Axman6@user/axman6) (Ping timeout: 260 seconds) |
| 11:17:35 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:18:54 | → | Axman6 joins (~Axman6@user/axman6) |
| 11:22:51 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 11:23:18 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:28:29 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
| 11:28:53 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:29:22 | → | chomwitt joins (~chomwitt@2a02:587:dc14:4600:12c3:7bff:fe6d:d374) |
| 11:33:55 | → | xsperry joins (~xs@user/xsperry) |
| 11:34:06 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 11:34:31 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:39:31 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 11:40:05 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:44:31 | <Franciman> | does haskell allow talking about propositional identity? |
| 11:44:42 | → | sprout joins (~quassel@2a02:a467:ccd6:1:5cca:96d9:7234:6761) |
| 11:45:27 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 11:45:40 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:45:46 | × | CiaoSen quits (~Jura@p200300c95716ce002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
| 11:46:05 | × | martin02 quits (~silas@141.84.69.76) (Ping timeout: 256 seconds) |
| 11:47:15 | × | puke quits (~puke@user/puke) (Quit: puke) |
| 11:47:51 | × | sprout_ quits (~quassel@2a02:a467:ccd6:1:29bf:5ae9:f17:83c0) (Ping timeout: 245 seconds) |
| 11:50:46 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 11:51:23 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:52:28 | × | rribeiro quits (~rodrigo@2804:5c:55cc:9e00:440a:f8e5:a6cd:124c) (Remote host closed the connection) |
| 11:52:31 | → | trcc joins (~trcc@eduroam09.au.dk) |
| 11:56:11 | × | trcc_ quits (~trcc@users-1190.st.net.au.dk) (Ping timeout: 245 seconds) |
| 11:57:54 | × | trcc quits (~trcc@eduroam09.au.dk) (Remote host closed the connection) |
| 11:58:26 | → | trcc joins (~trcc@users-5343.st.net.au.dk) |
| 12:01:39 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 12:02:55 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 12:12:48 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 12:13:39 | × | deadmarshal quits (~deadmarsh@95.38.230.45) (Ping timeout: 264 seconds) |
| 12:15:23 | → | jippiedoe joins (~david@2a02-a44c-e14e-1-c6ad-4343-92dc-4cb2.fixed6.kpn.net) |
| 12:17:01 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 250 seconds) |
| 12:26:20 | × | Cajun quits (~Cajun@user/cajun) (Quit: Client closed) |
| 12:31:03 | × | jippiedoe quits (~david@2a02-a44c-e14e-1-c6ad-4343-92dc-4cb2.fixed6.kpn.net) (Ping timeout: 264 seconds) |
| 12:38:36 | × | alzgh quits (alzgh@user/alzgh) (Remote host closed the connection) |
| 12:38:56 | → | alzgh joins (alzgh@user/alzgh) |
| 12:49:32 | → | jippiedoe joins (~david@2a02-a44c-e14e-1-c482-95c0-575a-83bc.fixed6.kpn.net) |
| 12:54:40 | → | Cajun joins (~Cajun@user/cajun) |
| 12:54:42 | → | CiaoSen joins (~Jura@p200300c95716ce002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 13:01:08 | → | dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net) |
| 13:10:48 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 13:11:39 | → | deadmarshal joins (~deadmarsh@95.38.230.45) |
| 13:15:21 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 245 seconds) |
| 13:15:34 | × | bw__ quits (sid2730@ilkley.irccloud.com) () |
| 13:16:00 | → | bw joins (sid2730@user/betawaffle) |
| 13:26:05 | × | bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 13:28:07 | × | troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset) |
| 13:29:55 | → | troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua) |
| 13:32:57 | × | V quits (~v@anomalous.eu) (Remote host closed the connection) |
| 13:34:15 | → | V joins (~v@anomalous.eu) |
| 13:36:48 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 13:45:18 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 13:48:57 | → | timCF joins (~timCF@200-149-20-81.sta.estpak.ee) |
| 13:50:12 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 13:52:22 | <timCF> | Hello! Are there any runtime perfornamce issues because using TypeApplications `@a` syntax instead of `Proxy :: Proxy a` in generic functions with `forall a.`? For me `@a` looks better, and I'll use it any day of the week instead of Proxy, but is it coming for free in terms of performance? |
| 13:52:48 | <merijn> | timCF: Performance: Probably. Maintenance: No |
| 13:52:56 | <dminuoso> | TypeApplication could probably be cheaper since there's no token that GHC must optimize away |
| 13:53:08 | <dminuoso> | But I call premature optimization |
| 13:54:02 | <timCF> | You mean TypeApplications might be even better in terms of performance? |
| 13:54:03 | → | slowButPresent joins (~slowButPr@user/slowbutpresent) |
| 13:54:06 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 13:54:25 | <merijn> | TypeApplications may also break randomly when your dependencies *OR* compiler update, so... |
| 13:54:26 | <dminuoso> | timCF: Personally I prefer Proxy in most situations because a) it guarantees stable and communicatable API, b) doesn't demand yet-another extension from a user, and it's often easier to pass things around by binding a proxy pattern rather than introduce some forall at some outer level |
| 13:55:19 | <merijn> | TypeApplications is great, if you like things like "accidentall tying the stability of my API to implementation details of your specific compiler version"! |
| 13:55:20 | <dminuoso> | If both sides (the definition and call site) are under your full control, it probably doesn't matter |
| 13:55:34 | <dminuoso> | But be sure to introduce all variables explicitly via forall |
| 13:56:52 | <timCF> | merijn: dminuoso: thanks! |
| 13:57:23 | <timCF> | merijn: you mean it might brake when I'm using some dependency, and then they switch order in forall expression for some reason? |
| 13:57:38 | <dminuoso> | Also, TypeApplications tends to be a bit brittle when since you cant apply polymorphic things to visible type arguments after inference has done its job |
| 13:57:48 | <merijn> | timCF: Yes. And also if they never used an explicit forall and the GHC infers a different order for implicit foralls |
| 13:57:49 | <dminuoso> | e.g.: |
| 13:57:52 | <dminuoso> | % f = id |
| 13:57:52 | <yahb> | dminuoso: |
| 13:57:54 | <dminuoso> | % :t f |
| 13:57:54 | <yahb> | dminuoso: a -> a |
| 13:58:04 | <dminuoso> | % :t f @Int |
| 13:58:05 | <yahb> | dminuoso: ; <interactive>:1:1: error:; * Cannot apply expression of type `a0 -> a0'; to a visible type argument `Int'; * In the expression: f @Int |
| 13:58:06 | <merijn> | timCF: Which is not a hypothetical situation, because we've already had 1 GHC release that broke TypeApplications that way |
| 13:58:19 | <merijn> | (changed the order constraints were inferred in) |
| 13:58:23 | <dminuoso> | timCF: ^- Do instantly and intuitively know why this is? |
| 13:59:12 | <timCF> | dminuoso: AllowAmbiguousTypes or something like this? |
| 13:59:16 | <dminuoso> | Nope. |
| 13:59:31 | <merijn> | Is it...the monomorphism restriction? :D |
| 13:59:38 | <dminuoso> | Nope |
| 13:59:42 | <merijn> | aww |
| 13:59:43 | <kuribas> | merijn: solution: always use explicit forall. |
| 14:00:04 | <dminuoso> | timCF: You cant apply things with "invisible" type variables to visible type arguments. |
| 14:00:14 | <dminuoso> | There's subtle reasons for why all that is |
| 14:00:40 | <dminuoso> | But the consequence is that you cant use TypeApplications as freely because as soon as GHC does type inference, you cant use TypeApplications anymore |
| 14:00:51 | <dminuoso> | That is, if GHC repolymorphizes |
| 14:00:54 | <merijn> | kuribas: Do your dependencies do that, though? |
| 14:01:12 | <dminuoso> | timCF: Proxy is really much more solid and obvious. :) |
| 14:01:20 | <timCF> | merijn: who knows really :) |
| 14:01:22 | <dminuoso> | Albeit a bit noisy, but other than that it has mostly just benefits |
| 14:01:31 | <merijn> | kuribas: Also, I don't, because I dislike TypeApplications for reasons above |
| 14:01:31 | <kuribas> | merijn: I don't use TypeApplications if they don't. |
| 14:01:50 | <dminuoso> | timCF: Though you can do one interesting combination |
| 14:01:52 | <dminuoso> | That one I favor |
| 14:01:57 | <dminuoso> | Proxy *with* TypeApplications |
| 14:02:03 | <kuribas> | Just use a language where you can apply types as arguments. |
| 14:02:04 | <dminuoso> | f (Proxy @Int) |
| 14:02:12 | <dminuoso> | This is a nice middle ground |
| 14:02:16 | <timCF> | dminuoso: that's actually cool |
| 14:02:58 | <timCF> | kuribas: for example? |
| 14:03:05 | <kuribas> | timCF: idris |
| 14:03:07 | <merijn> | Idris :p |
| 14:03:10 | <timCF> | hmmm |
| 14:03:11 | <merijn> | Agda, Coq |
| 14:03:18 | <merijn> | timCF: He's mostly joking :p |
| 14:03:21 | <merijn> | (I assume) |
| 14:03:30 | <timCF> | Are they better version of Haskell then? :) |
| 14:03:42 | <timCF> | (probably not) |
| 14:03:52 | <Hecate> | Idris 2 |
| 14:03:58 | <kuribas> | merijn: yes and no. If you are doing extensive type level programming, you may be better of with idris than with haskell. |
| 14:04:12 | <merijn> | timCF: Define "beter", "version", and "haskell" :p |
| 14:04:25 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 14:05:34 | <timCF> | Prelude> better version haskell |
| 14:05:34 | <timCF> | |
| 14:05:34 | <timCF> | <interactive>:1:1: error: |
| 14:05:34 | <timCF> | Variable not in scope: better :: t0 -> t1 -> t |
| 14:05:34 | <timCF> | |
| 14:05:36 | <timCF> | <interactive>:1:8: error: Variable not in scope: version |
| 14:05:39 | <timCF> | |
| 14:05:41 | <timCF> | <interactive>:1:16: error: Variable not in scope: haskell |
| 14:05:45 | → | son0p joins (~ff@181.136.122.143) |
| 14:05:50 | <timCF> | :) |
| 14:07:31 | × | Cajun quits (~Cajun@user/cajun) (Quit: Client closed) |
| 14:09:23 | <kuribas> | merijn: idris is not production ready, but it will never be if people keep shoehorning type level stuff into haskell, instead of using a more appropriate language. |
| 14:09:37 | <maerwald> | kuribas++ |
| 14:10:19 | <merijn> | Haskell won't be production ready if people keep doing that too :p |
| 14:10:31 | <maerwald> | but I want my toys! |
| 14:11:45 | <kuribas> | merijn: it has been for a long time. |
| 14:12:14 | <kuribas> | merijn: wait, you mean it will not be production ready if people keep adding on top of it? |
| 14:12:32 | × | Philonous_ quits (~Philonous@user/philonous) (Quit: ZNC - https://znc.in) |
| 14:12:33 | <timCF> | merijn: I actually never tried any of them (Idris, Agda, Coq). Which of them is the most enterprise-oriented in your opinion? Toys are important, but I'm kinda doing web programming.. It will be hard without Persistent, Esqueleto, Yesod, Servant, Conduit and others |
| 14:12:54 | <kuribas> | merijn: If so, I agree. I'd rather see other improvements than DH. |
| 14:13:02 | → | Philonous joins (~Philonous@user/philonous) |
| 14:13:08 | <kuribas> | in particular tooling improvements. |
| 14:13:26 | <merijn> | kuribas: The latter, yes |
| 14:13:44 | <dminuoso> | Web development itself is a disgusting field honestly |
| 14:14:06 | <kuribas> | timCF: frankly none of them. |
| 14:14:11 | <dminuoso> | More so than other fields this requires good availability of libraries to help pull the weight. |
| 14:14:25 | <kuribas> | timCF: you may use them as a prototype, or for verifying parts of your program. |
| 14:14:28 | <timCF> | dminuoso: With Haskell not that disgusting actually. After switch from Erlang I'm sleeping much better at night. |
| 14:14:59 | <dminuoso> | We dont have a plethora of good options to generate HTML with |
| 14:15:10 | <timCF> | Yesod/Blaze? |
| 14:15:17 | <dminuoso> | Highly opinionated. |
| 14:15:24 | <maerwald> | dminuoso: because we're busy adding more complicated stuff to our toybelt |
| 14:15:29 | <maerwald> | that serves a few edge cases |
| 14:16:02 | <dminuoso> | There's also reflex-dom if you enjoy FRP |
| 14:16:13 | <dminuoso> | But the toolstack you start accomulating gets unreal |
| 14:16:18 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 276 seconds) |
| 14:16:34 | <kuribas> | IMO Dependent Haskell makes even less sense for teaching. |
| 14:17:53 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 14:18:33 | <dminuoso> | timCF: Also yesod is becoming less and less relevant, there's not as many active contributions anymore |
| 14:18:50 | <dminuoso> | And it comes with a bus factor of 1.1 |
| 14:18:54 | <kuribas> | dminuoso: as opposed to what? |
| 14:18:56 | <maerwald> | fpco seems to shift more into devops, rust and blockchain |
| 14:19:11 | <dminuoso> | kuribas: As opposed to the past. |
| 14:19:14 | <dminuoso> | https://github.com/yesodweb/yesod/graphs/contributors |
| 14:19:53 | <kuribas> | dminuoso: I meant, what are people using then? |
| 14:20:09 | <dminuoso> | No clue |
| 14:20:18 | <kuribas> | servant? |
| 14:20:26 | <kuribas> | spock, ... |
| 14:20:28 | <dminuoso> | Based on various factors Id assume web developers simply pick more suitable tools. |
| 14:20:36 | <dminuoso> | Based on surrounding technologies |
| 14:20:41 | <maerwald> | same for snap https://github.com/snapframework/snap/graphs/contributors |
| 14:20:41 | <dminuoso> | Say they might build the frontend in reactjs |
| 14:21:00 | → | jkaye joins (~jkaye@2601:281:8300:7530:c25c:6460:bfbf:33d6) |
| 14:21:22 | <dminuoso> | maerwald: Yup. |
| 14:21:53 | → | aliosablack joins (~chomwitt@2a02:587:dc14:4600:12c3:7bff:fe6d:d374) |
| 14:22:09 | × | chomwitt quits (~chomwitt@2a02:587:dc14:4600:12c3:7bff:fe6d:d374) (Read error: Connection reset by peer) |
| 14:22:42 | <dminuoso> | From a business point of view, deciding to simply do it in Django seems more worthwhile. You have to be fairly religious to do web development in Haskell. |
| 14:23:06 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 14:23:27 | <merijn> | dminuoso: The kinda religious that'd just switch to Ur/Web ;) |
| 14:23:47 | <kuribas> | dminuoso: or clojure? |
| 14:24:16 | <timCF> | dminuoso: Yesod is just enterprise web framework for Haskell, when I've started to use it - I had no idea how to write actual Haskell, but was already able to build websites with postgres storage. And then I've gradually learned about stuff like Functors, Applicatives, Monads, Alternatives (just new use cases when more complex web forms were needed) |
| 14:24:28 | <dminuoso> | timCF: What does "enterprise web framework" even mean? |
| 14:24:41 | <maerwald> | dminuoso: you start with no clue what you're doing |
| 14:24:47 | <dminuoso> | ah heh |
| 14:24:55 | <timCF> | dminuoso: maerwald: exactly |
| 14:25:36 | <dminuoso> | kuribas: Like I said, Id focus on picking a language that has rich tooling and active participation of wide industry. For web development, that's mostly JavaScript and some Python. |
| 14:25:43 | <timCF> | It's not the most efficient way of learning Haskell anyway. It's actually very inefficient, but works for some people |
| 14:25:53 | <merijn> | dminuoso: I have a better solution! |
| 14:25:58 | <Franciman> | dminuoso: I would choose a language which is not lazy |
| 14:25:59 | <merijn> | dminuoso: I just gave up on having a website! :p |
| 14:26:02 | <dminuoso> | merijn: Yup. |
| 14:26:19 | <Franciman> | default laziness is plain dumb, optimal evaluation is much better idea |
| 14:26:39 | <kuribas> | dminuoso: you might not use haskell at all! Except for the blockchain! |
| 14:26:41 | <timCF> | Franciman: just use StrictData and you will be safe in most cases |
| 14:26:45 | <merijn> | Default lazy is still better than default strict |
| 14:26:59 | <maerwald> | merijn: that's hard to assess |
| 14:27:22 | <Franciman> | sure |
| 14:27:26 | <Franciman> | default lazy on the web |
| 14:27:30 | <Franciman> | so that chromium consumes 200GB |
| 14:27:32 | <Franciman> | instead of 32 |
| 14:27:39 | <Franciman> | is awesome choice |
| 14:27:44 | <maerwald> | the only real argument pro default laziness is that GHC can optimize *some* stuff better |
| 14:27:47 | <Franciman> | web sucks :P |
| 14:27:52 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 14:28:01 | <maerwald> | but that's a brittle argument from a language perspective |
| 14:28:04 | <merijn> | maerwald: I have a better argument |
| 14:28:18 | <merijn> | maerwald: "too lazy" can always be solved locally. "too strict" cannot |
| 14:28:21 | → | trcc_ joins (~trcc@eduroam09.au.dk) |
| 14:28:26 | × | trcc_ quits (~trcc@eduroam09.au.dk) (Remote host closed the connection) |
| 14:28:29 | <Franciman> | I am speaking about web dev |
| 14:28:35 | <maerwald> | merijn: well, that's not true... I have a complicated example where that didn't work |
| 14:28:38 | <merijn> | Therefore it's easier to obtain the desired semantics by having default lazy |
| 14:28:43 | <maerwald> | but it's proprietary code |
| 14:28:44 | <dminuoso> | Third opinion: Both suck, a lazy-polymorphic like levity would be ideal. |
| 14:28:51 | <dminuoso> | Let the user pick what they want. |
| 14:28:53 | <merijn> | dminuoso: Yes, that's what I want |
| 14:29:04 | <merijn> | dminuoso: And well get started on, as soon as someone will pay me :p |
| 14:29:17 | <Franciman> | I also don't understand why you have to pick between a totally wrong solution (laziness) and a totally incorrect approximation (strictness) |
| 14:29:18 | <merijn> | dminuoso: Together with proper, pure, exceptions |
| 14:29:21 | <Franciman> | when you can choose optimal evaluation |
| 14:29:25 | <maerwald> | the final value was forced, but there was a huge intermediate thunk buildup, which caused immense performance regression in a hot loop... forcing the final value doesn't help you at all |
| 14:30:06 | <maerwald> | so we had to go through the entire codebase and identify the issues... most of them were in data constructors |
| 14:30:32 | <maerwald> | that's why some people say laziness is global state |
| 14:30:45 | → | epolanski joins (uid312403@id-312403.helmsley.irccloud.com) |
| 14:30:54 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 14:31:15 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 14:31:36 | × | trcc quits (~trcc@users-5343.st.net.au.dk) (Ping timeout: 245 seconds) |
| 14:31:55 | <Franciman> | laziness is a bit of cargo cult, because optimal evaluation is not industry read yet |
| 14:32:00 | <maerwald> | and that issue was disrupting the business |
| 14:32:05 | <maerwald> | and cost money |
| 14:32:12 | <Franciman> | it's become axiomatic |
| 14:32:17 | <Franciman> | either laziness or strictness |
| 14:32:20 | <Franciman> | how about no? |
| 14:32:51 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 264 seconds) |
| 14:32:51 | × | neurocyte0132889 quits (~neurocyte@user/neurocyte) (Ping timeout: 264 seconds) |
| 14:33:00 | <maerwald> | Franciman: by the time we have something better, I'll not be programming anymore :D |
| 14:33:02 | <lortabac> | Franciman: I guess you answered your own question. Optimal evaluation is not production-ready yet |
| 14:33:17 | <lortabac> | it's mostly a research topic AFAIK |
| 14:33:41 | <Franciman> | wasn't haskell the same? |
| 14:34:56 | × | CiaoSen quits (~Jura@p200300c95716ce002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
| 14:35:41 | <lortabac> | Franciman: yes, it took a long time to make laziness even remotely usable |
| 14:35:53 | <merijn> | Not really, there were a bunch of lazy languages. Haskell exists so that people could focus their work on one language instead of reinventing the wheel every time |
| 14:35:55 | <lortabac> | the first IO system in Haskell was not very ergonomic |
| 14:36:16 | <Franciman> | merijn: not really to what? |
| 14:36:20 | <lortabac> | merijn: did those languages have a usable IO system? |
| 14:36:30 | <Franciman> | not really to not being cargo cult of laziness? |
| 14:36:31 | <merijn> | lortabac: Some, ys |
| 14:36:42 | <Franciman> | laziness as the only truth? |
| 14:37:16 | <merijn> | Franciman: That Haskell wasn't the only lazy language |
| 14:37:23 | <Franciman> | lol |
| 14:37:25 | <Franciman> | ok |
| 14:37:47 | <merijn> | The Haskell committee was *explicitly* formed to unify efforts in several lazy languages |
| 14:37:57 | <Franciman> | btw, I think that we could benefit from some easy tutorials on the internal STG machine |
| 14:38:00 | <merijn> | The first Haskell compiler was implemented in Lazy ML |
| 14:38:10 | <merijn> | So, obviously Haskell wasn't the first lazy language |
| 14:38:13 | <Franciman> | so that people get more sense of how laziness works |
| 14:38:13 | <dminuoso> | How can I easily share a bunch of common dependencies at preset verious in multiple components in a cabal file? |
| 14:38:17 | <Franciman> | instead of pretending haskell is magic |
| 14:38:21 | <merijn> | dminuoso: common block |
| 14:38:39 | <lortabac> | merijn: do you know another sane IO mechanism before monads? |
| 14:38:40 | <Franciman> | do we have, as a community good tutorials on STG machine? |
| 14:38:40 | <merijn> | dminuoso: https://github.com/merijn/Belewitte/blob/master/benchmark-analysis/benchmark-analysis.cabal#L34-L62 |
| 14:38:51 | <merijn> | lortabac: Uniqueness types |
| 14:38:53 | <merijn> | lortabac: See Clean |
| 14:38:56 | <dminuoso> | merijn: Spot on, thanks! |
| 14:39:10 | <merijn> | dminuoso: You can even import multiple common blocks into one component to compose them |
| 14:39:31 | × | deadmarshal quits (~deadmarsh@95.38.230.45) (Ping timeout: 245 seconds) |
| 14:39:41 | <maerwald> | Franciman: I hate having to know internals of the compiler to understand how a language works (and behaves, operationally). The more important compiler knowledge becomes, the more broken I consider the language. |
| 14:40:03 | <maerwald> | which means C++ is utterly broken |
| 14:40:05 | <Franciman> | eh but then how do you understand haskell's computational model? |
| 14:40:08 | <Franciman> | if you want to optimize |
| 14:40:21 | <Franciman> | laziness is hard because you can't reason about it |
| 14:40:23 | <Franciman> | easily |
| 14:43:12 | <Franciman> | laziness requires graphs |
| 14:43:17 | <Franciman> | strictness is about trees |
| 14:43:33 | <Franciman> | I personally work better on trees, but just because I am more used to them |
| 14:43:43 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 14:43:53 | <Franciman> | if you teach me how laziness computationally behaves, I think I can understand haskell's computational model better |
| 14:44:01 | <Franciman> | and fix laziness bugs earlier |
| 14:44:05 | × | nisstyre quits (~wes@li798-187.members.linode.com) (Changing host) |
| 14:44:05 | → | nisstyre joins (~wes@user/nisstyre) |
| 14:45:24 | <Franciman> | imho laziness is the best default when you are coding on paper and don't expect your code to run anywhere |
| 14:45:40 | <Franciman> | otherwise you also need to, some extent, understand the computational model of the machine |
| 14:45:58 | <Franciman> | hence, if you are so fond of retaining laziness, you need a way to understand how the code runs |
| 14:46:20 | <maerwald> | Franciman: that's a moving target |
| 14:46:40 | <maerwald> | inlining behavior etc changes a LOT between GHC versions |
| 14:48:23 | <Franciman> | then we are doomed |
| 14:48:25 | <Franciman> | whant can I say |
| 14:48:28 | <Franciman> | what* |
| 14:48:34 | <Franciman> | I thought haskell standard gave a semantics |
| 14:48:42 | <Franciman> | I understand that ghc can have its quircks |
| 14:48:50 | <Franciman> | but if they compose the 98% of the semantics of haskell |
| 14:48:52 | <Franciman> | we are doomed |
| 14:48:56 | <Franciman> | you can't reason about anything |
| 14:49:35 | <dminuoso> | You need to understand how the code runs irrspective of the language if you want performing code. And the reality is, you're going to be sad if you write code with the assumption of an implementation. |
| 14:49:53 | <dminuoso> | v8 made a major reengineering, which caused a massive performance degradation of thousands of JS packages |
| 14:50:06 | <lortabac> | I found this tool very interesting for GHC, I haven't tried it yet though: https://youtu.be/I4lnCG18TaY |
| 14:54:32 | <Franciman> | dminuoso: ok, but I don't have a freaking clue about what happens in my code |
| 14:54:40 | <Franciman> | I can only use a very abstract substitution based semantics |
| 14:54:42 | <Franciman> | to understand what happens |
| 14:54:53 | <Franciman> | it's hard to understand laziness |
| 14:55:00 | → | Lycurgus joins (~juan@98.4.112.204) |
| 14:55:01 | <Franciman> | that's why I said, probably we need to know better how ghc works |
| 14:55:14 | <Franciman> | if the behaviour of haskell changes 98% at every ghc version |
| 14:55:17 | <Franciman> | then that's a problem |
| 14:55:36 | <Franciman> | but if there is a core semantics, that mostly gets you an idea, that's a better approximation of saying |
| 14:55:37 | <maerwald> | performance properties, not behaviour |
| 14:55:37 | → | lavaman joins (~lavaman@98.38.249.169) |
| 14:55:39 | <Franciman> | uhm laziness magic! |
| 14:56:04 | <Franciman> | if we want the cargo cult of laziness as the ultimate magic you don't have to think about |
| 14:56:06 | <Franciman> | then ok |
| 14:56:16 | × | acidjnk quits (~acidjnk@p200300d0c7271e45b900d7f27b1ad71c.dip0.t-ipconnect.de) (Ping timeout: 265 seconds) |
| 14:56:24 | <Franciman> | but in practice i found myself wanting to understand what was going on |
| 14:57:35 | <Franciman> | imagine C++ with default lazy semantics |
| 14:57:43 | <Franciman> | that would be a nightmare |
| 14:57:45 | → | benin6 joins (~benin@183.82.178.244) |
| 14:58:30 | <Lycurgus> | that's just like ur opinion man |
| 14:59:36 | <Lycurgus> | also a lot of people here think c/c++ are a nightmare regardless |
| 14:59:54 | × | benin quits (~benin@183.82.178.244) (Ping timeout: 268 seconds) |
| 14:59:55 | benin6 | is now known as benin |
| 15:00:08 | → | zincy_ joins (~zincy@2a00:23c8:970c:4801:4518:ab7b:975d:2f47) |
| 15:00:09 | <Franciman> | now imagine mutable state + laziness |
| 15:00:20 | <Franciman> | + c++ quirks |
| 15:00:27 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 264 seconds) |
| 15:01:26 | <Lycurgus> | a minority prolly recognize it as the defacto universal machine lang of this time |
| 15:02:23 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 15:04:01 | <Lycurgus> | ghc changing 98% even at every leading number change prolly wouldn work and i'm reasonably confident isn't in fact the case |
| 15:04:42 | <Lycurgus> | although it's rate of mutation is different than other comparable langs |
| 15:05:21 | <Lycurgus> | that would be like a complete rewrite on every major release |
| 15:05:56 | <Lycurgus> | 98% of something out the end of the thing maybe |
| 15:06:03 | → | rekahsoft joins (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) |
| 15:08:17 | × | zincy_ quits (~zincy@2a00:23c8:970c:4801:4518:ab7b:975d:2f47) (Remote host closed the connection) |
| 15:08:44 | <Lycurgus> | *its rate |
| 15:11:06 | <Franciman> | Lycurgus: what I mean is probably best expressed by this meme |
| 15:11:20 | <Franciman> | this channel: laziness is godsent and is incredibly awesome for reasoning about code |
| 15:11:26 | <Franciman> | real world: *screams in all directions* |
| 15:11:34 | <Franciman> | so I suggested |
| 15:11:39 | <Franciman> | well I don't usggest |
| 15:11:49 | <Lycurgus> | turning it off? |
| 15:11:57 | <Franciman> | I suppose that if one learns a bit more about the internals of how laziness is used |
| 15:12:02 | <Franciman> | and executed |
| 15:12:05 | <Franciman> | i.e. the STG machine |
| 15:12:09 | <Franciman> | the screams get reduced |
| 15:13:41 | <Lycurgus> | telling a lisp audience that laziness sucks is like telling romance lang speakers their lang is effeminate or germans theirs is brutish |
| 15:13:51 | <Lycurgus> | *haskell audience |
| 15:14:42 | <Franciman> | I am not saying it sucks |
| 15:14:44 | <Franciman> | holy hell |
| 15:15:18 | <lortabac> | Lycurgus: they can say anything they want about my language, it's not me who invented it, I'm just a user :P |
| 15:15:25 | × | alzgh quits (alzgh@user/alzgh) (Remote host closed the connection) |
| 15:15:39 | <lortabac> | (I mean natural language) |
| 15:15:45 | → | alzgh joins (alzgh@user/alzgh) |
| 15:15:53 | <Franciman> | Lycurgus: I just said, maybe problems with laziness can be more easy to solve if we all learn about STG machine |
| 15:15:57 | <Lycurgus> | it's all perspective, a boon in the right mindset |
| 15:16:16 | <geekosaur> | not sure "the STG machine" is the right target here, either. STG is a way to efficiently do graph reduction. https://en.wikipedia.org/wiki/Graph_reduction may be more helpful |
| 15:16:22 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 15:16:38 | <Franciman> | I also said that I don't like the dychotomy `default laziness is of course better than strictness by default' |
| 15:16:43 | <Franciman> | because you have other solutions |
| 15:16:52 | <geekosaur> | that is, if you look for the details on STG you will find a lot of stuff on implementing it on hardware |
| 15:17:12 | <geekosaur> | because STG is about doing graph reduction on real hardware |
| 15:17:14 | <Lycurgus> | i don't wanna know about STG machine, just wanna be able to turn it off if it causes a problem I don't have time to fix right now |
| 15:18:34 | <Lycurgus> | in general I don't wanna know about anything internal any deeper than TH |
| 15:18:51 | <geekosaur> | and there is -XStrictData for that |
| 15:19:03 | <Franciman> | how often do you use it? |
| 15:19:11 | <Franciman> | rarely? |
| 15:19:20 | <Lycurgus> | i think people use it all the time |
| 15:19:25 | <geekosaur> | (-XStrict generally goes too far, you'd have to replace the Prelude and nobody has written a strict Prelude replacement yet) |
| 15:20:05 | <maerwald> | XStrict is also odd, I think it also depends on how you write down your functions |
| 15:20:09 | <Franciman> | it's been shown by maerwald that -XStrict can become dodgy |
| 15:20:14 | <Franciman> | oh well |
| 15:20:33 | <maerwald> | afair `foo x = id x` is not the same as `foo = id` under XStrict |
| 15:20:51 | <merijn> | Lycurgus: I'm pretty confident that the people using StrictData are the *vast* minority on hackage |
| 15:21:10 | <Lycurgus> | merijn, ack |
| 15:21:28 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:d41b:9326:c4d8:9f2a) |
| 15:21:30 | <lortabac> | merijn: I have worked in 3 different teams, and all of them had StrictData enabled at project-level |
| 15:22:44 | <geekosaur> | #ghc also strongly suggests that -XStrictData is pretty common in larger environments |
| 15:22:59 | <lortabac> | it's recommended by some popular blog post |
| 15:23:00 | <Hecate> | yeah, we do so in my team as well |
| 15:23:02 | <Hecate> | hi lortabac o/ :) |
| 15:23:15 | <lortabac> | Hecate: hello :) |
| 15:23:31 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 15:23:31 | <merijn> | lortabac: There's lots of popular blog posts that aren't necessarily, correct, though :p |
| 15:23:47 | <merijn> | tbh, StrictData project wide seems like a "Go-lang" solution |
| 15:23:57 | × | dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3) |
| 15:25:02 | <merijn> | In the "we can't be arsed or don't trust our juniors to be trained adequately to think about what they're doing, so we just settle for a predictable/plannable form of mediocre"-sense |
| 15:25:16 | <merijn> | There's certainly a business argument for that |
| 15:26:12 | <maerwald> | nonsense... the cases where you really need lazy data constructors isn't hard to figure out |
| 15:26:15 | <merijn> | But I don't like it |
| 15:26:56 | <Franciman> | good |
| 15:27:16 | <maerwald> | StrictData isn't enabled to make juniors more comfortable |
| 15:27:48 | × | hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds) |
| 15:27:53 | → | learner-monad joins (~ehanneken@user/learner-monad) |
| 15:28:23 | → | hololeap joins (~hololeap@user/hololeap) |
| 15:28:23 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 260 seconds) |
| 15:28:57 | <maerwald> | it's also enabled in network packages like warp... and Kazu isn't a junior |
| 15:29:37 | <maerwald> | https://github.com/yesodweb/wai/pull/752#issuecomment-501531386 |
| 15:30:58 | → | shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
| 15:34:43 | × | learner-monad quits (~ehanneken@user/learner-monad) (Quit: WeeChat 3.3) |
| 15:39:06 | × | jippiedoe quits (~david@2a02-a44c-e14e-1-c482-95c0-575a-83bc.fixed6.kpn.net) (Ping timeout: 245 seconds) |
| 15:41:06 | × | Lycurgus quits (~juan@98.4.112.204) (Quit: Exeunt) |
| 15:43:57 | × | Kaiepi quits (~Kaiepi@156.34.44.192) (Ping timeout: 250 seconds) |
| 15:51:31 | → | learner-monad joins (~ehanneken@user/learner-monad) |
| 15:55:12 | <vaibhavsagar[m]> | we use -XStrict and -XStrictData in my work codebase |
| 15:55:32 | → | lavaman joins (~lavaman@98.38.249.169) |
| 15:56:55 | <vaibhavsagar[m]> | it's comforting to know other people do it too |
| 15:58:19 | → | hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) |
| 15:58:36 | <Hecate> | :) |
| 15:59:43 | <Hecate> | < merijn> tbh, StrictData project wide seems like a "Go-lang" solution // These are strong words from someone who doesn't do it :P |
| 15:59:56 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 245 seconds) |
| 16:00:08 | <merijn> | Hecate: How so? |
| 16:02:17 | <Hecate> | well, instead of being interested by the phenomenon and asking people *who actually do it at work all day long*, you go for statements like "Go-lang solution", "plannable form of mediocre", "we can't be arsed or don't trust our juniors" |
| 16:02:40 | <Hecate> | and the only valid argument that you allow is a business one even though you say that you dislike it |
| 16:03:21 | <Hecate> | Would you allow a valid technical argument for StrictData or shall I give the email of my senior colleagues so you can insult them directly? :) |
| 16:04:37 | <hippoid> | yeah, give us the emails |
| 16:04:53 | → | jippiedoe joins (~david@2a02-a44c-e14e-1-2aad-d997-6734-70a6.fixed6.kpn.net) |
| 16:05:10 | <merijn> | Hecate: I prefer to only insult vague unspecified groups of people who disagree with me, because that makes it easier to have plausible deniability of my opinion of any actual specific person :p |
| 16:05:21 | <Hecate> | hahahaha |
| 16:05:39 | <merijn> | Because it turns out insulting individuals makes it really hard to work with them, even if you're right >.> |
| 16:05:56 | <Hecate> | no fucking shit |
| 16:05:59 | <Hecate> | :p |
| 16:07:02 | <merijn> | Hecate: In general, the technical arguments I've seen so far don't convince me. Now, maybe I've only seen terrible technical arguments (not unlikely). I could be convinced with proper empirical science, but let's be real the state of "proper" empirical science when it comes to things as "programming language usage" is so abysmal it might as well not exist |
| 16:09:15 | deni_ | is now known as deni |
| 16:10:02 | <merijn> | Besides, I don't expect anyone who likes StrictData to care about my opinion on it |
| 16:10:13 | × | rekahsoft quits (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 265 seconds) |
| 16:10:25 | × | kayvank quits (~user@52-119-115-185.PUBLIC.monkeybrains.net) (Remote host closed the connection) |
| 16:10:46 | × | xsperry quits (~xs@user/xsperry) (Ping timeout: 245 seconds) |
| 16:12:17 | <merijn> | Hecate: The main technical arguments I've seen presented in favour of it have been, essentially, "I hate having to think whether this data should be strict". Which I just haven't found to be such a huge issue, so I'm curious what the technical argument of your colleagues is if it isn't that |
| 16:13:44 | → | xsperry joins (~xs@user/xsperry) |
| 16:15:30 | → | puke joins (~puke@user/puke) |
| 16:18:58 | <Hecate> | merijn: because we have 150k LOC in our project and 8 years of production experience that tell us that it is the best course of action |
| 16:18:59 | <sclv> | i don't think there's technical arguments because in both cases you have control over strictness, and the only question is what the better default is |
| 16:19:09 | <Hecate> | ^ +1 |
| 16:21:29 | <merijn> | sclv: Right, which given my previous defense of laziness means I dislike StrictData |
| 16:22:13 | → | nuh^ joins (~nuh@68.101.63.101) |
| 16:22:15 | sajith_ | is now known as sajith |
| 16:22:19 | <sclv> | in my experience, it depends on what data structures you're defining. for our autogenerated Big Records that match up to other stuff going over the wire, strict by default is right |
| 16:22:33 | <sclv> | for our embedded ASTs, strict by default is wrong |
| 16:22:39 | → | mmhat joins (~mmh@55d44c37.access.ecotel.net) |
| 16:22:48 | <merijn> | Basically, there seems to have been a big influx of people into Haskell that seem like what they *really* want is SML. And it's kinda weird that they then keep complaining about Haskell all the time, instead of just, like, writing SML or Ocaml? |
| 16:23:09 | <sclv> | (i should add: strict and unpacked for those records!) |
| 16:23:12 | <merijn> | Like, it's fine to not like laziness |
| 16:23:28 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 16:23:31 | <merijn> | But why you gotta keep complaining about it in Haskell discussions? |
| 16:24:18 | <merijn> | Ask Lennart for the mail addresses of SBC lawyers and complain at them to open source Mu instead or something >.> |
| 16:24:25 | <sclv> | i don't find strict data helps much with thunk leaks -- that's about writing code carefully. i do find it helps when pared with unpacking for controlling memory usage in certain specialized situations |
| 16:24:36 | <merijn> | Maybe legal will agree if they get annoyed too much |
| 16:26:05 | <merijn> | sclv: I mean, the big record case also seems fairly obvious, so I fail to see how "project wide StrictData" improves that situation. |
| 16:26:35 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.3) |
| 16:26:44 | <sclv> | not projectwide -- modulewide. easier to stick a pragma on top than clutter each field quite as much |
| 16:26:55 | <merijn> | The weirdest thing to me is people arguing "oh, but I can still make things lazy!". Ok, but then you still gotta think about what you're doing and then there's literally no benefit from StrictData except maybe "less annotations if you've got a lot of strictness" |
| 16:27:02 | <merijn> | sclv: Right, but nobody ever argues that |
| 16:27:16 | <sclv> | i do :-P |
| 16:27:17 | <merijn> | sclv: See in the previous discussion everyone talking about enabling it project wide |
| 16:28:24 | <merijn> | All the pro-StrictData discourse presents it as a magical bullet that solves all your laziness problems. Which just strikes as a weird ass position to take |
| 16:28:36 | <maerwald> | no one said that |
| 16:28:59 | <merijn> | maerwald: Lots of people say that on Twitter/issue trackers/what not |
| 16:29:02 | <sclv> | i do agree that there's been some overhype of it |
| 16:29:04 | <c_wraith> | every time I say "I write code that uses laziness and I would appreciate it if you didn't break it" I get told I'm doing it wrong |
| 16:29:14 | <sclv> | there's a time and place for it, and we learned it wasn't as magic as we thought |
| 16:29:32 | <sclv> | like there was an experimental "strict everything" pragma too iirc and it just turned out... not that helpful |
| 16:29:48 | <c_wraith> | yeah, so that crowd is going to be all-in on UnliftedDataTypes soon |
| 16:29:55 | <c_wraith> | only making things worse |
| 16:30:27 | → | fef joins (~thedawn@user/thedawn) |
| 16:30:48 | <sclv> | i mean performance is really 90% "find the tight inner loop" and 10% "do terrible things to that inner loop alone" |
| 16:30:50 | <EvanR> | nothing makes laziness more confusing than unexpected strictness xD |
| 16:30:54 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 16:30:54 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 16:30:57 | allbery_b | is now known as geekosaur |
| 16:31:23 | <merijn> | anyway |
| 16:31:34 | <merijn> | I gotta go dancing instead of arguing why people are wrong on the internet |
| 16:31:49 | <maerwald> | EvanR: yeah, like the `tar` package abusing lazy bytestring in ways that forces the entire file contents into memory |
| 16:31:55 | <merijn> | Before everything gets locked down again until, like, 2024 or something >.> |
| 16:32:25 | <maralorn> | I can contribute that I have been bitten by thinking StrictData works that way. I have a huge record, which really should be strict. But most fields are Maybes and Sets and when I disabled StrictData I wasn‘t knowledgable enough to realize how little this helps me. |
| 16:32:29 | <int-e> | Why does the search term "thunk cost fallacy" produce hits that have nothing to do with laziness, sad :P |
| 16:33:06 | <lortabac> | :D |
| 16:33:06 | <sclv> | lmao |
| 16:33:26 | → | cfricke joins (~cfricke@user/cfricke) |
| 16:33:31 | → | neurocyte0132889 joins (~neurocyte@45.10.60.180) |
| 16:33:31 | × | neurocyte0132889 quits (~neurocyte@45.10.60.180) (Changing host) |
| 16:33:31 | → | neurocyte0132889 joins (~neurocyte@user/neurocyte) |
| 16:33:46 | <[exa]> | int-e: maybe there's no fallacy! :D |
| 16:34:18 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Quit: leaving) |
| 16:34:28 | × | cfricke quits (~cfricke@user/cfricke) (Client Quit) |
| 16:35:08 | <[exa]> | Hecate: sitting on 150kloc in haskell is one way to produce bias, honestly |
| 16:35:21 | <int-e> | [exa]: Tbf I'm not quite sure what that would be... but it could be a nice pun. |
| 16:39:27 | <int-e> | Maybe one should argue this way... Haskell is lazy by default... but that default can be changed with a pragma. So what that really means is that now there's another bit of information I need to track when reading code. :-/ |
| 16:39:46 | <dsal> | I'm surprised again to not find an Alternative instance for Either. I feel like that surprises me a lot. |
| 16:40:04 | → | gustik joins (~gustik@2a01:c844:240a:de20:3606:7339:bc88:b5f5) |
| 16:40:09 | <geekosaur> | I feel like that's expected after Error went away? |
| 16:40:59 | <dsal> | I continue to not expect it. :) |
| 16:41:05 | <[exa]> | dsal: you may want Validation |
| 16:41:15 | × | DNH quits (~DNH@2a02:8108:1100:16d8:64b0:a3f2:ec06:e597) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 16:41:21 | <lortabac> | dsal: what would 'empty' be for Either a? |
| 16:41:40 | <lortabac> | anyway, there is Alt in semigroupoids |
| 16:41:47 | <dsal> | Oh, I remember Alt. |
| 16:42:41 | → | cfricke joins (~cfricke@user/cfricke) |
| 16:42:42 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) |
| 16:43:30 | <int-e> | dsal: I guess this happens because there are several equally plausible instances. |
| 16:44:00 | <dsal> | Yeah, I assume that's the case. It should just default to whatever I'm thinking is a good idea at the moment. |
| 16:44:12 | → | trcc joins (~trcc@2-104-60-169-cable.dk.customer.tdc.net) |
| 16:44:49 | <c_wraith> | that'd be the worst. someone else looks at your code and your already-compiled program changes behavior. |
| 16:44:50 | <int-e> | dsal: So, it should roll a die at compile time and synthesize one of the instances accordingly? |
| 16:44:51 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Remote host closed the connection) |
| 16:45:01 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) |
| 16:45:23 | <dsal> | I'm back into arguing that deeply nesting case statements isn't a good idea. Alt makes a lot of sense for this type of use case. |
| 16:45:25 | <int-e> | (we need more random compiler errors (cf. INTERCAL)) |
| 16:46:14 | <monochrom> | I support enforcing UB by runtime randomization too >:) |
| 16:46:14 | <int-e> | dsal: maybe whoever you're arguing with isn't worth arguing with |
| 16:47:06 | <dsal> | At least it's a softer argument: "I really don't see the issue with code going to the right" |
| 16:47:21 | <dsal> | The last time it was that test code doesn't have to look like production code. Now it's actually production code. :/ |
| 16:47:32 | <monochrom> | haha |
| 16:47:41 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:7c6d:4c33:f4a3:2a22) (Quit: WeeChat 2.8) |
| 16:47:51 | <int-e> | . o O ( 32:9 monitors for all programmers now! ) |
| 16:47:59 | <c_wraith> | I agree that you should keep nested cases to less than 10 levels of nesting |
| 16:48:13 | <int-e> | (this ultra-wide monitor trend is weird) |
| 16:48:15 | <monochrom> | I think 32:9 is already realized as "dual head" |
| 16:48:26 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.3) |
| 16:48:30 | <int-e> | monochrom: you can now get it as a single monitor |
| 16:48:33 | <[exa]> | dsal: what's wrong with just putting First in Validation tho? :D |
| 16:48:41 | <monochrom> | Yikes. |
| 16:48:44 | <dsal> | It's also ormolu, so each line only has like one word and there's two space indentation. |
| 16:49:07 | <c_wraith> | Ormolu is its own set of bad choices... |
| 16:49:30 | <monochrom> | ormolu helps you make your code look like Sheet Music Boss youtube videos >:) |
| 16:53:16 | <monochrom> | Back in the good old days, I heard this probably wise thought: If you compose a face from the most beautiful eyes, the most beautiful nose, the most beautiful mouth, ... the face can be the most ugly. |
| 16:53:32 | <Hecate> | int-e: +1 for "thunk cost fallacy", love it |
| 16:54:03 | <monochrom> | Then, around the turn of the century, someone actually did that for programming practices, called it "extreme programming". |
| 16:54:10 | <Hecate> | [exa]: well, it's not my first Haskell rodeo, and we have people working on the performance of our monolith, it's not something that came yesterday :P |
| 16:54:14 | <monochrom> | perhaps s/for/to/ |
| 16:54:36 | <monochrom> | And now, someone does that to code layout, calls it "ormulu". |
| 16:54:50 | <dsal> | What is "thunk cost fallacy?" |
| 16:55:04 | <EvanR> | a play on words |
| 16:55:12 | <dsal> | Sure, but I mean what's the context? |
| 16:55:34 | <dsal> | There's a lot of cargo culting around strict fields in areas like the one thing we look at the one time at startup before copying it to something else. |
| 16:55:36 | <monochrom> | unexpected laziness and unexpected strictness |
| 16:56:21 | <monochrom> | and presuming that laziness hurts, strictness helps, blindly unconditionally |
| 16:56:28 | × | trcc quits (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Remote host closed the connection) |
| 16:56:37 | <dsal> | Also: That it matters at all, which is the thing I keep running into. |
| 16:56:46 | <monochrom> | Yeah, that too. |
| 16:57:00 | → | trcc joins (~trcc@2-104-60-169-cable.dk.customer.tdc.net) |
| 16:57:03 | <monochrom> | premature optimization again |
| 16:57:25 | → | myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net) |
| 16:57:54 | <davean> | Its not even an optimization |
| 16:57:58 | <dsal> | Why are all these types boxed? Unboxed is even more strict! |
| 16:58:35 | <EvanR> | unboxed linked list when |
| 16:58:37 | → | renzhi joins (~xp@2607:fa49:6500:b100::6e7f) |
| 16:59:04 | <monochrom> | Why is the unboxing day called the boxing day? >:) |
| 16:59:39 | <EvanR> | the phenomenon of unboxing needs a less negative word |
| 16:59:54 | <EvanR> | not sure what |
| 17:00:37 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 17:01:00 | <c_wraith> | boxing day is usually the day after unboxing day. Not that I know why |
| 17:01:07 | <c_wraith> | that seems to violate causality |
| 17:01:11 | × | trcc quits (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Ping timeout: 245 seconds) |
| 17:01:13 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 17:04:39 | × | enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq) |
| 17:04:55 | → | DNH joins (~DNH@2a02:8108:1100:16d8:64b0:a3f2:ec06:e597) |
| 17:05:42 | × | hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 268 seconds) |
| 17:05:54 | → | nschoe joins (~quassel@178.251.84.79) |
| 17:13:07 | → | enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) |
| 17:16:11 | → | hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) |
| 17:18:50 | <int-e> | dsal: I'm not sure yet... but something like the idea that thunks are expensive and therefore you should avoid them all by making everything strict. |
| 17:19:25 | <dsal> | That's what it sounded like. I think it'd be a great blog post with the three main case: True, False, Stop wasting your time. |
| 17:21:21 | × | mbuf quits (~Shakthi@223.178.114.167) (Quit: Leaving) |
| 17:21:29 | → | whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com) |
| 17:24:21 | × | hueso quits (~root@user/hueso) (Quit: hueso) |
| 17:25:02 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 17:25:53 | ← | kuribas parts (~user@ptr-25vy0i9f20n8puprvgm.18120a2.ip6.access.telenet.be) (ERC (IRC client for Emacs 26.3)) |
| 17:28:39 | × | benin quits (~benin@183.82.178.244) (Ping timeout: 264 seconds) |
| 17:29:01 | → | hueso joins (~root@user/hueso) |
| 17:29:27 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 250 seconds) |
| 17:32:16 | <EvanR> | True, False, FileNotFound |
| 17:32:47 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 17:38:02 | → | benin joins (~benin@183.82.178.244) |
| 17:46:03 | × | benin quits (~benin@183.82.178.244) (Ping timeout: 264 seconds) |
| 17:47:01 | → | lavaman joins (~lavaman@98.38.249.169) |
| 17:48:08 | → | burnsidesLlama joins (~burnsides@dhcp168-042.wadham.ox.ac.uk) |
| 17:48:57 | × | hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 250 seconds) |
| 17:52:51 | × | cosimone quits (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Ping timeout: 245 seconds) |
| 17:54:27 | × | ph88 quits (~ph88@95.90.240.104) (Ping timeout: 264 seconds) |
| 17:54:31 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 245 seconds) |
| 17:54:56 | <nf> | int-e: how do i allow my own instance of lambdabot to import Control.Lens? should i add lens to trustedPackages? is that safe? |
| 17:56:44 | → | waleee joins (~waleee@h-82-196-111-63.NA.cust.bahnhof.se) |
| 17:56:57 | <int-e> | nf: Yes you need to trust lens to allow that. Is it safe? I don't know. Last I checked it looked like the worst thing it does is open access to `coerce`. But its huge and it's easy to miss something. |
| 17:58:38 | <dsal> | lens is bad because you can magnify things and start fires. |
| 17:58:43 | <int-e> | (Data.Coerce is unsafe... and indeed it was initially riddled with various type checking problems that allowed people to write `unsafeCoerce`. But I think they've been addressed. |
| 17:58:50 | <int-e> | ) |
| 17:58:58 | <dsal> | Data.Coerce is unsafe? |
| 17:59:00 | <int-e> | sorry, "is unsafe" meaning it's declared as unsafe. |
| 17:59:18 | × | jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection) |
| 17:59:21 | <nf> | by safety i really mean unability to run arbitrary IO |
| 17:59:31 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:59:37 | <nf> | that shouldn't be a problem, right? |
| 17:59:57 | <int-e> | https://gitlab.haskell.org/ghc/ghc/-/blob/master/libraries/base/Data/Coerce.hs#L1 |
| 18:00:19 | <dsal> | Lame |
| 18:00:20 | <int-e> | nf: It *should*, yes. |
| 18:00:33 | → | jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
| 18:02:34 | → | nvmd joins (~nvmd@user/nvmd) |
| 18:02:56 | <nf> | hm, i'm still getting "Control.Lens: Can't be safely imported! The module itself isn't safe." |
| 18:03:19 | → | econo joins (uid147250@user/econo) |
| 18:03:26 | <int-e> | you need to trust some of lens's dependencies too; profunctors in particular. |
| 18:04:03 | × | cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds) |
| 18:04:12 | <int-e> | wait |
| 18:04:28 | × | jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection) |
| 18:04:36 | → | cheater joins (~Username@user/cheater) |
| 18:04:48 | <int-e> | That actually sounds like safety support in Lens may have bitrotted a bit. |
| 18:05:08 | <nf> | still not |
| 18:05:31 | → | jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
| 18:06:48 | <int-e> | (this lambdabot is on lens-4.19.2, I have not tried lens-5.x) |
| 18:06:54 | × | alx741 quits (~alx741@186.178.108.219) (Ping timeout: 260 seconds) |
| 18:08:37 | <int-e> | anyway, I usually try these things out with ghci -XSafe (invoking mueval directly is also an option, but lambdabot's truncated error messages aren't helpful for tracking these things down) |
| 18:09:51 | <nf> | how can i know which module is causing the unsafeness with ghci? |
| 18:09:59 | <int-e> | huh, actually 4.19.2 seems to require a patch too: https://github.com/lambdabot/lambdabot/blob/libera/patches/lens-4.19.2.patch |
| 18:11:20 | <nf> | :/ |
| 18:11:29 | → | hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) |
| 18:11:52 | <int-e> | nf: well it alrady told you that Control.Lens isn't safe. Since Control.Lens isn't marked as Trustworthy, that is an inferred property. So you can import the modules it depends on to narrow things down. |
| 18:12:17 | <nf> | i see |
| 18:12:27 | <int-e> | It's no fun... there's no tooling (beyond ghci) around SafeHaskell as far as I know. |
| 18:12:45 | <nf> | disclaimer i have no idea what Trustworthy or even Safe mean |
| 18:13:37 | <int-e> | "Trustworthy" is how you override the inferred unsafety of a module: if the user trusts the package that contains a Trustworthy module, then that module can be imported from Safe modules. |
| 18:14:37 | <int-e> | So... "inferred safe" basically means that all imports are Safe or trusted and Trustworthy. |
| 18:14:57 | <nf> | ok |
| 18:16:11 | × | hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 245 seconds) |
| 18:16:30 | → | xkuru joins (~xkuru@user/xkuru) |
| 18:16:42 | × | DNH quits (~DNH@2a02:8108:1100:16d8:64b0:a3f2:ec06:e597) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 18:17:01 | <int-e> | nf: Huh, apparently profunctors doesn't need to be trusted anymore. https://github.com/lambdabot/lambdabot/blob/libera/lambdabot/scripts/online/run.sh#L4-L15 is what lambdabot uses (with lens-4.19.2 plus the above patch) |
| 18:17:16 | → | DNH joins (~DNH@2a02:8108:1100:16d8:64b0:a3f2:ec06:e597) |
| 18:19:04 | <nf> | thanks |
| 18:20:39 | <nf> | so apparently Control.Lens.Equality imports GHC.Exts which is unsafe |
| 18:21:13 | → | hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) |
| 18:21:26 | <nf> | right, this is what your patch is about |
| 18:21:45 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:d41b:9326:c4d8:9f2a) (Quit: gone to sleep. ZZZzzz…) |
| 18:21:46 | <nf> | should that patch be upstreamed maybe? |
| 18:22:03 | × | nschoe quits (~quassel@178.251.84.79) (Ping timeout: 264 seconds) |
| 18:22:16 | <int-e> | undoubtedly |
| 18:22:25 | <int-e> | I'd do it to if I wasn't so great at procrastination |
| 18:22:27 | <nf> | oh https://github.com/ekmett/lens/blob/master/src/Control/Lens/Equality.hs#L7 |
| 18:22:42 | <nf> | you did it 2 years ago lmao |
| 18:22:47 | <int-e> | Ah. |
| 18:22:57 | <nf> | more like precrastination |
| 18:23:13 | <int-e> | well, one year ago |
| 18:23:14 | → | mvk joins (~mvk@2607:fea8:5cc1:fa00::4702) |
| 18:23:40 | <int-e> | Let's meet in the middle, 1 1/2. |
| 18:23:47 | <nf> | right |
| 18:24:03 | <nf> | anyway, that's in v5 and i just realised i'm also on 4.19.2 |
| 18:24:25 | <nf> | i think i will figure this out now |
| 18:24:27 | <nf> | thanks for your help |
| 18:25:50 | → | cosimone joins (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) |
| 18:31:47 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 18:31:55 | → | gdown joins (~gavin@h69-11-248-109.kndrid.broadband.dynamic.tds.net) |
| 18:32:23 | → | pavonia joins (~user@user/siracusa) |
| 18:34:25 | <nf> | it works with 5.0.1 :) |
| 18:34:28 | → | deadmarshal joins (~deadmarsh@95.38.230.45) |
| 18:39:06 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 260 seconds) |
| 18:40:05 | → | cosimone` joins (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) |
| 18:41:42 | × | cosimone quits (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Read error: Connection reset by peer) |
| 18:41:51 | × | hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 264 seconds) |
| 18:42:15 | × | jippiedoe quits (~david@2a02-a44c-e14e-1-2aad-d997-6734-70a6.fixed6.kpn.net) (Ping timeout: 250 seconds) |
| 18:43:24 | → | hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) |
| 18:46:11 | → | benin joins (~benin@183.82.179.164) |
| 18:48:45 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 265 seconds) |
| 18:49:19 | → | alx741 joins (~alx741@186.178.108.219) |
| 18:51:36 | × | cosimone` quits (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Ping timeout: 245 seconds) |
| 18:52:51 | <dsal> | Does `T {..}` look better than `T{..}` to people? That space always looks weird to me. |
| 18:53:42 | <nf> | definitely looks better |
| 18:54:09 | <EvanR> | T <backspace> { double strike would save space and still be recognizable xD |
| 18:55:37 | <geekosaur> | narrow space? :þ |
| 18:59:15 | × | hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 264 seconds) |
| 19:01:00 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds) |
| 19:01:30 | × | neurocyte0132889 quits (~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat) |
| 19:04:05 | <dsal> | nf: space looks better you say? |
| 19:04:24 | <dsal> | It's not the space savings, it's' just that it ends up looking like a distinct argument. |
| 19:05:01 | <EvanR> | T {..} looks like application, T{..} looks like an atomic piece of syntax |
| 19:05:03 | <dsal> | So my brain has to compensate and think "no wait, this is part of the previous argument, it's just got a space in the middle for some reason" |
| 19:05:32 | × | max22- quits (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Ping timeout: 240 seconds) |
| 19:06:03 | → | nschoe joins (~quassel@2a01:e0a:8e:a190:c8ff:e615:b6b0:62dc) |
| 19:06:03 | × | nschoe quits (~quassel@2a01:e0a:8e:a190:c8ff:e615:b6b0:62dc) (Client Quit) |
| 19:06:08 | → | raehik1 joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 19:06:22 | <monochrom> | "T {..}" has the benefit of being consistent with "Just 5". |
| 19:06:49 | <monochrom> | "T{..}" has the benefit of following the Python style guide that you don't need a space here. |
| 19:06:57 | <dsal> | But you can't write `f Just 5 = ...` |
| 19:08:24 | <EvanR> | record syntax shouldn't be confused for application |
| 19:08:51 | <EvanR> | it's hard enough to get people on board with f x xD |
| 19:09:07 | <monochrom> | That is orthogonal to coding style, IMO. |
| 19:09:10 | <int-e> | nf: good to know ("works with 5.0.1") |
| 19:09:22 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 19:09:26 | × | deadmarshal quits (~deadmarsh@95.38.230.45) (Ping timeout: 260 seconds) |
| 19:10:00 | <dsal> | It doesn't *really* matter, as ormolu's gonna ormolu. I'm just surprised that it looks clear to people. |
| 19:10:06 | → | trcc joins (~trcc@2-104-60-169-cable.dk.customer.tdc.net) |
| 19:10:43 | <dsal> | Speaking of things that look clear to people, inline per-character color coded diffs of expected vs. got output are hilarious. |
| 19:15:57 | <tomsmeding> | % import Control.Concurrent |
| 19:15:57 | <yahb> | tomsmeding: |
| 19:15:59 | <tomsmeding> | % forkIO (putStrLn "hello") >> forkIO (putStrLn "goodbye") |
| 19:15:59 | <yahb> | tomsmeding: ThhgreoeloalddobI; yde ; 95 |
| 19:16:05 | <tomsmeding> | dsal: does it look like that? |
| 19:16:12 | <dsal> | Yes, but in color! |
| 19:16:26 | <dsal> | I can kind of read it when I try hard. |
| 19:16:34 | <tomsmeding> | beautiful |
| 19:16:45 | <dsal> | It's beginning to look a lot like Christmas. |
| 19:16:55 | <tomsmeding> | maybe there's a reason then |
| 19:17:09 | dsal | wages war on Christmas |
| 19:17:30 | <tomsmeding> | with ghc? |
| 19:18:09 | <dsal> | This is someone's test framework thing. |
| 19:18:23 | <dsal> | But I do have a ghc problem. The line editing stuff is completely wrecked. |
| 19:18:32 | <dsal> | Has anyone heard of completely wrecked line editing stuff in ghc? |
| 19:19:09 | <dsal> | er ghci |
| 19:19:39 | × | raehik1 quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds) |
| 19:19:41 | <tomsmeding> | I've had it before, and I vaguely recall it having to do with changing the window size and then editing a multiline command |
| 19:19:54 | <xerox> | dsal: what os and versuon |
| 19:20:14 | <geekosaur> | there was also a report of it being broken in 9.0.1 on arm, iirc |
| 19:20:15 | <xerox> | that's what I get for trying to type with gloves on |
| 19:20:36 | <geekosaur> | which is probably what xerox is asking about :þ |
| 19:20:44 | <dsal> | Yeah, it's that one. |
| 19:20:47 | <xerox> | yep! that one has been solved! :-) |
| 19:21:00 | <xerox> | an ffi mismatch with made wrong ioctls |
| 19:21:02 | <dsal> | Oh cool. Actually, this one is 8.10.7 |
| 19:21:29 | <xerox> | if you want a workaround you can do "TERM=dumb ghci" |
| 19:21:37 | → | raehik1 joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 19:21:45 | <xerox> | till you get a fixed version |
| 19:21:54 | <dsal> | I don't want dumb ghci :( |
| 19:22:05 | <dsal> | dsmac:tesla dustin$ TERM=dumb stack ghci |
| 19:22:05 | <dsal> | Segmentation fault: 11 |
| 19:22:08 | <dsal> | Oh good, I don't get one. |
| 19:22:14 | <xerox> | ooops |
| 19:22:30 | <dsal> | It *almost* works. |
| 19:22:31 | <tomsmeding> | terminal is too smart for you, rejects being made dumb |
| 19:22:38 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 19:23:42 | <xerox> | I ended up compiling a fixed ghc and that was that |
| 19:23:54 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:d41b:9326:c4d8:9f2a) |
| 19:23:59 | → | neurocyte0132889 joins (~neurocyte@user/neurocyte) |
| 19:24:16 | → | jippiedoe joins (~david@2a02-a44c-e14e-1-3aa6-b22c-891-c248.fixed6.kpn.net) |
| 19:26:59 | <monochrom> | perhaps TERM=vt100 works a bit better |
| 19:27:52 | <awpr> | I've had broken line editing in ghci resulting from using color sequences without the appropriate width annotations |
| 19:28:05 | <geekosaur> | still runs into the terminal ioctls being wrong |
| 19:28:12 | <monochrom> | Ah OK. |
| 19:28:20 | <awpr> | does it go horribly wrong when line-wrapping a long line, and put the cursor in the wrong place? |
| 19:28:27 | × | fef quits (~thedawn@user/thedawn) (Remote host closed the connection) |
| 19:28:28 | <geekosaur> | this is an FFI issue, the only way TERM helps is TERM=dumb prevents them from being used at all |
| 19:29:30 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 19:33:27 | × | jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 264 seconds) |
| 19:33:49 | <dsal> | mine goes horribly wrong whenever I edit anything. Trying to insert characters just mangles everything. |
| 19:34:44 | <xerox> | do you have haskeline customizations? |
| 19:35:07 | <awpr> | ok, probably a different issue then. here's a reference for the ANSI escape sequence issue I had, though: https://github.com/judah/haskeline/wiki/ControlSequencesInPrompt |
| 19:38:48 | × | ByronJohnson quits (~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (Remote host closed the connection) |
| 19:39:32 | → | unit73e joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) |
| 19:41:36 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 19:42:01 | → | max22- joins (~maxime@2a01cb0883359800a5783feecd0598ff.ipv6.abo.wanadoo.fr) |
| 19:47:44 | × | alzgh quits (alzgh@user/alzgh) (Remote host closed the connection) |
| 19:48:04 | → | alzgh joins (alzgh@user/alzgh) |
| 19:49:02 | <dsal> | xerox: I don't think I have anything fancy. This is the only thing that's kind of broken when I switch to the native build. |
| 19:50:32 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 19:50:44 | → | hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) |
| 19:52:01 | × | duckonomy quits (~duckonomy@177.ip-144-217-84.net) (*.net *.split) |
| 19:52:01 | × | marienz quits (~marienz@libera/staff/marienz) (*.net *.split) |
| 19:52:01 | × | Inoperable quits (~PLAYER_1@fancydata.science) (*.net *.split) |
| 19:52:01 | × | dkeohane2 quits (~dkeohane@ec2-18-189-29-140.us-east-2.compute.amazonaws.com) (*.net *.split) |
| 19:52:13 | → | marienz joins (~marienz@libera/staff/marienz) |
| 19:52:32 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 19:52:40 | → | dkeohane2 joins (~dkeohane@ec2-18-189-29-140.us-east-2.compute.amazonaws.com) |
| 19:53:21 | → | Inoperable joins (~PLAYER_1@fancydata.science) |
| 19:53:52 | → | duckonomy joins (~duckonomy@177.ip-144-217-84.net) |
| 19:57:01 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 245 seconds) |
| 19:58:41 | × | hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 245 seconds) |
| 19:59:47 | × | burnsidesLlama quits (~burnsides@dhcp168-042.wadham.ox.ac.uk) (Remote host closed the connection) |
| 20:00:18 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 20:00:20 | → | hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) |
| 20:00:33 | × | epolanski quits (uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
| 20:04:43 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:d41b:9326:c4d8:9f2a) (Quit: gone to sleep. ZZZzzz…) |
| 20:04:45 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 20:05:25 | × | enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq) |
| 20:05:26 | × | juhp quits (~juhp@128.106.188.82) (Ping timeout: 260 seconds) |
| 20:06:00 | × | hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds) |
| 20:06:22 | → | hololeap joins (~hololeap@user/hololeap) |
| 20:06:24 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad) |
| 20:06:31 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 20:07:06 | → | juhp joins (~juhp@128.106.188.82) |
| 20:11:33 | → | deadmarshal joins (~deadmarsh@95.38.230.45) |
| 20:12:01 | × | hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 245 seconds) |
| 20:12:39 | → | hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) |
| 20:13:09 | × | hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds) |
| 20:13:50 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 20:15:14 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 20:15:25 | → | hololeap joins (~hololeap@user/hololeap) |
| 20:16:05 | × | deadmarshal quits (~deadmarsh@95.38.230.45) (Ping timeout: 256 seconds) |
| 20:17:47 | × | hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 256 seconds) |
| 20:25:30 | × | myShoggoth quits (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 268 seconds) |
| 20:26:06 | → | cjb joins (~cjb@user/cjb) |
| 20:26:31 | × | trcc quits (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Remote host closed the connection) |
| 20:27:03 | → | trcc joins (~trcc@2-104-60-169-cable.dk.customer.tdc.net) |
| 20:27:37 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad) (Quit: gone to sleep. ZZZzzz…) |
| 20:28:43 | → | hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) |
| 20:31:11 | × | trcc quits (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Ping timeout: 245 seconds) |
| 20:31:27 | → | trcc joins (~trcc@2-104-60-169-cable.dk.customer.tdc.net) |
| 20:32:21 | → | myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net) |
| 20:33:27 | × | perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3) |
| 20:34:31 | × | waleee quits (~waleee@h-82-196-111-63.NA.cust.bahnhof.se) (Ping timeout: 245 seconds) |
| 20:36:05 | → | reumeth joins (~reumeth@user/reumeth) |
| 20:36:27 | × | alx741 quits (~alx741@186.178.108.219) (Ping timeout: 264 seconds) |
| 20:38:52 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 20:39:26 | <reumeth> | I'm new to Haskell trying to make a function Aeson.Value -> Aeson.Value that fuzzes JSON values. I managed to create a deterministic function of that type, but I really want the function to replace all strings with random string/int (kind of like the strings/ints QuickCheck generates) |
| 20:40:27 | <reumeth> | Since I want some randomness it feels like I have to do this in IO or something? Or at least seed some generator and send it as an argument to my function? |
| 20:40:49 | → | hippoid_ joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) |
| 20:41:28 | <geekosaur> | the ideal way to use randomness is indeed you seed it in IO and pass the generator around |
| 20:42:11 | <geekosaur> | System.Random has a number of functions that will help you do this, and you can pick a number of RNG backends |
| 20:42:21 | <reumeth> | Is there a way to reuse the strings/ints Quickcheck generates? |
| 20:42:25 | <geekosaur> | ("random" package) |
| 20:42:46 | <reumeth> | geekosaur: That will only fix my random integer problem though, right? |
| 20:43:02 | <geekosaur> | you can use `arbitrary` but you'll pull in QuickCheck and its dependencies and you might find that a little heavy just for `arbitrary` |
| 20:43:15 | <geekosaur> | there are ways to generate random strings and such as well |
| 20:43:16 | × | hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 245 seconds) |
| 20:43:42 | × | hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds) |
| 20:43:50 | <geekosaur> | (every so often one wishes `arbitrary` were available separately from QC for things like this) |
| 20:43:57 | → | hololeap joins (~hololeap@user/hololeap) |
| 20:44:04 | <reumeth> | geekosaur: For me that will be fine. I like the fact that QuickCheck has lots of different generator like (valid utf8 strings, random bytestrings etc) |
| 20:44:36 | ← | [Kalisto] parts (~nico@user/kalisto/x-8968079) (The Lounge - https://thelounge.chat) |
| 20:44:45 | <reumeth> | I'm just struggling to see where/how I can use the arbitrary from QC |
| 20:45:16 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 20:45:36 | × | hippoid_ quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Client Quit) |
| 20:45:48 | → | hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) |
| 20:46:04 | → | ByronJohnson joins (~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) |
| 20:46:08 | → | HuGoDrOcHa joins (~hugodroch@179.158.241.142) |
| 20:47:13 | <reumeth> | Right now my fuzz function is stupid and is of the form: fuzz (Array x) = map fuzz x; fuzz (Number x) = Number (x + 1) etc. |
| 20:47:14 | → | vicfred joins (~vicfred@user/vicfred) |
| 20:47:57 | <reumeth> | I'm pretty sure I can't just add QC.arbitrary stuff inside here, at least the signature of fuzz will have to change, right? |
| 20:48:45 | <geekosaur> | yes |
| 20:49:06 | <geekosaur> | https://hackage.haskell.org/package/QuickCheck-2.14.2/docs/Test-QuickCheck-Gen.html#t:Gen |
| 20:49:29 | <geekosaur> | it's a monad, so your signature becomes Aeson.Value -> Gen Aeson.Value |
| 20:49:47 | <HuGoDrOcHa> | ? |
| 20:50:09 | <geekosaur> | …yes? |
| 20:50:18 | <HuGoDrOcHa> | yes |
| 20:50:23 | → | alx741 joins (~alx741@186.178.108.244) |
| 20:50:51 | <reumeth> | geekosaur: Hm, ok I'll try to see if I can get any further. Thanks |
| 20:50:53 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Remote host closed the connection) |
| 20:51:47 | ← | HuGoDrOcHa parts (~hugodroch@179.158.241.142) () |
| 20:54:06 | × | hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds) |
| 20:54:31 | → | hololeap joins (~hololeap@user/hololeap) |
| 20:55:46 | → | zincy_ joins (~zincy@2a00:23c8:970c:4801:4518:ab7b:975d:2f47) |
| 20:58:03 | × | myShoggoth quits (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 264 seconds) |
| 20:58:07 | → | acidjnk joins (~acidjnk@p200300d0c7271e823d8ddc81d8ce7005.dip0.t-ipconnect.de) |
| 20:59:31 | → | hololeap_ joins (~hololeap@user/hololeap) |
| 20:59:53 | × | ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
| 21:00:34 | → | myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net) |
| 21:01:15 | × | hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds) |
| 21:02:03 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) |
| 21:03:09 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 21:03:46 | → | hololeap joins (~hololeap@user/hololeap) |
| 21:04:47 | × | Inoperable quits (~PLAYER_1@fancydata.science) (Excess Flood) |
| 21:05:45 | × | jippiedoe quits (~david@2a02-a44c-e14e-1-3aa6-b22c-891-c248.fixed6.kpn.net) (Quit: Leaving) |
| 21:05:48 | × | hololeap_ quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds) |
| 21:06:03 | → | Kaiepi joins (~Kaiepi@156.34.44.192) |
| 21:07:05 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 21:09:07 | × | blackcap quits (~blackcap@144.89-10-135.nextgentel.com) (Remote host closed the connection) |
| 21:10:09 | → | vysn joins (~vysn@user/vysn) |
| 21:12:54 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad) |
| 21:14:15 | → | Inoperable joins (~PLAYER_1@fancydata.science) |
| 21:15:00 | × | trcc quits (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Remote host closed the connection) |
| 21:16:03 | × | hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 264 seconds) |
| 21:16:05 | → | kupi joins (uid212005@id-212005.hampstead.irccloud.com) |
| 21:16:22 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 21:18:09 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
| 21:19:46 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 21:21:06 | × | nvmd quits (~nvmd@user/nvmd) (Quit: Later, nerds.) |
| 21:22:07 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 21:23:30 | → | Midjak joins (~Midjak@82-65-111-221.subs.proxad.net) |
| 21:23:36 | → | hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) |
| 21:23:47 | → | perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
| 21:24:08 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Remote host closed the connection) |
| 21:31:03 | <jle`> | anyone familiar with the Cabal library? is there any -> IO PackageDescription function to get the description of the current project? |
| 21:31:07 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 21:31:36 | × | reumeth quits (~reumeth@user/reumeth) (Ping timeout: 245 seconds) |
| 21:32:45 | <jle`> | hm i guess i could use Distribution.Parsec (maybe?) but i'd still need to get the cabal file name |
| 21:33:34 | <sclv> | jle`: yeah given a file there's easy functions to read the package description |
| 21:33:58 | <jle`> | hm, is there a way to get the name of the current project? is that what that Paths_ module is for? |
| 21:34:02 | <sclv> | but not sure what the easy function is to pick the "right" filename |
| 21:34:47 | <maerwald> | https://hackage.haskell.org/package/Cabal-3.6.2.0/docs/Distribution-PackageDescription-Parsec.html#v:parseGenericPackageDescriptionMaybe |
| 21:34:51 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 21:36:21 | <jle`> | whoa there's both a Distribution.PackageDescription and a Description.Types.PackageDescription, thanks for the tip |
| 21:36:52 | <jle`> | hm, is the ByteString option here the contents of the file? |
| 21:36:57 | <jle`> | s/option/argument |
| 21:36:57 | <sclv> | yes |
| 21:37:27 | <jle`> | ah, thanks |
| 21:37:33 | <jle`> | hm i guess i just have to find a way to get the project name then |
| 21:37:43 | <jle`> | or i guess i could glob for *.cabal |
| 21:38:44 | <maerwald> | https://hackage.haskell.org/package/filepattern |
| 21:41:10 | × | zincy_ quits (~zincy@2a00:23c8:970c:4801:4518:ab7b:975d:2f47) (Remote host closed the connection) |
| 21:41:38 | <jle`> | ooh thanks :) |
| 21:41:43 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad) (Quit: gone to sleep. ZZZzzz…) |
| 21:43:15 | <jle`> | and then i can use it with getDatadir |
| 21:43:17 | <sclv> | the cabal logic as i understand it is it just looks for a unique file and throws if there's more than one and none is explicitly specified |
| 21:44:51 | <jle`> | yeah, i meant i can use it to get the directory to search in |
| 21:45:04 | <sclv> | jle`: ooh, found it! https://hackage.haskell.org/package/Cabal-3.6.2.0/docs/Distribution-Simple-Utils.html#v:defaultPackageDesc |
| 21:45:34 | <jle`> | :O |
| 21:45:51 | <jle`> | sweet, thanks a bunch |
| 21:47:24 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
| 21:50:35 | × | hiruji quits (~hiruji@user/hiruji) (Quit: ZNC 1.8.2 - https://znc.in) |
| 21:50:50 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 21:50:52 | → | hiruji joins (~hiruji@user/hiruji) |
| 21:51:28 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad) |
| 21:53:51 | × | hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 264 seconds) |
| 21:54:04 | → | hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) |
| 21:54:10 | → | yauhsien joins (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) |
| 21:55:56 | <[itchyjunk]> | Hi, wondering if this makes sense `if fst(divMod n 10) == 0 then snd(divMod n 10) else snd(divMod n 10)` |
| 21:56:38 | <[itchyjunk]> | i know logically its not brushed up yet, just syntactically |
| 21:57:14 | <dsal> | That's weird in several ways. |
| 21:57:29 | <dsal> | The lack of space between the function and the parameter is super weird, let me get past that one. |
| 21:57:40 | <dsal> | But then like, why are you using divMod if you just want div or mod? |
| 21:58:13 | <[itchyjunk]> | i want to do mod based on the value of div but i haven't sorted that out in my head yet |
| 21:58:46 | <dsal> | > let f n = let (d,m) = divMod n 10 in if d == 0 then m else m in f 11 |
| 21:58:46 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3) |
| 21:58:47 | <lambdabot> | 1 |
| 21:58:50 | × | yauhsien quits (~yauhsien@61-231-30-221.dynamic-ip.hinet.net) (Ping timeout: 260 seconds) |
| 21:59:41 | → | burnsidesLlama joins (~burnsides@dhcp168-042.wadham.ox.ac.uk) |
| 21:59:51 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) |
| 22:01:10 | × | ByronJohnson quits (~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (Remote host closed the connection) |
| 22:01:25 | <monochrom> | Saying "divMod n 10 Beetlejuice" 3 times in a row is a serious violation of DRY. In any language. |
| 22:01:50 | × | alzgh quits (alzgh@user/alzgh) (Remote host closed the connection) |
| 22:02:10 | → | alzgh joins (alzgh@user/alzgh) |
| 22:02:21 | <maerwald> | people still follow DRY? :p |
| 22:02:36 | <dsal> | I get into arguments about repetition a lot. I *kind* of get them, but the arguments are often readability vs. building a new (local) abstraction that makes it clear that it's actually the same thing three times and not some typos or something. |
| 22:02:47 | <dsal> | I slow down a lot more when I see what looks like a copy and paste. |
| 22:02:52 | <maerwald> | I always start with repetition. |
| 22:03:02 | <monochrom> | You know, I have long realized that if a desirable principle has a name, it means people are refusing to do it. >:) |
| 22:03:11 | <maerwald> | and then after a while, an abstraction will show itself (or it doesn't) |
| 22:03:23 | <monochrom> | Yes I'm OK with that. |
| 22:03:27 | <dsal> | Oh sure. There's nothing wrong with repeating yourself until you realize that copying and pasting the same thing a bunch might be a pain. |
| 22:03:38 | <monochrom> | But this one is way too basic. |
| 22:04:04 | <dsal> | The one I just looked at was just three copies of some code and a review comment about adding a comment as to when we should add new ones. I'm like, "Hey, can we just make this a list?" |
| 22:04:33 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 22:04:36 | <monochrom> | There are very obvious, staring at your face repetitions that even 1st-year students can easily recognize. |
| 22:04:50 | <dsal> | One of the bits of code that was copied and pasted a lot (because that's good for tests!) needed to be updated for a change I made this morning and I figured out that the original one that got copied a lot *also* had a bug. |
| 22:05:34 | <maerwald> | I've long ceased to be that invested in stuff when being paid for coding |
| 22:05:39 | <monochrom> | What you're referring to are less obvious cases that really takes experience to see, and even then you can argue about pros and cons. |
| 22:05:40 | <dsal> | haha |
| 22:06:17 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 22:06:54 | <dsal> | monochrom: that's kind of the approach I'm taking. I'll probably catch flak for even spending time on this, but let me write up a big thing describing why copying and pasting this is bad and various benefits of putting stuff in a list instead of unrolling the loop in a big do block. |
| 22:07:15 | <maerwald> | monochrom: many coders I've seen start thinking about the abstraction too early... when they should really just copy paste. And that leads to really shitty abstractions |
| 22:07:32 | <dsal> | Yeah, I've definitely been in those code bases as well. |
| 22:07:57 | <dsal> | that's part of the reason there's knee-jerk in the opposite direction here. Previous Prelude was insanely large. No idea where anything came from and all kinds of weird stuff happening. |
| 22:08:22 | <monochrom> | That is caused by OOP education. Or at least bad OOP education. (Perhaps there is good OOP education too.) |
| 22:08:36 | <dsal> | That's why I qualified (local) abstraction. They love naming various values with extremely long names and stuff. But then strategies just get copied and pasted. |
| 22:09:11 | <[itchyjunk]> | Every second I confuse myself more. |
| 22:09:22 | <dsal> | [itchyjunk]: It's called "learning" |
| 22:09:25 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 22:09:27 | <[itchyjunk]> | lol |
| 22:09:33 | <[itchyjunk]> | In that case, great! |
| 22:09:46 | <monochrom> | 1st-year OOP courses, the bad ones, tend to start with "What's wrong with this struct? Person = { String name; int age; }" |
| 22:09:51 | <maerwald> | Code is so unpredictable... you think up something in your head and when you try it, it turns out totally different, because of a bazillion reasons (unexpected API, bugs, corner cases). |
| 22:09:53 | <monochrom> | Really, there is nothing wrong. |
| 22:10:24 | <maerwald> | the crap has to settle first |
| 22:10:42 | <dsal> | Yep, don't disagree. |
| 22:10:45 | <maerwald> | like a dough |
| 22:10:47 | <monochrom> | Then the party line reveals the model answer: "It is not hidden behind an interface. What if there are future changes? The right thing to do is getter methods." |
| 22:11:15 | <[itchyjunk]> | I have a function and it does a tiny step of what i want. i want to save each of the mini results in a list. i should have a small working function then stitch it so that this another function uses this function and puts the result in a list. then have a third function that uses this whole thing multiple times? |
| 22:11:16 | <monochrom> | That kind of brainwashing in 1st-year courses is why people have premature abstractions. "abstractions" |
| 22:11:17 | <dsal> | "What if there are future changes" is an argument both for and against abstractions, depending on who's proposing them. :) |
| 22:11:48 | <[itchyjunk]> | I am in a first year OOP course @_@ |
| 22:11:59 | <maerwald> | dsal: write code that's easy to delete. |
| 22:12:11 | <dsal> | Yep, I love deleting code. |
| 22:12:13 | <monochrom> | Really, even if there are future changes, you don't even know which direction it will be in. The expression problem implies that if you enable one, you disable the other. |
| 22:12:43 | <maerwald> | yes, so better delete the previous code and start anew |
| 22:12:50 | → | ees joins (~user@pool-108-18-30-46.washdc.fios.verizon.net) |
| 22:12:53 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 22:13:07 | <maerwald> | but people still think that starting anew is too expensive |
| 22:13:16 | <maerwald> | it is if your code is hard to delete |
| 22:13:18 | <geekosaur> | sunk code fallacy? |
| 22:13:35 | <dsal> | I argue that fairly tall code with 8 levels of indentation in nested case blocks (with two space indentation) is kind of hard to follow and should be clearer. It's completely local, but like, I have to think too hard to follow it. Just give the structure a bit of name. |
| 22:14:00 | <monochrom> | However! DRY is still a good principle, and does not conflict with what I said. I am just against premature interfaces. |
| 22:14:40 | <maerwald> | monochrom: well, but dry doesn't focus on abstraction. Deduplication and abstraction is not the same |
| 22:14:43 | <dsal> | I got it down to a square of around 6 levels of indentation and 6-8 lines tall with the whole thing on a page so you can see it all at once. |
| 22:15:17 | <maerwald> | sometimes, when you see repetition, the abstraction is really somewhere else |
| 22:15:50 | <maerwald> | but because we're educated with DRY, we focus on removing the repetition |
| 22:20:47 | <[itchyjunk]> | if i have a function returning r and i do (r):[], is this list created locally within that context and lost later on? |
| 22:21:05 | <[itchyjunk]> | i.e should i be `let myList = []` and using myList to hold the returns? |
| 22:21:32 | <monochrom> | myList will always be []. |
| 22:21:52 | <monochrom> | even s/be/stay as/ |
| 22:21:58 | <monochrom> | For eternity! |
| 22:22:08 | <[itchyjunk]> | oh rigiht.. r:myList creates a new list with [r] |
| 22:22:16 | [itchyjunk] | recursively rips hair |
| 22:22:17 | <monochrom> | Yes. |
| 22:24:05 | <monochrom> | This is why in my course I open with "think 'function' as in math functions, not C functions; think algebra, not control flow". |
| 22:24:30 | <[itchyjunk]> | You teach haskell? |
| 22:24:41 | <jle`> | oh now i have to convert Cabal's Extension type to haskell-src-ext's extension type |
| 22:24:47 | jle` | . o ( read . show ) |
| 22:25:07 | × | michalz quits (~michalz@185.246.204.33) (Remote host closed the connection) |
| 22:25:08 | <[itchyjunk]> | I thought i'd do a simple exercise to feel I have been productive. Instead i've put myself into a hole :D |
| 22:25:30 | <monochrom> | And don't worry, I don't really say that thinking C functions and control flow are wrong, I just say that you'll have a better time at the beginning if you think my way. After you're experienced, it doesn't matter then. |
| 22:26:03 | <monochrom> | Well, strictly speaking, I'm supposed to teach principles of programming languages. I end up doing more Haskell than I should. |
| 22:26:07 | → | jmorris joins (uid433911@id-433911.hampstead.irccloud.com) |
| 22:26:22 | × | Alleria quits (~textual@user/alleria) (Ping timeout: 268 seconds) |
| 22:26:46 | <[itchyjunk]> | I'm in a "Accelerated object oriented programming" class |
| 22:26:49 | <maerwald> | interesting, I always think in control flow, no matter the language |
| 22:26:57 | <[itchyjunk]> | we use java |
| 22:27:24 | × | nf quits (~n@monade.li) (Quit: Fairfarren.) |
| 22:27:32 | <monochrom> | And what does the unaccelerated one do? |
| 22:28:12 | → | nf joins (~n@monade.li) |
| 22:28:40 | <dsal> | I learned Java after learning Eiffel (from Object Oriented Software Construction). Most of the important OO principles from eiffel are exactly the opposite of java best practices. |
| 22:28:44 | <[itchyjunk]> | the unaccelerated one is shorter course. this one is supposidly 3 fused into one. principle of programming, intro to OOP and intro to Java |
| 22:28:54 | <maerwald> | wow |
| 22:29:04 | <[itchyjunk]> | i just needed the principles class but they weren't offering one so i was thrown into this one :( |
| 22:29:07 | [itchyjunk] | is no programmer |
| 22:29:22 | <maerwald> | learning principles of programming through java? ok. |
| 22:29:39 | <[itchyjunk]> | I don't think my uni offers anything else to start off with |
| 22:29:47 | <[itchyjunk]> | ive heard there are graduate level FP classes |
| 22:29:52 | <maerwald> | well, you'll know what getters and setters are pretty soon |
| 22:30:00 | <[itchyjunk]> | I know those! |
| 22:30:03 | <maerwald> | and that's all you need to know for java |
| 22:30:09 | <[itchyjunk]> | lol |
| 22:30:12 | <monochrom> | haha |
| 22:30:26 | <monochrom> | I can't say there is nothing else to know. |
| 22:30:37 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 22:30:44 | <monochrom> | But my students do behave like that's all they have learned. >:) |
| 22:30:47 | <dsal> | You also get to learn about building factories. |
| 22:31:09 | <dsal> | Anyone can construct a new object, but not just anyone can build a whole factory that constructs objects. |
| 22:31:19 | <[itchyjunk]> | if i do r:[] to create [r], how to i refrence to this [r] list ? |
| 22:31:25 | <[itchyjunk]> | its lost in memory somewhere? |
| 22:31:26 | <geekosaur> | and then FactoryFactory, etc. |
| 22:31:35 | <dsal> | [itchyjunk]: how do you want to reference it? |
| 22:31:41 | <dsal> | Also, [r] is a fine way to make [r] |
| 22:31:46 | <maerwald> | well, you can also learn about Java generics and then realize they're just difficult to understand implicit casts |
| 22:31:49 | <monochrom> | If I provide "data X = MkX Int X" on an assignment, many of my students code up "getInt :: X -> Int" and "getNext: X -> X" right away. |
| 22:31:59 | <[itchyjunk]> | i have a function doing things and i want to store the return values somewhere |
| 22:32:07 | <dsal> | monochrom: They don't start writing lenses? |
| 22:32:15 | <monochrom> | Nah. |
| 22:32:28 | <maerwald> | xD |
| 22:32:31 | <dsal> | [itchyjunk]: It's really best to start by thinking of what you want your functions to look like. Type signatures do most of the work for you when you let them. |
| 22:32:36 | <monochrom> | Heh |
| 22:33:05 | <maerwald> | store the return value? You could use a database |
| 22:33:10 | <maerwald> | start with beam |
| 22:33:20 | <monochrom> | No, use a file system... >:) |
| 22:33:20 | <geekosaur> | "store" isn't really a thing in Haskell. "pass" is |
| 22:33:37 | <maerwald> | file system is too easy.. you want to debug SQL errors when you start your application |
| 22:33:40 | <geekosaur> | think functions, not "variables" |
| 22:34:16 | <monochrom> | No no, you want to worry about file locking when you start your application... |
| 22:34:27 | <maerwald> | well, don't ship for windows |
| 22:34:32 | dsal | uses a software transactional filesystem |
| 22:34:33 | <geekosaur> | use sqlite, then you get to deal with both! }:> |
| 22:34:44 | <monochrom> | \∩/ |
| 22:34:50 | <dsal> | Actually, that's true, I just use SQLite. |
| 22:34:55 | <dsal> | Except now I'm using Postgres. |
| 22:35:06 | <dsal> | Totally forgot how much I like postgres. |
| 22:35:13 | <maerwald> | such webscale |
| 22:35:19 | <monochrom> | The Pilgrim's Postgres. |
| 22:35:47 | <maerwald> | [itchyjunk]: was that helpful? :) |
| 22:35:55 | <monochrom> | The Pilsqlim's Postgres. |
| 22:35:56 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Remote host closed the connection) |
| 22:36:03 | <[itchyjunk]> | If i apply f to n, i get (a,b). i want b to go in a list. then apply f to a and get (c,d), then i want d in the same list and apply f to c ad nausium |
| 22:36:15 | → | zebrag joins (~chris@user/zebrag) |
| 22:36:39 | <dsal> | What are `n`, `a`, and `b`? |
| 22:37:07 | <monochrom> | Perhaps you can write a simple recursion for it. |
| 22:37:14 | <dsal> | That's kind of a strangely shaped thing. Are you writing unfoldr? |
| 22:37:18 | <dsal> | :t unfoldr |
| 22:37:19 | <lambdabot> | (b -> Maybe (a, b)) -> b -> [a] |
| 22:37:19 | <maerwald> | [itchyjunk]: the way you'd do that is that your "store" is an argument to your recursive function |
| 22:37:22 | <[itchyjunk]> | n is the input i give f, f maps n to (a,b) |
| 22:37:27 | <monochrom> | I can write it for you but I think it's within your reach. |
| 22:37:31 | <[itchyjunk]> | yes i need recursion but nothign is simple :D |
| 22:37:35 | <maerwald> | when your recursive function terminates, you return the "store" |
| 22:37:46 | <monochrom> | OK, beginner-level. |
| 22:38:16 | <dsal> | [itchyjunk]: Can you write the actual type signature? I'm not sure I understand `:: n -> (a,b)` -- those types have to come from somewhere. |
| 22:38:22 | <geekosaur> | what defines "terminates" here? |
| 22:38:48 | <maerwald> | crashes with an SQL error |
| 22:38:54 | <[itchyjunk]> | if the first value in the tuple is 0 |
| 22:39:00 | <[itchyjunk]> | let me think of the signature |
| 22:39:01 | <dsal> | So it's an Int? |
| 22:39:18 | <[itchyjunk]> | yes n , a , b are ints |
| 22:39:23 | <dsal> | Ooh. that's very different |
| 22:39:35 | <dsal> | `:: Int -> (Int, Int)` |
| 22:40:12 | <monochrom> | But that's for f. And this f may be already given. |
| 22:40:26 | <[itchyjunk]> | thats what happens in each step but i want to get a [Int] after all is said an done |
| 22:40:30 | <monochrom> | In question is another function, call it g, that uses f again and again etc. |
| 22:40:45 | <[itchyjunk]> | okay, then i was kinda in the right track |
| 22:41:02 | <[itchyjunk]> | i have a function that applies this once that i have called helperf |
| 22:41:22 | <dsal> | Yeah, doing it just once is great. Then you can just keep calling it. |
| 22:41:24 | <dsal> | > let f n = (n + 1, n * 2) in iterate (f . snd) (1,1) |
| 22:41:25 | <lambdabot> | [(1,1),(2,2),(3,4),(5,8),(9,16),(17,32),(33,64),(65,128),(129,256),(257,512)... |
| 22:41:31 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 22:41:38 | <dsal> | > let f n = (n + 1, n * 2) in snd <$> iterate (f . snd) (1,1) |
| 22:41:39 | <lambdabot> | [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,2... |
| 22:41:52 | <dsal> | That's a dumb function. I assume yours isn't. heh |
| 22:42:07 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 22:42:18 | <monochrom> | Here is a hint. You probably haven't thought that you can do this: |
| 22:42:20 | <monochrom> | @src map |
| 22:42:20 | <lambdabot> | map _ [] = [] |
| 22:42:20 | <lambdabot> | map f (x:xs) = f x : map f xs |
| 22:42:37 | <monochrom> | Sleep on that. You don't always need an "accumulator". |
| 22:43:31 | <dsal> | @src unfoldr |
| 22:43:31 | <lambdabot> | unfoldr f b = case f b of |
| 22:43:31 | <lambdabot> | Just (a, b') -> a : unfoldr f b' |
| 22:43:31 | <lambdabot> | Nothing -> [] |
| 22:43:38 | <dsal> | ooh. I didn't think that'd work. |
| 22:43:54 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 22:44:44 | <dsal> | @src iterate |
| 22:44:44 | <lambdabot> | iterate f x = x : iterate f (f x) |
| 22:45:32 | <dsal> | We should just teach fix and get rid of all this recursion stuff. |
| 22:45:33 | <dsal> | @src fix |
| 22:45:34 | <lambdabot> | fix f = let x = f x in x |
| 22:46:04 | → | lavaman joins (~lavaman@98.38.249.169) |
| 22:49:48 | <monochrom> | That also gets rids of a lot of the weaker students. >:) |
| 22:49:54 | <dsal> | heh |
| 22:50:32 | <monochrom> | I am very uncomfortable with getting rid of weak students because I don't want my class average to be too damn high! |
| 22:50:33 | × | Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 250 seconds) |
| 22:50:51 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 264 seconds) |
| 22:52:34 | <zero> | get rid of map and just fold |
| 22:52:34 | <dsal> | Do you get paid by a measurable amount of education you put into people? |
| 22:52:43 | <dsal> | I like fold |
| 22:52:58 | → | cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
| 22:52:58 | <monochrom> | Do you go one step further, switch to untyped lambda calculus, so that you don't even need that version of fix? >:) |
| 22:53:19 | <maerwald> | dsal: ahaha |
| 22:53:30 | <monochrom> | No, my pay is not tied to the class average. |
| 22:54:17 | <monochrom> | But sometimes if the class average is too damn high or too damn low, the department chair needs to ask me why. And really, I don't know! |
| 22:54:35 | <dsal> | monochrom: The Musical |
| 22:55:45 | <zero> | i think education suffers from the observer effect. you cant grade students without the fact that you're grading them has an effect on their performance |
| 22:56:13 | <zero> | and it's a big effect |
| 22:56:17 | <xerox> | if it doesn't have an effect why would they enroll |
| 22:56:36 | <monochrom> | What's wrong with that? |
| 22:56:56 | → | betelgeuse joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 22:56:57 | <zero> | because universities print some papers that get them jobs |
| 22:57:25 | <monochrom> | Don't tell me naïve left-wing answers such as "after graudation they are never graded again". |
| 22:57:30 | <zero> | it's not inherently wrong |
| 22:58:04 | × | DNH quits (~DNH@2a02:8108:1100:16d8:64b0:a3f2:ec06:e597) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 22:58:14 | <EvanR> | this is where curves come in |
| 22:58:16 | <zero> | it's just impossible not to let it often get in the way of things |
| 22:58:21 | <EvanR> | the great equalizer |
| 22:59:04 | <geekosaur> | this is all kinda offtopic by now… |
| 22:59:08 | <maerwald> | zero: grades are a concept from military. There it's used to distinguish the people who perform best under *pressure*. Because that's what matters there. |
| 22:59:17 | <arahael> | maerwald: hey, before i switch to rust for my alpine rpi3, is there anything else i could do to get haskell running? the ghcup stuff has missing symbols even if i find and satisfy the libraries. |
| 22:59:56 | <monochrom> | Perhaps forsake alpine? |
| 23:00:31 | → | DNH joins (~DNH@2a02:8108:1100:16d8:64b0:a3f2:ec06:e597) |
| 23:00:36 | <[itchyjunk]> | @where paste |
| 23:00:36 | <lambdabot> | Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com |
| 23:01:11 | <arahael> | monochrom: i ultimately want to make static binaries, which means musl. |
| 23:01:28 | <arahael> | and i would prefer not to have to set up and maintain a cross compiler. |
| 23:01:32 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 23:01:34 | <[itchyjunk]> | my function g seems to be the place where it all goes wrong |
| 23:01:35 | <[itchyjunk]> | https://paste.tomsmeding.com/hngcugQu |
| 23:02:51 | × | hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 245 seconds) |
| 23:03:12 | → | hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) |
| 23:03:20 | <[itchyjunk]> | does any of it makes sense? |
| 23:03:28 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) |
| 23:03:38 | <[itchyjunk]> | maybe time for a break, it might magically come to me later |
| 23:03:40 | <monochrom> | In the then branch, "helper (f2 n)" gives you a tuple. |
| 23:03:53 | <monochrom> | In the else branch, "f1 n" gives you a single number. |
| 23:04:01 | <monochrom> | Which one do you want? |
| 23:04:06 | × | aliosablack quits (~chomwitt@2a02:587:dc14:4600:12c3:7bff:fe6d:d374) (Ping timeout: 245 seconds) |
| 23:04:11 | <[itchyjunk]> | ahhhh |
| 23:04:20 | <monochrom> | Or did you just forgot a recursive call to g in the then branch. |
| 23:04:51 | <[itchyjunk]> | i want f2 ( helper ( f2 n) ) |
| 23:05:30 | <[itchyjunk]> | i think it should all be one recursive line once i figure this out xD i was hoping building it up one line at a time like this would make my brain figure it out |
| 23:05:38 | <monochrom> | f2 doesn't want a tuple either. |
| 23:06:13 | <maerwald> | arahael: ask in #ghc if someone has bootstrapped a musl aarch64 GHC |
| 23:06:17 | <zero> | [itchyjunk]: type signatures/annotations are your friend |
| 23:06:21 | <monochrom> | TBH I am surprised that it is not simply "then f2 n else f1 n" |
| 23:06:41 | <monochrom> | or "then g (f2 n) else f1 n" |
| 23:07:10 | <zero> | @type divMod |
| 23:07:11 | <lambdabot> | Integral a => a -> a -> (a, a) |
| 23:07:13 | × | ees quits (~user@pool-108-18-30-46.washdc.fios.verizon.net) (Ping timeout: 256 seconds) |
| 23:07:21 | × | dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3) |
| 23:07:24 | <monochrom> | f2 already uses helper, so what's "helper (f2 n)" doing there? |
| 23:07:26 | <arahael> | maerwald: thanks for the tip! will do that in a moment. |
| 23:07:31 | <jle`> | using parseGenericPackageDescription seems to drop the library/executable/etc. portions of the cabal file and only gets the top level metadata |
| 23:07:34 | <jle`> | i wonder if i'm missing something |
| 23:07:51 | × | hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 245 seconds) |
| 23:09:51 | <dsal> | [itchyjunk]: it's pretty important to think about the type signature first, I find. It might seem "harder" but it gets you there sooner and with better error messages. |
| 23:10:39 | → | Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) |
| 23:10:41 | <EvanR> | yeah there's probably a reason the type signature doesn't go after the code xD |
| 23:11:16 | → | hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) |
| 23:12:16 | <jle`> | ah it's under CondLibrary |
| 23:12:39 | × | cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection) |
| 23:13:06 | → | cosimone joins (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) |
| 23:13:41 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 23:14:15 | × | qwedfg quits (~qwedfg@user/qwedfg) (Read error: Connection reset by peer) |
| 23:15:46 | × | hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 245 seconds) |
| 23:15:46 | × | xff0x quits (~xff0x@2001:1a81:52ae:a700:2e71:8ba4:bf99:ed92) (Ping timeout: 245 seconds) |
| 23:16:47 | → | hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) |
| 23:16:47 | → | xff0x joins (~xff0x@2001:1a81:52ae:a700:790f:4bf3:6d42:a0ab) |
| 23:17:28 | × | ubert quits (~Thunderbi@p548c9fcb.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
| 23:17:41 | → | qwedfg joins (~qwedfg@user/qwedfg) |
| 23:18:10 | → | ubert joins (~Thunderbi@p200300ecdf0ba2d77c1bfff2a135bb9e.dip0.t-ipconnect.de) |
| 23:18:16 | × | ubert quits (~Thunderbi@p200300ecdf0ba2d77c1bfff2a135bb9e.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 23:19:44 | × | alzgh quits (alzgh@user/alzgh) (Remote host closed the connection) |
| 23:21:41 | × | Midjak quits (~Midjak@82-65-111-221.subs.proxad.net) (Quit: This computer has gone to sleep) |
| 23:22:22 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 23:24:56 | → | alzgh joins (alzgh@user/alzgh) |
| 23:28:30 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 23:31:42 | × | xff0x quits (~xff0x@2001:1a81:52ae:a700:790f:4bf3:6d42:a0ab) (Remote host closed the connection) |
| 23:31:58 | → | xff0x joins (~xff0x@2001:1a81:52ae:a700:8aec:b385:dec1:cc56) |
| 23:32:27 | → | jinsun__ joins (~quassel@user/jinsun) |
| 23:32:39 | × | max22- quits (~maxime@2a01cb0883359800a5783feecd0598ff.ipv6.abo.wanadoo.fr) (Remote host closed the connection) |
| 23:32:51 | → | cosimone` joins (~user@5.170.240.253) |
| 23:33:03 | × | pfurla quits (~pfurla@2804:14d:5c81:4104:d09a:3c35:dab9:95ad) (Quit: gone to sleep. ZZZzzz…) |
| 23:34:06 | × | cosimone quits (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Ping timeout: 245 seconds) |
| 23:34:12 | × | pwug quits (~pwug@user/pwug) (Ping timeout: 268 seconds) |
| 23:34:30 | × | jinsun quits (~quassel@user/jinsun) (Ping timeout: 260 seconds) |
| 23:36:12 | → | hippoid_ joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) |
| 23:36:36 | → | pfurla joins (~pfurla@2804:14d:5c81:4104:2d7f:4f3b:6a60:c865) |
| 23:37:49 | × | hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 256 seconds) |
| 23:42:44 | × | sprout quits (~quassel@2a02:a467:ccd6:1:5cca:96d9:7234:6761) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 23:44:11 | <[itchyjunk]> | alright, i'll do types first |
| 23:44:19 | <[itchyjunk]> | i generally seem to always get the signature wrong :P |
| 23:44:33 | <[itchyjunk]> | the ghci has negatively reinforced my brain to avoid it |
| 23:45:49 | <geekosaur> | work on the signatures, then |
| 23:45:56 | <[itchyjunk]> | ;_; |
| 23:46:10 | <geekosaur> | once you can express an appropriate signature, the function may well "write itself" |
| 23:46:35 | <[itchyjunk]> | ah, i'll stop avoiding signatures ! |
| 23:47:01 | × | Jing quits (~hedgehog@2604:a840:3::1094) (Remote host closed the connection) |
| 23:47:36 | → | Jing joins (~hedgehog@2604:a840:3::1094) |
| 23:47:48 | <monochrom> | You can let us take a look at your candidate type sig and invite comments. |
| 23:51:48 | <jle`> | type signatures are like automatic rubber ducks |
| 23:53:15 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) (Remote host closed the connection) |
| 23:54:56 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:dcf1:6c47:4df:1ed1) |
| 23:58:16 | × | acidjnk quits (~acidjnk@p200300d0c7271e823d8ddc81d8ce7005.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
| 23:58:35 | × | vysn quits (~vysn@user/vysn) (Ping timeout: 250 seconds) |
All times are in UTC on 2021-11-22.