Logs on 2021-01-10 (freenode/#haskell)
| 00:01:00 | × | neiluj quits (~jco@unaffiliated/neiluj) (Remote host closed the connection) |
| 00:01:28 | → | jedws joins (~jedws@121.209.189.201) |
| 00:02:29 | → | Tops2 joins (~Tobias@dyndsl-095-033-022-011.ewe-ip-backbone.de) |
| 00:06:55 | <ij> | seems that I can't use the getter with NamedFieldPuns, if I have it "punned" |
| 00:07:35 | <ij> | can I have multi-line arguments? how? I can't figure out the syntax |
| 00:07:47 | <ij> | ah, no, figured it |
| 00:08:14 | → | neiluj joins (~jco@91-167-203-101.subs.proxad.net) |
| 00:08:20 | × | neiluj quits (~jco@91-167-203-101.subs.proxad.net) (Changing host) |
| 00:08:20 | → | neiluj joins (~jco@unaffiliated/neiluj) |
| 00:09:33 | × | raehik1 quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.0) |
| 00:09:43 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:255c:18d1:c1a9:13be:6f9e) |
| 00:10:00 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 00:10:29 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 00:10:46 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 00:10:47 | <jle`> | > Just{} |
| 00:10:49 | <lambdabot> | Just *Exception: <interactive>:3:1-6: Missing field in record construction |
| 00:11:15 | <jle`> | neat |
| 00:11:17 | <jle`> | > (){} |
| 00:11:19 | <lambdabot> | () |
| 00:11:28 | <jle`> | > (,){} |
| 00:11:29 | <lambdabot> | (*Exception: <interactive>:3:1-5: Missing field in record construction |
| 00:12:47 | <jle`> | > 5{} |
| 00:12:49 | <lambdabot> | error: Empty record update |
| 00:12:59 | <jle`> | is that a runtime error or a compiletime error |
| 00:13:06 | <Uniaika> | let's see |
| 00:13:09 | <glguy> | That would should be compile time |
| 00:13:13 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Client Quit) |
| 00:13:16 | <glguy> | one should* |
| 00:13:17 | <jle`> | > let foo = 5{} in True |
| 00:13:20 | <lambdabot> | error: Empty record update |
| 00:13:28 | <jle`> | ah, 5 is interpreted as a value and not as a constructor |
| 00:13:49 | <jle`> | what other things exist on that weird line |
| 00:13:51 | <jle`> | > [1,2,3]{} |
| 00:13:52 | <ephemient> | > let _ = (:){} in True{} |
| 00:13:53 | <lambdabot> | error: Empty record update |
| 00:13:54 | <lambdabot> | True |
| 00:14:11 | <glguy> | The type has to be obvious from the syntax to use a record update |
| 00:14:25 | <glguy> | whether that's from a record field or constructor |
| 00:14:33 | <jle`> | Just{} is not interpreted as a record update though right? it's a constructor or pattern |
| 00:14:38 | <ephemient> | it can't have extra parens either, |
| 00:14:40 | <ephemient> | > []() |
| 00:14:42 | <lambdabot> | error: |
| 00:14:43 | <lambdabot> | • Couldn't match expected type ‘() -> t’ with actual type ‘[a0]’ |
| 00:14:43 | <lambdabot> | • The function ‘[]’ is applied to one argument, |
| 00:14:45 | <ephemient> | > []{} |
| 00:14:48 | <lambdabot> | [] |
| 00:14:51 | <ephemient> | > ([]){} |
| 00:14:53 | <lambdabot> | error: Empty record update |
| 00:15:11 | × | jedws quits (~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 00:15:13 | <glguy> | jle`, the choice is constructor{} with zero or more fields, or arbitrary value with one or more fields |
| 00:15:16 | <jle`> | it looks like for non-constructors {} is interpreted as as record update and for constructors it's a record initializer/constructor |
| 00:15:37 | <jle`> | i guess i could just peek at the report |
| 00:16:06 | <jle`> | :t (,) |
| 00:16:07 | <lambdabot> | a -> b -> (a, b) |
| 00:16:08 | × | cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 272 seconds) |
| 00:16:09 | <jle`> | :t (,){} |
| 00:16:11 | <lambdabot> | (a, b) |
| 00:16:13 | <jle`> | hehe |
| 00:16:18 | <glguy> | :t ((,)){} |
| 00:16:19 | <lambdabot> | error: Empty record update |
| 00:16:38 | <jle`> | > length ( (,){} ) |
| 00:16:40 | <lambdabot> | 1 |
| 00:16:55 | → | hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-zvbazqanyhuylsws) |
| 00:19:14 | × | stef204 quits (~stef204@unaffiliated/stef-204/x-384198) (Ping timeout: 264 seconds) |
| 00:20:03 | × | andreas303 quits (~andreas@gateway/tor-sasl/andreas303) (Ping timeout: 240 seconds) |
| 00:20:52 | → | ransom joins (~c4264035@8.48.134.54) |
| 00:21:40 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 00:22:30 | → | andreas303 joins (~andreas@gateway/tor-sasl/andreas303) |
| 00:22:55 | × | mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 265 seconds) |
| 00:22:59 | × | ph88 quits (~ph88@2a01:598:d002:63ff:f864:480b:85db:ffe9) (Ping timeout: 272 seconds) |
| 00:25:05 | → | ransom_ joins (~c4264035@c-67-176-3-106.hsd1.co.comcast.net) |
| 00:25:52 | × | andreas303 quits (~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection) |
| 00:26:49 | → | andreas303 joins (~andreas@gateway/tor-sasl/andreas303) |
| 00:26:55 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 00:27:45 | × | ransom quits (~c4264035@8.48.134.54) (Ping timeout: 240 seconds) |
| 00:29:02 | → | acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
| 00:31:51 | × | Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.) |
| 00:32:25 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 00:34:36 | <ephemient> | doesn't even need parentheses |
| 00:34:44 | <ephemient> | > length (,) {} |
| 00:34:45 | <lambdabot> | 1 |
| 00:36:11 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba) |
| 00:37:38 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:3d53:915:922b:d9c) |
| 00:38:34 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Read error: Connection reset by peer) |
| 00:38:55 | → | dcbdnl joins (~dcbdnl@68-74-201-196.lightspeed.hstntx.sbcglobal.net) |
| 00:39:53 | × | dcbdnl quits (~dcbdnl@68-74-201-196.lightspeed.hstntx.sbcglobal.net) (Client Quit) |
| 00:40:46 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 00:41:26 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba) (Ping timeout: 264 seconds) |
| 00:41:56 | × | alx741 quits (~alx741@181.196.69.12) (Ping timeout: 240 seconds) |
| 00:42:13 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:3d53:915:922b:d9c) (Ping timeout: 260 seconds) |
| 00:42:57 | <Axman6> | > (){}{}{}{}{} |
| 00:42:59 | <lambdabot> | error: Empty record updateerror: Empty record updateerror: Empty record upda... |
| 00:43:17 | <Axman6> | cccccckvtilvtcdihrrubtnujbbetuuulrtfifbfrrdv |
| 00:45:44 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 260 seconds) |
| 00:47:55 | <glguy> | Axman6, I added a script for detecting and blocking that for my own yubikey ^_^ |
| 00:48:03 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 00:52:46 | <ij> | is there like an "until" but only "while"? |
| 00:52:59 | <glguy> | while p = until (not . p) ? |
| 00:54:22 | <ij> | hm, but maybe even that won't work... I want to get the last Just in iterate (Map.lookup ..) |
| 00:55:04 | <ij> | @pl while p = until (not . p) |
| 00:55:05 | <lambdabot> | while = until . (not .) |
| 00:55:07 | → | alx741 joins (~alx741@181.196.69.216) |
| 00:55:58 | <Axman6> | huh, must've triggered it with my thigh. |
| 00:56:38 | <Axman6> | Is there a cononical vector tyoe with the length in its type? (and is there a better name than that monstrosity?) |
| 00:57:01 | <glguy> | There's a few packages but nothing I'd call canonical |
| 00:57:14 | <Axman6> | happy to go by number of downloads |
| 00:57:49 | <Axman6> | I'm looking at the wireguard package written by the author of the wireguard protocol, and seeing a few places where it miught be happy |
| 00:57:57 | <Axman6> | uh, useful |
| 00:58:19 | <Axman6> | surprisingly, english is my first, and only, spoken language |
| 00:58:32 | <glguy> | Axman6, Which package is that? |
| 00:58:39 | <koz_> | Axman6: You likely want vector-sized. |
| 00:58:54 | <Axman6> | sounds like the one |
| 00:58:57 | koz_ | is a co-maintainer so is grossly biased. |
| 00:59:17 | <Axman6> | glguy: https://git.zx2c4.com/wireguard-hs/about/ |
| 00:59:40 | → | dcbdnl joins (~dcbdnl@68-74-201-196.lightspeed.hstntx.sbcglobal.net) |
| 00:59:42 | <ski> | @type \m -> fromJust . last . takeWhile isJust . iterate ((`lookup` m) =<<) . Just |
| 00:59:43 | <lambdabot> | Eq c => [(c, c)] -> c -> c |
| 00:59:44 | <Axman6> | koz_: great, I can hop across the pond and nag you about things that need fixing |
| 00:59:44 | × | s00pcan quits (~chris@075-133-056-178.res.spectrum.com) (Remote host closed the connection) |
| 00:59:57 | <koz_> | Axman6: Or just file an issue lol, that's probably easier. |
| 01:00:38 | <Axman6> | but then I don't get o go to NZ |
| 01:00:41 | <ij> | ski, can't think of anything other than this straight forward one either |
| 01:01:31 | <ij> | maybe I could write converge (\v -> Map.lookup v `mplus` Just v) (Just a), if you know what I mean :) |
| 01:02:11 | <Axman6> | hmm, I was actually looking for a data Vec (n : Nat) a where ZNil :: Vec 0 a; (:.) :: a -> Vec n a -> Vec (n + 1) a style vector |
| 01:02:37 | × | acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 264 seconds) |
| 01:03:08 | × | conal quits (~conal@143.244.61.230) (Quit: Computer has gone to sleep.) |
| 01:03:08 | <Axman6> | though if there's a way to pattern match on a Vec 3 a as [a, b, c] that would be good |
| 01:03:56 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 01:05:20 | → | conal joins (~conal@143.244.61.230) |
| 01:05:48 | <ski> | @type \m -> either id (absurd . fst) . runStateT (forever (StateT (\k -> maybe (Left k) (Right . (,) ()) (lookup k m)))) |
| 01:05:50 | <lambdabot> | Eq b => [(b, b)] -> b -> b |
| 01:08:16 | <ij> | :t let converge = until =<< ((==) =<<) in converge (\v@(Just v') -> (Map.lookup v' Map.empty) `mplus` v) (Just 1) |
| 01:08:17 | <lambdabot> | error: |
| 01:08:18 | <lambdabot> | Not in scope: ‘Map.lookup’ |
| 01:08:18 | <lambdabot> | Perhaps you meant one of these: |
| 01:08:42 | <ij> | :t let converge = until =<< ((==) =<<) in converge (\v@(Just v') -> (lookup v' Map.empty) `mplus` v) (Just 1) |
| 01:08:44 | <lambdabot> | error: |
| 01:08:44 | <lambdabot> | Not in scope: ‘Map.empty’ |
| 01:08:44 | <lambdabot> | Perhaps you meant ‘M.empty’ (imported from Data.Map) |
| 01:08:56 | <ij> | :t let converge = until =<< ((==) =<<) in converge (\v@(Just v') -> (lookup v' []) `mplus` v) (Just 1) |
| 01:08:57 | <lambdabot> | (Eq a, Num a) => Maybe a |
| 01:09:23 | <ij> | ski, that's a mouthful |
| 01:10:33 | × | dcbdnl quits (~dcbdnl@68-74-201-196.lightspeed.hstntx.sbcglobal.net) (Quit: dcbdnl) |
| 01:10:48 | <ij> | I'd have to add fromJust . converge ... . Just |
| 01:11:37 | → | rajivr joins (uid269651@gateway/web/irccloud.com/x-ctlecoeospidllrd) |
| 01:11:51 | × | ransom_ quits (~c4264035@c-67-176-3-106.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 01:12:43 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 01:13:16 | <ski> | @type \m -> (id ||| uncurry absurd) . runStateT (forever (do k <- get; when (isNothing (lookup k m)) (throwError k))) |
| 01:13:18 | <lambdabot> | Eq e => [(e, a)] -> e -> e |
| 01:14:33 | × | Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
| 01:16:56 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 240 seconds) |
| 01:17:26 | → | tribble2 joins (~tribble2@unaffiliated/tribble2) |
| 01:18:16 | → | Jeanne-Kamikaze joins (~Jeanne-Ka@static-198-54-134-170.cust.tzulo.com) |
| 01:19:04 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:3d53:915:922b:d9c) |
| 01:20:13 | → | stef204 joins (~stef204@unaffiliated/stef-204/x-384198) |
| 01:20:15 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba) |
| 01:22:40 | × | tribble2 quits (~tribble2@unaffiliated/tribble2) (Quit: Leaving) |
| 01:22:47 | → | dandels joins (~dandels@unaffiliated/dandels) |
| 01:23:24 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:3d53:915:922b:d9c) (Ping timeout: 240 seconds) |
| 01:25:05 | → | dfeuer joins (~dfeuer@pool-173-79-253-62.washdc.fios.verizon.net) |
| 01:25:27 | → | cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net) |
| 01:27:29 | <Axman6> | Is there a tool for making github actions configs like hackell-ci does for travis? |
| 01:27:31 | × | columbarius1 quits (~columbari@i5E86B3D4.versanet.de) (Ping timeout: 246 seconds) |
| 01:27:37 | <Axman6> | haskell-ci* |
| 01:29:37 | <glguy> | I don't know why, but just checking you know about: https://github.com/haskell/actions |
| 01:29:50 | → | columbarius1 joins (~columbari@i5E86B32C.versanet.de) |
| 01:33:26 | <ephemient> | ah, I should migrate my workflows from actions/setup-haskell to haskell/actions/setup |
| 01:33:45 | <ephemient> | when did that get deprecated |
| 01:34:46 | → | charukiewicz joins (~charukiew@irouteince04.i.subnet.rcn.com) |
| 01:34:51 | <ephemient> | ah, https://github.com/actions/setup-haskell/pull/56 |
| 01:35:28 | <sm[m]> | additional bespoke, tested workflows here: https://github.com/simonmichael/hledger/tree/master/.github/workflows |
| 01:36:13 | × | dandels quits (~dandels@unaffiliated/dandels) (Ping timeout: 264 seconds) |
| 01:36:38 | <ephemient> | if you only need stack then yeah, DIY looks easy enough |
| 01:37:03 | <sm[m]> | I wouldn't say it was easy. A lot of hours went into these |
| 01:38:05 | <ephemient> | that I believe, but actions/setup-haskell or haskell/actions/setup wouldn't have saved that time |
| 01:38:28 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 01:38:40 | × | charukiewicz quits (~charukiew@irouteince04.i.subnet.rcn.com) (Client Quit) |
| 01:38:52 | → | charukiewicz joins (~quassel@irouteince04.i.subnet.rcn.com) |
| 01:38:55 | → | proc_ joins (~proc@177.155.80.112) |
| 01:43:07 | × | proc_ quits (~proc@177.155.80.112) (Client Quit) |
| 01:43:41 | → | ransom joins (~c4264035@c-67-176-3-106.hsd1.co.comcast.net) |
| 01:43:55 | → | dcbdnl joins (~dcbdnl@68-74-201-196.lightspeed.hstntx.sbcglobal.net) |
| 01:44:16 | → | Tario joins (~Tario@201.192.165.173) |
| 01:49:26 | × | nhs_ quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Remote host closed the connection) |
| 01:50:29 | → | Jd007 joins (~Jd007@d154-5-83-24.bchsia.telus.net) |
| 01:52:25 | × | DavidEichmann quits (~david@98.27.93.209.dyn.plus.net) (Ping timeout: 264 seconds) |
| 01:57:29 | × | electricityZZZZ quits (~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
| 02:00:29 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:3d53:915:922b:d9c) |
| 02:05:02 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:3d53:915:922b:d9c) (Ping timeout: 260 seconds) |
| 02:05:28 | × | dcbdnl quits (~dcbdnl@68-74-201-196.lightspeed.hstntx.sbcglobal.net) (Quit: dcbdnl) |
| 02:05:48 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 02:05:58 | × | jollygood2 quits (~bc812391@217.29.117.252) (Quit: http://www.okay.uz/) |
| 02:07:30 | × | ransom quits (~c4264035@c-67-176-3-106.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 02:09:16 | → | ransom joins (~c4264035@2601:285:201:6720:f8d3:ffcb:d91b:58f8) |
| 02:10:54 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 02:11:49 | × | conal quits (~conal@143.244.61.230) (Quit: Computer has gone to sleep.) |
| 02:12:16 | × | xsperry quits (~as@unaffiliated/xsperry) (Read error: Connection reset by peer) |
| 02:12:17 | × | Wuzzy quits (~Wuzzy@p5790e648.dip0.t-ipconnect.de) (Quit: Wuzzy) |
| 02:12:21 | → | conal joins (~conal@143.244.61.230) |
| 02:12:32 | × | conal quits (~conal@143.244.61.230) (Client Quit) |
| 02:13:10 | → | conal joins (~conal@143.244.61.230) |
| 02:13:16 | × | conal quits (~conal@143.244.61.230) (Client Quit) |
| 02:13:35 | → | ransom_ joins (~c4264035@c-67-176-3-106.hsd1.co.comcast.net) |
| 02:13:46 | → | conal joins (~conal@143.244.61.230) |
| 02:14:01 | × | conal quits (~conal@143.244.61.230) (Client Quit) |
| 02:14:34 | → | conal joins (~conal@143.244.61.230) |
| 02:14:44 | → | fosterite joins (~fosterite@2600:6c46:7800:fecf:f917:a8fd:ae0d:b7ee) |
| 02:15:02 | × | ransom quits (~c4264035@2601:285:201:6720:f8d3:ffcb:d91b:58f8) (Ping timeout: 264 seconds) |
| 02:15:57 | → | xsperry joins (~as@unaffiliated/xsperry) |
| 02:16:44 | × | fosterite quits (~fosterite@2600:6c46:7800:fecf:f917:a8fd:ae0d:b7ee) (Client Quit) |
| 02:21:29 | → | rzjian joins (~l@203.168.12.226) |
| 02:26:02 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:cd42:d8ce:7bc:301f) |
| 02:26:23 | × | ransom_ quits (~c4264035@c-67-176-3-106.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 02:26:46 | → | f-a joins (~f-a@151.38.2.154) |
| 02:27:10 | → | xiinotulp joins (~q@node-unv.pool-125-24.dynamic.totinternet.net) |
| 02:28:46 | × | Gurkenglas_ quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 246 seconds) |
| 02:29:19 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 02:29:25 | × | plutoniix quits (~q@node-ugq.pool-125-24.dynamic.totinternet.net) (Ping timeout: 240 seconds) |
| 02:30:42 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:cd42:d8ce:7bc:301f) (Ping timeout: 260 seconds) |
| 02:31:09 | ← | f-a parts (~f-a@151.38.2.154) () |
| 02:34:14 | × | conal quits (~conal@143.244.61.230) (Quit: Computer has gone to sleep.) |
| 02:35:26 | → | conal joins (~conal@143.244.61.230) |
| 02:35:40 | × | conal quits (~conal@143.244.61.230) (Client Quit) |
| 02:37:05 | → | conal joins (~conal@143.244.61.230) |
| 02:37:05 | × | conal quits (~conal@143.244.61.230) (Client Quit) |
| 02:37:46 | → | conal joins (~conal@143.244.61.230) |
| 02:37:47 | × | conal quits (~conal@143.244.61.230) (Client Quit) |
| 02:41:29 | → | ransom joins (~c4264035@c-67-176-3-106.hsd1.co.comcast.net) |
| 02:41:59 | → | niekvandepas joins (~niekvande@80-100-16-191.ip.xs4all.nl) |
| 02:44:52 | × | halbGefressen quits (~halbGefre@2a02:810d:f40:2a9c:40b2:2308:84bd:8b9b) (Quit: halbGefressen) |
| 02:45:19 | × | m0rphism quits (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 260 seconds) |
| 02:45:24 | × | Ariakenom quits (~Ariakenom@2001:9b1:efb:fc00:3df7:2c2b:de8e:c444) (Quit: Leaving) |
| 02:45:24 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 02:46:05 | × | niekvandepas quits (~niekvande@80-100-16-191.ip.xs4all.nl) (Read error: Connection reset by peer) |
| 02:46:08 | × | aldum quits (~vishera@aldum.pw) (Ping timeout: 256 seconds) |
| 02:46:14 | × | ericsagn1 quits (~ericsagne@2405:6580:0:5100:e13a:446f:fd91:b45c) (Ping timeout: 264 seconds) |
| 02:46:18 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:d135:506:d2b3:ea88) |
| 02:46:45 | → | conal joins (~conal@209.58.133.168) |
| 02:48:38 | × | sqrt2 quits (~ben@unaffiliated/sqrt2) (Ping timeout: 264 seconds) |
| 02:48:46 | → | sqrt2_ joins (~ben@unaffiliated/sqrt2) |
| 02:49:06 | → | ericsagnes joins (~ericsagne@2405:6580:0:5100:3c13:dd0e:758f:287c) |
| 02:50:32 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:d135:506:d2b3:ea88) (Ping timeout: 260 seconds) |
| 02:50:38 | → | wei2912 joins (~wei2912@unaffiliated/wei2912) |
| 02:51:03 | × | thunderrd quits (~thunderrd@183.182.115.7) (Remote host closed the connection) |
| 02:53:27 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 02:56:59 | → | aldum joins (~vishera@aldum.pw) |
| 02:57:56 | × | Jd007 quits (~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007) |
| 02:58:14 | → | thunderrd joins (~thunderrd@183.182.115.7) |
| 03:02:39 | lagothrix | is now known as Guest67909 |
| 03:02:39 | → | xirhtogal joins (~lagothrix@unaffiliated/lagothrix) |
| 03:02:39 | × | Guest67909 quits (~lagothrix@unaffiliated/lagothrix) (Killed (hitchcock.freenode.net (Nickname regained by services))) |
| 03:02:39 | xirhtogal | is now known as lagothrix |
| 03:05:36 | → | jose_edil joins (~jose_edil@189.6.36.113) |
| 03:12:22 | × | artyom quits (uid480728@gateway/web/irccloud.com/x-nqqalknrlwpfzvsu) (Quit: Connection closed for inactivity) |
| 03:12:49 | × | Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Ping timeout: 264 seconds) |
| 03:14:58 | × | Noldorin quits (~noldorin@unaffiliated/noldorin) (Quit: Textual IRC Client: www.textualapp.com) |
| 03:17:08 | × | vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving) |
| 03:18:42 | → | m0rphism joins (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) |
| 03:20:01 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 03:22:14 | × | Jeanne-Kamikaze quits (~Jeanne-Ka@static-198-54-134-170.cust.tzulo.com) (Quit: Leaving) |
| 03:24:46 | × | aldum quits (~vishera@aldum.pw) (Ping timeout: 246 seconds) |
| 03:27:18 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:d135:506:d2b3:ea88) |
| 03:29:38 | × | acidjnk_new quits (~acidjnk@p200300d0c704e7293cc19a8744f5227e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 03:31:15 | × | xiinotulp quits (~q@node-unv.pool-125-24.dynamic.totinternet.net) (Remote host closed the connection) |
| 03:31:50 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:d135:506:d2b3:ea88) (Ping timeout: 264 seconds) |
| 03:33:15 | × | ransom quits (~c4264035@c-67-176-3-106.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 03:33:59 | → | flux66 joins (2fe3e53b@047-227-229-059.res.spectrum.com) |
| 03:34:20 | × | rzjian quits (~l@203.168.12.226) (Quit: ##CoV) |
| 03:34:44 | <flux66> | so I got some intuition for reader as a functor earlier this morning, where fmap is basically taking the transformation inside reader and then applying some function after that, but what is monadic bind doing in reader? |
| 03:34:48 | <flux66> | is there some intuition for this? |
| 03:35:26 | <flux66> | here is the definition: `(Reader ra) >>= aRb = Reader $ \r -> runReader (aRb (ra r)) r ` |
| 03:40:35 | → | aldum joins (~vishera@aldum.pw) |
| 03:41:50 | × | incertia_ quits (~incertia@d4-50-26-103.nap.wideopenwest.com) (Ping timeout: 256 seconds) |
| 03:46:01 | → | incertia joins (~incertia@d4-50-26-103.nap.wideopenwest.com) |
| 03:48:11 | × | stef204 quits (~stef204@unaffiliated/stef-204/x-384198) (Ping timeout: 272 seconds) |
| 03:48:13 | × | theDon quits (~td@94.134.91.100) (Ping timeout: 246 seconds) |
| 03:50:19 | → | theDon joins (~td@94.134.91.57) |
| 03:51:27 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 03:53:23 | × | jose_edil quits (~jose_edil@189.6.36.113) (Quit: Leaving...) |
| 03:55:54 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 260 seconds) |
| 03:56:16 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 03:59:53 | → | xirhtogal joins (~lagothrix@unaffiliated/lagothrix) |
| 03:59:53 | lagothrix | is now known as Guest19966 |
| 03:59:53 | xirhtogal | is now known as lagothrix |
| 04:00:01 | × | alexelcu quits (~alexelcu@142.93.180.198) (Quit: ZNC 1.8.2 - https://znc.in) |
| 04:00:01 | × | haasn quits (~nand@mpv/developer/haasn) (Quit: ZNC 1.7.5+deb4 - https://znc.in) |
| 04:00:16 | × | dandart quits (~Thunderbi@home.dandart.co.uk) (Ping timeout: 240 seconds) |
| 04:00:32 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 04:01:03 | → | alexelcu joins (~alexelcu@142.93.180.198) |
| 04:01:18 | → | haasn joins (~nand@mpv/developer/haasn) |
| 04:02:36 | × | Guest19966 quits (~lagothrix@unaffiliated/lagothrix) (Ping timeout: 240 seconds) |
| 04:02:52 | × | Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
| 04:04:19 | → | Varis joins (~Tadas@unaffiliated/varis) |
| 04:05:58 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba) (Remote host closed the connection) |
| 04:06:08 | × | flux66 quits (2fe3e53b@047-227-229-059.res.spectrum.com) (Remote host closed the connection) |
| 04:07:30 | × | Sheilong quits (uid293653@gateway/web/irccloud.com/x-kkcpnmskhkuyrrwu) () |
| 04:08:20 | <koz_> | o dam dey leff |
| 04:08:55 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:d135:506:d2b3:ea88) |
| 04:09:44 | → | christo joins (~chris@cpc143560-cdif16-2-0-cust112.5-1.cable.virginm.net) |
| 04:13:23 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:d135:506:d2b3:ea88) (Ping timeout: 260 seconds) |
| 04:13:33 | → | jose_edil joins (~jose_edil@189.6.36.113) |
| 04:13:59 | × | jose_edil quits (~jose_edil@189.6.36.113) (Client Quit) |
| 04:17:12 | → | vicfred joins (~vicfred@unaffiliated/vicfred) |
| 04:19:05 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba) |
| 04:20:21 | × | viluon quits (uid453725@gateway/web/irccloud.com/x-kawrxnfkkehkxrdj) (Quit: Connection closed for inactivity) |
| 04:20:25 | × | aldum quits (~vishera@aldum.pw) (Ping timeout: 246 seconds) |
| 04:20:39 | → | aldum joins (~vishera@aldum.pw) |
| 04:22:17 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 04:22:54 | × | Cale quits (~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com) (Remote host closed the connection) |
| 04:23:08 | × | m0rphism quits (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 265 seconds) |
| 04:27:58 | <Graypup_> | is there a function for `maybe (return ()) (.. make some other monad ..) (.. some Maybe value ..)`? |
| 04:28:02 | <Graypup_> | other than, that one :P |
| 04:28:07 | → | ezrakilty joins (~ezrakilty@75-172-99-84.tukw.qwest.net) |
| 04:30:58 | → | slack1256 joins (~slack1256@dvc-186-186-101-190.movil.vtr.net) |
| 04:35:06 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:31e4:12a0:baa9:a929) |
| 04:35:39 | → | drbean joins (~drbean@TC210-63-209-201.static.apol.com.tw) |
| 04:35:42 | × | cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 265 seconds) |
| 04:36:22 | → | niekvand_ joins (~niekvande@80-100-16-191.ip.xs4all.nl) |
| 04:37:16 | <ephemient> | Hoogle finds https://hackage.haskell.org/package/extra/docs/Control-Monad-Extra.html#v:whenJust |
| 04:38:36 | <ezzieyguywuf> | dang, never used the diagrams-* family of programs (i.e. diagrams-svg) but they look cool! |
| 04:39:37 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:31e4:12a0:baa9:a929) (Ping timeout: 260 seconds) |
| 04:41:01 | × | niekvand_ quits (~niekvande@80-100-16-191.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 04:42:01 | <dolio> | Graypup_: traverse_ |
| 04:43:05 | → | cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net) |
| 04:46:22 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:986d:7629:5e04:a085) |
| 04:47:41 | <Graypup_> | ezzieyguywuf, they were the most cursed part of my build process and caused several nightmares :) they're probably good also, but I just had the unfun part of the maintenance to do |
| 04:50:23 | <ezzieyguywuf> | Graypup_: can you elaborate? I'm actually working on updating their packages on gentoo |
| 04:50:42 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:986d:7629:5e04:a085) (Ping timeout: 260 seconds) |
| 04:52:45 | × | slack1256 quits (~slack1256@dvc-186-186-101-190.movil.vtr.net) (Remote host closed the connection) |
| 04:52:56 | × | cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving) |
| 04:54:22 | <Graypup_> | ezzieyguywuf, I was doing nix packaging to dockerize a web app and had a bunch of compilation/dependency issues related to src-exts (IIRC) with diagrams-builder, which I think I fixed by jailbreaking the cabal for it, and then I ended up with a runtime dependency on ghc that made my images super huge because diagrams requires it :( |
| 04:56:07 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
| 04:56:55 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 04:58:44 | → | dcbdnl joins (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) |
| 04:58:48 | × | dcbdnl quits (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) (Client Quit) |
| 04:59:45 | → | ADG1089__ joins (~aditya@122.163.165.143) |
| 04:59:58 | → | dcbdnl joins (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) |
| 05:00:07 | × | dcbdnl quits (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) (Client Quit) |
| 05:02:37 | × | dfeuer quits (~dfeuer@pool-173-79-253-62.washdc.fios.verizon.net) (Ping timeout: 264 seconds) |
| 05:09:48 | → | Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) |
| 05:14:23 | × | mirrorbird quits (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) (Quit: Leaving) |
| 05:14:33 | × | gnumonic quits (~gnumonic@c-73-170-91-210.hsd1.ca.comcast.net) (Remote host closed the connection) |
| 05:15:46 | → | dcbdnl joins (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) |
| 05:15:50 | × | dcbdnl quits (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) (Client Quit) |
| 05:16:17 | → | justan0theruser joins (~justanoth@unaffiliated/justanotheruser) |
| 05:18:45 | × | justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds) |
| 05:19:37 | → | dcbdnl joins (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) |
| 05:19:42 | × | dcbdnl quits (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) (Client Quit) |
| 05:21:09 | → | JohnTalent joins (~john@unaffiliated/johntalent) |
| 05:21:30 | <JohnTalent> | How would you port SDL to haskell? I was thinking it could be done in I/O monads. |
| 05:22:15 | × | SummerNinja quits (~SummerNin@84.39.117.57) (Remote host closed the connection) |
| 05:23:23 | → | Tops21 joins (~Tobias@dyndsl-095-033-095-004.ewe-ip-backbone.de) |
| 05:23:37 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds) |
| 05:24:51 | <Axman6> | aren't there already ports? |
| 05:25:08 | <JohnTalent> | yes. |
| 05:25:13 | <JohnTalent> | i was just looking at one. |
| 05:25:31 | × | Tops2 quits (~Tobias@dyndsl-095-033-022-011.ewe-ip-backbone.de) (Ping timeout: 246 seconds) |
| 05:26:02 | → | Jd007 joins (~Jd007@d154-5-83-24.bchsia.telus.net) |
| 05:26:16 | <Axman6> | "I/O monads" doesn't make much sense to me. it would of course have to use the IO monad to interact with the OS |
| 05:26:42 | × | Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
| 05:26:57 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 05:28:02 | × | matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Ping timeout: 260 seconds) |
| 05:29:29 | <JohnTalent> | yeah, didn't I just say that? |
| 05:32:04 | → | dcbdnl joins (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) |
| 05:32:08 | × | dcbdnl quits (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) (Client Quit) |
| 05:32:34 | → | matryoshka joins (~matryoshk@184.75.223.227) |
| 05:32:48 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 05:33:55 | <dsal> | JohnTalent: You said something about "I/O monads" which sounds like a different thing from the IO monad. |
| 05:33:57 | <Axman6> | glguy: Thank, I knew there was an actions thing but didn't know that was how to do it |
| 05:34:07 | <Axman6> | s* |
| 05:34:13 | <dsal> | It probably sounds pedantic, but if there's more than one, it'd be interesting to know how that works. |
| 05:34:50 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 05:36:37 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 05:36:43 | × | ADG1089__ quits (~aditya@122.163.165.143) (Remote host closed the connection) |
| 05:37:34 | × | ezrakilty quits (~ezrakilty@75-172-99-84.tukw.qwest.net) (Remote host closed the connection) |
| 05:37:37 | → | Saukk joins (~Saukk@83-148-239-3.dynamic.lounea.fi) |
| 05:37:37 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 05:38:26 | <JohnTalent> | How could I create modern Linux into a VM using strictly Haskell? |
| 05:38:54 | → | funkyb joins (~funkyb@139.28.218.148) |
| 05:42:13 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 264 seconds) |
| 05:43:44 | → | CMCDragonkai1 joins (~Thunderbi@124.19.3.250) |
| 05:46:33 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:7568:72c:97b0:4d4d) |
| 05:47:22 | × | CMCDragonkai1 quits (~Thunderbi@124.19.3.250) (Client Quit) |
| 05:50:48 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:7568:72c:97b0:4d4d) (Ping timeout: 260 seconds) |
| 05:52:51 | × | Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
| 05:53:54 | → | Tario joins (~Tario@201.192.165.173) |
| 05:58:52 | × | JohnTalent quits (~john@unaffiliated/johntalent) (Quit: leaving) |
| 06:06:07 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 06:09:33 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 06:11:22 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 06:11:59 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 06:12:32 | × | Saukk quits (~Saukk@83-148-239-3.dynamic.lounea.fi) (Remote host closed the connection) |
| 06:13:10 | → | vappend joins (~ezrakilty@75-172-99-84.tukw.qwest.net) |
| 06:14:22 | × | sqrt2_ quits (~ben@unaffiliated/sqrt2) (Quit: ZNC - http://znc.in) |
| 06:14:33 | → | sqrt2 joins (~ben@unaffiliated/sqrt2) |
| 06:14:55 | → | desophos joins (~desophos@2601:249:1680:a570:1a:d7e6:fee4:6ebe) |
| 06:15:04 | × | urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna) |
| 06:15:31 | × | desophos quits (~desophos@2601:249:1680:a570:1a:d7e6:fee4:6ebe) (Client Quit) |
| 06:16:16 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 246 seconds) |
| 06:18:14 | × | vappend quits (~ezrakilty@75-172-99-84.tukw.qwest.net) (Remote host closed the connection) |
| 06:18:29 | → | vappend joins (~ezrakilty@75-172-99-84.tukw.qwest.net) |
| 06:18:55 | <ephemient> | there aren't SDL ports to haskell, there are SDL bindings |
| 06:20:33 | × | vappend quits (~ezrakilty@75-172-99-84.tukw.qwest.net) (Remote host closed the connection) |
| 06:20:51 | → | polyrain joins (~polyrain@121.222.65.83) |
| 06:21:15 | <ephemient> | regarding Linux VM, depends on what you mean by "strictly Haskell" and what you want to achieve |
| 06:23:21 | <ephemient> | Google Ganeti is a VM cluster manager written in Haskell (with Python tools for management), but it delegates to xen/kvm for the actual running of VMs |
| 06:24:49 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 06:24:57 | <ephemient> | you could write your own VMM in Haskell using KVM, and in fact I see a project that looks like a start at that: https://github.com/PolyB/kvm |
| 06:26:44 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 06:27:48 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 06:28:02 | → | revtintin joins (~revtintin@42.61.242.247) |
| 06:28:25 | × | cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 264 seconds) |
| 06:29:00 | → | Varis joins (~Tadas@unaffiliated/varis) |
| 06:31:56 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 240 seconds) |
| 06:34:08 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Remote host closed the connection) |
| 06:40:04 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
| 06:49:31 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) |
| 06:51:22 | × | wei2912 quits (~wei2912@unaffiliated/wei2912) (Remote host closed the connection) |
| 06:54:23 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 260 seconds) |
| 06:55:45 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving) |
| 06:58:20 | → | justanotheruser joins (~justanoth@unaffiliated/justanotheruser) |
| 06:59:36 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 06:59:37 | × | Nikotiini quits (~ubuntu@ec2-52-213-118-142.eu-west-1.compute.amazonaws.com) (Ping timeout: 264 seconds) |
| 07:00:39 | × | Tops21 quits (~Tobias@dyndsl-095-033-095-004.ewe-ip-backbone.de) (Quit: Leaving.) |
| 07:00:46 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 07:00:54 | → | Nikotiini joins (~ubuntu@ec2-52-213-118-142.eu-west-1.compute.amazonaws.com) |
| 07:01:23 | × | justan0theruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds) |
| 07:07:41 | × | jchia__1 quits (~jchia@58.32.36.39) (Remote host closed the connection) |
| 07:09:42 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 07:13:04 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 07:14:13 | × | jamm quits (~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds) |
| 07:14:57 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 07:16:42 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 07:18:05 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 07:18:09 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 07:20:37 | × | ViCi quits (daniel@10PLM.ro) (Quit: Quit!) |
| 07:22:37 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 256 seconds) |
| 07:25:58 | × | polyrain quits (~polyrain@121.222.65.83) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 07:27:26 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba) (Remote host closed the connection) |
| 07:36:43 | × | hexo quits (~hexo@gateway/tor-sasl/hexo) (Ping timeout: 240 seconds) |
| 07:36:43 | × | srk quits (~sorki@gateway/tor-sasl/sorki) (Ping timeout: 240 seconds) |
| 07:39:37 | × | Cthalupa quits (~cthulhu@47.186.47.75) (Ping timeout: 260 seconds) |
| 07:40:44 | → | polyrain joins (~polyrain@2001:8003:e501:6901:48d7:a5b0:7887:1dd9) |
| 07:40:54 | × | polyrain quits (~polyrain@2001:8003:e501:6901:48d7:a5b0:7887:1dd9) (Client Quit) |
| 07:42:47 | → | Cthalupa joins (~cthulhu@47.186.47.75) |
| 07:50:14 | → | polyrain joins (~polyrain@2001:8003:e501:6901:aca6:1b18:3492:8fb8) |
| 07:51:35 | × | gioyik quits (~gioyik@186.118.234.246) (Quit: WeeChat 3.0) |
| 07:52:40 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 07:55:23 | × | Jd007 quits (~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007) |
| 07:55:46 | → | ADG1089__ joins (~aditya@122.163.165.143) |
| 08:01:57 | → | hexo joins (~hexo@gateway/tor-sasl/hexo) |
| 08:02:01 | → | srk joins (~sorki@gateway/tor-sasl/sorki) |
| 08:06:01 | → | tama joins (~tama@unaffiliated/tama00) |
| 08:07:20 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 08:11:16 | × | Rudd0^ quits (~Rudd0@185.189.115.108) (Ping timeout: 265 seconds) |
| 08:11:55 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) |
| 08:14:14 | × | revtintin quits (~revtintin@42.61.242.247) (Quit: WeeChat 1.9.1) |
| 08:15:29 | → | Deide joins (~Deide@217.155.19.23) |
| 08:16:50 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds) |
| 08:17:17 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 08:17:29 | → | olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
| 08:17:48 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) |
| 08:22:03 | → | pera joins (~pera@unaffiliated/pera) |
| 08:22:14 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds) |
| 08:24:17 | <siraben> | What's the Haskell equivalent of async/await/Futures? |
| 08:24:56 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 256 seconds) |
| 08:27:13 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 08:27:50 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba) |
| 08:28:24 | <Graypup_> | If I have a bunch of constraints that I want to give a name, how can I do this? I tried a type class but realized it would have to have an instance for my thing, which I don't want to have to make |
| 08:28:52 | <Graypup_> | or rather, an instance for every type I want to make it a part of |
| 08:29:27 | <Graypup_> | I think it's probably *possible* to do a blanket implementation (rust terminology, sorry) for the type class, but I don't know how, or if that is an overcomplication |
| 08:29:58 | <siraben> | Graypup_: there's ConstraintKinds |
| 08:29:59 | <siraben> | e.g. `type StEff s r = (Reader s :<: r, Writer s :<: r)` |
| 08:30:13 | <siraben> | Then, `sumN :: (StEff (Integer, Integer) f) => Term f ()` |
| 08:31:09 | → | knupfer joins (~Thunderbi@200116b82cc1a70088a433fffe03d6f1.dip.versatel-1u1.de) |
| 08:31:11 | × | knupfer quits (~Thunderbi@200116b82cc1a70088a433fffe03d6f1.dip.versatel-1u1.de) (Client Quit) |
| 08:31:19 | <Graypup_> | heck yeah, that looks like exactly what i was looking for |
| 08:31:24 | → | knupfer joins (~Thunderbi@87.123.206.207) |
| 08:31:49 | <siraben> | Graypup_: what's a blanket implementation in Rust? |
| 08:32:26 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:8800:58ae:899:fbba) (Ping timeout: 264 seconds) |
| 08:33:10 | <Graypup_> | impl<T: SomeOtherTrait> SomeTrait for T { } |
| 08:33:15 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) |
| 08:33:38 | → | Tops2 joins (~Tobias@dyndsl-095-033-095-004.ewe-ip-backbone.de) |
| 08:33:43 | <Graypup_> | it implements SomeTrait for all types that implement SomeOtherTrait, having access to the functionality of SomeOtherTrait |
| 08:34:38 | <siraben> | Oh ok so it's like, `class SomeOtherTrait t => SomeTrait t where {}` |
| 08:34:39 | <siraben> | in Haskell |
| 08:34:42 | <c_wraith> | siraben: for what purpose? Most use cases are handled by the async library, but some special cases are not |
| 08:35:05 | × | justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds) |
| 08:35:19 | <Graypup_> | siraben, I believe so yeah |
| 08:35:39 | <c_wraith> | I bet the edge cases are different |
| 08:35:50 | <siraben> | c_wraith: so the async library is sufficient for asynchronous programming in Haskell? I've used `mapConcurrently` in `Control.Concurrent` before and it sufficed |
| 08:35:50 | <c_wraith> | Rust forbids orphan instances. |
| 08:36:00 | <siraben> | But haven't done more complex async programs |
| 08:36:10 | <c_wraith> | So it doesn't have to deal with an open-world assumption |
| 08:36:28 | <c_wraith> | So it can handle overlapping instances with much less confusion than Haskell |
| 08:37:16 | <siraben> | c_wraith: say I wanted to use gloss + some networking to render a dashboard of various things the user might be interested in, weather, currency rates, etc. |
| 08:38:12 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 260 seconds) |
| 08:38:17 | <Graypup_> | c_wraith, yeah, the orphan rule sucks pretty hard, and I haven't thought hard about how haskell manages to not have one and avoid the troubles rust's orphan rule is intended to stop |
| 08:38:32 | <c_wraith> | Graypup_: it doesn't avoid the troubles. :) |
| 08:38:39 | <Graypup_> | heh |
| 08:38:40 | × | tito_04 quits (~taurux@net-188-152-137-51.cust.vodafonedsl.it) (Read error: Connection reset by peer) |
| 08:39:24 | → | taurux joins (~taurux@net-109-115-33-52.cust.vodafonedsl.it) |
| 08:39:41 | <c_wraith> | instead we have explicit overlapping indications and extensions like IncoherentInstances when that isn't enough. |
| 08:40:07 | <c_wraith> | Note the word "incoherent" is scary. That is accurate. |
| 08:40:59 | <c_wraith> | when instances overlap incoherently, GHC provides no guarantees that it will always select the same one :( |
| 08:41:31 | × | cassim quits (~cassim@51.194.80.91) (Ping timeout: 246 seconds) |
| 08:44:58 | <c_wraith> | siraben: async is not the only way to handle something like that. It sounds like it might be a better fit for various FRP systems, which take care of propagating updates for you. |
| 08:44:59 | <siraben> | does anyone know of good tutorials and examples of async programming in Haskell? |
| 08:45:30 | <siraben> | c_wraith: Right, I get the sense that async may be the wrong/too low level abstraction in Haskell |
| 08:48:27 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 08:48:50 | × | taurux quits (~taurux@net-109-115-33-52.cust.vodafonedsl.it) (Read error: Connection reset by peer) |
| 08:48:55 | → | tito_04 joins (~taurux@net-109-115-33-214.cust.vodafonedsl.it) |
| 08:55:49 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 08:56:50 | × | pera quits (~pera@unaffiliated/pera) (Quit: leaving) |
| 08:57:28 | → | taurux joins (~taurux@net-109-115-33-214.cust.vodafonedsl.it) |
| 08:58:25 | × | tito_04 quits (~taurux@net-109-115-33-214.cust.vodafonedsl.it) (Ping timeout: 264 seconds) |
| 08:58:46 | × | polyphem quits (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Quit: WeeChat 2.9) |
| 09:01:16 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 09:17:34 | <ij> | where is the filter for Maybe? Is there one that works for lists and Maybes? |
| 09:17:48 | → | pera joins (~pera@unaffiliated/pera) |
| 09:18:40 | <ij> | I guess find works for Maybe, surprisingly |
| 09:20:02 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 09:22:07 | × | Tario quits (~Tario@201.192.165.173) (Ping timeout: 246 seconds) |
| 09:23:15 | → | danvet joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) |
| 09:23:39 | × | hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-zvbazqanyhuylsws) (Quit: Connection closed for inactivity) |
| 09:24:40 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds) |
| 09:25:13 | → | Enrico63 joins (520efe97@cpc92708-cmbg20-2-0-cust150.5-4.cable.virginm.net) |
| 09:25:59 | <charukiewicz> | ij: find works on Maybe values because its type signature is find :: Foldable t => (a -> Bool) -> t a -> Maybe a and Maybe has a Foldable instance |
| 09:26:21 | → | coot joins (~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl) |
| 09:26:41 | <ij> | right, but it wasn't the function I expected to find – I thought I was going to find a function that also works for lists |
| 09:27:42 | <charukiewicz> | find does work for lists as well, since lists also have a Foldable instance |
| 09:29:04 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 09:30:37 | <charukiewicz> | That being said, find always returns a single Maybe value. So it will only return the leftmost value that matches the predicate. You do need to use filter if you want to return all the values that match the predicate. |
| 09:30:51 | <Enrico63> | Hello. I've installed ghcup via the command here (https://www.haskell.org/ghcup/). However I'm having some trouble in using it. For instance, after doing `ghcup install ghc 8.10.3`, if I run `ghci` I get `bash: ghci: comand not found` |
| 09:30:57 | <ij> | ski, why did you need Right . (,) () there yesterday? Could it not have been just Right? |
| 09:31:21 | <ij> | :t absurd |
| 09:31:22 | <lambdabot> | Void -> a |
| 09:31:44 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) |
| 09:31:51 | × | christo quits (~chris@cpc143560-cdif16-2-0-cust112.5-1.cable.virginm.net) (Remote host closed the connection) |
| 09:32:29 | → | christo joins (~chris@cpc143560-cdif16-2-0-cust112.5-1.cable.virginm.net) |
| 09:33:38 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 264 seconds) |
| 09:35:02 | → | berberman_ joins (~berberman@unaffiliated/berberman) |
| 09:35:45 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 09:35:46 | × | drbean quits (~drbean@TC210-63-209-201.static.apol.com.tw) (Ping timeout: 246 seconds) |
| 09:36:02 | × | berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds) |
| 09:36:38 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds) |
| 09:36:49 | × | christo quits (~chris@cpc143560-cdif16-2-0-cust112.5-1.cable.virginm.net) (Ping timeout: 246 seconds) |
| 09:39:52 | → | aerium joins (~aerium@51.194.80.91) |
| 09:40:47 | <idnar> | :t catMaybes -- ij, maybe this? |
| 09:40:48 | <lambdabot> | [Maybe a] -> [a] |
| 09:41:17 | <ij> | I was looking for filter for Foldable, but maybe that is not possible |
| 09:41:48 | <idnar> | ij: ah, that's ~ Witherable |
| 09:42:18 | <ij> | well, find it is then, because I don't need another package just for that |
| 09:43:21 | <idnar> | :t Data.Witherable.filter |
| 09:43:23 | <lambdabot> | error: |
| 09:43:23 | <lambdabot> | Not in scope: ‘Data.Witherable.filter’ |
| 09:43:23 | <lambdabot> | No module named ‘Data.Witherable’ is imported. |
| 09:43:31 | <idnar> | % :t Data.Witherable.filter |
| 09:43:31 | <yahb> | idnar: ; <interactive>:1:1: error:; Not in scope: `Data.Witherable.filter'; No module named `Data.Witherable' is imported. |
| 09:43:46 | <idnar> | % import Data.Witherable |
| 09:43:46 | <yahb> | idnar: ; <no location info>: error:; Could not find module `Data.Witherable'; It is not a module in the current program, or in any known package. |
| 09:43:53 | <idnar> | bah |
| 09:44:37 | <idnar> | anyway, yeah, overkill for just one instance |
| 09:44:53 | <ij> | but at least I know it's there! scala has it, so I was kind of looking for it |
| 09:45:19 | <dibblego> | scala's is broken, use Witherable |
| 09:45:23 | <ij> | :) |
| 09:45:37 | <ij> | but they pay me for it! |
| 09:47:03 | <ij> | I'm writing a pipe maze solver and I added coloring for connected parts lookupEquiv v = |
| 09:47:10 | <ij> | https://photos.app.goo.gl/26XtXxiG4WsM2K5ZA |
| 09:47:27 | <idnar> | Data.Witherable.filter :: Filterable f => (a -> Bool) -> f a -> f a |
| 09:47:27 | <idnar> | Data.Witherable.wither :: (Witherable t, Applicative f) => (a -> f (Maybe b)) -> t a -> f (t b) |
| 09:47:38 | <ij> | they're all supposed to be connected, but first I had to write the code that detects |
| 09:48:34 | <ij> | idnar, lambdabot doesn't have everything imported :) |
| 09:50:01 | <haasn> | After `cabal install arithmoi`, my `ghci` no longer finds system-wide ghc pakages, instead considering them `hidden`. Is there a way to resolve this, so that I can use both global (provided via system packages) and local (installed via `cabal install`) libraries from `ghci`? |
| 09:50:16 | <haasn> | my ~/.ghc/**/environment seems to have turned into this: https://0x1.st/Lm.txt |
| 09:50:32 | → | hekkaidekapus[ joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 09:51:34 | <haasn> | `ghc-pkg describe lens` shows `exposed: True` |
| 09:52:12 | → | Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
| 09:52:23 | × | hekkaidekapus} quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds) |
| 09:55:28 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 09:56:11 | <haasn> | It seems the only way around this is to also `cabal install` all of the packages I previously had installed system-wide, e.g. `cabal install lens` rather than `zypper install ghc-lens`. But, this way I obviously don't get upgrades automatically |
| 09:56:57 | <merijn> | haasn: "cabal install" in 3.x doesn't really do global installs anymore, at least not in the sense it did previously. |
| 09:57:32 | <merijn> | haasn: What the best solution is depends on what you need/are using global installs for |
| 09:57:43 | <haasn> | I mostly just like the idea of getting automatic upgrades |
| 09:58:07 | <merijn> | automatic upgrades for what |
| 09:58:12 | <haasn> | Plus it makes a whole lot more sense to me to have one package manager for as many things as possible, rather than a separate package manager for every ecosystem |
| 09:58:46 | → | mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
| 09:58:48 | × | Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer) |
| 09:59:01 | <haasn> | Well, say the `lens` package gets an update. I want my `ghci` to always reference the latest version of `lens` that's installed on the system. Currently, that propagates into a new rpm, which `zypper update` will pick up during routine system updates |
| 10:00:01 | <haasn> | If I `cabal install lens` then how does cabal know when there's a newer version of lens and install it automatically? |
| 10:00:30 | <merijn> | haasn: It checks the package index from Hackage, which gets updated when you run "cabal update" |
| 10:00:36 | <Enrico63> | Hello, is this a good place to ask for help with ghcup? |
| 10:00:47 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 256 seconds) |
| 10:01:04 | <haasn> | merijn: So I need to manually `cabal update && cabal install lens && cabal install arithmoi && cabal install ....` for every package I reference from .ghci? |
| 10:01:04 | <merijn> | haasn: Anyway, rpms as system packages are (presumably) installed in the global package database, but cabal-install 3.x doesn't really use that anymore |
| 10:01:45 | <merijn> | haasn: If you're using cabal-install 3.x then that will almost definitely *not* do what you want/expect |
| 10:02:11 | <merijn> | You could probably do v1-install, but that's not ideal either |
| 10:02:22 | × | datajerk quits (~datajerk@sense.net) (Ping timeout: 246 seconds) |
| 10:03:02 | <merijn> | haasn: cabal-install does not install libraries into the global package database, because that forces you to have only a single version of any package, which means working on multiple projects with conflicting dependencies becomes hard/impossible (see the clusterfuck with virtualenv in python, etc.) |
| 10:04:04 | <haasn> | My question, I think, is still summarizable as "is there a way to make `cabal v2-install` play nicely with the global package database" |
| 10:04:10 | <merijn> | haasn: Instead it has a global store which allows arbitrary many installs of different versions of any package and dynamically generates a package database per project/package you work on. The result is the notion of "the global package database" becomes meaningless and relying on having "a global package database" becomes tricky too |
| 10:04:15 | <merijn> | haasn: No |
| 10:04:23 | <merijn> | Because there is no global database in v2-install |
| 10:05:44 | <merijn> | haasn: You probably wanna make a custom environment with cabal-install and tell ghc(i) to use that package environment as described in this xmonad issue: https://github.com/xmonad/xmonad/issues/199#issuecomment-609433196 |
| 10:08:43 | → | Rudd0 joins (~Rudd0@185.189.115.103) |
| 10:10:50 | × | sqrt2 quits (~ben@unaffiliated/sqrt2) (Ping timeout: 264 seconds) |
| 10:11:57 | → | sqrt2 joins (~ben@unaffiliated/sqrt2) |
| 10:12:05 | → | gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh) |
| 10:12:35 | → | datajerk joins (~datajerk@sense.net) |
| 10:13:10 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 10:18:02 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) |
| 10:18:22 | → | kritzefitz joins (~kritzefit@212.86.56.80) |
| 10:20:49 | × | charukiewicz quits (~quassel@irouteince04.i.subnet.rcn.com) (Quit: charukiewicz) |
| 10:22:45 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 272 seconds) |
| 10:26:26 | → | kuribas joins (~user@ptr-25vy0i7ug01ndhtx56u.18120a2.ip6.access.telenet.be) |
| 10:29:12 | → | kapasian joins (8de20846@141.226.8.70) |
| 10:29:47 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 10:30:19 | × | kapasian quits (8de20846@141.226.8.70) (Remote host closed the connection) |
| 10:33:41 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) |
| 10:34:14 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 264 seconds) |
| 10:34:23 | × | srk quits (~sorki@gateway/tor-sasl/sorki) (Ping timeout: 240 seconds) |
| 10:34:47 | × | taurux quits (~taurux@net-109-115-33-214.cust.vodafonedsl.it) (Ping timeout: 256 seconds) |
| 10:35:03 | × | denisse quits (~spaceCat@gateway/tor-sasl/alephzer0) (Ping timeout: 240 seconds) |
| 10:35:05 | → | taurux joins (~taurux@net-109-115-33-214.cust.vodafonedsl.it) |
| 10:35:33 | → | hacxman joins (~hexo@gateway/tor-sasl/hexo) |
| 10:35:37 | → | srk joins (~sorki@gateway/tor-sasl/sorki) |
| 10:35:43 | × | hexo quits (~hexo@gateway/tor-sasl/hexo) (Ping timeout: 240 seconds) |
| 10:35:49 | hacxman | is now known as hexo |
| 10:36:03 | × | xelxebar quits (~xelxebar@gateway/tor-sasl/xelxebar) (Ping timeout: 240 seconds) |
| 10:36:06 | → | xelxebar_ joins (~xelxebar@gateway/tor-sasl/xelxebar) |
| 10:36:09 | → | denisse joins (~spaceCat@gateway/tor-sasl/alephzer0) |
| 10:36:21 | × | livvy quits (~livvy@gateway/tor-sasl/livvy) (Quit: No Ping reply in 180 seconds.) |
| 10:36:23 | × | hekkaidekapus[ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds) |
| 10:36:43 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
| 10:36:46 | → | acidjnk_new joins (~acidjnk@p200300d0c704e77520873290fe3f7255.dip0.t-ipconnect.de) |
| 10:37:11 | → | hekkaidekapus[ joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 10:37:41 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 10:37:48 | × | coeus quits (~coeus@p200300d0271c3b00114a6166d66724be.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 10:38:26 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds) |
| 10:44:20 | → | rayyyy joins (~nanoz@gateway/tor-sasl/nanoz) |
| 10:45:54 | → | livvy joins (~livvy@gateway/tor-sasl/livvy) |
| 10:52:27 | × | seanparsons quits (~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net) (Ping timeout: 268 seconds) |
| 10:53:44 | → | coeus joins (~coeus@p200300d0273e3a0010a118dda365b6f5.dip0.t-ipconnect.de) |
| 10:56:07 | → | seanparsons joins (~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net) |
| 10:57:44 | × | ADG1089__ quits (~aditya@122.163.165.143) (Remote host closed the connection) |
| 11:00:32 | → | dominik joins (~weechat@2001:a61:35c0:901:9665:9cff:fe4d:b4d0) |
| 11:01:01 | × | polyrain quits (~polyrain@2001:8003:e501:6901:aca6:1b18:3492:8fb8) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 11:02:11 | × | xwvvvvwx quits (xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx) (Read error: Connection reset by peer) |
| 11:02:12 | <Axman6> | Is there a way with cabal to use a git repo as a source of a dependency like stack? |
| 11:02:38 | → | xwvvvvwx joins (xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx) |
| 11:02:45 | <Axman6> | Enrico63: First rule of IRC: don't ask to ask, just ask |
| 11:05:52 | × | tama quits (~tama@unaffiliated/tama00) (Ping timeout: 256 seconds) |
| 11:06:03 | × | gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Ping timeout: 240 seconds) |
| 11:06:04 | → | CMCDragonkai1 joins (~Thunderbi@124.19.3.250) |
| 11:07:21 | × | CMCDragonkai1 quits (~Thunderbi@124.19.3.250) (Client Quit) |
| 11:10:34 | → | Gurkenglas_ joins (~Gurkengla@unaffiliated/gurkenglas) |
| 11:17:24 | → | gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh) |
| 11:17:27 | <merijn> | Axman6: Yes |
| 11:17:49 | <merijn> | Axman6: https://github.com/merijn/Belewitte/blob/master/cabal.project.ghc-8.10#L8-L12 |
| 11:20:13 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) |
| 11:20:52 | × | gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection) |
| 11:22:22 | → | gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh) |
| 11:25:02 | × | xwvvvvwx quits (xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx) (Quit: ZNC 1.8.2 - https://znc.in) |
| 11:25:14 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds) |
| 11:27:15 | → | xwvvvvwx joins (xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx) |
| 11:27:26 | <Enrico63> | Axman6 I did it earlier. Nobody answered. However I've solved. Thanks. |
| 11:29:07 | × | Rudd0 quits (~Rudd0@185.189.115.103) (Ping timeout: 256 seconds) |
| 11:30:37 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 11:32:34 | <Axman6> | merijn: thanks - how is subdir used? |
| 11:33:04 | <Axman6> | Enrico63: I find just using ghcup tui is the simplest thing to do |
| 11:35:26 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 264 seconds) |
| 11:39:03 | <Axman6> | ah, got it, it's which subdir in the repo ro use, not where the package ends up |
| 11:41:59 | × | cpape` quits (~user@static.180.18.203.116.clients.your-server.de) (Quit: ERC (IRC client for Emacs 26.3)) |
| 11:42:20 | → | cpape joins (~user@static.180.18.203.116.clients.your-server.de) |
| 11:45:52 | → | christo joins (~chris@81.96.113.213) |
| 11:46:23 | × | HarveyPwca quits (~HarveyPwc@c-98-220-98-201.hsd1.il.comcast.net) (Quit: Leaving) |
| 11:51:06 | → | philopsos joins (~caecilius@gateway/tor-sasl/caecilius) |
| 11:51:13 | <merijn> | Axman6: Right, since (for example) persistent has multiple packages in one repo |
| 11:51:44 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) |
| 11:52:27 | × | funkyb quits (~funkyb@139.28.218.148) (Remote host closed the connection) |
| 11:53:37 | → | j3parker1 joins (~j3parker@178.239.168.171) |
| 11:56:32 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 260 seconds) |
| 12:03:40 | → | xff0x joins (~fox@2001:1a81:53b9:9a00:76c5:7153:4a38:bc09) |
| 12:04:14 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:7568:72c:97b0:4d4d) |
| 12:04:19 | × | xff0x quits (~fox@2001:1a81:53b9:9a00:76c5:7153:4a38:bc09) (Client Quit) |
| 12:06:17 | → | toppler joins (~user@mtop.default.momentoftop.uk0.bigv.io) |
| 12:07:18 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) |
| 12:11:35 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:7568:72c:97b0:4d4d) (Remote host closed the connection) |
| 12:12:01 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:7568:72c:97b0:4d4d) |
| 12:12:02 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds) |
| 12:12:31 | → | juuandyy joins (~juuandyy@90.166.144.65) |
| 12:12:49 | → | Franciman joins (~francesco@host-82-48-174-127.retail.telecomitalia.it) |
| 12:19:14 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:7568:72c:97b0:4d4d) (Ping timeout: 264 seconds) |
| 12:19:39 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 12:22:06 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 12:26:24 | × | petersen quits (~petersen@redhat/juhp) (Ping timeout: 256 seconds) |
| 12:26:54 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 260 seconds) |
| 12:30:44 | × | juuandyy quits (~juuandyy@90.166.144.65) (Quit: Konversation terminated!) |
| 12:30:44 | → | lush joins (4d0c3c64@dynamic-077-012-060-100.77.12.pool.telefonica.de) |
| 12:31:19 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 12:33:19 | <lush> | stupid question about using git to publish a hakyll page: I've got a develop branch where the site config etc lies. now essentially what I want to do is: build the site, then copy _site/ to the master-branch of my repo and commit all the changes to get it published by github pages. however, after switching the branch by 'git checkout master', I |
| 12:33:19 | <lush> | can't access the _site/ folder anymore if master isn't empty. I could work around this, but I'm pretty sure git has some neat features I just don't know that let me do this in a clean way. any thoughts? |
| 12:33:42 | → | ADG1089__ joins (~aditya@122.163.165.143) |
| 12:35:46 | × | columbarius1 quits (~columbari@i5E86B32C.versanet.de) (Read error: Connection reset by peer) |
| 12:36:02 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 264 seconds) |
| 12:36:18 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) |
| 12:37:22 | → | sparsity joins (5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) |
| 12:37:46 | × | knupfer quits (~Thunderbi@87.123.206.207) (Ping timeout: 272 seconds) |
| 12:37:59 | × | troydm quits (~troydm@unaffiliated/troydm) (Ping timeout: 260 seconds) |
| 12:39:22 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:255c:18d1:c1a9:13be:6f9e) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 12:40:15 | → | __monty__ joins (~toonn@unaffiliated/toonn) |
| 12:40:50 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Ping timeout: 264 seconds) |
| 12:41:12 | → | columbarius1 joins (~columbari@i5E86B32C.versanet.de) |
| 12:42:08 | → | drbean joins (~drbean@TC210-63-209-193.static.apol.com.tw) |
| 12:46:49 | → | immae joins (immaematri@gateway/shell/matrix.org/x-sofszfynxwfdycbe) |
| 12:47:31 | ← | immae[m] parts (~immae@2a01:4f8:141:53e7::) ("WeeChat 2.9") |
| 12:49:35 | × | p-core quits (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Quit: p-core) |
| 12:49:55 | → | p-core joins (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) |
| 12:52:35 | × | Enrico63 quits (520efe97@cpc92708-cmbg20-2-0-cust150.5-4.cable.virginm.net) (Ping timeout: 245 seconds) |
| 12:53:48 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) |
| 12:54:41 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 12:57:52 | → | knupfer joins (~Thunderbi@200116b82cc1a700f8d327fffe2ff6cd.dip.versatel-1u1.de) |
| 12:57:53 | × | knupfer quits (~Thunderbi@200116b82cc1a700f8d327fffe2ff6cd.dip.versatel-1u1.de) (Client Quit) |
| 12:58:07 | → | knupfer joins (~Thunderbi@87.123.206.207) |
| 12:58:50 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds) |
| 12:59:33 | × | dominik quits (~weechat@2001:a61:35c0:901:9665:9cff:fe4d:b4d0) (Quit: WeeChat 2.8) |
| 12:59:43 | → | troydm joins (~troydm@unaffiliated/troydm) |
| 13:02:50 | × | knupfer quits (~Thunderbi@87.123.206.207) (Ping timeout: 256 seconds) |
| 13:06:06 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 265 seconds) |
| 13:08:07 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 13:08:55 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 256 seconds) |
| 13:09:46 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 13:12:07 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 13:12:32 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 13:13:03 | × | philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds) |
| 13:13:04 | <freeman42x[m]> | any easy way to get indexes of a matrix in Haskell? something simpler than having to use zips etc. and using base libs preferably |
| 13:14:24 | <__monty__> | You can index arrays with tuples. |
| 13:14:56 | <freeman42x[m]> | __monty__: sure, without ziping? |
| 13:15:57 | <__monty__> | Not sure what you mean by zipping. Data.Array.Array can be indexed by tuples. https://hackage.haskell.org/package/array-0.5.4.0/docs/Data-Array.html |
| 13:16:50 | × | jamm quits (~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds) |
| 13:16:56 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 240 seconds) |
| 13:20:10 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@mx-ll-171.5.28-247.dynamic.3bb.co.th) |
| 13:20:55 | <freeman42x[m]> | __monty__: how do you index it by tuples? |
| 13:21:18 | <__monty__> | That's an exercise for the reader. |
| 13:21:20 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 13:22:19 | <freeman42x[m]> | __monty__: that was my question... and using zips is not the best way, there could be dedicated function or way to build he array |
| 13:22:36 | × | darjeeling_ quits (~darjeelin@115.215.40.96) (Ping timeout: 240 seconds) |
| 13:24:02 | <__monty__> | I don't understand why a zip of two lists of indices is such a problem. How do you expect to initialize every element if you don't feel like even iterating over indices? |
| 13:25:20 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) |
| 13:25:58 | <freeman42x[m]> | __monty__: if there is a better way that is less verbose / error prone, should I not seek to use that? |
| 13:28:10 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 246 seconds) |
| 13:28:16 | <ij> | what decides the CSS on hackage.haskell.org? containers has old, websockets has new |
| 13:29:33 | <hpc> | date of haddock build probably? |
| 13:29:53 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 260 seconds) |
| 13:31:43 | × | rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds) |
| 13:32:01 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 13:34:16 | → | acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
| 13:36:53 | <__monty__> | freeman42x[m]: Sure but with realistic expectations. To set all the elements of a matrix you have to iterate over all the coordinates. Or combine rows/colums of elements. There's not much space for improving on this. |
| 13:37:50 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 264 seconds) |
| 13:38:20 | <freeman42x[m]> | __monty__: ofc there are ways to improve this, just provide a function that adds indexes to a matrix (nested lists) or provide a way to construct a matrix which will give you access to indexes |
| 13:38:23 | <ij> | freeman42x[m], less error prone than just programming it? well, someone has to write the function to compute them... |
| 13:38:26 | <freeman42x[m]> | like, that is super easy, barely an inconvenience |
| 13:38:54 | <__monty__> | I really don't see the difference. |
| 13:39:33 | → | darjeeling_ joins (~darjeelin@115.215.40.96) |
| 13:40:07 | <freeman42x[m]> | __monty__: the difference is that the programmer would not have to write the same code over and over again which leads to more bugs |
| 13:41:15 | <ij> | are you proposing that should index range computations should added to some library? |
| 13:42:21 | <merijn> | THose already exist :p |
| 13:42:31 | <merijn> | See the Ix class :p |
| 13:42:58 | <merijn> | I think he just wants SaC's array comprehensions |
| 13:43:18 | <ij> | what's SaC? |
| 13:43:51 | <ij> | freeman42x[m], was the question "where are they implemented, so I don't have to" all along? |
| 13:44:21 | <merijn> | Single assignment C |
| 13:45:48 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 13:48:13 | × | shailangsa quits (~shailangs@host86-186-191-114.range86-186.btcentralplus.com) (Ping timeout: 264 seconds) |
| 13:48:30 | → | fendor joins (~fendor@77.119.130.129.wireless.dyn.drei.com) |
| 13:49:30 | × | berberman_ quits (~berberman@unaffiliated/berberman) (Quit: ZNC 1.7.5 - https://znc.in) |
| 13:49:55 | → | berberman joins (~berberman@unaffiliated/berberman) |
| 13:50:43 | × | livvy quits (~livvy@gateway/tor-sasl/livvy) (Ping timeout: 240 seconds) |
| 13:50:56 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 240 seconds) |
| 13:56:01 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) |
| 13:56:31 | × | drbean quits (~drbean@TC210-63-209-193.static.apol.com.tw) (Ping timeout: 256 seconds) |
| 14:00:05 | <ij> | merijn, sorry, I couldn't quite follow what was going on with the monoid abuse immediately :) |
| 14:00:38 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Ping timeout: 264 seconds) |
| 14:00:40 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) |
| 14:00:53 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 14:01:26 | × | sparsity quits (5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) (Quit: Connection closed) |
| 14:05:26 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds) |
| 14:05:59 | <ij> | is mapM_ some sort of traverse? |
| 14:06:34 | <merijn> | It *is* traverse |
| 14:06:36 | <merijn> | :t traverse |
| 14:06:37 | → | u0_a298 joins (~user@65.35.205.131) |
| 14:06:37 | <lambdabot> | (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b) |
| 14:06:38 | <merijn> | :t mapM_ |
| 14:06:39 | <lambdabot> | (Foldable t, Monad m) => (a -> m b) -> t a -> m () |
| 14:06:41 | <ij> | () |
| 14:06:42 | <merijn> | well |
| 14:06:44 | <merijn> | :t traverse_ |
| 14:06:46 | <lambdabot> | (Foldable t, Applicative f) => (a -> f b) -> t a -> f () |
| 14:06:52 | <ij> | ah, then I have to import it |
| 14:07:05 | <merijn> | hysterical raisins |
| 14:07:14 | <ij> | haha |
| 14:07:19 | <ij> | I'd never heard that one |
| 14:07:39 | <merijn> | traverse_ is basically a generalisation of traverse |
| 14:07:45 | <merijn> | eh |
| 14:07:48 | <merijn> | mapM >.> |
| 14:08:12 | <kuribas> | merijn: mapM_ |
| 14:08:48 | → | son0p joins (~son0p@181.136.122.143) |
| 14:10:08 | <merijn> | kuribas: https://i.imgflip.com/4ta34y.jpg |
| 14:10:18 | <ij> | :D |
| 14:10:23 | <ij> | you like to have fun here |
| 14:11:01 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds) |
| 14:12:01 | × | cyphase quits (~cyphase@unaffiliated/cyphase) (Ping timeout: 272 seconds) |
| 14:12:16 | <kuribas> | merijn: the type system disagrees |
| 14:14:33 | → | sajith[m] joins (sajithmatr@gateway/shell/matrix.org/x-xzxvlmzgkorbwysi) |
| 14:16:00 | <ij> | do you know the f >>= (,) idiom? |
| 14:16:12 | → | Lycurgus joins (~niemand@cpe-45-46-139-165.buffalo.res.rr.com) |
| 14:17:34 | <hpc> | :t (>>= (,)) |
| 14:17:36 | <lambdabot> | (b -> a) -> b -> (a, b) |
| 14:17:46 | <hpc> | oh, that's not bad |
| 14:18:29 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 14:20:37 | × | u0_a298 quits (~user@65.35.205.131) (Read error: Connection reset by peer) |
| 14:20:52 | → | u0_a298 joins (~user@65.35.205.131) |
| 14:21:32 | <ezzieyguywuf> | Graypup_: regarding your diagrams dependency stuff - guess i don't really understand, but also i don't know nix packaging stuff. |
| 14:22:16 | × | acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 272 seconds) |
| 14:23:22 | → | shailangsa joins (~shailangs@host217-39-45-247.range217-39.btcentralplus.com) |
| 14:25:26 | × | u0_a298 quits (~user@65.35.205.131) (Read error: Connection reset by peer) |
| 14:25:54 | → | kyali joins (~kyali@APN-123-254-27-gprs.simobil.net) |
| 14:26:23 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 14:26:55 | → | u0_a298 joins (~user@65.35.205.131) |
| 14:28:04 | × | stree quits (~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception) |
| 14:28:22 | → | stree joins (~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) |
| 14:30:58 | → | cyphase joins (~cyphase@unaffiliated/cyphase) |
| 14:31:47 | <ij> | I need cheaper copies for matrixes https://hackage.haskell.org/package/matrix-0.3.6.1/docs/Data-Matrix.html |
| 14:31:59 | <ij> | I think I'm going to go with Vector Vector Char |
| 14:32:05 | <ij> | (because I'm storing Chars) |
| 14:32:15 | <ij> | should that work out? |
| 14:34:29 | × | u0_a298 quits (~user@65.35.205.131) (Read error: Connection reset by peer) |
| 14:34:29 | <ezzieyguywuf> | ij: i bet that matrix is essentially a vector behind-the-scenes anyway |
| 14:34:48 | <ij> | yes, but it isn't Vector Vector Char |
| 14:34:50 | <merijn> | ezzieyguywuf: It literally is :p |
| 14:35:03 | <ij> | i.e. Vector Vector a |
| 14:35:03 | × | xlei quits (znc@unaffiliated/xlei) (Ping timeout: 256 seconds) |
| 14:35:18 | → | u0_a298 joins (~user@65.35.205.131) |
| 14:35:20 | <ij> | doesn't matter what it holds, the updates will invalidate the whole array instead of just a row/column |
| 14:35:24 | <ezzieyguywuf> | ij: that's how kmett does it at least - https://hackage.haskell.org/package/linear-1.21.3 |
| 14:35:47 | × | ericsagnes quits (~ericsagne@2405:6580:0:5100:3c13:dd0e:758f:287c) (Ping timeout: 260 seconds) |
| 14:36:17 | → | elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
| 14:36:52 | <ij> | merijn, would Vector Vector a work? |
| 14:37:17 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 14:37:18 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) |
| 14:37:34 | <merijn> | Yes, but almost certainly *less* efficient |
| 14:37:38 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 14:37:51 | <ij> | well, my maze solver is eating my memory and that's the bottleneck right now |
| 14:37:51 | <merijn> | Well, it depends for what, I suppose |
| 14:38:10 | → | dyeplexer joins (~lol@unaffiliated/terpin) |
| 14:38:45 | → | pera_ joins (pera@gateway/vpn/mullvad/pera) |
| 14:38:45 | × | pera_ quits (pera@gateway/vpn/mullvad/pera) (Client Quit) |
| 14:39:00 | → | pera_ joins (pera@gateway/vpn/mullvad/pera) |
| 14:39:59 | → | pera__ joins (pera@gateway/vpn/mullvad/pera) |
| 14:40:14 | × | pera quits (~pera@unaffiliated/pera) (Disconnected by services) |
| 14:40:21 | pera__ | is now known as pera |
| 14:41:50 | × | pera_ quits (pera@gateway/vpn/mullvad/pera) (Read error: Connection reset by peer) |
| 14:42:13 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Ping timeout: 260 seconds) |
| 14:42:34 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds) |
| 14:42:42 | → | Entertainment joins (~entertain@104.246.132.210) |
| 14:42:59 | <edwardk> | ij: if you want a cheap copy with a small change there is always the option of using a Map or tree-based representation trading off O(1) -> O(log n) time access for O(n) -> O(log n) time updates |
| 14:43:12 | → | vappend joins (~ezrakilty@75-172-99-84.tukw.qwest.net) |
| 14:43:48 | <ij> | edwardk, I am backtracking on a pipe maze puzzle, so I think O(1) access is important |
| 14:43:53 | × | lucas8 quits (~luc@2001:41d0:8:109c::1) (Read error: Connection reset by peer) |
| 14:44:19 | <edwardk> | if you are doing backtracking, the other option is to use mutable arrays and just undo the writes on backtrack |
| 14:44:26 | <edwardk> | i do this in guanxi a lot |
| 14:44:59 | <ij> | I was thinking about that, but I'm not sure how to implement i |
| 14:45:01 | <ij> | +t |
| 14:45:11 | × | lush quits (4d0c3c64@dynamic-077-012-060-100.77.12.pool.telefonica.de) (Remote host closed the connection) |
| 14:45:16 | <edwardk> | here let me paste the core module |
| 14:45:19 | <ij> | yeah, it's visiting only one thing at a time, so that could work |
| 14:45:54 | <edwardk> | https://github.com/ekmett/guanxi/blob/master/src/Ref.hs |
| 14:45:55 | <ij> | it might much less painful than trying to make my own matrix |
| 14:46:16 | <edwardk> | that link shows mutable references with backtracking. you use it with something like LogicT (ST s) |
| 14:46:36 | <edwardk> | and just never use any of the fair interleaving operations (as they are dangerous for the ST s effects. |
| 14:47:12 | <edwardk> | unwind f mu na = na >>= \a -> case f a of (b, c) -> pure b <|> (mu c *> empty) -- is the key operation |
| 14:47:12 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) |
| 14:47:29 | × | vappend quits (~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 260 seconds) |
| 14:47:34 | <edwardk> | it basically does 'f' keeping track of some information c it needs to undo and b which is the answer |
| 14:47:36 | → | cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
| 14:47:37 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds) |
| 14:47:42 | → | ericsagnes joins (~ericsagne@2405:6580:0:5100:32fa:5861:e6a3:7ef9) |
| 14:48:01 | <edwardk> | and returns b, but if that branch fails with <|> it does the unwind action 'mu' given the information needed to unwind 'c' |
| 14:48:22 | <edwardk> | updateRef' (reference -> Ref r) f = unwind id (writeMutVar r) $ atomicModifyMutVar' r $ \a@(f->(b,a'))->(a',(b,a)) |
| 14:49:33 | <edwardk> | turns the 'write' to an atomicModify that grabs the old value, and passes it to the undo action, which just writes the old value back |
| 14:50:58 | <edwardk> | the key is that LogicT here is going to backtrack over the entire 'future' computation when it does (<|>), which is morally (++) for a list monad, we just have these backtrackable references, too. |
| 14:51:25 | <nshepperd> | nice viewpatterns there heh |
| 14:51:38 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 264 seconds) |
| 14:51:56 | × | u0_a298 quits (~user@65.35.205.131) (Ping timeout: 240 seconds) |
| 14:52:08 | <edwardk> | in the interest of showing more exposed wiring, when playing around with implementing sat solvers and the like in here i use something like |
| 14:52:09 | <edwardk> | https://github.com/ekmett/guanxi/blob/master/src/Vec.hs |
| 14:52:17 | → | Wuzzy joins (~Wuzzy@p5790e648.dip0.t-ipconnect.de) |
| 14:52:20 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@mx-ll-171.5.28-247.dynamic.3bb.co.th) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 14:52:20 | <edwardk> | that gives me something close to a std::vector<> in c++ terms |
| 14:52:38 | <edwardk> | except its implemented 'transients' style rather than mutable data structure style. |
| 14:52:40 | → | geekosaur joins (ae68c070@cpe-174-104-192-112.neo.res.rr.com) |
| 14:53:50 | <nshepperd> | sounds like basically the trick is to write a withFoo function for modifying your array instead of writing directly |
| 14:54:04 | <edwardk> | you can have a normal functional flat array that you can't mutate. you can also have a flat array of fixed size that you can mutate. std::vector gives you something like a mutable pointer to a resizable array and a cursor to the end. in the 'transients' form instead of having mutable internals for the pointer to the flat array (since it can change) and the high water mark you pass them in to any function that uses them, and consider |
| 14:54:04 | <edwardk> | the old one invalidated |
| 14:54:45 | <edwardk> | you can get a little bit faster benchmark out of that transient style than you can out of the version that has to putz around with then dressing that up with a STRef or something |
| 14:55:19 | <edwardk> | i use the name transients because its the same pattern used by hickey in clojure for making temporarily mutable structures |
| 14:55:59 | <edwardk> | you can 'thaw' a list/map/vector/whatever there into a transient form, do mutable things to it and 'freeze' it back (using haskell freeze/thaw vocabulary here) |
| 14:56:11 | → | star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
| 14:57:27 | → | xlei joins (~akans@unaffiliated/xlei) |
| 14:57:39 | <edwardk> | the key idea with the transients concept in clojure is that freeze/thaw should be O(1). which rules out haskell array freeze/thaw. the arrays there wind up being things that use 32-way fanout for trees, and the idea is to copy-on-write from the frozen form to the transient form in that tree as needed, so you can slam parts of the tree mutably over and over without copying the path to the root, before freezing the final construction |
| 14:57:54 | <edwardk> | i started writing a transients library in haskell and never got around to finishing it |
| 14:58:12 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
| 14:59:49 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Client Quit) |
| 14:59:51 | <edwardk> | anyways the vocabulary for transients assumes you have this O(1) freeze/thaw, but that the transient form gets threaded through by the user, and its a great candidate for linear haskell use later, and i distinguish it from the typical immutable growable vector and mutable growable vector from the lack of reference to manage the growth, even if here it doesn't quite meet the transients vocabulary as used by hickey because copying is |
| 14:59:51 | <edwardk> | linear. |
| 15:00:13 | <edwardk> | the piece of this that was interesting is that the vec type there can be backtracking or not depending on which operations you use to read/write to it. |
| 15:00:36 | <edwardk> | i need SAT solver state about the set of clauses to _not_ backtrack because its true in all worlds |
| 15:00:51 | <edwardk> | but i need the vector of current assertions _to_ backtrack |
| 15:01:21 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 15:01:34 | <edwardk> | it'd probably be cleaner to have written two types, but i'm pretty comfortable with wires hanging out when working on quick prototypes |
| 15:01:55 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
| 15:03:34 | <edwardk> | er Vec in there is transients style, Vector is mutable style. addVector does a non-backtracking snoc, addBackVector does a backtracking snoc. same with writeVector and writeBackVector |
| 15:04:11 | <edwardk> | that was way more word vomit than that deserved |
| 15:04:14 | × | Lycurgus quits (~niemand@cpe-45-46-139-165.buffalo.res.rr.com) (Quit: Exeunt) |
| 15:05:38 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 256 seconds) |
| 15:07:45 | × | chirpsalot quits (~Chirps@pool-98-115-239-235.phlapa.fios.verizon.net) (Ping timeout: 240 seconds) |
| 15:08:30 | × | geekosaur quits (ae68c070@cpe-174-104-192-112.neo.res.rr.com) (*.net *.split) |
| 15:09:02 | × | Chobbes quits (~Chobbes@unaffiliated/chobbes) (Ping timeout: 264 seconds) |
| 15:14:10 | <nshepperd> | couldn't you implement a basic backtracking mutable state with a combination of ST, WriterT, and MaybeT |
| 15:14:46 | → | Chobbes joins (~Chobbes@pool-98-115-239-235.phlapa.fios.verizon.net) |
| 15:14:46 | <nshepperd> | ST (UndoActions, Maybe a) |
| 15:15:39 | → | chirpsalot joins (~Chirps@pool-98-115-239-235.phlapa.fios.verizon.net) |
| 15:16:16 | <nshepperd> | with special <|> which either flushes or returns the undo stack |
| 15:18:28 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 15:18:42 | → | ph88 joins (~ph88@ip5f5af71a.dynamic.kabel-deutschland.de) |
| 15:20:28 | × | cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye) |
| 15:21:51 | <nshepperd> | UndoActions being just a difflist of ST s () |
| 15:22:00 | → | cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
| 15:22:47 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 15:23:06 | nshepperd | likes to forget that that s parameter to ST exists |
| 15:23:07 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
| 15:23:11 | → | fendor_ joins (~fendor@91.141.0.240.wireless.dyn.drei.com) |
| 15:24:05 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) |
| 15:24:51 | × | mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 256 seconds) |
| 15:25:25 | × | fendor quits (~fendor@77.119.130.129.wireless.dyn.drei.com) (Ping timeout: 246 seconds) |
| 15:31:39 | <kuribas> | ij: IMO you should never use the (->) monad, always prepend it with Reader or ReaderT. |
| 15:31:43 | <kuribas> | it's only good for code golf |
| 15:31:50 | <kuribas> | or obfuscation |
| 15:33:12 | × | Katarushisu quits (~Katarushi@cpc149726-finc20-2-0-cust203.4-2.cable.virginm.net) (Ping timeout: 272 seconds) |
| 15:34:11 | <__monty__> | What if you want to use both the functor and contravariant interfaces though? |
| 15:34:29 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 15:35:02 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Remote host closed the connection) |
| 15:35:12 | → | Katarushisu joins (~Katarushi@cpc149726-finc20-2-0-cust203.4-2.cable.virginm.net) |
| 15:36:01 | <merijn> | Man...naming modules is too hard >.< |
| 15:36:14 | <merijn> | I need, like, anonymous modules so I don't have to think off reasonable names |
| 15:37:01 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) |
| 15:38:08 | <nshepperd> | Project/Module1.hs |
| 15:39:23 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 260 seconds) |
| 15:39:38 | <merijn> | Far from module 1, though :p |
| 15:40:29 | <merijn> | More like Module120.hs xD |
| 15:41:11 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Ping timeout: 244 seconds) |
| 15:44:56 | → | geekosaur joins (ae68c070@cpe-174-104-192-112.neo.res.rr.com) |
| 15:45:48 | <kuribas> | merijn: use a uuid? :-) |
| 15:48:11 | × | ADG1089__ quits (~aditya@122.163.165.143) (Quit: Konversation terminated!) |
| 15:50:06 | × | olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection) |
| 15:50:36 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) |
| 15:52:06 | → | ADG1089__ joins (~aditya@122.163.165.143) |
| 15:52:24 | → | urodna joins (~urodna@unaffiliated/urodna) |
| 15:52:52 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 15:53:13 | → | mirrorbird joins (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) |
| 15:54:44 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 240 seconds) |
| 15:55:13 | → | knupfer joins (~Thunderbi@200116b82cc1a700506770fffe608453.dip.versatel-1u1.de) |
| 15:55:15 | × | knupfer quits (~Thunderbi@200116b82cc1a700506770fffe608453.dip.versatel-1u1.de) (Client Quit) |
| 15:55:30 | → | knupfer joins (~Thunderbi@87.123.206.207) |
| 15:55:39 | <merijn> | Is there a convenient way to "derive" monoid for product types where all fields are monoids? |
| 15:55:50 | → | cuz joins (~user@2601:182:cc02:8b0:4d6c:70f8:c9d1:c891) |
| 16:00:34 | → | Rudd0 joins (~Rudd0@185.189.115.103) |
| 16:00:59 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 16:01:31 | → | carlomagno joins (~cararell@148.87.23.11) |
| 16:01:47 | <lyxia> | semigroups or generic-data or "by hand" using the Monoid instance of the generic Rep mempty = to mempty |
| 16:02:14 | → | Guest_9 joins (89cd0154@host-137-205-1-84.warwick.ac.uk) |
| 16:02:20 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) |
| 16:03:22 | → | m0rphism joins (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) |
| 16:03:55 | ← | cuz parts (~user@2601:182:cc02:8b0:4d6c:70f8:c9d1:c891) ("ERC (IRC client for Emacs 27.1)") |
| 16:04:59 | <merijn> | lyxia: generic-data sounds like "this is gonna be more work than writing out the instance by hand" :p |
| 16:05:11 | <merijn> | I don't really see how semigroups can help? |
| 16:05:14 | × | Franciman quits (~francesco@host-82-48-174-127.retail.telecomitalia.it) (Quit: Leaving) |
| 16:06:42 | → | juuandyy joins (~juuandyy@90.166.144.65) |
| 16:07:18 | <juri_> | does the newest GHC still support building it with the "unregistered" backend? |
| 16:07:38 | <merijn> | The release builds don't |
| 16:07:46 | <merijn> | You have to build GHC from source to enable that, afaik |
| 16:07:55 | <juri_> | kk. thanks. |
| 16:08:10 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 16:08:49 | → | christo joins (~chris@81.96.113.213) |
| 16:13:22 | × | christo quits (~chris@81.96.113.213) (Ping timeout: 246 seconds) |
| 16:13:53 | × | Guest_9 quits (89cd0154@host-137-205-1-84.warwick.ac.uk) (Ping timeout: 248 seconds) |
| 16:17:30 | <lyxia> | merijn: the only thing left in semigroups is Data.Semigroup.Generic |
| 16:18:08 | <merijn> | ah, wait, now I get it |
| 16:19:27 | → | flux39 joins (2fe3e53b@047-227-229-059.res.spectrum.com) |
| 16:24:05 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 16:24:09 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) |
| 16:27:08 | → | Guest_9 joins (89cd0154@host-137-205-1-84.warwick.ac.uk) |
| 16:27:24 | × | Guest_9 quits (89cd0154@host-137-205-1-84.warwick.ac.uk) (Client Quit) |
| 16:27:41 | × | pavonia quits (~user@unaffiliated/siracusa) (Quit: Bye!) |
| 16:29:17 | × | Entertainment quits (~entertain@104.246.132.210) () |
| 16:30:40 | → | Entertainment joins (~entertain@104.246.132.210) |
| 16:33:12 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 16:38:50 | → | cuz joins (~user@2601:182:cc02:8b0:4d6c:70f8:c9d1:c891) |
| 16:39:05 | × | son0p quits (~son0p@181.136.122.143) (Ping timeout: 240 seconds) |
| 16:40:31 | × | stree quits (~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception) |
| 16:40:49 | → | stree joins (~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) |
| 16:40:49 | × | stree quits (~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Remote host closed the connection) |
| 16:41:20 | → | stree joins (~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) |
| 16:44:52 | × | juuandyy quits (~juuandyy@90.166.144.65) (Read error: Connection reset by peer) |
| 16:45:12 | → | elliott_ joins (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) |
| 16:45:49 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds) |
| 16:48:20 | → | dandart joins (~Thunderbi@home.dandart.co.uk) |
| 16:48:35 | → | ulidtko|k joins (~ulidtko@193.111.48.79) |
| 16:50:30 | × | elliott_ quits (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Quit: Quit) |
| 16:50:47 | → | elliott_ joins (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) |
| 16:52:22 | × | srk quits (~sorki@gateway/tor-sasl/sorki) (Read error: Connection reset by peer) |
| 16:52:22 | × | tomboy64 quits (~tomboy64@gateway/tor-sasl/tomboy64) (Read error: Connection reset by peer) |
| 16:52:22 | × | hexo quits (~hexo@gateway/tor-sasl/hexo) (Read error: Connection reset by peer) |
| 16:52:22 | × | jb55 quits (~jb55@gateway/tor-sasl/jb55) (Read error: Connection reset by peer) |
| 16:52:22 | × | hekkaidekapus[ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Read error: Connection reset by peer) |
| 16:52:23 | × | xelxebar_ quits (~xelxebar@gateway/tor-sasl/xelxebar) (Write error: Connection reset by peer) |
| 16:52:23 | × | andreas303 quits (~andreas@gateway/tor-sasl/andreas303) (Write error: Connection reset by peer) |
| 16:52:23 | × | cantstanya quits (~chatting@gateway/tor-sasl/cantstanya) (Write error: Connection reset by peer) |
| 16:52:23 | × | gxt quits (~gxt@gateway/tor-sasl/gxt) (Read error: Connection reset by peer) |
| 16:52:23 | × | gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection) |
| 16:52:23 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Write error: Connection reset by peer) |
| 16:52:23 | × | denisse quits (~spaceCat@gateway/tor-sasl/alephzer0) (Write error: Connection reset by peer) |
| 16:52:23 | × | ChaiTRex quits (~ChaiTRex@gateway/tor-sasl/chaitrex) (Write error: Broken pipe) |
| 16:52:32 | → | justanotheruser joins (~justanoth@unaffiliated/justanotheruser) |
| 16:52:49 | × | flux39 quits (2fe3e53b@047-227-229-059.res.spectrum.com) (Ping timeout: 248 seconds) |
| 16:52:56 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection) |
| 16:54:33 | × | elliott_ quits (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Client Quit) |
| 16:54:38 | × | cuz quits (~user@2601:182:cc02:8b0:4d6c:70f8:c9d1:c891) (Ping timeout: 264 seconds) |
| 16:54:51 | → | elliott_ joins (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) |
| 16:59:54 | <ski> | ij : nope |
| 17:00:32 | → | jedws joins (~jedws@121.209.189.201) |
| 17:01:02 | → | Franciman joins (~francesco@host-82-48-174-127.retail.telecomitalia.it) |
| 17:01:04 | → | jonatanb joins (~jonatanb@83.24.29.180.ipv4.supernova.orange.pl) |
| 17:01:57 | × | jonatanb quits (~jonatanb@83.24.29.180.ipv4.supernova.orange.pl) (Remote host closed the connection) |
| 17:03:38 | × | acidjnk_new quits (~acidjnk@p200300d0c704e77520873290fe3f7255.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 17:05:10 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 246 seconds) |
| 17:05:59 | → | cuz joins (~user@2601:182:cc02:8b0:955b:4c38:4ff3:a006) |
| 17:07:20 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 17:07:39 | → | Tario joins (~Tario@201.192.165.173) |
| 17:07:44 | → | kupi joins (uid212005@gateway/web/irccloud.com/x-dnfwwxqcgyemldny) |
| 17:09:24 | × | carlomagno quits (~cararell@148.87.23.11) (Remote host closed the connection) |
| 17:09:34 | → | jb55 joins (~jb55@gateway/tor-sasl/jb55) |
| 17:10:24 | → | gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh) |
| 17:10:49 | → | carlomagno joins (~cararell@148.87.23.11) |
| 17:12:06 | → | jollygood2 joins (~bc812391@199.204.85.195) |
| 17:12:34 | <jollygood2> | hi. is there case extension that lets you have same body for more than one match? |
| 17:12:59 | <Uniaika> | jollygood2: maybe use guards? |
| 17:13:01 | <jollygood2> | case x of 1, 2 -> .. _ -> .. |
| 17:13:18 | <Uniaika> | foo x | x `elem` [1,2] = do |
| 17:13:29 | <Uniaika> | | otherwise = stuff |
| 17:13:34 | <Uniaika> | (damnit, one space too much) |
| 17:13:56 | × | fresheyeball quits (~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9) |
| 17:14:17 | → | piroule joins (2fe3e53b@047-227-229-059.res.spectrum.com) |
| 17:14:19 | <piroule> | could somebody walk me through this syntax: newtype One f a = One (f a) |
| 17:14:23 | → | tomboy64 joins (~tomboy64@gateway/tor-sasl/tomboy64) |
| 17:14:31 | <piroule> | why can't I do "One 3 3" |
| 17:14:36 | <Uniaika> | well |
| 17:14:48 | <Uniaika> | because the "One f a" is the type signature |
| 17:14:56 | <jollygood2> | Uniaika, yeah, that would work. just out of curiosity, there's no such extension? I could swear there was |
| 17:15:02 | <Uniaika> | the "One" constructor actually only takes 1 argument |
| 17:15:12 | <Uniaika> | which is the application of f to a |
| 17:15:55 | <piroule> | so is "f a" a type? |
| 17:15:57 | <ski> | piroule : declare a new type `One f a' (type constructor being defined/declared is `One'), parameterized by *types* `f' and `a', having a data constructor (also happening to be named `One'). values of this type are represented by values of type `f a' |
| 17:16:01 | <ski> | yes |
| 17:16:11 | <piroule> | but One f a is also a type? |
| 17:16:28 | <Uniaika> | piroule: One f a *is* the new type, which has two parameters |
| 17:16:36 | <ski> | e.g. a value of type `One Maybe Integer' is represented by a value of type `Maybe Integer' (`f' being `Maybe' and `a' being `Integer') |
| 17:16:37 | <Uniaika> | jollygood2: ping me if there is |
| 17:17:05 | <piroule> | then why does "One 2" work? |
| 17:17:16 | <piroule> | what would be the f, and what would be the a? |
| 17:17:22 | <piroule> | since I assume (f a) would be Integer |
| 17:17:56 | × | kuribas quits (~user@ptr-25vy0i7ug01ndhtx56u.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
| 17:17:58 | → | andreas303 joins (~andreas@gateway/tor-sasl/andreas303) |
| 17:17:59 | <ski> | piroule : first, i think it would help to change the declaration to `newtype One f a = MkOne (f a)', so you don't confuse the type constructor with the data constructor |
| 17:18:36 | <ski> | @let newtype One f a = MkOne (f a) deriving Show |
| 17:18:38 | <lambdabot> | Defined. |
| 17:18:47 | <ski> | @type MkOne |
| 17:18:48 | <lambdabot> | forall k (f :: k -> *) (a :: k). f a -> One f a |
| 17:19:05 | <ski> | MkOne :: f a -> One f a -- for short |
| 17:19:26 | <ski> | @type MkOne (Just False) |
| 17:19:27 | <lambdabot> | One Maybe Bool |
| 17:19:35 | <ski> | @type MkOne Nothing |
| 17:19:36 | <lambdabot> | One Maybe a |
| 17:20:10 | → | hexo joins (~hexo@gateway/tor-sasl/hexo) |
| 17:20:13 | → | srk joins (~sorki@gateway/tor-sasl/sorki) |
| 17:20:27 | <piroule> | so how does "MkOne 1" fit into all of this |
| 17:20:43 | <ski> | when you used `One 2', then `2' was used (via overloading) to have type `f a' |
| 17:20:49 | <piroule> | or MkOne Just (Just False) |
| 17:21:00 | <ski> | @type MkOne False |
| 17:21:01 | <idnar> | :t MkOne 1 |
| 17:21:02 | <lambdabot> | error: |
| 17:21:02 | <lambdabot> | • Couldn't match expected type ‘f a’ with actual type ‘Bool’ |
| 17:21:02 | <lambdabot> | • In the first argument of ‘MkOne’, namely ‘False’ |
| 17:21:03 | <lambdabot> | forall k (f :: k -> *) (a :: k). Num (f a) => One f a |
| 17:21:16 | <idnar> | oops |
| 17:21:19 | <ski> | @type MkOne (Just (Just False)) |
| 17:21:20 | <lambdabot> | One Maybe (Maybe Bool) |
| 17:22:33 | <ski> | numeric literals are overloaded, meaning you can manage to use them as having types that you'd not usually think of as functions |
| 17:22:44 | <ski> | @type 2:3 |
| 17:22:45 | <lambdabot> | (Num a, Num [a]) => [a] |
| 17:22:46 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 17:22:51 | → | dcbdnl joins (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) |
| 17:22:56 | × | pfurla_ quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 256 seconds) |
| 17:23:06 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
| 17:23:13 | <piroule> | what is 2:3? |
| 17:23:23 | <__monty__> | A list. |
| 17:23:59 | <piroule> | huh |
| 17:24:11 | <piroule> | thought you need 2:[3] for that |
| 17:24:24 | <ski> | in `2:3', `3' is a list |
| 17:24:29 | <__monty__> | It's because of the overloading ski mentioned. |
| 17:24:43 | <piroule> | doesn't work in my ghci haha |
| 17:24:47 | <piroule> | unless i use FlexibleContexts |
| 17:25:18 | <ski> | piroule : you didn't try it with `:t' |
| 17:25:23 | <piroule> | yeah now i did |
| 17:25:23 | <piroule> | :D |
| 17:25:28 | <piroule> | why's that the case? |
| 17:25:30 | → | cantstanya joins (~chatting@gateway/tor-sasl/cantstanya) |
| 17:25:36 | → | pfurla joins (~pfurla@64.145.79.190) |
| 17:25:37 | <piroule> | why does a = 2:3 not work while :t (2:3) work? |
| 17:25:45 | <__monty__> | An integer literal is interpreted as `fromInteger 3` (or is it fromIntegral? |
| 17:25:58 | <ski> | (the former) |
| 17:25:58 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection) |
| 17:26:09 | <__monty__> | Because 3 can't be interpreted as a list, even with fromInteger. |
| 17:26:12 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 17:26:22 | <__monty__> | But that's not clear given the types. |
| 17:26:36 | <__monty__> | @type 3 |
| 17:26:38 | <lambdabot> | Num p => p |
| 17:27:49 | <ski> | @let instance Num a => Num [a] where (+) = zipWith (+); (-) = zipWith (-); (*) = zipWith (*); negate = map negate; abs = map abs; signum = map signum; fromInteger = repeat . fromInteger |
| 17:27:51 | <lambdabot> | Defined. |
| 17:27:59 | <ski> | > [1,2] + 3 |
| 17:28:02 | <lambdabot> | [4,5] |
| 17:28:09 | × | jedws quits (~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 17:28:19 | × | mirrorbird quits (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) (Quit: Leaving) |
| 17:28:37 | → | usr25 joins (~J@216.red-83-58-205.dynamicip.rima-tde.net) |
| 17:29:26 | <__monty__> | That's evil. |
| 17:29:33 | <__monty__> | > 2:3 |
| 17:29:35 | <lambdabot> | [2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3... |
| 17:30:26 | <ski> | @let instance Num a => Num (rho -> a) where (+) = liftA2 (+); (-) = liftA2 (-); (*) = liftA2 (*); negate = fmap negate; abs = fmap abs; signum = fmap signum; fromInteger = pure . fromInteger |
| 17:30:29 | <lambdabot> | Defined. |
| 17:30:31 | <ski> | (another classic) |
| 17:31:14 | <ski> | > map (id^2 - id + 1) [-3 .. 3] -- polynomial evaluation |
| 17:31:14 | × | cuz quits (~user@2601:182:cc02:8b0:955b:4c38:4ff3:a006) (Ping timeout: 264 seconds) |
| 17:31:17 | <lambdabot> | [13,7,3,1,1,3,7] |
| 17:32:50 | <ski> | > (map . map) (fst^2 - fst*snd + snd^2) [[(x,y) | y <- [-2 .. 2]] | x <- [-2 .. 2]] -- multivariate polynomial |
| 17:32:52 | <lambdabot> | [[4,3,4,7,12],[3,1,1,3,7],[4,1,0,1,4],[7,3,1,1,3],[12,7,4,3,4]] |
| 17:33:01 | × | Tops2 quits (~Tobias@dyndsl-095-033-095-004.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
| 17:34:29 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 17:34:37 | → | guanohhh joins (uid477762@gateway/web/irccloud.com/x-heviwwoxmanqshwa) |
| 17:34:40 | <__monty__> | Thank you, my noggin is sufficiently broken now. |
| 17:35:09 | → | Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net) |
| 17:35:18 | <ski> | @let infixr -:; (-:) :: a -> (Integer -> a) -> (Integer -> a); (x -: xs) 0 = x; (x -: xs) i = xs (i-1) |
| 17:35:20 | <lambdabot> | Defined. |
| 17:36:01 | <ski> | > map (2 -: 3) [0 ..] -- this is analogous to the `2:3' example above. `[a]' corresponding roughly to `Integer -> a' |
| 17:36:04 | <lambdabot> | [2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3... |
| 17:36:23 | <piroule> | so if I did One [Just 3], then we know that f a would be [Just Int], so how do you know if (f, a) = ([], Just) or if (f, a) = ([Just t], Int)? |
| 17:36:33 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 17:37:14 | <ski> | `[Just Int]' means `[] (Just Int)'. so matching that with `f a' means `f' is `[]' and `a' is `Just Int' |
| 17:37:27 | <piroule> | so what if I had [] [] (Just Int) |
| 17:37:30 | <piroule> | would f still be []? |
| 17:37:33 | <ski> | well, rather with `Maybe' in place of `Just' .. |
| 17:37:36 | <piroule> | is there any chance f could be [] [], for example? |
| 17:37:44 | <ski> | no |
| 17:37:51 | <piroule> | why not? |
| 17:38:00 | <ski> | @kind [] [] (Maybe Int) -- kind error |
| 17:38:03 | <lambdabot> | error: |
| 17:38:03 | <lambdabot> | • Expected kind ‘* -> k0’, but ‘[] []’ has kind ‘*’ |
| 17:38:03 | <lambdabot> | • In the type ‘[] [] (Maybe Int)’ |
| 17:38:15 | <ski> | @kind [] ([] (Maybe Int)) -- this is ok |
| 17:38:17 | <lambdabot> | * |
| 17:38:37 | <piroule> | is it because functions only take 1 argument? |
| 17:38:43 | <ski> | `[] [] T' doesn't make sense, since the list type constructor `[]' doesn't take (curriedly) two parameters, it only takes one |
| 17:39:18 | → | jmchael joins (~jmchael@87.112.235.234) |
| 17:40:07 | <idnar> | you could do `type LL x = [[x]]` I think |
| 17:40:55 | <ski> | yes. but you couldn't say `One LL Int' |
| 17:41:54 | <idnar> | @let type LL x = [[x]] |
| 17:41:54 | → | avdb joins (~avdb@gateway/tor-sasl/avdb) |
| 17:41:56 | <lambdabot> | Defined. |
| 17:42:35 | <idnar> | @kind One LL Int |
| 17:42:36 | <lambdabot> | error: |
| 17:42:37 | <lambdabot> | The type synonym ‘LL’ should have 1 argument, but has been given none |
| 17:42:49 | <idnar> | ah yes |
| 17:43:22 | <ski> | piroule : anyway .. please don't mix type and value levels. you should not have thought of using `Just' there above. this was why i suggested distinguishing type constructor from data constructor in the first place, by renaming the latter `MkOne' |
| 17:43:36 | → | Sgeo_ joins (~Sgeo@ool-18b98aa4.dyn.optonline.net) |
| 17:44:07 | <piroule> | makes sense, i got that example from a book :) |
| 17:44:09 | <ski> | @let type Teice f a = f (f a) |
| 17:44:11 | <lambdabot> | Defined. |
| 17:44:20 | <ski> | @let type Twice f a = f (f a) -- er, typo |
| 17:44:22 | <lambdabot> | Defined. |
| 17:44:35 | <ski> | @kind Twice LL Bool |
| 17:44:36 | <lambdabot> | * |
| 17:45:24 | × | Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Ping timeout: 260 seconds) |
| 17:47:46 | <ski> | (essentially, `LL' acts like a macro, which is why you must fully apply it. and `Twice' acts like a higher-order macro, which is why you can still pass an unapplied `LL' to it, since the definition of `Twice' will fully apply it) |
| 17:50:40 | → | cuz joins (~user@c-24-2-210-18.hsd1.ma.comcast.net) |
| 17:50:47 | <piroule> | so are `newtype Identity a = MkIdentity { runIdentity :: a }`` and `newtype Identity a = MkIdentity a`equivalent? |
| 17:51:36 | → | UpstreamSalmon joins (uid12077@gateway/web/irccloud.com/x-rexnvewnzxxthgrm) |
| 17:52:06 | → | hekkaidekapus[ joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 17:52:28 | × | gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving) |
| 17:52:46 | × | Tario quits (~Tario@201.192.165.173) (Ping timeout: 246 seconds) |
| 17:53:07 | → | Tario joins (~Tario@201.192.165.173) |
| 17:56:01 | × | Guest43451 quits (~textual@mskresolve-a.mskcc.org) (Ping timeout: 264 seconds) |
| 17:56:27 | → | bitmapper joins (uid464869@gateway/web/irccloud.com/x-upuqeneqybvqnswn) |
| 17:57:07 | <ski> | piroule : yes, apart from that the former also allows using record syntax for `MkIdentity', also introducing `runIdentity :: Identity a -> a' as a field accessor, essentially as if defined like |
| 17:57:14 | <ski> | runIdentity :: Identity a -> a |
| 17:57:23 | <ski> | runIdentity (MkIdentity x) = x |
| 17:58:12 | <piroule> | so why would you ever want to use the latter |
| 17:59:41 | <ski> | the record syntax means that you can write (both as a pattern, and as an expression) `MkIdentity {runIdentity = x}' in place of `MkIdentity x'; and, also that you can write (as an expression) an update `i {runIdentity = x}', which, in this case, also does the same as `MkIdentity x' (since there's only one field) |
| 18:00:20 | <ski> | piroule : often there's no real need to bother with record syntax (including having to think up names for fields) |
| 18:04:55 | → | Jd007 joins (~Jd007@d154-5-83-24.bchsia.telus.net) |
| 18:08:07 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 256 seconds) |
| 18:08:15 | → | mirrorbird joins (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) |
| 18:09:05 | × | conal quits (~conal@209.58.133.168) (Ping timeout: 240 seconds) |
| 18:09:13 | × | dandart quits (~Thunderbi@home.dandart.co.uk) (Ping timeout: 264 seconds) |
| 18:10:39 | → | conal joins (~conal@ip-66-115-176-156.creativelink.net) |
| 18:11:35 | × | conal quits (~conal@ip-66-115-176-156.creativelink.net) (Client Quit) |
| 18:12:03 | → | albel727 joins (~albel727@unaffiliated/albel727) |
| 18:12:07 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 18:12:52 | → | Alleria joins (~textual@2603-7000-3040-0000-ad3e-16ae-7559-7e68.res6.spectrum.com) |
| 18:13:16 | Alleria | is now known as Guest19797 |
| 18:13:59 | → | star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
| 18:16:29 | → | conal joins (~conal@212.102.44.51) |
| 18:16:42 | × | dyeplexer quits (~lol@unaffiliated/terpin) (Remote host closed the connection) |
| 18:20:07 | → | ransom joins (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) |
| 18:20:18 | <piroule> | can you unwrap an applicative? |
| 18:20:42 | <piroule> | the opposite of "pure" |
| 18:21:21 | <piroule> | i'm doing an exercise where i'm trying to write the <*> operator with type `f (g (a -> b)) -> f (g a) -> f (g b)` |
| 18:21:38 | <piroule> | here f and g are applicatives, but not necessarily monads |
| 18:21:39 | <koz_> | piroule: Not in general. |
| 18:21:55 | <koz_> | But in this case, you don't need to. |
| 18:22:31 | <piroule> | hmm my thought process is, if we could unwrap the first two arguments, apply <*>, then apply a pure, it would work |
| 18:22:35 | <piroule> | but there's no way to unwrap here? |
| 18:22:44 | <koz_> | piroule: No, but you don't need to. |
| 18:22:46 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 18:22:50 | <koz_> | Think less of wrappers, more of interfaces. |
| 18:23:00 | <koz_> | Applicative is an interface, and one capable 100% of describing what you want. |
| 18:23:06 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
| 18:23:09 | <koz_> | Here's a little warmup exercise for you. |
| 18:23:35 | <koz_> | Can you write an Applicative instance for 'newtype AppComp f g a = AppComp (f (g a))'? |
| 18:23:57 | <koz_> | Start with Functor, it'll give you a clue. |
| 18:24:03 | <piroule> | yeah that's what i was trying to do :P |
| 18:24:07 | × | MidAutumnHotaru quits (~MidAutumn@unaffiliated/midautumnhotaru) (Quit: Quit 啾) |
| 18:24:19 | <piroule> | well my functor is: `fmap f (MkCompose fga) = MkCompose $ (fmap . fmap) f fga` |
| 18:24:33 | <piroule> | and my pure is `pure a = MkCompose $ (pure . pure) a` |
| 18:24:42 | <piroule> | but i'm stuck on the `(<*>)` |
| 18:24:51 | <koz_> | OK, cool. |
| 18:24:59 | <piroule> | i'm not sure how i should be thinking through this |
| 18:25:01 | <koz_> | You have the right idea. |
| 18:25:11 | <koz_> | Basically, you have effs <*> exes = _ |
| 18:25:19 | <koz_> | Now, you only have fmap, pure, <*> to work with. |
| 18:25:26 | → | MidAutumnHotaru joins (~MidAutumn@unaffiliated/midautumnhotaru) |
| 18:25:28 | <koz_> | So the only possible choice here is <*> |
| 18:25:32 | <koz_> | So what you do in GHC is |
| 18:25:36 | <koz_> | s/in/with/ |
| 18:25:40 | <ski> | you want a (possibly large) hint ? |
| 18:25:43 | <koz_> | effs <*> exes = _ <*> _ |
| 18:25:53 | <koz_> | Then see what GHC suggests as types for those holes. |
| 18:26:07 | <piroule> | what's that thing to the right? |
| 18:26:10 | <koz_> | Like, basically, the process is 'start with hole, fill hole, repeat until no hole'. |
| 18:26:16 | <koz_> | Typed holes. |
| 18:26:18 | <koz_> | Use them. |
| 18:26:21 | <koz_> | Early and often. |
| 18:26:31 | <ski> | piroule : asking GHC for what types of expressions it expects, in place of those `_'s |
| 18:26:35 | <koz_> | You need to use <*> somewhere. |
| 18:26:42 | <koz_> | And effs and exes go into those holes somehow. |
| 18:26:43 | <ski> | (directly, or indirectly) |
| 18:26:45 | <koz_> | Possibly with more stuff. |
| 18:26:56 | <koz_> | In fact, you can probably do better. |
| 18:26:56 | <piroule> | am i doing this correctly? `(MkCompose f) <*> (MkCompose a) = MkCompose $ f <*> a = _ <*> _` |
| 18:27:02 | <koz_> | No. |
| 18:27:13 | <ski> | (those brackets are redundant) |
| 18:27:21 | <koz_> | (also that) |
| 18:27:23 | <ski> | you only want a single `=' |
| 18:27:30 | <koz_> | But yeah, ski can give you a possibly large hint. |
| 18:28:12 | <piroule> | i do kind of want to learn the process for figuring out things like this rather than just get to the answer |
| 18:28:35 | <ski> | "follow the types" is good general advice |
| 18:28:36 | <piroule> | so where does the typed hole go? |
| 18:28:49 | <koz_> | How I would start is thus: |
| 18:28:52 | <piroule> | now i have: `MkCompose f <*> MkCompose a = MkCompose $ f <*> a` |
| 18:29:02 | <ski> | MkCompose iab <*> MkCompose ia = MkCompose (_ <*> _) |
| 18:29:03 | <piroule> | but i'm not sure how to inject a hole |
| 18:29:14 | × | Katarushisu quits (~Katarushi@cpc149726-finc20-2-0-cust203.4-2.cable.virginm.net) (Ping timeout: 256 seconds) |
| 18:29:16 | <koz_> | MkCompose fs <*> Mkcompose xs = MkCompose (_ fs <*> _ xs) |
| 18:29:19 | <ski> | (is what koz_ meant you could try) |
| 18:29:23 | <koz_> | And see what types the holes suggest |
| 18:29:38 | <koz_> | Then think 'do I have anything available to me that might give me what I need here'. |
| 18:29:46 | <koz_> | You may need to add more holes, rearrange, etc. |
| 18:29:48 | × | shailangsa quits (~shailangs@host217-39-45-247.range217-39.btcentralplus.com) (Ping timeout: 256 seconds) |
| 18:29:51 | <ski> | yea, that variant is useful if you suspect you should use `fs' for the left operand, and `xs' for the right one |
| 18:29:53 | <koz_> | But yeah, 'follow the types' gets you extremely far. |
| 18:30:13 | <idnar> | I'm building up a bunch of Text by <>ing things together; ghc -O2 is inlining this to produce madness. would switching to builders help? |
| 18:30:22 | <koz_> | idnar: Probably. |
| 18:30:26 | <ski> | (my hint had to do with looking at the type `f (g (a -> b)) -> f (g a) -> f (g b)' that you mentioned before) |
| 18:30:30 | <koz_> | Generally <> on Text is not terribly efficient. |
| 18:31:49 | <ski> | "follow the types" means focusing on "what do i have ?" and "what do i want to get ?", trying to fill in the blanks, step by step, by making those two ends get closer to each other |
| 18:32:03 | <idnar> | (NOINLINE on two trivial fns saves 15 GB memory at compile time) |
| 18:32:39 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 260 seconds) |
| 18:32:43 | <ski> | in your case, you have one input of type `f (g (a -> b))', and one of type `f (g a)', and want to get to an output of type `f (g b)' |
| 18:33:57 | <ski> | .. often, it helps quite a bit to work backwards, from the goal. "goal-directed reasoning". but, sometimes, you may know, or have a good hunch, for some initial step(s) you want to perform on the inputs (you could write those down in code with a `where' or a `let'-`in', even if you're going to inline it later) |
| 18:35:24 | × | sphalerite quits (~sphalerit@NixOS/user/lheckemann) (Quit: WeeChat 2.6) |
| 18:35:35 | → | star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
| 18:36:52 | <kyali> | hey people :) i'm a bit of a newbie to haskell. As an exercise i'm trying to parse an org-mode file into a rose tree structure. I started with each node having a parent and a list of children (and depth, and content but not really relevant here). Trying to parse a file i figured out i didn't understand how to reference the parent node when building the tree. Specifically, if i started by making some root |
| 18:36:57 | <kyali> | node to start with and started building from there, the would be children of that node ended up referencing the originally defined childless root node. So my question is, how would one populate that tree with the proper parent and children references? |
| 18:37:22 | × | matryoshka quits (~matryoshk@184.75.223.227) (Quit: ZNC 1.8.2 - https://znc.in) |
| 18:37:32 | → | vappend joins (~ezrakilty@75-172-99-84.tukw.qwest.net) |
| 18:37:43 | → | matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) |
| 18:37:45 | <kyali> | (possibly a dumb question :P) |
| 18:38:22 | × | neiluj quits (~jco@unaffiliated/neiluj) (Quit: leaving) |
| 18:38:48 | <piroule> | i think the place i'm getting stuck is that i have a f (g (a -> b)) type, and the only thing that can do something to f ( ) objects is this f (a -> b) -> f a -> f b |
| 18:39:01 | <piroule> | but g (a -> b) can't be unified with a' -> b' |
| 18:39:07 | × | pfurla quits (~pfurla@64.145.79.190) (Ping timeout: 265 seconds) |
| 18:39:11 | <merijn> | kyali: Normally you'd have parents refering to children, instead of the other way. Any reason why children need to refer to parents? |
| 18:40:02 | × | knupfer quits (~Thunderbi@87.123.206.207) (Ping timeout: 272 seconds) |
| 18:40:26 | ski | idly wonders whether kyali wants a zipper |
| 18:40:52 | <kyali> | umm, the reason i had was to be able to get the parent node when i have the child returned by some function or other. I did end up making the tree without the parent reference, but i'd still be interested in figuring out how to do this with the parent as well |
| 18:41:23 | <kyali> | it seems obvious that i'm not getting something here :) i'd like to learn |
| 18:42:17 | <ski> | piroule : want that hint, yet ? |
| 18:42:21 | → | pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net) |
| 18:43:10 | <ski> | "to be able to get the parent node when i have the child returned by some function or other" -- in which situations would you find that useful ? |
| 18:45:24 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood) |
| 18:45:37 | <c_wraith> | it's a lot like building a doubly-linked list in Haskell - you just don't really do it because you basically have to copy the entire thing every time there's an update. |
| 18:46:34 | <kyali> | to be honest i haven't thought that far, i've just been playing around :) but, useful every time i get a node as a return value, but not it's position in the tree, or the whole tree. without the parent being referenced in the node itself i'd have to search the tree for the node, then take the parent |
| 18:46:53 | → | sphalerite joins (~sphalerit@NixOS/user/lheckemann) |
| 18:47:12 | <kyali> | which is okay as well i guess. Is there something wrong with my reasoning? |
| 18:47:58 | → | star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
| 18:48:45 | × | matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in) |
| 18:48:48 | <c_wraith> | not as such. It's just missing the consequences of bi-directional linkage in an immutable setting |
| 18:49:09 | → | matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) |
| 18:49:17 | <kyali> | ah, we're getting to the "me not understanding something" part |
| 18:49:28 | <kyali> | can you explain what you mean by this? |
| 18:49:35 | <ski> | it precludes sharing of subtrees off the path, when computing a new tree by updating some node |
| 18:51:55 | → | khdjh joins (b0f82516@176.248.37.22) |
| 18:52:06 | <khdjh> | hi |
| 18:52:17 | <ski> | lo |
| 18:52:31 | <khdjh> | what |
| 18:52:42 | → | shailangsa joins (~shailangs@host217-39-45-247.range217-39.btcentralplus.com) |
| 18:52:45 | <kyali> | ski: i don't understand what you mean |
| 18:52:53 | <khdjh> | is anyone a hacker |
| 18:53:36 | × | ransom quits (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 18:54:16 | <ski> | khdjh : <http://www.catb.org/jargon/html/H/hacker.html> |
| 18:54:24 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Remote host closed the connection) |
| 18:54:35 | <khdjh> | what is it |
| 18:54:37 | <c_wraith> | kyali: the issue is what ski says. You end up having to copy the entire tree whenever you want to make *any* kind of update. If the links only go one direction, you can share most of the nodes in the two trees. |
| 18:54:54 | <dsal> | khdjh: That's a URL. You can enter it into your browser and learn stuff. |
| 18:55:04 | <khdjh> | ugh |
| 18:55:43 | × | khdjh quits (b0f82516@176.248.37.22) (Client Quit) |
| 18:56:12 | <dsal> | Oh man, we were just getting to Functors. |
| 18:56:54 | <ski> | kyali : if you traverse from the root down to some node, and compute a new node from the old, then you also have to recompute all the parent nodes on the path (to repoint them to the updated child node), but the subtrees off the side of the path can be shared with the old tree. this is quite useful both to avoid (time spent) copying lots of stuff, but also that you can still refer to the old tree if you want |
| 18:57:00 | <ski> | to (persistent, rather than ephemeral, making it trivial to do "undo"/"revert transaction") |
| 18:57:13 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 264 seconds) |
| 18:58:03 | → | star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
| 18:58:06 | <ski> | ("then you also have to .." -- assuming you wanted to compute the whole updated tree, with that particular node replaced by its updated version, that is) |
| 18:59:51 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) |
| 18:59:53 | <ski> | (copying only the path to a node is `O(log(n))', `n' being number of nodes in the tree, assuming it's balanced) |
| 19:00:30 | → | Lord_of_Life_ joins (~Lord@unaffiliated/lord-of-life/x-0885362) |
| 19:00:45 | <ski> | kyali : if you prefer, you can do ephemeral, mutable, trees. which would make it easy to have parent links, if you wanted to |
| 19:01:18 | × | Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 256 seconds) |
| 19:01:20 | <ski> | (but they're more clunky to work with than immutable ones) |
| 19:01:49 | Lord_of_Life_ | is now known as Lord_of_Life |
| 19:02:07 | <ski> | but if you just want to keep track of the context of a tree, around (above) some node in it, then doing a zipper might be what you want |
| 19:02:19 | <kyali> | aaah okay. got it! |
| 19:02:23 | → | jonatanb joins (~jonatanb@83.24.29.180.ipv4.supernova.orange.pl) |
| 19:03:20 | <kyali> | okay, so i'm guessing that the benefit of being able to reference the parent is outweighed by the fact that you need to recompute the entire tree with every update :) |
| 19:03:21 | <c_wraith> | alternatively, you might look into libraries intended for working with general graphs |
| 19:03:23 | → | berberman_ joins (~berberman@unaffiliated/berberman) |
| 19:04:05 | <kyali> | c_wraith: i will surely look up libs for graphs, but not quite yet :) |
| 19:04:12 | <kyali> | thank you both for your help ! |
| 19:04:40 | × | berberman_ quits (~berberman@unaffiliated/berberman) (Max SendQ exceeded) |
| 19:04:43 | × | berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds) |
| 19:04:48 | → | xelxebar joins (~xelxebar@gateway/tor-sasl/xelxebar) |
| 19:05:06 | → | berberman joins (~berberman@unaffiliated/berberman) |
| 19:06:19 | × | Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving) |
| 19:06:26 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 19:07:03 | × | jonatanb quits (~jonatanb@83.24.29.180.ipv4.supernova.orange.pl) (Ping timeout: 256 seconds) |
| 19:07:46 | → | mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
| 19:07:53 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood) |
| 19:08:19 | → | rayyyy joins (~nanoz@gateway/tor-sasl/nanoz) |
| 19:09:04 | → | hackyhacker joins (~hackyhack@213.219.155.62.adsl.dyn.edpnet.net) |
| 19:09:12 | → | ChaiTRex joins (~ChaiTRex@gateway/tor-sasl/chaitrex) |
| 19:09:53 | → | star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
| 19:10:05 | <hackyhacker> | Hello I'm trying to use sin and cos with CInt but I keep getting the error couldn't match type 'CInt' with type 'Int'. |
| 19:10:15 | <hackyhacker> | Can I convert back and forth between these? |
| 19:10:44 | <Clint> | you can |
| 19:10:54 | × | j3parker1 quits (~j3parker@178.239.168.171) (Remote host closed the connection) |
| 19:11:01 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 265 seconds) |
| 19:11:13 | <hackyhacker> | with fromIntegral? |
| 19:11:13 | × | rajivr quits (uid269651@gateway/web/irccloud.com/x-ctlecoeospidllrd) (Quit: Connection closed for inactivity) |
| 19:12:32 | <ski> | % fromIntegral (2 :: Int) :: Foreign.C.Types.CInt |
| 19:12:32 | <yahb> | ski: 2 |
| 19:15:05 | → | xff0x joins (~fox@2001:1a81:53b9:9a00:37a2:7e82:f80e:4d9b) |
| 19:15:32 | → | DavidEichmann joins (~david@98.27.93.209.dyn.plus.net) |
| 19:15:35 | <hackyhacker> | Thanks I got it working! |
| 19:17:17 | → | Katarushisu joins (~Katarushi@cpc149726-finc20-2-0-cust203.4-2.cable.virginm.net) |
| 19:19:56 | × | abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving) |
| 19:20:17 | <piroule> | how do you know when you need parenthesis in haskell |
| 19:20:38 | <ski> | round brackets are for grouping (and for tuples) |
| 19:21:25 | → | Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) |
| 19:21:44 | <piroule> | why does (c!!0) (Just 4) not work without either of the pairs of parenthesis |
| 19:22:11 | <ski> | the "invisible" juxtaposition function application operator has higher precedence than all other (user-definable) operators. `f x y' means `(f x) y' (function application operator is left-associative) |
| 19:22:26 | <ski> | `c' is a list of functions ? |
| 19:22:29 | <piroule> | yeah |
| 19:22:46 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 19:22:46 | <piroule> | ok so that explains why (c!!0) Just 4 wouldn't work |
| 19:22:52 | <piroule> | but how about c!!0 (Just 4)? |
| 19:23:06 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
| 19:23:11 | <ski> | `c!!0 (Just 4)' means `c!!(0 (Just 4))'. `(c!!0) Just 4' means `((c!!0) Just) 4'. `c!!0 Just 4' means `c!!((0 Just) 4)' |
| 19:23:15 | <dsal> | 0 isn't a function? |
| 19:23:24 | <ski> | > 0 2 |
| 19:23:27 | <lambdabot> | 0 |
| 19:24:09 | <ski> | piroule : so "function application operator has higher precedence than all other (user-definable) operators" (e.g. `!!') is relevant, here |
| 19:24:28 | × | notzmv quits (~user@unaffiliated/zmv) (Ping timeout: 246 seconds) |
| 19:24:29 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection) |
| 19:24:30 | <piroule> | so a !! b would get parsed as (a) !! (b) always |
| 19:24:38 | <piroule> | unless a and b have !! inside them? |
| 19:24:40 | <dsal> | Wait, 0 *is* a function? That seems confusinig. |
| 19:24:51 | <geekosaur> | looks like a Num instance for functions is in scope |
| 19:25:09 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Remote host closed the connection) |
| 19:25:12 | <ski> | depends on whether `a' and `b' are expressions that have some (unprotected by brackets) operator with lower precedence than `!!' |
| 19:25:39 | → | ransom joins (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) |
| 19:25:40 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) |
| 19:25:48 | <piroule> | ugh this is so confusing |
| 19:25:50 | <piroule> | ok |
| 19:26:01 | <piroule> | so this is what the infixl things are for |
| 19:26:10 | <idnar> | dsal: ski defined instance Num a => Num (rho -> a) earlier ;) |
| 19:26:33 | <dsal> | Ah. Hard to make that out in lambdabot. |
| 19:26:45 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Read error: Connection reset by peer) |
| 19:26:52 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) |
| 19:27:14 | <idnar> | > (0 :: _) 2 |
| 19:27:19 | → | ThaDon joins (~ThaDon@185.103.96.147) |
| 19:27:20 | <lambdabot> | e |
| 19:27:46 | <idnar> | what |
| 19:27:50 | <dsal> | thanks, lambdabot |
| 19:27:54 | × | xff0x quits (~fox@2001:1a81:53b9:9a00:37a2:7e82:f80e:4d9b) (Ping timeout: 246 seconds) |
| 19:28:13 | <idnar> | @type (0 :: _) 2 |
| 19:28:15 | <lambdabot> | error: |
| 19:28:15 | <lambdabot> | • Found type wildcard ‘_’ standing for ‘Integer -> t’ |
| 19:28:15 | <lambdabot> | Where: ‘t’ is a rigid type variable bound by |
| 19:28:39 | <idnar> | ah no good |
| 19:30:51 | <ski> | piroule : yea. we have `infixl 9 !!', where `9' is the highest precedence that a user-defined operator can have. so e.g. `a + b !! c + d' is parsed as `(a + (b !! c)) + d' (since `infixl 6 +', making `!!' bind tighter than `+') |
| 19:31:34 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 260 seconds) |
| 19:33:05 | → | knupfer joins (~Thunderbi@200116b82cc1a70028416ffffeb8b3d8.dip.versatel-1u1.de) |
| 19:33:28 | × | conal quits (~conal@212.102.44.51) (Quit: Computer has gone to sleep.) |
| 19:34:03 | × | knupfer quits (~Thunderbi@200116b82cc1a70028416ffffeb8b3d8.dip.versatel-1u1.de) (Remote host closed the connection) |
| 19:34:16 | → | knupfer joins (~Thunderbi@200116b82cc1a700e1e3928e496d3019.dip.versatel-1u1.de) |
| 19:34:39 | → | conal joins (~conal@212.102.44.51) |
| 19:34:52 | × | conal quits (~conal@212.102.44.51) (Client Quit) |
| 19:39:50 | → | notzmv joins (~user@unaffiliated/zmv) |
| 19:41:48 | fendor_ | is now known as fendor |
| 19:42:46 | × | acowley quits (~acowley@c-68-83-22-43.hsd1.nj.comcast.net) (Read error: Connection reset by peer) |
| 19:42:46 | × | knupfer quits (~Thunderbi@200116b82cc1a700e1e3928e496d3019.dip.versatel-1u1.de) (Ping timeout: 258 seconds) |
| 19:43:40 | → | antalsz joins (~antalsz@68.175.130.216) |
| 19:44:00 | → | conal_ joins (~conal@185.247.70.252) |
| 19:45:44 | × | jamm quits (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
| 19:46:18 | <antalsz> | Is there a way to ask cabal to build my current pacakge but not haddock it? If I’m making frequent changes, the documentation generator just slows me down, but --disable-documentation seems to want to rebuild all of my dependencies without documentation too, which is too much |
| 19:46:40 | → | charukiewicz joins (~quassel@irouteince04.i.subnet.rcn.com) |
| 19:46:44 | × | hackyhacker quits (~hackyhack@213.219.155.62.adsl.dyn.edpnet.net) (Ping timeout: 260 seconds) |
| 19:48:00 | → | hackyhacker joins (~hackyhack@213.219.155.62.adsl.dyn.edpnet.net) |
| 19:48:38 | <merijn> | antalsz: Not sure if there's a good way to disable it per-package atm |
| 19:49:25 | <merijn> | antalsz: You can try making a cabal.project file that has "packages: foo.cabal\npackage foo\n documentation: False", but I'm not entirely sure that will work |
| 19:49:58 | <dcoutts> | antalsz: if you don't use --enable-documentation, you can still build docs for your current package using cabal haddock |
| 19:50:14 | × | ph88 quits (~ph88@ip5f5af71a.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds) |
| 19:50:16 | <c_wraith> | I feel like both of those responses miss the point entirely :P |
| 19:50:27 | <merijn> | c_wraith: How so? |
| 19:50:42 | <antalsz> | dcoutts: That’s kind of the reverse of what I want – I’d like to have the documentation for my dependencies, but not have to rebuild the local docs for every small change |
| 19:50:53 | <c_wraith> | I get the impression antalsz wants haddocks for all the dependencies |
| 19:51:04 | <merijn> | c_wraith: How does that conflict with my response? |
| 19:51:47 | <merijn> | (Granted, I'm not sure it *works*, but hey!) |
| 19:51:51 | <monochrom> | For fine-grained control, either direction, it is cabal.project. |
| 19:52:00 | <antalsz> | merijn: It does work! |
| 19:52:03 | <merijn> | \o/ |
| 19:52:04 | <monochrom> | (And if cabal.project doesn't do it, nothing does.) |
| 19:52:14 | <antalsz> | (I happened to already have a cabal.project file, so that was easier) |
| 19:52:34 | <dcoutts> | antalsz: ok, then specify exactly what you want in the cabal.project (or .local) file: |
| 19:52:35 | <dcoutts> | package * |
| 19:52:35 | <dcoutts> | documentation: True |
| 19:52:36 | <merijn> | antalsz: The commandline doesn't really have a good way to differentiate "global" (i.e. all packages) and "local" (in this project) packages yet |
| 19:52:40 | <antalsz> | but it would be nice to be able to specify that on the command line |
| 19:52:57 | <merijn> | dcoutts: That'd build stuff for the current package too, no? |
| 19:53:00 | <dcoutts> | antalsz: and for your local package, specify documentation: False |
| 19:53:12 | <dcoutts> | so provide the default * and then specific named local packages |
| 19:53:23 | <antalsz> | can I specify multiple cabal.project files on the command line? |
| 19:53:24 | <merijn> | dcoutts: Isn't that the same as "documentation: True" globally and then override per package like I suggested? :p |
| 19:53:38 | <antalsz> | just trying to think about ways I could switch between the two build approaches |
| 19:53:38 | <merijn> | antalsz: No, but you can add "mixin" info in cabal.project.local |
| 19:53:44 | <dcoutts> | merijn: but you generally have lots of deps |
| 19:53:56 | <merijn> | dcoutts: I generally want docs for everything I use :p |
| 19:54:23 | <merijn> | antalsz: cabal.project is for "permanent, for every dev" settings that you commit to the repo, and then you can specify local overrides in cabal.project.local |
| 19:55:02 | <monochrom> | --project-file=FILE exists |
| 19:55:16 | <antalsz> | ah, I kinda see – last time I used Cabal in earnest was before cabal.project files, then I used stack for a while, now I’m trying cabal new-build on this project |
| 19:55:33 | <antalsz> | so I have a one-package project with a cabal.project file |
| 19:55:47 | × | SlashLife quits (~slashlife@stienen.name) (Read error: Connection reset by peer) |
| 19:55:54 | <antalsz> | and then cabal will also pick up cabal.project.local and take the union of the two, basically? |
| 19:56:06 | <merijn> | yes |
| 19:56:31 | <antalsz> | monochrom: So if I have two project files that are identical, I could switch that way, but I’d have to maintain any changes in between them |
| 19:56:51 | × | Varis quits (~Tadas@unaffiliated/varis) (Read error: Connection reset by peer) |
| 19:57:38 | × | hackyhacker quits (~hackyhack@213.219.155.62.adsl.dyn.edpnet.net) (Ping timeout: 256 seconds) |
| 19:57:56 | <merijn> | antalsz: Not quite the union, though. Since if you have "documentation: True" in cabal.project and "documentation: False" in cabal.project.local that'd override the cabal.project :p |
| 19:58:00 | → | acidjnk_new joins (~acidjnk@p200300d0c704e77520873290fe3f7255.dip0.t-ipconnect.de) |
| 19:58:01 | <antalsz> | True! :-) |
| 19:59:14 | × | avdb quits (~avdb@gateway/tor-sasl/avdb) (Remote host closed the connection) |
| 20:00:36 | <antalsz> | It seems like the best approach is either (1) having a “nodocs.project.local” file that I rename to/from “cabal.project.local” as necessary, or (2) having both a “cabal.project” and a “nodocs.project.local” file and switching between them with --project-file |
| 20:00:56 | <antalsz> | The advantage of (1) is that there’s no duplication; the advantage of (2) is that it’s much easier to use and not stateful |
| 20:01:15 | <antalsz> | Ideally I’d like --also-project-file or --local-project-file options |
| 20:02:37 | <antalsz> | The “cabal.project.local” file is optimized for time-invariant but dev-variant settings; I’m looking for a solution that’s also useful for time-variant settings. Like --enable-profiling, which works because there you *want* it to rebuild all your settings |
| 20:02:51 | <merijn> | antalsz: Note that as dcoutts pointed out you can use "cabal haddock" to generate docs even without documentation on :p |
| 20:03:02 | → | ph88 joins (~ph88@ip5f5af71a.dynamic.kabel-deutschland.de) |
| 20:03:04 | → | ubert joins (~Thunderbi@p200300ecdf1ee049e6b318fffe838f33.dip0.t-ipconnect.de) |
| 20:03:32 | <antalsz> | Hmm, not a bad point… also, if we’re being honest, I’m not using the documentation for the package itself 99 times out of 100 |
| 20:05:02 | → | gproto23 joins (~gproto23@unaffiliated/gproto23) |
| 20:06:11 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 20:07:29 | × | Sgeo_ quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer) |
| 20:09:01 | → | SlashLife joins (~slashlife@stienen.name) |
| 20:09:18 | → | Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net) |
| 20:10:45 | × | UpstreamSalmon quits (uid12077@gateway/web/irccloud.com/x-rexnvewnzxxthgrm) (Quit: Connection closed for inactivity) |
| 20:12:38 | → | xff0x joins (~fox@2001:1a81:53b9:9a00:e5cb:577b:4380:8a0f) |
| 20:12:45 | × | cuz quits (~user@c-24-2-210-18.hsd1.ma.comcast.net) (Ping timeout: 240 seconds) |
| 20:14:34 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 20:14:40 | × | alx741 quits (~alx741@181.196.69.216) (Quit: alx741) |
| 20:14:43 | × | ubert quits (~Thunderbi@p200300ecdf1ee049e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 20:14:44 | → | knupfer joins (~Thunderbi@200116b82cc1a70018a8c3fffe3846d9.dip.versatel-1u1.de) |
| 20:14:45 | × | knupfer quits (~Thunderbi@200116b82cc1a70018a8c3fffe3846d9.dip.versatel-1u1.de) (Client Quit) |
| 20:15:02 | → | knupfer joins (~Thunderbi@87.123.206.207) |
| 20:15:03 | × | rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds) |
| 20:16:28 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 20:16:34 | → | alx741 joins (~alx741@181.196.69.216) |
| 20:16:47 | × | coot quits (~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 20:17:18 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 20:20:42 | × | lawid quits (~quassel@dslb-090-186-127-244.090.186.pools.vodafone-ip.de) (Ping timeout: 256 seconds) |
| 20:21:22 | × | gproto23 quits (~gproto23@unaffiliated/gproto23) (Ping timeout: 272 seconds) |
| 20:22:00 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 272 seconds) |
| 20:22:45 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 20:23:07 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
| 20:24:00 | × | pera quits (pera@gateway/vpn/mullvad/pera) (Ping timeout: 265 seconds) |
| 20:24:07 | × | usr25 quits (~J@216.red-83-58-205.dynamicip.rima-tde.net) (Ping timeout: 256 seconds) |
| 20:24:25 | × | xff0x quits (~fox@2001:1a81:53b9:9a00:e5cb:577b:4380:8a0f) (Ping timeout: 272 seconds) |
| 20:25:03 | × | shf quits (~sheaf@2a01:cb19:80cc:7e00:85b4:a3a3:cabb:438d) (Read error: Connection reset by peer) |
| 20:25:23 | → | pera joins (pera@gateway/vpn/mullvad/pera) |
| 20:28:46 | → | hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-afbyogyvilwdnzfx) |
| 20:30:17 | → | electricityZZZZ joins (~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net) |
| 20:30:49 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 20:31:22 | × | antalsz quits (~antalsz@68.175.130.216) (Quit: antalsz) |
| 20:32:02 | → | xff0x_ joins (~fox@2001:1a81:53b9:9a00:e5cb:577b:4380:8a0f) |
| 20:32:59 | × | Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer) |
| 20:33:47 | → | usr25 joins (~J@216.red-83-58-205.dynamicip.rima-tde.net) |
| 20:34:40 | → | Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net) |
| 20:36:23 | → | Vulfe_ joins (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) |
| 20:36:59 | → | tama joins (~tama@unaffiliated/tama00) |
| 20:40:53 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:510b:1d8f:3795:31d5) (Ping timeout: 272 seconds) |
| 20:48:09 | → | bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com) |
| 20:51:29 | → | abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
| 21:00:09 | × | usr25 quits (~J@216.red-83-58-205.dynamicip.rima-tde.net) (Quit: Bye) |
| 21:00:41 | → | ubert joins (~Thunderbi@p200300ecdf1ee049e6b318fffe838f33.dip0.t-ipconnect.de) |
| 21:03:16 | → | Codaraxis joins (Codaraxis@gateway/vpn/mullvad/codaraxis) |
| 21:03:38 | → | cuz joins (~user@2601:182:cc02:8b0:b1a2:6837:1015:156c) |
| 21:06:03 | × | ubert quits (~Thunderbi@p200300ecdf1ee049e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 21:08:49 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection) |
| 21:10:57 | → | cuz` joins (~user@c-24-2-210-18.hsd1.ma.comcast.net) |
| 21:11:00 | × | hekkaidekapus[ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection) |
| 21:12:38 | × | cuz quits (~user@2601:182:cc02:8b0:b1a2:6837:1015:156c) (Ping timeout: 264 seconds) |
| 21:13:04 | × | piroule quits (2fe3e53b@047-227-229-059.res.spectrum.com) (Quit: Connection closed) |
| 21:13:48 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:15:58 | × | conal_ quits (~conal@185.247.70.252) (Quit: Computer has gone to sleep.) |
| 21:16:11 | → | son0p joins (~son0p@181.136.122.143) |
| 21:16:21 | × | danvet quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds) |
| 21:16:22 | × | geekosaur quits (ae68c070@cpe-174-104-192-112.neo.res.rr.com) (Quit: Connection closed) |
| 21:17:51 | → | conal joins (~conal@185.247.70.252) |
| 21:17:52 | → | jonatanb joins (~jonatanb@83.24.29.180.ipv4.supernova.orange.pl) |
| 21:18:04 | × | conal quits (~conal@185.247.70.252) (Client Quit) |
| 21:18:19 | cuz` | is now known as cuz |
| 21:19:37 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 246 seconds) |
| 21:19:51 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 21:22:45 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 21:23:06 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
| 21:25:44 | → | jan_lawa_kon joins (~jan_lawa_@85.148.195.118) |
| 21:29:44 | → | acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
| 21:30:31 | × | ADG1089__ quits (~aditya@122.163.165.143) (Remote host closed the connection) |
| 21:30:42 | × | jonatanb quits (~jonatanb@83.24.29.180.ipv4.supernova.orange.pl) (Remote host closed the connection) |
| 21:31:24 | × | ransom quits (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 21:31:36 | → | jonatanb joins (~jonatanb@83.24.29.180.ipv4.supernova.orange.pl) |
| 21:35:01 | × | cuz quits (~user@c-24-2-210-18.hsd1.ma.comcast.net) (Read error: Connection reset by peer) |
| 21:36:03 | → | star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
| 21:37:05 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 21:38:54 | → | flux488 joins (2fe3e53b@047-227-229-059.res.spectrum.com) |
| 21:42:01 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 21:44:16 | × | kyali quits (~kyali@APN-123-254-27-gprs.simobil.net) (Ping timeout: 240 seconds) |
| 21:47:29 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 21:48:23 | × | kritzefitz quits (~kritzefit@212.86.56.80) (Remote host closed the connection) |
| 21:49:56 | × | lagothrix quits (~lagothrix@unaffiliated/lagothrix) (Ping timeout: 240 seconds) |
| 21:50:26 | → | lagothrix joins (~lagothrix@unaffiliated/lagothrix) |
| 21:52:27 | × | jan_lawa_kon quits (~jan_lawa_@85.148.195.118) (Quit: Leaving) |
| 21:54:05 | → | coot joins (~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl) |
| 21:58:01 | ← | cohn parts (~noone@unaffiliated/cohn) () |
| 21:58:45 | <troydm> | how can I reinstall same version of a package using haskell |
| 21:58:52 | × | ClaudiusMaximus quits (~claude@unaffiliated/claudiusmaximus) (Quit: ->) |
| 21:58:59 | <troydm> | basicly I want to test if a patch works or not |
| 21:59:16 | <troydm> | but installing via cabal install --lib seems to do nothing |
| 21:59:33 | <troydm> | as if a prev version of library is still cached somewhere |
| 22:02:05 | → | conal joins (~conal@64.71.133.70) |
| 22:04:36 | × | ulidtko|k quits (~ulidtko@193.111.48.79) (Ping timeout: 272 seconds) |
| 22:04:46 | × | bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 246 seconds) |
| 22:06:38 | → | conal_ joins (~conal@66.115.176.210) |
| 22:06:50 | × | conal quits (~conal@64.71.133.70) (Ping timeout: 256 seconds) |
| 22:07:19 | × | _xor quits (~xor@74.215.46.133) (Ping timeout: 260 seconds) |
| 22:08:04 | → | vnz_ joins (~vnz@51.15.143.225) |
| 22:08:47 | × | vnz quits (~vnz@unaffiliated/vnz) (Ping timeout: 260 seconds) |
| 22:08:47 | vnz_ | is now known as vnz |
| 22:08:47 | × | vnz quits (~vnz@51.15.143.225) (Changing host) |
| 22:08:47 | → | vnz joins (~vnz@unaffiliated/vnz) |
| 22:08:55 | → | _xor joins (~xor@74.215.46.133) |
| 22:09:14 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 22:10:45 | → | machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca) |
| 22:11:52 | <__monty__> | Maybe it's easier to test without installing it? Create a project that depends on it and add a local package to cabal.project for your patched library? |
| 22:13:12 | → | ogamita joins (~t@2a01cb04063ec500d4be9ffe0c684211.ipv6.abo.wanadoo.fr) |
| 22:13:26 | → | Codaraxis_ joins (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) |
| 22:13:43 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 260 seconds) |
| 22:14:21 | → | tama1 joins (~tama@unaffiliated/tama00) |
| 22:15:04 | × | jollygood2 quits (~bc812391@199.204.85.195) (Quit: CGI:IRC (Session timeout)) |
| 22:16:45 | × | Codaraxis quits (Codaraxis@gateway/vpn/mullvad/codaraxis) (Ping timeout: 240 seconds) |
| 22:16:47 | × | __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving) |
| 22:17:37 | × | tama quits (~tama@unaffiliated/tama00) (Ping timeout: 264 seconds) |
| 22:17:45 | × | knupfer quits (~Thunderbi@87.123.206.207) (Read error: Connection reset by peer) |
| 22:17:50 | → | knupfer1 joins (~Thunderbi@200116b82cc1a70035317a44b98a01a5.dip.versatel-1u1.de) |
| 22:18:14 | → | bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com) |
| 22:18:29 | <dmj`> | It would be really nice if happy could generate counter examples like bison, or provide some kind of visual representation of the parser given the spec (again like bison) |
| 22:19:20 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 22:21:12 | × | mirrorbird quits (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) (Quit: Leaving) |
| 22:21:43 | → | hekkaidekapus[ joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 22:22:28 | × | knupfer1 quits (~Thunderbi@200116b82cc1a70035317a44b98a01a5.dip.versatel-1u1.de) (Ping timeout: 260 seconds) |
| 22:24:22 | × | fendor quits (~fendor@91.141.0.240.wireless.dyn.drei.com) (Remote host closed the connection) |
| 22:24:49 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 22:25:32 | <dmj`> | the happy user guide on info files is a little sparse https://www.haskell.org/happy/doc/html/sec-info-files.html |
| 22:25:52 | × | hekkaidekapus[ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection) |
| 22:26:15 | → | hekkaidekapus[ joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 22:27:54 | → | mirrorbird joins (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) |
| 22:28:16 | → | Lycurgus joins (~niemand@cpe-45-46-139-165.buffalo.res.rr.com) |
| 22:28:24 | <troydm> | having to work with cabal again with it's nightmare model I now more appreciate what has stack achieved for Haskell community over years |
| 22:28:56 | × | Franciman quits (~francesco@host-82-48-174-127.retail.telecomitalia.it) (Quit: Leaving) |
| 22:30:39 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
| 22:31:18 | <MarcelineVQ> | I like that stack egged on improvements for cabal-install |
| 22:33:26 | <Lycurgus> | it broke the treadmill of slippery and forced breakage itself by allowing setting the hs level/version |
| 22:33:32 | <troydm> | MarcelineVQ: yeah I see these already, haven't looked into cabal underneath for a long time since started using stack |
| 22:33:43 | <troydm> | so was not aware of changes |
| 22:34:59 | <Lycurgus> | nothing innovative about it, every major lang has |
| 22:35:27 | <Lycurgus> | eg nvm for js |
| 22:36:12 | → | dandart joins (~Thunderbi@home.dandart.co.uk) |
| 22:37:55 | <dmj`> | cabal has come a long way |
| 22:45:22 | × | guanohhh quits (uid477762@gateway/web/irccloud.com/x-heviwwoxmanqshwa) (Quit: Connection closed for inactivity) |
| 22:46:08 | → | cohn joins (~noone@unaffiliated/cohn) |
| 22:46:37 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 22:48:02 | × | jonatanb quits (~jonatanb@83.24.29.180.ipv4.supernova.orange.pl) (Remote host closed the connection) |
| 22:49:29 | × | Lycurgus quits (~niemand@cpe-45-46-139-165.buffalo.res.rr.com) (Quit: Exeunt) |
| 22:55:51 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 22:57:29 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 23:01:19 | × | mirrorbird quits (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) (Remote host closed the connection) |
| 23:02:09 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
| 23:03:20 | × | coot quits (~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 23:04:16 | × | shatriff quits (~vitaliish@176-52-216-242.irishtelecom.com) (Ping timeout: 246 seconds) |
| 23:06:21 | → | hekkaidekapus] joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 23:07:03 | × | hekkaidekapus[ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds) |
| 23:07:10 | × | Tesseraction quits (~Tesseract@unaffiliated/tesseraction) (Read error: Connection reset by peer) |
| 23:08:48 | → | mirrorbird joins (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) |
| 23:08:56 | × | DavidEichmann quits (~david@98.27.93.209.dyn.plus.net) (Ping timeout: 256 seconds) |
| 23:09:47 | → | pavonia joins (~user@unaffiliated/siracusa) |
| 23:10:10 | → | edrx joins (~Eduardo@2804:56c:d2ef:cf00:369c:6c3f:6681:423e) |
| 23:11:35 | <dmj`> | oh, ghc's Parser.y has 0 shift/reduce conflicts ... |
| 23:12:12 | <c_wraith> | ghc's parser doesn't try to parse everything correctly, though. It leaves a lot of things to be fixed by later passes |
| 23:12:52 | <edrx> | is it possible to put this "do" in a single line? how should I separate the "return" from the rest? |
| 23:12:56 | <edrx> | do a <- [0,1], b <- [a+1,a+2]; return (a+b) |
| 23:13:05 | <c_wraith> | semicolons |
| 23:13:31 | <edrx> | c_wraith: perfect! thanks! =) |
| 23:13:51 | <c_wraith> | you can write haskell as a {;} language. Most people don't. :) |
| 23:13:57 | <c_wraith> | But for one-liners, it's useful |
| 23:14:18 | <edrx> | next question... I am trying to understand list comprehensions by desugaring them - as Vladimir Zavialov does in this presentation here: https://youtu.be/fty9QL4aSRc ("Haskell to Core: Understanding Haskell Features Through Their Desugaring")... |
| 23:14:56 | × | Deide quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa) |
| 23:14:56 | × | mirrorbird quits (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) (Remote host closed the connection) |
| 23:15:02 | <edrx> | I've been able to draw typing diagrams for some examples of the do notation - e.g.: http://angg.twu.net/e/haskell.e.html#typing-do-notation - but in the syntax for list comprehensions an omitted "<-" seems to do something different... for example, here |
| 23:15:11 | <edrx> | [(a,b) | a <- [0,1], b <- [a+1,a+2], a+b < 4] |
| 23:15:43 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Remote host closed the connection) |
| 23:15:57 | <c_wraith> | you can add filters to list comprehensions |
| 23:16:10 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) |
| 23:16:23 | <c_wraith> | You can desugar those as calls to guard |
| 23:16:32 | <edrx> | translating "a+b < 4" to "_ <- a+b" doesn't work - it seems that the right translation generates a one-element list when the"a+b < 4" is true, and a [] when it is false... do you know where I can find the details? |
| 23:16:49 | × | flux488 quits (2fe3e53b@047-227-229-059.res.spectrum.com) (Ping timeout: 248 seconds) |
| 23:16:49 | <edrx> | ah, let me try :t guard |
| 23:17:17 | <edrx> | "Variable not in scope" |
| 23:17:26 | <c_wraith> | @where guard |
| 23:17:26 | <lambdabot> | I know nothing about guard. |
| 23:17:30 | <c_wraith> | it's in Control.Monad |
| 23:17:35 | <c_wraith> | :tguard |
| 23:17:37 | <c_wraith> | :t guard |
| 23:17:39 | <lambdabot> | Alternative f => Bool -> f () |
| 23:18:02 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Remote host closed the connection) |
| 23:18:04 | → | Deide joins (~Deide@217.155.19.23) |
| 23:18:09 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) |
| 23:18:13 | <edrx> | beautiful! thanks! =) |
| 23:18:14 | → | lambda-11235 joins (~lambda-11@2600:1700:7c70:4600:2560:f230:a66e:db8d) |
| 23:18:18 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Remote host closed the connection) |
| 23:18:51 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) |
| 23:19:07 | → | joshualit140[m] joins (joshualit1@gateway/shell/matrix.org/x-whhblwmaoulboefx) |
| 23:19:11 | <joshualit140[m]> | Hi. I'm paying 100€ for a Haskell developer to complete a project in 24 hours (Nothing too extreme, just a simple IO program). Please DM me if you are interested. |
| 23:19:11 | <joshualit140[m]> | Not sure if I can post that here, but I need the project done asap. |
| 23:20:43 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection) |
| 23:21:11 | <dmj`> | c_wraith: I noticed ghc doesn't try to parse patterns, yea. It has a post-processing step for that, wonder if it stole that from jhc |
| 23:21:23 | × | ogamita quits (~t@2a01cb04063ec500d4be9ffe0c684211.ipv6.abo.wanadoo.fr) (Read error: Connection reset by peer) |
| 23:22:07 | <dmj`> | c_wraith: too bad patterns can't be represented in happy |
| 23:22:25 | <c_wraith> | dmj`: it also doesn't handle operator precedence, as that's context-sensitive |
| 23:22:35 | → | urek joins (~urek@2804:7f1:e10a:8920:8158:2ad1:b01b:bb41) |
| 23:23:10 | ← | urek parts (~urek@2804:7f1:e10a:8920:8158:2ad1:b01b:bb41) () |
| 23:23:26 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Ping timeout: 264 seconds) |
| 23:23:38 | <dmj`> | c_wraith: is that because custom operators specify their own precedence, so it'd have to know ahead of time what the precedence was before parsing |
| 23:24:14 | → | mirrorbird joins (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) |
| 23:24:31 | <c_wraith> | yes |
| 23:25:04 | <dmj`> | rip |
| 23:25:26 | <c_wraith> | at least haskell syntax is decideable, even if it is context-sensitive! |
| 23:25:38 | c_wraith | taunts perl |
| 23:25:44 | <dmj`> | c_wraith: purescript avoids patterns altogether, I see why |
| 23:25:53 | × | pera quits (pera@gateway/vpn/mullvad/pera) (Quit: leaving) |
| 23:28:49 | <dmj`> | c_wraith: I just want a nice declarative parser for Haskell is that too much to ask for? |
| 23:29:19 | <c_wraith> | technically no. You could make a context-sensitive declarative tool. |
| 23:29:27 | <c_wraith> | But it would probably be slow. |
| 23:29:45 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 23:30:11 | → | Tesseraction joins (~Tesseract@unaffiliated/tesseraction) |
| 23:31:31 | × | son0p quits (~son0p@181.136.122.143) (Quit: Lost terminal) |
| 23:35:37 | <c_wraith> | also, I have *no idea* how to extend the formalisms you can prove handle context-sensitive grammars declaratively into a practical system. |
| 23:38:01 | <dmj`> | c_wraith: the time I'd lose in parse time I could make up by not implementing a bunch of extensions that aren't used anymore |
| 23:38:06 | → | ransom joins (~c4264035@c-67-176-3-106.hsd1.co.comcast.net) |
| 23:45:16 | × | darjeeling_ quits (~darjeelin@115.215.40.96) (Ping timeout: 256 seconds) |
| 23:47:48 | × | jess quits (jess@freenode/staff/jess) (Quit: updates) |
| 23:48:10 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) |
| 23:51:32 | × | vappend quits (~ezrakilty@75-172-99-84.tukw.qwest.net) (Remote host closed the connection) |
| 23:53:25 | × | ransom quits (~c4264035@c-67-176-3-106.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 23:54:02 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Ping timeout: 260 seconds) |
| 23:55:28 | × | Kaiepi quits (~Kaiepi@47.54.252.148) (Remote host closed the connection) |
| 23:55:35 | × | ThaDon quits (~ThaDon@185.103.96.147) (Remote host closed the connection) |
| 23:55:43 | → | Kaiepi joins (~Kaiepi@47.54.252.148) |
| 23:58:45 | × | p-core quits (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Quit: p-core) |
| 23:59:07 | → | p-core joins (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) |
All times are in UTC on 2021-01-10.