Logs on 2022-01-09 (liberachat/#haskell)
| 00:02:06 | → | SummerSonw joins (~The_viole@203.77.49.232) |
| 00:04:30 | → | tremon joins (~tremon@217-120-53-183.cable.dynamic.v4.ziggo.nl) |
| 00:05:18 | → | talismanick joins (~talismani@2601:644:8500:8350::256c) |
| 00:08:20 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 00:08:20 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 00:08:20 | → | wroathe joins (~wroathe@user/wroathe) |
| 00:09:34 | × | max22- quits (~maxime@2a01cb08833598001e8492dc42f658f2.ipv6.abo.wanadoo.fr) (Remote host closed the connection) |
| 00:11:25 | × | SummerSonw quits (~The_viole@203.77.49.232) (Ping timeout: 240 seconds) |
| 00:12:51 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 00:12:52 | × | burnsidesLlama quits (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection) |
| 00:15:35 | × | jgeerds quits (~jgeerds@55d4bbed.access.ecotel.net) (Ping timeout: 256 seconds) |
| 00:17:22 | × | TonyStone quits (~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com) (Remote host closed the connection) |
| 00:18:51 | → | burnsidesLlama joins (~burnsides@dhcp168-013.wadham.ox.ac.uk) |
| 00:20:09 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 00:23:01 | × | burnsidesLlama quits (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
| 00:28:15 | × | euandreh quits (~euandreh@2804:14c:33:9fe5:58c5:6207:2988:1b06) (Ping timeout: 268 seconds) |
| 00:29:09 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 00:31:59 | × | tcard quits (~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp) (Quit: Leaving) |
| 00:34:24 | → | DNH_ joins (~DNH@2a02:8108:1100:16d8:c018:4e56:978b:50e2) |
| 00:35:05 | × | acidjnk_new3 quits (~acidjnk@p200300d0c7271e2764e98499ffbb1b91.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 00:35:05 | × | acidjnk quits (~acidjnk@p200300d0c7271e2764e98499ffbb1b91.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 00:35:09 | × | DNH_ quits (~DNH@2a02:8108:1100:16d8:c018:4e56:978b:50e2) (Client Quit) |
| 00:35:50 | → | tcard joins (~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp) |
| 00:36:53 | × | DNH quits (~DNH@2a02:8108:1100:16d8:1c21:9777:b34f:a2a4) (Ping timeout: 268 seconds) |
| 00:40:37 | × | mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 240 seconds) |
| 00:41:48 | × | Inst quits (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 256 seconds) |
| 00:45:57 | → | lavaman joins (~lavaman@98.38.249.169) |
| 00:46:45 | × | wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds) |
| 00:46:54 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 00:48:52 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 00:48:52 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 00:48:52 | → | wroathe joins (~wroathe@user/wroathe) |
| 00:50:13 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
| 00:50:52 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 256 seconds) |
| 00:50:53 | → | pavonia joins (~user@user/siracusa) |
| 00:53:17 | → | wyrd joins (~wyrd@gateway/tor-sasl/wyrd) |
| 01:01:32 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 01:05:44 | × | xkuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
| 01:12:18 | → | Sgeo_ joins (~Sgeo@user/sgeo) |
| 01:13:07 | <lechner> | Hi, is it possible to extend Hasql (or perhaps PostgreSQL.Binary.Encoding) with a data type from an extension? |
| 01:14:40 | × | Sgeo quits (~Sgeo@user/sgeo) (Ping timeout: 256 seconds) |
| 01:21:37 | × | n3rdy1 quits (~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 240 seconds) |
| 01:29:36 | → | lbseale joins (~ep1ctetus@user/ep1ctetus) |
| 01:35:49 | × | lbseale quits (~ep1ctetus@user/ep1ctetus) (Ping timeout: 240 seconds) |
| 01:37:49 | × | Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 240 seconds) |
| 01:37:57 | × | son0p quits (~ff@181.136.122.143) (Ping timeout: 268 seconds) |
| 01:50:47 | × | kaph quits (~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Ping timeout: 256 seconds) |
| 01:53:56 | × | ProfSimm quits (~ProfSimm@87.227.196.109) (Remote host closed the connection) |
| 01:55:37 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 01:57:39 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 02:02:09 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 02:02:28 | × | little_mac quits (~little_ma@2601:410:4300:3ce0:b17c:f0c6:752d:8263) (Remote host closed the connection) |
| 02:03:02 | → | little_mac joins (~little_ma@2601:410:4300:3ce0:b17c:f0c6:752d:8263) |
| 02:03:19 | → | SummerSonw joins (~The_viole@203.77.49.232) |
| 02:04:12 | → | vysn joins (~vysn@user/vysn) |
| 02:05:06 | × | justIrresolute quits (~justache@user/justache) (Remote host closed the connection) |
| 02:06:01 | → | TonyStone joins (~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com) |
| 02:06:05 | → | justIrresolute joins (~justache@user/justache) |
| 02:06:48 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
| 02:11:02 | × | TonyStone quits (~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com) (Remote host closed the connection) |
| 02:11:25 | → | TonyStone joins (~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com) |
| 02:14:40 | → | califax- joins (~califax@user/califx) |
| 02:15:11 | → | lavaman joins (~lavaman@98.38.249.169) |
| 02:18:24 | × | califax quits (~califax@user/califx) (Ping timeout: 276 seconds) |
| 02:18:24 | califax- | is now known as califax |
| 02:19:32 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 02:21:01 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Client Quit) |
| 02:21:08 | → | kaph joins (~kaph@net-2-38-107-19.cust.vodafonedsl.it) |
| 02:28:11 | × | mixfix41 quits (~homefame@user/mixfix41) (Ping timeout: 256 seconds) |
| 02:28:55 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 02:29:25 | × | harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving) |
| 02:29:36 | → | neurocyte09172 joins (~neurocyte@IP-094016064252.dynamic.medianet-world.de) |
| 02:29:36 | × | neurocyte09172 quits (~neurocyte@IP-094016064252.dynamic.medianet-world.de) (Changing host) |
| 02:29:36 | → | neurocyte09172 joins (~neurocyte@user/neurocyte) |
| 02:31:11 | <lechner> | Hi, is 'pure' a suitable no-op in a monadic 'case' expression? Sorry if that language makes no sense |
| 02:31:25 | × | neurocyte0917 quits (~neurocyte@user/neurocyte) (Ping timeout: 240 seconds) |
| 02:31:25 | neurocyte09172 | is now known as neurocyte0917 |
| 02:33:25 | × | xff0x quits (~xff0x@2001:1a81:5298:9f00:374f:4390:4780:3d6) (Ping timeout: 240 seconds) |
| 02:35:34 | → | xff0x joins (~xff0x@2001:1a81:52d4:9900:80b8:248c:472c:34e) |
| 02:38:48 | <monochrom> | Yes, especially "pure ()" |
| 02:40:04 | <lechner> | monochrom: thanks! |
| 02:40:27 | <lechner> | what should go near the 'Right' please? https://paste.tomsmeding.com/vx0y49YN |
| 02:41:08 | <lechner> | a is () |
| 02:43:23 | <monochrom> | Go back one step. "Session.run (addVersionSession version committish tags) connection >>= \e -> case e of Left error -> ... Right _ -> ...". Or use do-notation. |
| 02:43:43 | <monochrom> | You have "IO (EIther ...)" not plain "Either ...". |
| 02:44:58 | → | razetime joins (~quassel@49.207.213.63) |
| 02:53:49 | × | Midjak quits (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Ping timeout: 240 seconds) |
| 02:55:12 | × | TonyStone quits (~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com) (Quit: Leaving) |
| 02:56:30 | × | ph88 quits (~ph88@2a02:8109:9e00:71d0::7e04) (Quit: Leaving) |
| 02:56:31 | → | TonyStone joins (~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com) |
| 02:56:56 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 02:58:38 | <lechner> | oh, i see. it went back in the monad when i moved it from Right error <- (which caused a missed match on success) |
| 03:01:37 | <lechner> | how does that look with 'do' please? |
| 03:03:15 | <lechner> | i think my issue is simply that i want to do nothing on Right _ |
| 03:05:05 | × | justIrresolute quits (~justache@user/justache) (Remote host closed the connection) |
| 03:05:37 | <lechner> | Why doesn't that work? Right _ -> pure () I get Couldn't match expected type ‘IO (Either Session.QueryError ())’ like you said |
| 03:06:04 | → | justIrresolute joins (~justache@user/justache) |
| 03:09:07 | <EvanR> | expected IO (Either ... |
| 03:09:22 | <EvanR> | so like, return (Right (... |
| 03:09:35 | <EvanR> | or pure (pure (... |
| 03:11:34 | → | sonny joins (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca) |
| 03:16:13 | × | dsrt^ quits (~dsrt@wsip-98-188-246-242.mc.at.cox.net) (Ping timeout: 240 seconds) |
| 03:18:47 | <lechner> | i think i tried all combinations... |
| 03:18:57 | × | little_mac quits (~little_ma@2601:410:4300:3ce0:b17c:f0c6:752d:8263) (Ping timeout: 240 seconds) |
| 03:20:29 | → | little_mac joins (~little_ma@c-24-127-188-93.hsd1.mi.comcast.net) |
| 03:21:10 | × | wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Quit: leaving) |
| 03:22:38 | × | cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection) |
| 03:23:13 | → | cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
| 03:27:07 | × | shailangsa quits (~shailangs@host86-162-150-202.range86-162.btcentralplus.com) (Ping timeout: 256 seconds) |
| 03:29:23 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
| 03:30:46 | → | Topsi joins (~Tobias@dyndsl-095-033-089-163.ewe-ip-backbone.de) |
| 03:31:22 | → | Hash joins (~Hash@hashsecurity.org) |
| 03:31:24 | <Hash> | Hello |
| 03:31:30 | <Hash> | I'm new but have questiona bout Haskell GHC |
| 03:31:41 | <Hash> | I install it on Ubuntu 20.04 and it's very large size. |
| 03:31:50 | <Hash> | Almost 1GB of packages for haskell |
| 03:31:53 | <xsperry> | are you sure you want to return Either wrapped in an IO? so many things can raise exception in IO, so if you return Either (as opposed to throwing) you just have one more type of error to handle |
| 03:31:56 | <Hash> | Is this accurate? |
| 03:32:16 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 03:32:26 | <Hash> | Is there possible way to get Haskell compiiler/xmonad without having 1GB of ghc dependencies? |
| 03:32:34 | <Hash> | Why is haskell compiler so huge? |
| 03:32:56 | → | ezzieyguywuf joins (~Unknown@user/ezzieyguywuf) |
| 03:33:36 | → | yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
| 03:33:43 | <sonny> | maybe it's possible to install only ghc |
| 03:34:43 | <Topsi> | ummm, for me on Windows the size of the folder at C:\Users\Username\AppData\Local\Programs\stack\x86_64-windows\ghc-9.0.1 is 2,5GB |
| 03:35:15 | <EvanR> | Hash, I'm on ubuntu |
| 03:35:24 | <EvanR> | I used ghcup to get haskell, not packages |
| 03:35:38 | <yushyin> | 4.8G /home/yushyin/.ghcup/ ;D |
| 03:35:56 | <Hash> | holy moly |
| 03:35:57 | <EvanR> | yeah can't speak to the disk foot print, I have a new 1TB drive |
| 03:36:14 | <EvanR> | needless to say that's a lot of 1.44MB floppies |
| 03:36:14 | <Hash> | That's so much :( |
| 03:36:50 | <xsperry> | 1TB hdd is like $30 |
| 03:37:07 | <Topsi> | I have ghc-8.6.5, ghc-8.8.2, ghc-8.8.3, ghc-8.8.4, ghc-8.10.1, ghc-8.10.2, ghc-8.10.4 and ghc-9.0.1 installed and my SSD is only 227GB -.- |
| 03:37:30 | × | ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Remote host closed the connection) |
| 03:37:41 | → | wyrd joins (~wyrd@gateway/tor-sasl/wyrd) |
| 03:37:57 | <Topsi> | ye I have external hdds as well, but they're slower |
| 03:38:19 | <EvanR> | Hash, GHC is alien tech, sorry |
| 03:38:50 | <Topsi> | I just want to express that I find GHCs size inconvenient |
| 03:38:56 | → | ezzieyguywuf joins (~Unknown@user/ezzieyguywuf) |
| 03:39:22 | <EvanR> | the real issue seems to be how much memory it takes to run, which becomes an issue on raspberry pi |
| 03:40:08 | <Topsi> | that too x) |
| 03:40:23 | <lechner> | xsperry: i don't want to return anything. just trying to process the error https://paste.tomsmeding.com/vx0y49YN |
| 03:41:19 | <EvanR> | lechner, all functions return something, be it (), Nothing, or an exploding thunk |
| 03:41:28 | <EvanR> | or a hard freeze |
| 03:42:00 | <xsperry> | lechner, can you paste a test case? (smallest compilable example). "putStrLn $ show error" is the same as "print error", btw |
| 03:43:56 | <xsperry> | lechner, nm, Session.run returns IO, you can't use case with IO |
| 03:44:16 | × | Hayek1 quits (~xxx@rrcs-173-196-3-254.west.biz.rr.com) (Ping timeout: 256 seconds) |
| 03:44:35 | <lechner> | xsperry: just trying to process the error from 'run' here and do nothing on 'Right' https://hackage.haskell.org/package/hasql-1.4.4/docs/Hasql-Session.html#t:QueryError |
| 03:44:50 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
| 03:45:01 | × | td_ quits (~td@94.134.91.205) (Ping timeout: 240 seconds) |
| 03:45:32 | <lechner> | could i use eitherResult <- .... followed by case eitherResult of ..... |
| 03:45:33 | <yushyin> | Hash: if that's too much, haskell might be not for you. i have already >10GB in haskell deps |
| 03:45:39 | <Hash> | HJeezus! |
| 03:45:41 | <Hash> | Wow |
| 03:45:54 | → | kramer2 joins (~bc8147f2@cerf.good1.com) |
| 03:46:11 | <xsperry> | lechner yes that should work |
| 03:46:13 | <EvanR> | 10G, that's like 1/10 or 1/20 of a basic video game now xD |
| 03:47:05 | → | td_ joins (~td@muedsl-82-207-238-021.citykom.de) |
| 03:47:19 | <EvanR> | :t case Left "!" of Right _ -> return (); Left _ -> return () |
| 03:47:20 | <lambdabot> | Monad m => m () |
| 03:47:31 | <EvanR> | lechner, maybe eitherResult is not what you think it is |
| 03:47:37 | <lechner> | xsperry: is there something monadic lke Session.run ... >>= similar to what monochrome wrote? |
| 03:48:10 | <Topsi> | right, the haskell dependencies downloaded by stack stored in C:\sr are 24GB for me |
| 03:48:23 | <Hash> | Wow |
| 03:48:25 | <lechner> | EvanR: i have some type confusion |
| 03:48:27 | <Hash> | that's just so much. |
| 03:48:36 | <xsperry> | lechner, do and <- are just syntax sugar for >>= |
| 03:48:39 | <Hash> | I don't have that kind of space. I use Xmonad only |
| 03:49:39 | × | sonny quits (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca) (Remote host closed the connection) |
| 03:50:17 | <Topsi> | It accumulates over time |
| 03:50:17 | × | sagax quits (~sagax_nb@user/sagax) (Ping timeout: 240 seconds) |
| 03:50:54 | <EvanR> | you can always clear the accumulate ghc stuf |
| 03:50:59 | <kramer2> | lecher, what error are you getting? |
| 03:51:00 | <Topsi> | There's no proper way to delete stuff. I either delete the GHCs installed by stack manually or remove the C:\sr folder by reinstalling stack every now and then. |
| 03:51:10 | <Topsi> | i don't know how else to do it |
| 03:51:17 | <EvanR> | as usual on linux, the proper way is to delete the relevant directory |
| 03:51:23 | <EvanR> | and start over |
| 03:51:37 | <yushyin> | Hash: that said, if you use xmonad, you will need a ghc and yes it will take about 1-2GB of your space. well, probably you could compile xmonad on system x and use only the binary on system y, but then you lose the possibility to quickly reconfigure something. |
| 03:51:51 | <Hash> | Or switch to dwm. |
| 03:51:55 | <lechner> | kramer2: Couldn't match expected type ‘IO (Either Session.QueryError ())’ |
| 03:51:59 | <Hash> | But miss out the xmonad extention ecosystem |
| 03:52:01 | <Hash> | :( |
| 03:52:07 | <EvanR> | I used dwm for many years |
| 03:52:12 | <kramer2> | lechner, it looks like you are still matching IO, no Either |
| 03:52:17 | <EvanR> | I'm better now |
| 03:52:20 | <kramer2> | Hash, I'm curious, what is the size of your hard drive? |
| 03:52:23 | <lechner> | Hash: or use sway |
| 03:52:29 | <Hash> | I dunno |
| 03:52:31 | <Hash> | let's see |
| 03:52:41 | <Hash> | /dev/sdd2 30G 22G 7.0G 76% / |
| 03:52:46 | <Hash> | /dev/sdd3 41G 18G 22G 45% /home |
| 03:53:10 | <Hash> | I just need to reinstall. |
| 03:53:19 | <yushyin> | Hash: or any other window manager which doesn't require a whole compiler toolchain for some re-configuration |
| 03:53:24 | <Hash> | over the years you install packages adn forget about them |
| 03:53:29 | <Hash> | ligbs and dev packs and all |
| 03:54:05 | <EvanR> | I can't imagine linux without a ghc |
| 03:54:13 | <EvanR> | how do you even |
| 03:54:16 | <lechner> | Hash: afaik xmonad will never talk wayland |
| 03:54:23 | <Hash> | Whoc ares about wayland |
| 03:54:26 | <Hash> | what is that anyway |
| 03:54:32 | <Hash> | prometheus movie stuff? |
| 03:54:40 | <Hash> | wayland. Stupid name. |
| 03:54:57 | <kramer2> | to be honest, if you're not interested in haskell beyond xmonad, I can understand why needing >1GB of space might raise some eyebrows |
| 03:55:01 | <Hash> | basic xorg window stuff is good |
| 03:55:13 | <Hash> | Do you see my space? |
| 03:55:19 | <Hash> | Not enough man |
| 03:55:21 | <Hash> | :( |
| 03:55:40 | <Hash> | Oh well.Oh well |
| 03:55:44 | <Hash> | oh well it's what it is. |
| 03:55:47 | <EvanR> | you'll have to delete some of your MP3s to make room for haskell |
| 03:55:53 | <EvanR> | or bootlegs, or whatever |
| 03:55:54 | <Hash> | No this is just / and /home |
| 03:56:39 | <lechner> | or http://www.nongnu.org/ratpoison/ |
| 03:56:55 | <Hash> | I have /media and /jorel and /kalel and /valel /zorel |
| 03:57:03 | <Hash> | That's where my data is. |
| 03:57:15 | <Hash> | I'm talking about stupid distro packagsges |
| 04:01:07 | → | yauhsien_ joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
| 04:01:07 | × | yauhsien quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Read error: Connection reset by peer) |
| 04:05:05 | × | justIrresolute quits (~justache@user/justache) (Remote host closed the connection) |
| 04:06:03 | → | justIrresolute joins (~justache@user/justache) |
| 04:09:37 | → | shailangsa joins (~shailangs@host86-185-98-37.range86-185.btcentralplus.com) |
| 04:09:44 | <EvanR> | with ghcup you can sidestep stupid distro packages |
| 04:12:02 | → | sonny joins (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca) |
| 04:18:07 | → | Hayek1 joins (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) |
| 04:23:12 | × | Hayek1 quits (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) (Ping timeout: 268 seconds) |
| 04:25:02 | × | wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Quit: leaving) |
| 04:31:57 | → | Jing joins (~hedgehog@240e:390:7c53:a7e1:8890:34c2:e4a2:a79e) |
| 04:34:32 | <EvanR> | Data.List.NonEmpty is cool |
| 04:34:46 | <EvanR> | I don't hate it |
| 04:46:40 | → | deadmarshal joins (~deadmarsh@95.38.231.124) |
| 04:46:54 | → | Deep-Thought joins (~quantum@2001:8003:7937:cf01:485e:bf6c:57df:1e44) |
| 04:47:28 | → | Midjak joins (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) |
| 04:49:39 | ← | Deep-Thought parts (~quantum@2001:8003:7937:cf01:485e:bf6c:57df:1e44) (Leaving) |
| 04:52:07 | → | seer joins (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) |
| 04:52:16 | × | waleee quits (~waleee@h-98-128-229-110.NA.cust.bahnhof.se) (Ping timeout: 256 seconds) |
| 04:52:41 | <seer> | question about custom preludes: which one should I use? |
| 04:52:43 | seer | is now known as Inst |
| 04:54:23 | × | bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 256 seconds) |
| 04:55:57 | ← | sonny parts (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca) () |
| 04:57:31 | <EvanR> | none of them probably, if you're unsure |
| 04:59:34 | → | dsrt^ joins (~dsrt@wsip-98-188-246-242.mc.at.cox.net) |
| 05:02:13 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 240 seconds) |
| 05:03:20 | → | kimjetwav joins (~user@2607:fea8:2363:8f00:215b:2bd2:2b33:135e) |
| 05:05:05 | × | justIrresolute quits (~justache@user/justache) (Remote host closed the connection) |
| 05:05:44 | → | wyrd joins (~wyrd@gateway/tor-sasl/wyrd) |
| 05:06:03 | → | justIrresolute joins (~justache@user/justache) |
| 05:06:11 | → | Hayek1 joins (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) |
| 05:07:41 | → | Topsi1 joins (~Tobias@dyndsl-095-033-023-075.ewe-ip-backbone.de) |
| 05:09:16 | × | Topsi quits (~Tobias@dyndsl-095-033-089-163.ewe-ip-backbone.de) (Ping timeout: 256 seconds) |
| 05:17:54 | × | kitzman quits (~kitzman@user/dekenevs) (Quit: C-x C-c) |
| 05:18:45 | → | kitzman joins (~kitzman@user/dekenevs) |
| 05:21:59 | → | user0 joins (~aj@154.0.137.32) |
| 05:22:06 | ← | user0 parts (~aj@154.0.137.32) () |
| 05:22:19 | × | Jing quits (~hedgehog@240e:390:7c53:a7e1:8890:34c2:e4a2:a79e) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 05:26:16 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 05:29:54 | × | slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving) |
| 05:34:21 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 05:34:21 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 05:34:21 | → | wroathe joins (~wroathe@user/wroathe) |
| 05:39:18 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 05:48:59 | <EvanR> | in client server jargon we have verbs like get (request data, not intending to have any other effect), put (here is some data, good luck. I'm not expecting anything else. fire and forget). But what do you call a request for data, but intend for some other effect. Such as a dequeue, bump a counter, move a pointer, at the same time |
| 05:50:12 | <EvanR> | like to get the data you had to rip it out, leaving aftermath |
| 05:51:49 | → | whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com) |
| 05:52:07 | <EvanR> | GetUpdate, SmashAndGrab, |
| 05:53:25 | <EvanR> | Loot |
| 06:12:35 | × | deadmarshal quits (~deadmarsh@95.38.231.124) (Ping timeout: 256 seconds) |
| 06:32:05 | × | aeka quits (~aeka@user/hiruji) (Ping timeout: 268 seconds) |
| 06:32:41 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 06:35:25 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 06:37:30 | → | aeka joins (~aeka@user/hiruji) |
| 06:43:25 | × | stef204 quits (~stef204@user/stef204) (Ping timeout: 240 seconds) |
| 06:44:54 | → | deadmarshal joins (~deadmarsh@95.38.231.124) |
| 06:49:01 | × | deadmarshal quits (~deadmarsh@95.38.231.124) (Ping timeout: 240 seconds) |
| 06:52:36 | × | YoungFrog quits (~youngfrog@2a02:a03f:c21b:f900:f484:3278:789d:d6a5) (Remote host closed the connection) |
| 06:52:56 | → | YoungFrog joins (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) |
| 06:53:04 | × | yauhsien_ quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 06:53:36 | → | yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
| 06:58:21 | → | acidjnk joins (~acidjnk@p200300d0c7271e2764e98499ffbb1b91.dip0.t-ipconnect.de) |
| 06:58:22 | → | acidjnk_new3 joins (~acidjnk@p200300d0c7271e2764e98499ffbb1b91.dip0.t-ipconnect.de) |
| 07:03:42 | × | yauhsien quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 07:04:13 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 240 seconds) |
| 07:04:16 | → | yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
| 07:10:34 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 07:12:28 | → | [_] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 07:14:19 | × | yauhsien quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 07:14:53 | → | yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
| 07:15:57 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds) |
| 07:19:53 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 07:20:25 | × | mvk quits (~mvk@2607:fea8:5cdd:f000::45db) (Quit: Going elsewhere) |
| 07:20:51 | → | mvk joins (~mvk@2607:fea8:5cdd:f000::45db) |
| 07:24:53 | × | little_mac quits (~little_ma@c-24-127-188-93.hsd1.mi.comcast.net) (Remote host closed the connection) |
| 07:24:56 | × | yauhsien quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 07:25:31 | → | yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
| 07:25:48 | × | wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Remote host closed the connection) |
| 07:25:56 | → | wyrd joins (~wyrd@gateway/tor-sasl/wyrd) |
| 07:30:24 | → | nhatanh02 joins (~satori@123.24.172.30) |
| 07:33:51 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 07:35:33 | × | yauhsien quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 07:36:08 | → | yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
| 07:38:02 | → | acidjnk_new joins (~acidjnk@p200300d0c7271e27182831a202be7205.dip0.t-ipconnect.de) |
| 07:38:32 | → | Brumaire joins (~quassel@81-64-14-121.rev.numericable.fr) |
| 07:39:25 | → | Guest49 joins (~Guest49@98.47.16.37) |
| 07:40:09 | ← | Guest49 parts (~Guest49@98.47.16.37) () |
| 07:41:09 | × | Hayek1 quits (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) (Ping timeout: 268 seconds) |
| 07:41:46 | × | acidjnk_new3 quits (~acidjnk@p200300d0c7271e2764e98499ffbb1b91.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
| 07:41:46 | × | acidjnk quits (~acidjnk@p200300d0c7271e2764e98499ffbb1b91.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
| 07:42:16 | × | Inst quits (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 256 seconds) |
| 07:42:47 | → | acidjnk joins (~acidjnk@p200300d0c7271e27182831a202be7205.dip0.t-ipconnect.de) |
| 07:44:11 | → | xmyst joins (~xmyst@ip5f5ac363.dynamic.kabel-deutschland.de) |
| 07:44:15 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4) |
| 07:46:11 | × | yauhsien quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 07:46:46 | → | yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
| 07:47:26 | × | acidjnk quits (~acidjnk@p200300d0c7271e27182831a202be7205.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 07:47:26 | × | acidjnk_new quits (~acidjnk@p200300d0c7271e27182831a202be7205.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 07:52:29 | <gentauro> | Hash: how many partitions do you have? Cos only 40 (ish) GB for home is pretty "small" |
| 07:53:28 | <gentauro> | I mean, I just had to do some `cloning` of my NVMe cos the `/nix/store` was eating up all my space … |
| 07:53:42 | → | Inst joins (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) |
| 07:53:58 | × | Inst quits (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Read error: Connection reset by peer) |
| 07:54:01 | gentauro | not the easiest task, but I was noting everything and I will probably throw a blogpost about it :) |
| 07:56:48 | × | yauhsien quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 07:57:23 | → | yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
| 07:58:36 | → | burnsidesLlama joins (~burnsides@dhcp168-013.wadham.ox.ac.uk) |
| 08:00:31 | → | coolnickname joins (uid531864@user/coolnickname) |
| 08:07:09 | → | deadmarshal joins (~deadmarsh@95.38.231.124) |
| 08:07:25 | × | yauhsien quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 08:08:00 | → | yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
| 08:10:57 | × | Garbanzo quits (~Garbanzo@2602:304:6eac:dc10::46) (Ping timeout: 240 seconds) |
| 08:10:57 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 08:11:06 | → | vglfr joins (~vglfr@88.155.96.35) |
| 08:13:39 | <Hash> | gentauro: I'm college student, not many money |
| 08:13:44 | <Hash> | gentauro: small disk |
| 08:13:58 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 08:14:01 | <Hash> | 128gb ssd |
| 08:14:48 | <Hash> | Yeah. |
| 08:14:52 | <Hash> | This is weird. |
| 08:14:59 | <Hash> | I have no idea what I was thinking |
| 08:15:25 | <Hash> | https://i.imgur.com/ko5BgNn.png |
| 08:15:39 | <Hash> | I don't know what on sdd4 |
| 08:15:45 | <Hash> | and ... hunh. |
| 08:16:23 | <Hash> | I could move /var out of / and into a sep partition and mount it. |
| 08:16:48 | <Hash> | I really just need to ge tmore funds, get more disks, and stuff |
| 08:18:02 | × | yauhsien quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 08:18:37 | → | yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
| 08:21:09 | → | Hayek1 joins (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) |
| 08:25:33 | × | Hayek1 quits (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) (Ping timeout: 268 seconds) |
| 08:28:39 | × | yauhsien quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 08:29:14 | → | yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
| 08:32:13 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 08:32:53 | × | xmyst quits (~xmyst@ip5f5ac363.dynamic.kabel-deutschland.de) (Quit: Connection closed) |
| 08:32:56 | → | vglfr joins (~vglfr@88.155.96.35) |
| 08:47:52 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 08:52:40 | × | coolnickname quits (uid531864@user/coolnickname) () |
| 08:54:07 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 08:56:09 | × | kramer2 quits (~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Session timeout)) |
| 09:00:08 | × | rednaZ[m] quits (~r3dnazmat@2001:470:69fc:105::ba70) (Quit: You have been kicked for being idle) |
| 09:00:08 | × | TomasJakl[m] quits (~jaklttchn@2001:470:69fc:105::a42) (Quit: You have been kicked for being idle) |
| 09:03:16 | × | burnsidesLlama quits (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection) |
| 09:05:05 | × | justIrresolute quits (~justache@user/justache) (Remote host closed the connection) |
| 09:06:04 | → | justIrresolute joins (~justache@user/justache) |
| 09:06:29 | → | thevishy joins (~Nishant@2405:201:f005:c007:40d9:4255:8f71:3678) |
| 09:07:14 | × | remexre quits (~remexre@user/remexre) (Remote host closed the connection) |
| 09:07:29 | → | remexre joins (~remexre@user/remexre) |
| 09:10:55 | → | Hayek1 joins (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) |
| 09:14:18 | → | max22- joins (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) |
| 09:15:30 | × | Hayek1 quits (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) (Ping timeout: 268 seconds) |
| 09:16:35 | → | notzmv joins (~zmv@user/notzmv) |
| 09:17:36 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 09:17:36 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 09:17:39 | allbery_b | is now known as geekosaur |
| 09:34:49 | → | burnsidesLlama joins (~burnsides@dhcp168-013.wadham.ox.ac.uk) |
| 09:35:06 | → | Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
| 09:36:43 | <[exa]> | Hash: what are you trying to achieve? 128GB SSD should be waaaaaaaaaaaaaay more than enough for any haskelling around, unless you like decide to build the whole stackage from scratch or so |
| 09:39:49 | × | burnsidesLlama quits (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
| 09:44:28 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 09:45:38 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 09:48:28 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 09:53:01 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
| 09:53:24 | × | shailangsa quits (~shailangs@host86-185-98-37.range86-185.btcentralplus.com) () |
| 10:01:07 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 10:01:24 | → | vglfr joins (~vglfr@88.155.96.35) |
| 10:01:26 | → | Hayek1 joins (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) |
| 10:01:26 | → | sprout_ joins (~quassel@2a02:a467:ccd6:1:d9b7:23d6:79dd:2e64) |
| 10:04:37 | × | sprout quits (~quassel@2a02:a467:ccd6:1:48c8:920f:83dd:ae34) (Ping timeout: 240 seconds) |
| 10:05:25 | × | Hayek1 quits (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) (Ping timeout: 240 seconds) |
| 10:06:48 | × | [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 10:12:28 | → | rito_ joins (~rito_gh@45.112.243.206) |
| 10:22:48 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 10:24:33 | × | Sgeo_ quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 10:26:02 | × | vglfr quits (~vglfr@88.155.96.35) (Ping timeout: 256 seconds) |
| 10:33:07 | → | burnsidesLlama joins (~burnsides@dhcp168-013.wadham.ox.ac.uk) |
| 10:33:21 | → | shailangsa joins (~shailangs@host86-185-98-37.range86-185.btcentralplus.com) |
| 10:34:47 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 10:36:14 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds) |
| 10:37:33 | Lord_of_Life_ | is now known as Lord_of_Life |
| 10:46:37 | × | razetime quits (~quassel@49.207.213.63) (Ping timeout: 240 seconds) |
| 10:49:11 | → | ircs joins (~ircs@2-111-85-72-cable.dk.customer.tdc.net) |
| 10:49:50 | → | Hayek1 joins (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) |
| 10:50:08 | → | lavaman joins (~lavaman@98.38.249.169) |
| 10:52:20 | × | ircs quits (~ircs@2-111-85-72-cable.dk.customer.tdc.net) (Read error: Connection reset by peer) |
| 10:53:57 | × | Hayek1 quits (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) (Ping timeout: 240 seconds) |
| 10:56:13 | → | coot joins (~coot@89-64-85-93.dynamic.chello.pl) |
| 10:56:52 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 11:00:17 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 11:01:28 | → | vglfr joins (~vglfr@88.155.96.35) |
| 11:01:49 | × | dsrt^ quits (~dsrt@wsip-98-188-246-242.mc.at.cox.net) (Ping timeout: 240 seconds) |
| 11:02:34 | → | dsrt^ joins (~dsrt@wsip-98-188-246-242.mc.at.cox.net) |
| 11:04:04 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 11:05:59 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 11:12:31 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 11:12:55 | → | vglfr joins (~vglfr@88.155.96.35) |
| 11:15:32 | → | cls joins (~cls@chalk.lubutu.com) |
| 11:16:27 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 11:19:37 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 11:19:43 | × | Guest3 quits (~Guest3@88.220.154.34) (Ping timeout: 256 seconds) |
| 11:20:22 | <cls> | This is a very newbie question, but I'm trying to cabal install ipa for https://hackage.haskell.org/package/ipa-0.3.1.1 and just get "there is no package named 'ipa'". I have run cabal update. Am I doing something wrong? |
| 11:20:23 | → | vglfr joins (~vglfr@88.155.96.35) |
| 11:21:30 | × | srk quits (~sorki@user/srk) (Remote host closed the connection) |
| 11:21:30 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 11:21:49 | → | srk joins (~sorki@user/srk) |
| 11:22:38 | → | vglfr joins (~vglfr@88.155.96.35) |
| 11:30:17 | → | acidjnk joins (~acidjnk@p200300d0c7271e27ecbeaa17067bd269.dip0.t-ipconnect.de) |
| 11:30:17 | → | acidjnk_new joins (~acidjnk@p200300d0c7271e27ecbeaa17067bd269.dip0.t-ipconnect.de) |
| 11:31:40 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 11:33:17 | → | zer0bitz joins (~zer0bitz@196.244.192.60) |
| 11:33:27 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 11:35:20 | <geekosaur> | seems to work here |
| 11:39:13 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 11:39:25 | → | vglfr joins (~vglfr@88.155.96.35) |
| 11:39:31 | <cls> | I think the issue was because I had an out of date version of GHC. Very out of date (7.10.3)! I've got a fresh install with GHCup and it seems to be installing now. |
| 11:40:12 | <geekosaur> | ghc shouldn't affect finding the package. maybe you got a newer cabal with it? |
| 11:40:26 | → | antony joins (~The_viole@203.77.49.232) |
| 11:40:39 | <cls> | Yes, it came with a new cabal as well |
| 11:41:15 | → | razetime joins (~quassel@49.207.213.63) |
| 11:49:31 | jeffz` | is now known as jeffz |
| 11:49:31 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 11:49:45 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
| 11:50:17 | → | vglfr joins (~vglfr@88.155.96.35) |
| 11:50:59 | × | razetime quits (~quassel@49.207.213.63) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 11:51:36 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 256 seconds) |
| 11:52:44 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 11:53:39 | → | vglfr joins (~vglfr@88.155.96.35) |
| 11:55:44 | → | Hayek1 joins (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) |
| 11:55:45 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 11:56:13 | → | Jing joins (~hedgehog@240e:390:7c53:a7e1:24aa:cde6:528:d0da) |
| 11:56:54 | → | vglfr joins (~vglfr@88.155.96.35) |
| 12:00:09 | × | Hayek1 quits (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) (Ping timeout: 268 seconds) |
| 12:03:49 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 12:04:58 | → | vglfr joins (~vglfr@88.155.96.35) |
| 12:09:15 | × | x88x88x quits (~x88x88x@149.28.53.172) (Remote host closed the connection) |
| 12:10:06 | → | x88x88x joins (~x88x88x@149.28.53.172) |
| 12:11:35 | × | yauhsien quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 12:12:01 | → | __monty__ joins (~toonn@user/toonn) |
| 12:12:10 | → | yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
| 12:12:39 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 12:13:28 | → | vglfr joins (~vglfr@88.155.96.35) |
| 12:15:25 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 12:17:21 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 12:21:03 | → | xkuru joins (~xkuru@user/xkuru) |
| 12:21:04 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 12:21:15 | → | lavaman joins (~lavaman@98.38.249.169) |
| 12:22:18 | → | vglfr joins (~vglfr@88.155.96.35) |
| 12:22:37 | × | talismanick quits (~talismani@2601:644:8500:8350::256c) (Ping timeout: 240 seconds) |
| 12:24:29 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 12:25:25 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
| 12:25:44 | → | vglfr joins (~vglfr@88.155.96.35) |
| 12:27:49 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 12:28:41 | → | vglfr joins (~vglfr@88.155.96.35) |
| 12:31:07 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 12:31:22 | → | vglfr joins (~vglfr@88.155.96.35) |
| 12:34:31 | × | Tuplanolla quits (~Tuplanoll@91-159-68-11.elisa-laajakaista.fi) (Ping timeout: 256 seconds) |
| 12:35:47 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 12:35:48 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 12:37:06 | → | vglfr joins (~vglfr@88.155.96.35) |
| 12:38:51 | × | zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection) |
| 12:40:23 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 12:41:36 | × | yauhsien quits (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 12:42:11 | → | yauhsien joins (~yauhsien@118-167-43-90.dynamic-ip.hinet.net) |
| 12:42:38 | → | Hanicef joins (~gustaf@81-229-9-108-no92.tbcn.telia.com) |
| 12:43:49 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 12:49:49 | → | Tuplanolla joins (~Tuplanoll@91-159-69-16.elisa-laajakaista.fi) |
| 12:52:49 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 12:53:31 | → | vglfr joins (~vglfr@88.155.96.35) |
| 12:53:57 | × | nhatanh02 quits (~satori@123.24.172.30) (Ping timeout: 240 seconds) |
| 12:55:23 | → | Hayek1 joins (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) |
| 12:59:37 | × | Hayek1 quits (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) (Ping timeout: 240 seconds) |
| 13:02:17 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 13:02:30 | → | vglfr joins (~vglfr@88.155.96.35) |
| 13:04:33 | × | max22- quits (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Ping timeout: 256 seconds) |
| 13:06:58 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 13:07:37 | → | vglfr joins (~vglfr@88.155.96.35) |
| 13:10:43 | × | coot quits (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot) |
| 13:10:45 | × | Jing quits (~hedgehog@240e:390:7c53:a7e1:24aa:cde6:528:d0da) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 13:11:13 | → | coot joins (~coot@89-64-85-93.dynamic.chello.pl) |
| 13:11:55 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 13:12:04 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 13:12:04 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 13:12:04 | → | wroathe joins (~wroathe@user/wroathe) |
| 13:12:05 | → | vglfr joins (~vglfr@88.155.96.35) |
| 13:13:17 | → | ProfSimm joins (~ProfSimm@87.227.196.109) |
| 13:14:21 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 13:14:32 | → | vglfr joins (~vglfr@88.155.96.35) |
| 13:16:09 | → | zincy joins (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) |
| 13:16:09 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 13:16:37 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
| 13:17:07 | → | vglfr joins (~vglfr@88.155.96.35) |
| 13:17:37 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 13:19:17 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 13:19:58 | → | vglfr joins (~vglfr@88.155.96.35) |
| 13:20:13 | → | Jing joins (~hedgehog@240e:390:7c53:a7e1:7c3e:33e9:a263:3716) |
| 13:22:13 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 13:22:53 | → | vglfr joins (~vglfr@88.155.96.35) |
| 13:24:57 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 13:25:37 | × | mstksg quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 240 seconds) |
| 13:25:42 | → | vglfr joins (~vglfr@88.155.96.35) |
| 13:27:11 | → | Hayek1 joins (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) |
| 13:27:52 | → | mstksg joins (~jle`@cpe-23-240-75-236.socal.res.rr.com) |
| 13:28:23 | → | jackson99 joins (~bc8147f2@cerf.good1.com) |
| 13:30:13 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 13:30:23 | × | zincy quits (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Remote host closed the connection) |
| 13:30:30 | → | vglfr joins (~vglfr@88.155.96.35) |
| 13:32:16 | → | lavaman joins (~lavaman@98.38.249.169) |
| 13:32:42 | × | SummerSonw quits (~The_viole@203.77.49.232) (Quit: Leaving) |
| 13:34:13 | × | Hayek1 quits (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) (Ping timeout: 240 seconds) |
| 13:34:32 | × | burnsidesLlama quits (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection) |
| 13:41:47 | → | n3rdy1 joins (~n3rdy1@2600:1700:4570:3480::41) |
| 13:41:49 | × | xff0x quits (~xff0x@2001:1a81:52d4:9900:80b8:248c:472c:34e) (Ping timeout: 240 seconds) |
| 13:42:54 | → | xff0x joins (~xff0x@2001:1a81:52d4:9900:4d46:915d:4480:7a51) |
| 13:44:30 | × | x88x88x quits (~x88x88x@149.28.53.172) (Quit: ZNC - https://znc.in) |
| 13:52:53 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 13:53:28 | → | slowButPresent joins (~slowButPr@user/slowbutpresent) |
| 13:54:02 | → | vglfr joins (~vglfr@88.155.96.35) |
| 13:55:21 | → | zincy joins (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) |
| 13:55:41 | → | son0p joins (~ff@181.136.122.143) |
| 14:00:37 | × | whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 14:01:03 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 14:02:13 | → | x88x88x joins (~x88x88x@2001:19f0:5:39a8:5400:3ff:feb6:73cb) |
| 14:02:24 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 14:02:58 | → | CiaoSen joins (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 14:05:11 | × | deadmarshal quits (~deadmarsh@95.38.231.124) (Ping timeout: 256 seconds) |
| 14:07:44 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 14:07:58 | → | vglfr joins (~vglfr@88.155.96.35) |
| 14:08:27 | → | burnsidesLlama joins (~burnsides@dhcp168-013.wadham.ox.ac.uk) |
| 14:09:15 | → | euandreh joins (~euandreh@191.181.59.160) |
| 14:12:37 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 14:12:37 | × | burnsidesLlama quits (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
| 14:13:19 | → | vglfr joins (~vglfr@88.155.96.35) |
| 14:14:36 | → | nhatanh02 joins (~satori@123.24.172.30) |
| 14:15:25 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 14:15:49 | × | zincy quits (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Ping timeout: 268 seconds) |
| 14:15:57 | → | uam joins (uid360535@id-360535.hampstead.irccloud.com) |
| 14:16:49 | → | vglfr joins (~vglfr@88.155.96.35) |
| 14:18:07 | → | cemguresci joins (~cemguresc@2001:a61:11ff:a001:b826:a072:7137:d00a) |
| 14:18:12 | × | cemguresci quits (~cemguresc@2001:a61:11ff:a001:b826:a072:7137:d00a) (Client Quit) |
| 14:19:01 | × | vglfr quits (~vglfr@88.155.96.35) (Read error: Connection reset by peer) |
| 14:19:12 | → | vglfr joins (~vglfr@88.155.96.35) |
| 14:20:01 | → | Hayek1 joins (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) |
| 14:21:30 | × | jackson99 quits (~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Ping timeout)) |
| 14:21:46 | × | jassob quits (~jassob@h-155-4-71-72.A785.priv.bahnhof.se) (Ping timeout: 260 seconds) |
| 14:22:12 | × | xsperry quits (~xs@user/xsperry) (Remote host closed the connection) |
| 14:22:13 | → | max22- joins (~maxime@2a01cb088335980006a2e176d919440a.ipv6.abo.wanadoo.fr) |
| 14:22:42 | → | jassob joins (~jassob@h-155-4-71-72.A785.priv.bahnhof.se) |
| 14:22:52 | × | Hanicef quits (~gustaf@81-229-9-108-no92.tbcn.telia.com) (Quit: leaving) |
| 14:24:29 | × | Hayek1 quits (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) (Ping timeout: 252 seconds) |
| 14:28:37 | × | n3rdy1 quits (~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 240 seconds) |
| 14:30:54 | → | Hayek1 joins (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) |
| 14:33:40 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
| 14:34:39 | × | rito_ quits (~rito_gh@45.112.243.206) (Ping timeout: 256 seconds) |
| 14:39:14 | × | dsrt^ quits (~dsrt@wsip-98-188-246-242.mc.at.cox.net) (Remote host closed the connection) |
| 14:39:17 | → | zincy joins (~zincy@host86-151-99-97.range86-151.btcentralplus.com) |
| 14:40:07 | × | antony quits (~The_viole@203.77.49.232) (Quit: Leaving) |
| 14:41:42 | → | n3rdy1 joins (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) |
| 14:41:47 | → | moshet joins (~moshet@179.33.156.20) |
| 14:42:44 | → | shapr joins (~user@2601:7c0:c202:5190:6367:969d:31ac:68f) |
| 14:43:01 | × | acidjnk quits (~acidjnk@p200300d0c7271e27ecbeaa17067bd269.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 14:43:01 | × | acidjnk_new quits (~acidjnk@p200300d0c7271e27ecbeaa17067bd269.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 14:43:25 | × | zincy quits (~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Ping timeout: 240 seconds) |
| 14:43:39 | → | skreli joins (~skreli@cpe-72-134-91-230.natsow.res.rr.com) |
| 14:44:21 | × | skreli quits (~skreli@cpe-72-134-91-230.natsow.res.rr.com) (Quit: leaving) |
| 14:45:16 | × | coot quits (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot) |
| 14:45:40 | → | zincy joins (~zincy@host86-151-99-97.range86-151.btcentralplus.com) |
| 14:48:15 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 14:49:58 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 14:50:32 | → | bontaq joins (~user@ool-45779fe5.dyn.optonline.net) |
| 14:50:48 | → | hud joins (~hud@uwyo-129-72-161-67.uwyo.edu) |
| 14:53:44 | <hud> | hey all, not sure if this is the right place to ask about build dependencies, if I run `cabal repl -b parsec` it |
| 14:54:16 | <hud> | s able to find the package, but if I include that in parsec in `build-depends` of my .cabal file it cant be found |
| 14:55:18 | <jneira[m]> | hmm it should, could you post the .cabal file? |
| 14:55:19 | <[exa]> | just to be sure -- "if I include that _in parsec_ in build-depends" -- there's a parsec section? |
| 14:55:29 | <[exa]> | +1 please pastebin |
| 14:55:56 | <[exa]> | also preferably the error message |
| 14:56:29 | <hud> | https://paste.tomsmeding.com/wCBuVd60 |
| 14:56:46 | <hud> | oh I can add multiple files hold on |
| 14:58:11 | <[exa]> | that looks m'kay, let's see the error :] |
| 14:58:46 | <hud> | Oh no wait I think it's just saying its redundant - all good ! |
| 14:59:59 | <hud> | https://paste.tomsmeding.com/woIFV49V for completion - all good |
| 15:01:10 | <[exa]> | yeah it's telling you that you should write actual code using it :D |
| 15:02:59 | × | zincy quits (~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Ping timeout: 256 seconds) |
| 15:03:41 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 15:03:41 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 15:03:41 | → | wroathe joins (~wroathe@user/wroathe) |
| 15:04:36 | → | burnsidesLlama joins (~burnsides@dhcp168-013.wadham.ox.ac.uk) |
| 15:09:22 | × | burnsidesLlama quits (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 256 seconds) |
| 15:09:56 | × | euandreh quits (~euandreh@191.181.59.160) (Ping timeout: 256 seconds) |
| 15:11:36 | → | waleee joins (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) |
| 15:11:54 | × | Brumaire quits (~quassel@81-64-14-121.rev.numericable.fr) (Read error: Connection reset by peer) |
| 15:15:09 | × | nunggu quits (~q@gateway/tor-sasl/nunggu) (Ping timeout: 276 seconds) |
| 15:16:26 | → | burnsidesLlama joins (~burnsides@dhcp168-013.wadham.ox.ac.uk) |
| 15:16:54 | → | nunggu joins (~q@gateway/tor-sasl/nunggu) |
| 15:17:29 | × | aouestbillie quits (~gallup@192-222-138-215.qc.cable.ebox.net) (Remote host closed the connection) |
| 15:17:29 | × | ouestbillie quits (~gallup@192-222-138-215.qc.cable.ebox.net) (Remote host closed the connection) |
| 15:21:49 | → | ouestbillie joins (~gallup@192-222-138-215.qc.cable.ebox.net) |
| 15:23:04 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 15:23:33 | → | ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
| 15:32:53 | → | zincy joins (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) |
| 15:34:40 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 15:34:56 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 15:35:49 | × | TonyStone quits (~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com) (Remote host closed the connection) |
| 15:36:57 | × | zincy quits (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Ping timeout: 240 seconds) |
| 15:37:52 | → | xsperry joins (~xs@user/xsperry) |
| 15:40:34 | → | xb0o2 joins (~xb0o2@user/xb0o2) |
| 15:41:01 | × | Hayek1 quits (~xxx@2603-8000-b401-6099-6db0-07e1-7146-9aa1.res6.spectrum.com) (Ping timeout: 240 seconds) |
| 15:42:16 | → | stef204 joins (~stef204@user/stef204) |
| 15:43:57 | × | shapr quits (~user@2601:7c0:c202:5190:6367:969d:31ac:68f) (Ping timeout: 240 seconds) |
| 15:45:27 | <albet70> | why IOT does not exit? |
| 15:45:39 | <Hecate> | albet70: what |
| 15:45:44 | <Hecate> | what do you mean by IOT? |
| 15:45:46 | <geekosaur> | how could it exist? |
| 15:45:52 | <Hecate> | International Organisation of Truffles? |
| 15:46:15 | <albet70> | like the other transfer |
| 15:46:20 | <albet70> | MaybeT |
| 15:47:12 | <hpc> | albet70: try writing it |
| 15:47:36 | → | zaquest joins (~notzaques@5.130.79.72) |
| 15:47:40 | → | TonyStone joins (~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com) |
| 15:47:56 | → | euandreh joins (~euandreh@2804:14c:33:9fe5:f755:55d9:216b:76f6) |
| 15:48:34 | <albet70> | IOT m (IO a) |
| 15:48:51 | <Hecate> | what :'') |
| 15:49:59 | <Rembane> | International Truffles <3 |
| 15:50:13 | <Rembane> | albet70: How many IOT could you layer on top of each other? |
| 15:50:37 | <geekosaur> | and what would this accomplish? |
| 15:50:53 | <albet70> | there's an evil term I think, Inner Orgasme of ... |
| 15:50:55 | <geekosaur> | think also about things like ordering of I/O actions |
| 15:51:20 | → | zincy joins (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) |
| 15:51:24 | <hpc> | also try not to accidentally imagine things like MaybeT IO while you're working it out ;) |
| 15:51:40 | <geekosaur> | but "try writing it" I think meant try implementing something that would work as e.g. IOT (State Int a) |
| 15:51:54 | <hpc> | IOT (State Int) a |
| 15:52:02 | <hpc> | data IOT m a = ??? |
| 15:52:02 | <geekosaur> | yeh, sorry |
| 15:52:22 | <hpc> | instance MonadTrans IOT where ??? |
| 15:52:29 | <hpc> | see if you can fill in those blanks |
| 15:53:13 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 15:53:15 | <hpc> | for comparison, try filling in the same blanks for MaybeT, without looking at the existing definition |
| 15:53:46 | <hpc> | or IdentityT if you like writing code that does nothing :D |
| 15:54:12 | <albet70> | MaybeT m Maybe a |
| 15:57:32 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
| 15:58:51 | <albet70> | f :: a -> Either a b; traverse f [a]; if that f return Left a, it will return Left a as result, so I wonder when f doing some IO, and how it break and return when IO failed |
| 16:00:07 | × | Ollie[m] quits (~ollieocha@2001:470:69fc:105::41a5) (Quit: You have been kicked for being idle) |
| 16:00:12 | × | fsckskye[m] quits (~kmatrixth@2001:470:69fc:105::1:3b2f) (Quit: You have been kicked for being idle) |
| 16:00:17 | <albet70> | for example, f take input from that list and check the database with that input and it may fail |
| 16:00:18 | × | AlainJourez[m] quits (~sherekahn@2001:470:69fc:105::1:4a71) (Quit: You have been kicked for being idle) |
| 16:00:31 | → | Ollie[m] joins (~ollieocha@2001:470:69fc:105::41a5) |
| 16:00:43 | → | fsckskye[m] joins (~kmatrixth@2001:470:69fc:105::1:3b2f) |
| 16:00:45 | ← | fsckskye[m] parts (~kmatrixth@2001:470:69fc:105::1:3b2f) () |
| 16:00:55 | → | AlainJourez[m] joins (~sherekahn@2001:470:69fc:105::1:4a71) |
| 16:00:58 | <albet70> | when it failed how to break the next action |
| 16:02:39 | <hpc> | :t traverse |
| 16:02:40 | <lambdabot> | (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b) |
| 16:03:27 | <hpc> | the effects of f will show up in the result |
| 16:04:10 | <hpc> | since the result is (IO [b]), it just does all the (f a) stuff in sequence |
| 16:04:32 | <hpc> | when t = [], it's just each element from start to end of the list |
| 16:04:58 | <hpc> | for other Traversable types, it could be some more interesting ordering |
| 16:08:03 | × | zincy quits (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Ping timeout: 268 seconds) |
| 16:09:08 | <albet70> | "hpc :since the result is (IO [b]), it just does all the (f a) stuff in sequence", but when IO b failed, I hope it breaks the list and return, not to the end of the list |
| 16:09:11 | × | YoungFrog quits (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) (Quit: ZNC 1.7.x-git-3-96481995 - https://znc.in) |
| 16:09:44 | → | zincy joins (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) |
| 16:10:30 | <hpc> | it will, if f fails in a way that short-circuits |
| 16:10:34 | <albet70> | in other languages, do IO in a for statement, and use break or return to brea the list |
| 16:10:46 | → | YoungFrog joins (~youngfrog@2a02:a03f:c21b:f900:f89b:2c73:97b1:7ba3) |
| 16:11:31 | <albet70> | but IO doesn't have the effect of short circuit |
| 16:12:03 | <albet70> | Left a or Nothing can do short circuit |
| 16:12:19 | × | Jing quits (~hedgehog@240e:390:7c53:a7e1:7c3e:33e9:a263:3716) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 16:13:34 | <Rembane> | albet70: If you use throwIO IO can shortcircuit. |
| 16:13:45 | <Rembane> | I wonder if this works... |
| 16:13:56 | × | zincy quits (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Ping timeout: 252 seconds) |
| 16:14:07 | <albet70> | "🟢 Rembane :albet70: If you use throwIO IO can shortcircuit.", that's raiseError in some languages |
| 16:14:17 | geekosaur | wonders if spoon can do that |
| 16:14:35 | <albet70> | what if f :: a -> IO b -> Either a b? |
| 16:14:40 | <Rembane> | albet70: It is indeed. :) |
| 16:16:13 | <Rembane> | > throwIO Overflow |
| 16:16:15 | <lambdabot> | error: |
| 16:16:15 | <lambdabot> | • No instance for (Typeable a0) |
| 16:16:15 | <lambdabot> | arising from a use of ‘show_M87663382183998972258’ |
| 16:16:17 | <Rembane> | Ach. |
| 16:16:43 | <geekosaur> | % throwIO Overflow |
| 16:16:43 | <yahb> | geekosaur: *** Exception: arithmetic overflow |
| 16:17:26 | <albet70> | f :: a -> IO b -> Either a b; traverse f [a]; would this do the trick? if IO b failed, short circuit? |
| 16:17:27 | <Rembane> | There we go. yahb > lambdabot |
| 16:18:56 | → | coot joins (~coot@89-64-85-93.dynamic.chello.pl) |
| 16:19:43 | → | pragma- joins (~chaos@user/pragmatic-chaos) |
| 16:20:16 | → | Jing joins (~hedgehog@240e:390:7c53:a7e1:3074:63b1:2e6b:fa59) |
| 16:21:01 | × | kaph quits (~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Ping timeout: 240 seconds) |
| 16:23:07 | <albet70> | can we do some IO in f :: a-> Either a b? |
| 16:24:00 | <albet70> | in Either do notation , can we print something? |
| 16:24:35 | <geekosaur> | no |
| 16:25:27 | <albet70> | no the both? or only the last? |
| 16:25:28 | <EvanR> | that's not purely functional, sorry |
| 16:25:38 | <geekosaur> | no to both |
| 16:25:42 | × | uam quits (uid360535@id-360535.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 16:25:45 | <geekosaur> | do notation is not what enables I/O |
| 16:25:51 | EvanR | points at the "purely functional" sign above the door |
| 16:25:57 | <albet70> | and in EitherT? |
| 16:26:12 | <geekosaur> | % putStrLn "hi" >> putStrLn "bye" >> return () |
| 16:26:12 | <yahb> | geekosaur: hi; bye |
| 16:26:29 | <EvanR> | ExceptT e IO |
| 16:26:42 | <EvanR> | is a monad |
| 16:26:51 | <EvanR> | it can do IO with liftIO |
| 16:27:23 | <albet70> | but ExceptT can't do short circuit |
| 16:27:33 | <EvanR> | that's what ExceptT ... does |
| 16:27:59 | <EvanR> | it's basically EitherT |
| 16:28:13 | <albet70> | can it? |
| 16:28:22 | <EvanR> | it was just a branding issue back in the day |
| 16:29:08 | <EvanR> | it's one of many ways to short circuit |
| 16:29:21 | <EvanR> | cancel a computation early |
| 16:29:43 | <albet70> | so f :: a -> EitherT a m b; traverse f [a]; would short circuit? |
| 16:29:57 | <albet70> | EitherT a IO b |
| 16:30:17 | <EvanR> | just saying I think ExceptT is more idiomatic now for that |
| 16:30:33 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 16:30:45 | <EvanR> | and yes |
| 16:31:19 | <EvanR> | but to break out of a for loop purposes there is probably a better way |
| 16:36:10 | × | Jing quits (~hedgehog@240e:390:7c53:a7e1:3074:63b1:2e6b:fa59) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 16:36:16 | <albet70> | > let f x = do { liftIO print x; if (x>3) then EithertT Left x else return x } in traverse f [1..6] |
| 16:36:17 | <lambdabot> | error: |
| 16:36:17 | <lambdabot> | Data constructor not in scope: |
| 16:36:17 | <lambdabot> | EithertT :: (a1 -> Either a1 b0) -> b1 -> m b1 |
| 16:36:36 | <EvanR> | :k ExceptT |
| 16:36:37 | <lambdabot> | * -> (* -> *) -> * -> * |
| 16:37:37 | × | moshet quits (~moshet@179.33.156.20) (Ping timeout: 256 seconds) |
| 16:37:37 | <EvanR> | :t runExceptT |
| 16:37:38 | <lambdabot> | ExceptT e m a -> m (Either e a) |
| 16:38:31 | <EvanR> | 😎 |
| 16:38:44 | <albet70> | in Either, how the 'return x' know it suppose to be Left a or Right a? |
| 16:38:58 | <EvanR> | convention says Right is pure |
| 16:39:15 | → | moshet joins (~moshet@179.33.156.20) |
| 16:39:28 | <EvanR> | Left is an effect |
| 16:39:32 | <albet70> | "EvanR :convention says Right is pure", so Left isn't pure? |
| 16:39:43 | <EvanR> | Left is interpreted as an effect |
| 16:39:56 | <EvanR> | namely, short circuit |
| 16:40:03 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 16:41:20 | <EvanR> | by pure I meant the API, pure :: a -> Either e a |
| 16:41:33 | <EvanR> | which is the same as return |
| 16:41:43 | <albet70> | EvanR the notorious Cont can do short circuit, right? |
| 16:42:38 | <EvanR> | CPS can do short circuit, and Cont lets you compose CPS programs |
| 16:43:02 | <EvanR> | if you don't want to do it manually |
| 16:43:39 | <EvanR> | either way, black magic |
| 16:44:17 | × | vysn quits (~vysn@user/vysn) (Ping timeout: 240 seconds) |
| 16:44:35 | <albet70> | black magic in haskell, not in others? |
| 16:44:40 | → | zincy joins (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) |
| 16:44:48 | <EvanR> | not really a haskell thing |
| 16:44:53 | <albet70> | or related to lazy strategy |
| 16:45:15 | <EvanR> | continuations is (was?) a big deal in lisps |
| 16:45:39 | <EvanR> | rather, using them in non trivial ways |
| 16:46:10 | <EvanR> | control flow shenanigans |
| 16:46:21 | <albet70> | but in haskell in Cont, capture the fixed point can do loop, this depends on lazy strategy, other languages can't do ir |
| 16:46:27 | <albet70> | do it |
| 16:46:43 | <EvanR> | by itself, just lazy evaluation lets you do many things, Cont or not |
| 16:47:03 | <EvanR> | CPS or not |
| 16:48:07 | <albet70> | the funny thing is lisp use macro to do capture continuation thing |
| 16:48:14 | <albet70> | not the function |
| 16:49:09 | <albet70> | and only a few languages support macro |
| 16:49:44 | <EvanR> | all languages support C preprocessor xD |
| 16:49:59 | <EvanR> | enjoy |
| 16:51:58 | <albet70> | hehe it sounds like all languages can turn to machine languages or assembly languages |
| 16:55:03 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 16:55:59 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 16:57:44 | <EvanR> | myLoop k = do{ tired <- ... work work work ...; if tired then k else myLoop k } |
| 17:02:07 | <albet70> | "EvanR :myLoop k = do{ tired <- ... work work work ...; if tired then k else myLoop k }", myLoop k :: ? |
| 17:02:19 | × | zincy quits (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Ping timeout: 268 seconds) |
| 17:03:38 | → | Franciman joins (~Franciman@mx1.fracta.dev) |
| 17:03:40 | ← | Franciman parts (~Franciman@mx1.fracta.dev) (WeeChat 3.4) |
| 17:04:36 | <EvanR> | :t fix \myLoop k -> do { tired <- return False; if tired then k else myLoop k } |
| 17:04:36 | <lambdabot> | error: |
| 17:04:36 | <lambdabot> | Unexpected lambda expression in function application: |
| 17:04:36 | <lambdabot> | \ myLoop k |
| 17:04:45 | <EvanR> | :t fix $ \myLoop k -> do { tired <- return False; if tired then k else myLoop k } |
| 17:04:46 | <lambdabot> | Monad m => m b -> m b |
| 17:05:04 | <EvanR> | k : Monad m => m b |
| 17:06:35 | <EvanR> | k breaks out of the loop |
| 17:12:27 | → | shapr joins (~user@2601:7c0:c202:5190:232c:3331:7d0c:8370) |
| 17:12:36 | → | kaph joins (~kaph@net-2-38-107-19.cust.vodafonedsl.it) |
| 17:16:21 | <albet70> | fix depends lazy strategy, can u do it in python or js? |
| 17:16:50 | <EvanR> | not a fix thing |
| 17:16:59 | <hpc> | you can write fix for functions, but not for other types of data |
| 17:17:07 | <hpc> | you can do the myLoop thing, but not |
| 17:17:10 | <hpc> | > fix (1:) |
| 17:17:12 | <lambdabot> | [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1... |
| 17:17:20 | <EvanR> | :t let myLoop k = do { tired <- return False; if tired then k else myLoop k } in myLoop |
| 17:17:21 | <lambdabot> | Monad m => m b -> m b |
| 17:17:29 | <EvanR> | no you can't do that in javascript |
| 17:18:49 | <EvanR> | how to do things in javascript is a whole nother channel |
| 17:20:17 | × | thevishy quits (~Nishant@2405:201:f005:c007:40d9:4255:8f71:3678) (Quit: Leaving) |
| 17:20:42 | → | zincy joins (~zincy@host86-151-99-97.range86-151.btcentralplus.com) |
| 17:24:57 | × | zincy quits (~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Ping timeout: 240 seconds) |
| 17:25:18 | <int-e> | EvanR: may I suggest blink >> myLoop k for the last bit ;) |
| 17:26:02 | <EvanR> | what meme is this |
| 17:26:16 | <[itchyjunk]> | https://bpa.st/2O4A |
| 17:26:43 | <[itchyjunk]> | Almost everything i am writing seems to involve writing a helper function then composing it with one of the functions in question :x |
| 17:27:22 | <EvanR> | if you're lucky the helper function is a composition of existing functions |
| 17:27:28 | <int-e> | [itchyjunk]: \x xs -> xs ++ [x] <-- you don't have to name your little helpers |
| 17:27:53 | → | s2k joins (~textual@122.172.234.134) |
| 17:27:53 | <[itchyjunk]> | ah right, i keep forgetting i can do that |
| 17:27:54 | <int-e> | now... can we do that with foldr without making it quadratic time? :-P |
| 17:28:17 | <[itchyjunk]> | Hopefully the answer is no (or maybe yes if you are not me). |
| 17:28:37 | → | econo joins (uid147250@user/econo) |
| 17:28:50 | <EvanR> | foldr can do anything |
| 17:28:51 | → | jackson99 joins (~bc8147f2@cerf.good1.com) |
| 17:28:55 | <int-e> | (somewhat hard, it's essentially the "implement foldl in terms of foldr" exercise, and that involves picking the right return type for the foldr) |
| 17:28:59 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 17:29:10 | <EvanR> | because that is the only way to access a list, it turns out |
| 17:29:15 | <[itchyjunk]> | can it be applied to itself? answer is probably yet but i don't think i ma ready for it |
| 17:29:36 | <jackson99> | [itchyjunk] you will have an easier time implementing reverse with foldl |
| 17:29:36 | <[itchyjunk]> | hmm how do you mean that's the only way to access a list? :o |
| 17:30:01 | <[itchyjunk]> | jackson99, yeah i think since foldr gave an identity, same thing with foldl might return a reverse function? |
| 17:30:08 | <[itchyjunk]> | foldl (:) [] xs ? |
| 17:30:13 | <jackson99> | close |
| 17:30:16 | <[itchyjunk]> | :< |
| 17:30:21 | <jackson99> | you just have to massage (:) so that types check |
| 17:30:28 | <[itchyjunk]> | hmmm |
| 17:30:31 | <jackson99> | :t foldl |
| 17:30:32 | <lambdabot> | Foldable t => (b -> a -> b) -> b -> t a -> b |
| 17:31:19 | <jackson99> | accumulator (list in your case) is the first argument, element of the list is the second argument |
| 17:32:03 | → | zincy joins (~zincy@host86-151-99-97.range86-151.btcentralplus.com) |
| 17:32:24 | <[itchyjunk]> | ah i see |
| 17:34:13 | ← | pragma- parts (~chaos@user/pragmatic-chaos) (Bye!) |
| 17:34:48 | <[itchyjunk]> | wait `foldl (:) [] xs` where lets say xs = [1..5] would be (:) applies to 5 and [] so `(:) 5 []` right? |
| 17:35:07 | <EvanR> | :t foldl (:) [] [1..5] |
| 17:35:08 | <lambdabot> | error: |
| 17:35:08 | <lambdabot> | • Occurs check: cannot construct the infinite type: a ~ [a] |
| 17:35:08 | <lambdabot> | Expected type: [a] -> [a] -> [a] |
| 17:35:09 | <EvanR> | bzzzz |
| 17:35:39 | <[itchyjunk]> | :t (:) |
| 17:35:40 | <lambdabot> | a -> [a] -> [a] |
| 17:35:53 | <EvanR> | first arg to foldl visitor is the accumulator |
| 17:36:14 | <EvanR> | which should be a reversed list |
| 17:36:33 | × | zincy quits (~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Ping timeout: 256 seconds) |
| 17:36:57 | <jackson99> | > foldl _ [] [] |
| 17:37:00 | <lambdabot> | error: |
| 17:37:02 | <lambdabot> | • Found hole: _ :: [a] -> a0 -> [a] |
| 17:37:04 | <lambdabot> | Where: ‘a0’ is an ambiguous type variable |
| 17:37:10 | <[itchyjunk]> | oh `foldr f base list` is `f lastElement base` but for `foldl f base list` its `f base lastElement` ? |
| 17:37:20 | <jackson99> | can you write that function? [a] -> a -> [a] |
| 17:37:23 | <jackson99> | using (:) |
| 17:37:55 | <jackson99> | [itchyjunk] yes. base is usually called accumulator |
| 17:38:21 | × | s2k quits (~textual@122.172.234.134) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 17:38:52 | <EvanR> | no, foldl f base list becomes f everythingDone [] |
| 17:39:00 | <EvanR> | base is buried in a pile of computation by that point |
| 17:39:18 | <jackson99> | it is base on first call |
| 17:39:42 | <EvanR> | in foldl' yes |
| 17:40:06 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds) |
| 17:41:02 | <EvanR> | everythingDone is the reversed list in this case |
| 17:41:28 | <EvanR> | the 'first call' never happened yet |
| 17:42:05 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 17:43:05 | <jackson99> | I'm not sure all this is helpful to someone trying to write [a] -> a -> [a] function |
| 17:43:57 | × | TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 240 seconds) |
| 17:43:59 | <EvanR> | well foldl f base list becoming f base LastElement is wrong |
| 17:44:17 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 17:44:20 | <EvanR> | at least |
| 17:45:09 | <[itchyjunk]> | hmm, foldl takes the second argument and first element of the list so in `foldl (go2) [] [1..5]`, i take [] and 1 and does `go2 [] x` where go2 xs x = x : xs |
| 17:45:13 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 17:45:18 | × | aplainze1akind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) |
| 17:45:49 | <EvanR> | yeah |
| 17:45:53 | <[itchyjunk]> | 1:[] -> 2:1:[] |
| 17:45:54 | <[itchyjunk]> | hmmm |
| 17:46:11 | <jackson99> | > let go2 xs x = x : xs in foldl go2 [] [1..5] |
| 17:46:13 | <lambdabot> | [5,4,3,2,1] |
| 17:46:19 | <jackson99> | we have a function for this btw |
| 17:46:21 | <jackson99> | @src flip |
| 17:46:21 | <lambdabot> | flip f x y = f y x |
| 17:46:21 | <[itchyjunk]> | ahh my code had a typo |
| 17:46:27 | <[itchyjunk]> | i wrote foldr instead of foldl |
| 17:46:39 | <jackson99> | > foldl (flip (:)) [1..5] |
| 17:46:41 | <lambdabot> | <[Integer] -> [Integer]> |
| 17:46:46 | <jackson99> | > foldl (flip (:)) [] [1..5] |
| 17:46:47 | <lambdabot> | [5,4,3,2,1] |
| 17:46:48 | <EvanR> | foldl and foldr are similarly named, but wildly different |
| 17:47:00 | <EvanR> | don't put them in the same drawer in your mind xD |
| 17:47:09 | <[itchyjunk]> | https://bpa.st/DC5A |
| 17:47:20 | <[itchyjunk]> | Yes, this is very trippy. |
| 17:47:25 | → | zincy joins (~zincy@host86-151-99-97.range86-151.btcentralplus.com) |
| 17:47:52 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 17:48:10 | <EvanR> | in general it helps to figure out a way to write out intermediate steps of a lazy computation |
| 17:48:14 | <EvanR> | then you can visualize what's going on |
| 17:48:58 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 17:49:16 | <EvanR> | foldl (flip (:)) [] [1,2,3,4,5] is the first step |
| 17:49:20 | <EvanR> | or zeroth step |
| 17:49:25 | <EvanR> | then |
| 17:49:28 | <polyphem> | [itchyjunk] : foldr op nil xs substitutes (:) with op and [] with nil in xs , think that way |
| 17:50:58 | <[itchyjunk]> | hmm |
| 17:50:59 | <EvanR> | foldl (flip (:)) (1:[]) [2,3,4,5] is the next step |
| 17:51:09 | <EvanR> | see |
| 17:51:18 | <[itchyjunk]> | oh flip is a real function? hmmmm |
| 17:51:21 | <EvanR> | yes |
| 17:51:24 | <c_wraith> | I don't think that way. I think about how on non-empty lists, foldr reduces to a call to f, while foldl reduces to a call to foldl. That's the key difference to me. |
| 17:51:37 | <[itchyjunk]> | thought you were using as a placeholder for the idea lol |
| 17:52:11 | <EvanR> | an example of skipping the helper function by using existing functions and putting them together |
| 17:52:24 | <jackson99> | itchyjunk, you don't have to name every trivial function btw, foldl (\acc x -> x : acc) would work too |
| 17:52:27 | <EvanR> | which you can only do after learning the "existing" vocab |
| 17:52:27 | → | SomeoneElse joins (~SomeoneEl@c-24-34-241-188.hsd1.ma.comcast.net) |
| 17:52:57 | <jackson99> | or just flip, as was mentioned several times above |
| 17:53:45 | <polyphem> | foldr (+) 0 (1:2:3:[]) == 1+2+3+0 |
| 17:54:17 | <EvanR> | [itchyjunk], did you see my two steps above? if you go ahead and write out all 5 (6?) steps I hope it's very clear and beautiful! |
| 17:54:52 | <jackson99> | > foldr (+) z [a,b,c,d] |
| 17:54:53 | <lambdabot> | a + (b + (c + (d + z))) |
| 17:54:56 | <jackson99> | > foldl (+) z [a,b,c,d] |
| 17:54:57 | <lambdabot> | z + a + b + c + d |
| 17:55:14 | ← | SomeoneElse parts (~SomeoneEl@c-24-34-241-188.hsd1.ma.comcast.net) () |
| 17:55:24 | <EvanR> | the final form of folding Exprs kind of loses something |
| 17:55:26 | → | deadmarshal joins (~deadmarsh@95.38.231.124) |
| 17:56:14 | <jackson99> | hmm, probably easier to visualize: |
| 17:56:17 | <jackson99> | > foldr f z [a,b,c,d] |
| 17:56:19 | <lambdabot> | f a (f b (f c (f d z))) |
| 17:56:21 | <jackson99> | > foldl f z [a,b,c,d] |
| 17:56:22 | <lambdabot> | f (f (f (f z a) b) c) d |
| 17:56:52 | <[itchyjunk]> | yes i can just barely follow along the notation but i think it makes sense |
| 17:57:04 | <EvanR> | my notation was literally haskell expressions xD |
| 17:57:08 | <EvanR> | of your example |
| 17:58:01 | <[itchyjunk]> | right! |
| 17:58:52 | × | kimjetwav quits (~user@2607:fea8:2363:8f00:215b:2bd2:2b33:135e) (Remote host closed the connection) |
| 17:59:00 | <sofviic[m]> | foldr = 'accumulates' starting from the right |
| 17:59:00 | <sofviic[m]> | foldl = 'accumulates' starting from the left |
| 17:59:09 | <EvanR> | oof... |
| 17:59:09 | → | kimjetwav joins (~user@2607:fea8:2363:8f00:1b40:b56a:3751:6306) |
| 17:59:22 | × | ouestbillie quits (~gallup@192-222-138-215.qc.cable.ebox.net) (Ping timeout: 256 seconds) |
| 17:59:56 | <polyphem> | [itchyjunk]: heres a fun tal about intuition for list folds : https://www.youtube.com/watch?v=t9pxo7L8mS0 |
| 18:00:06 | <polyphem> | *talk* |
| 18:01:25 | × | zincy quits (~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Ping timeout: 240 seconds) |
| 18:03:03 | <[itchyjunk]> | Hm there are conferences where there are talks just about fold? interesting! |
| 18:04:23 | <EvanR> | well, the idea of folding things goes beyond looping through a list |
| 18:04:33 | <EvanR> | IT'S KIND OF A BIG DEAL |
| 18:04:38 | <[itchyjunk]> | ah |
| 18:06:47 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:07:38 | × | kimjetwav quits (~user@2607:fea8:2363:8f00:1b40:b56a:3751:6306) (Remote host closed the connection) |
| 18:07:41 | × | CiaoSen quits (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
| 18:07:55 | → | kimjetwav joins (~user@2607:fea8:2363:8f00:62f3:c8e:2d83:a34f) |
| 18:10:48 | → | dyeplexer joins (~dyeplexer@user/dyeplexer) |
| 18:15:01 | → | zincy joins (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) |
| 18:15:09 | → | jgeerds joins (~jgeerds@55d4bbed.access.ecotel.net) |
| 18:15:14 | × | zer0bitz quits (~zer0bitz@196.244.192.60) (Ping timeout: 256 seconds) |
| 18:15:24 | → | johnw joins (~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0) |
| 18:18:57 | × | zincy quits (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Ping timeout: 240 seconds) |
| 18:24:18 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 18:24:22 | → | rito_ joins (~rito_gh@45.112.243.149) |
| 18:25:48 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 18:25:48 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 18:25:48 | → | wroathe joins (~wroathe@user/wroathe) |
| 18:29:47 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 18:33:47 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 18:36:44 | <[itchyjunk]> | "" is an empty string right? |
| 18:36:55 | <[itchyjunk]> | Is that the best way to talk about nil case of a string? |
| 18:36:56 | <geekosaur> | yes |
| 18:37:06 | <geekosaur> | what is "nil case"? |
| 18:37:10 | <monochrom> | It is one of the many best ways. |
| 18:37:21 | <geekosaur> | also, since String is [Char], |
| 18:37:28 | <geekosaur> | > [] :: String |
| 18:37:30 | <lambdabot> | "" |
| 18:37:44 | <EvanR> | it's literally the empty string (list) |
| 18:38:50 | <[itchyjunk]> | hmm |
| 18:39:50 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:40:23 | <EvanR> | probably falls in the same mindblowing category of tech such as 'zero' and 'no op' |
| 18:40:29 | × | dyeplexer quits (~dyeplexer@user/dyeplexer) (Remote host closed the connection) |
| 18:41:56 | <EvanR> | https://en.wikipedia.org/wiki/Zero-ohm_link |
| 18:42:03 | <monochrom> | Nah in this case it is the surprise that since String = [Char], list syntax works. |
| 18:42:48 | → | CiaoSen joins (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 18:43:32 | <EvanR> | yeah I kind of wouldn't complain if String became an abstract type and was not a list |
| 18:44:31 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 18:44:31 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 18:44:31 | → | wroathe joins (~wroathe@user/wroathe) |
| 18:44:46 | <monochrom> | Performance police complains that String is not an abstract type. >:) |
| 18:44:48 | <jackson99> | I wouldn't complain if it became alias for Text |
| 18:44:49 | <EvanR> | though decades of code would probably complain |
| 18:46:03 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 18:48:00 | <johnw> | or just make lazy Text available through the Prelude |
| 18:48:20 | <johnw> | I never use String, but it means importing and enabling OverloadingStrings everywhere, all the time |
| 18:48:31 | <johnw> | I should make a macro for that |
| 18:48:51 | <EvanR> | standard pile of imports everywhere is another story |
| 18:49:00 | → | Jupy7er joins (~Jupy7er@2001:d08:e3:b1:dd4e:c9da:9c60:5d27) |
| 18:49:40 | × | Jupy7er quits (~Jupy7er@2001:d08:e3:b1:dd4e:c9da:9c60:5d27) (Client Quit) |
| 18:49:48 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 18:49:51 | <johnw> | I wish I could manage language features in another Haskell module (not cabal) so that I could import that in and have everything. Project preludes. |
| 18:52:42 | → | zincy joins (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) |
| 18:56:28 | → | little_mac joins (~little_ma@2601:410:4300:3ce0:54ff:c767:ef1d:433e) |
| 18:57:07 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:58:53 | × | kimjetwav quits (~user@2607:fea8:2363:8f00:62f3:c8e:2d83:a34f) (Remote host closed the connection) |
| 19:00:17 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 19:00:17 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 19:00:17 | → | wroathe joins (~wroathe@user/wroathe) |
| 19:03:53 | × | max22- quits (~maxime@2a01cb088335980006a2e176d919440a.ipv6.abo.wanadoo.fr) (Ping timeout: 252 seconds) |
| 19:04:37 | × | zincy quits (~zincy@2a00:23c8:970c:4801:8d43:554e:d62c:915d) (Ping timeout: 240 seconds) |
| 19:05:27 | → | TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker) |
| 19:08:12 | × | AlexNoo quits (~AlexNoo@178.34.162.219) (Read error: Connection reset by peer) |
| 19:08:56 | × | Topsi1 quits (~Tobias@dyndsl-095-033-023-075.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
| 19:10:12 | × | deadmarshal quits (~deadmarsh@95.38.231.124) (Ping timeout: 256 seconds) |
| 19:10:19 | → | s2k joins (~textual@122.172.234.134) |
| 19:12:41 | → | AlexNoo joins (~AlexNoo@178.34.162.219) |
| 19:15:23 | <[itchyjunk]> | I have done confused myself again |
| 19:15:44 | → | aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net) |
| 19:16:44 | <[itchyjunk]> | If i want to take two string and remove every char in second that is also present in one, is my base case take a char and a string and remove that char from the string? |
| 19:16:50 | <[itchyjunk]> | i think so, right? |
| 19:16:59 | → | kimjetwav joins (~user@2607:fea8:2363:8f00:62f3:c8e:2d83:a34f) |
| 19:17:08 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 19:17:15 | → | lavaman joins (~lavaman@98.38.249.169) |
| 19:17:18 | <[itchyjunk]> | ah, i think i have solved that case actually |
| 19:17:19 | <[itchyjunk]> | https://bpa.st/7ETQ |
| 19:17:48 | <[itchyjunk]> | i think i just need to tweak my blah so it can take a string and i can recurse through stuff |
| 19:20:15 | × | TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 256 seconds) |
| 19:20:55 | → | TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker) |
| 19:21:17 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
| 19:21:25 | → | hololeap joins (~hololeap@user/hololeap) |
| 19:22:42 | <[exa]> | iteratee_: sounds like a combination of 'filter' and 'elem' |
| 19:23:42 | <[exa]> | oh sorry, misfired highlight. Originally to [itchyjunk] ^ |
| 19:23:53 | <hololeap> | anyone have any idea how to run LogicT branches in parallel? |
| 19:24:09 | <[itchyjunk]> | hmm, well i asks me to use foldr to solve it ;x |
| 19:24:18 | <hololeap> | this is what I tried, but I get nothing but fizzled sparks: parChoice s = runEval . fmap choice . parList s |
| 19:25:03 | <[exa]> | hololeap: is that even possible given there are cuts and everything? |
| 19:25:13 | <hololeap> | I have no idea :/ |
| 19:26:04 | <EvanR> | [itchyjunk], did you write filter already using foldr |
| 19:26:30 | <EvanR> | if so, you technically used foldr xD |
| 19:26:33 | <[exa]> | there's the "fair conjunction" and "fair disjunction" combinators that iirc don't go well with parallel |
| 19:27:36 | <[itchyjunk]> | I have not written filter already using foldr (filter at all) |
| 19:28:00 | <EvanR> | oh well, |
| 19:28:03 | <[itchyjunk]> | I should maybe do some filter stuff, but i think i can solve this problem :x i'll look at filter in near (far?) future |
| 19:28:25 | <EvanR> | it sounds like it's doing a lot at once |
| 19:28:54 | <hololeap> | [exa]: my idea was that each branch (in this case) is equally likely to return a result, so have them run in parallel and return the first success |
| 19:28:56 | <EvanR> | since there are two lists I'm not sure you can do with only 1 foldr |
| 19:29:36 | <[exa]> | hololeap: what if it backtracks outside the parallelizable area (restarting your parallel spawner)? |
| 19:29:56 | <[exa]> | anyway my view is pretty much naive on this but I expect trouble :D |
| 19:30:09 | <hololeap> | that's fine. any feedback is welcome |
| 19:30:41 | <hololeap> | I'm also very new to the parallel side of haskell |
| 19:30:41 | <[exa]> | perhaps manually running a few logicTs using a normal parallel strategy would suffice with speed and prevent the possible weirdness? |
| 19:31:02 | → | max22- joins (~maxime@2a01cb0883359800fc4f47b740d6e929.ipv6.abo.wanadoo.fr) |
| 19:32:30 | <hololeap> | I'll keep reading/thinking about it |
| 19:33:06 | <[exa]> | if you know all branches, you can just "ping" them with `par` a bit in advance before the branches, and then run the branches normally |
| 19:33:34 | <[exa]> | *before the branching |
| 19:33:57 | <hololeap> | I thought that was what my code did |
| 19:35:28 | <hololeap> | choice is from parser-combinators, btw: https://hackage.haskell.org/package/parser-combinators-1.3.0/docs/Control-Monad-Combinators.html#v:choice |
| 19:36:27 | <hololeap> | oh, asum is more canonical |
| 19:36:38 | <hololeap> | same thing though |
| 19:36:44 | <[itchyjunk]> | I am trying to understand this error at the bottom of this paste : https://bpa.st/LEVQ |
| 19:37:05 | <[exa]> | hololeap: what's the type after `fmap choice` ? |
| 19:37:26 | <hololeap> | parChoice :: forall m a. Alternative m => Strategy (m a) -> [m a] -> m a |
| 19:37:31 | <[exa]> | [itchyjunk]: likely too much parens around ++ |
| 19:37:53 | <[itchyjunk]> | hmm |
| 19:38:06 | <hololeap> | so it's Eval (m a) |
| 19:38:12 | <[exa]> | [itchyjunk]: likely no parens in that line are necessary |
| 19:38:19 | <[exa]> | except for the patternmatch |
| 19:38:37 | <[itchyjunk]> | i was getting ome error without the parens too :< |
| 19:39:02 | <[itchyjunk]> | oh.. |
| 19:39:13 | <[itchyjunk]> | the (++) is no good too? |
| 19:39:14 | <[exa]> | perhaps you want `:` instd of `++` |
| 19:39:27 | <[exa]> | because you're adding a single element from the left, yeah? |
| 19:39:32 | <[itchyjunk]> | I originally had : but my blah returns a list right? |
| 19:39:43 | <[itchyjunk]> | returns a string |
| 19:40:07 | <[exa]> | hololeap: anyway I would expect the stuff to expand to something like: branch1val `par` branch2val `par` branch2val `par` LogicT something |
| 19:40:35 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 19:40:51 | <[exa]> | [itchyjunk]: why does it return a string? |
| 19:41:05 | <[exa]> | maybe we should put a proper name on the blah |
| 19:41:27 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 19:41:29 | <[exa]> | what is it supposed to do actually? |
| 19:41:31 | <[itchyjunk]> | blah takes a char c and a string s and removes all occurance of c from s and returns a string |
| 19:42:04 | <[exa]> | it can't because it doesn't recurse |
| 19:42:15 | <hololeap> | [itchyjunk]: the issue is that you have parens around ++ |
| 19:42:28 | <hololeap> | `(blah x y ys) (++) (go xs y ys)` is very different than `(blah x y ys) ++ (go xs y ys)` |
| 19:42:42 | <[exa]> | yap ^ |
| 19:42:54 | <[itchyjunk]> | [exa], blah is working fine, i test it with myRmv |
| 19:43:10 | <[itchyjunk]> | oh, myRmv takes a char and a string and removes the char from the string |
| 19:43:19 | <[itchyjunk]> | blah is a helper function for myRmv :< |
| 19:43:26 | <[itchyjunk]> | wait, maybe i see the issue |
| 19:43:37 | <[itchyjunk]> | hololeap, right, i removed the ()'s and now it compiles |
| 19:43:42 | <[itchyjunk]> | but I am getting some logical error |
| 19:44:14 | <[exa]> | so blah is `prefixUnlessEqual` or something? |
| 19:45:47 | <[itchyjunk]> | I don't know what that is :x. my `myRmv "apple" 'a'` returns "pple" |
| 19:46:12 | <EvanR> | not exactly a strenuous test |
| 19:46:15 | <[itchyjunk]> | in case of `myRemove` i want `myRemove "apple" "ap"` to return "le" |
| 19:46:22 | × | remexre quits (~remexre@user/remexre) (Remote host closed the connection) |
| 19:46:35 | <EvanR> | what about "apapalaea" 'a' |
| 19:46:36 | <[itchyjunk]> | I am getting a "non exhaustive patters for go" as an error currently |
| 19:46:37 | → | remexre joins (~remexre@user/remexre) |
| 19:46:45 | <[itchyjunk]> | it reutnrs pple |
| 19:46:52 | <EvanR> | cool |
| 19:47:04 | <[itchyjunk]> | *Main> myRmv "apapalaea" 'a' |
| 19:47:04 | <[itchyjunk]> | "pple" |
| 19:47:20 | <[itchyjunk]> | This is why i am thinking my issue is with the go and/or myRemove function |
| 19:47:47 | <[itchyjunk]> | Maybe i am just missing some base case i need to address |
| 19:47:49 | <int-e> | > "applesauce" \\ "cause" |
| 19:47:51 | <lambdabot> | "pplae" |
| 19:47:51 | <hololeap> | [itchyjunk]: you'll have to scan the first list for every letter in the second list. your blah function really should have the signature: blah :: String -> Char -> String -> String |
| 19:48:03 | <[itchyjunk]> | "*** Exception: myRemove.hs:8:1-42: Non-exhaustive patterns in function go |
| 19:48:12 | <int-e> | oh right, that does this odd multiset difference thing |
| 19:48:34 | <[itchyjunk]> | hololeap, that's my `go` signature |
| 19:49:03 | <hololeap> | true, but I fail to see your point |
| 19:49:21 | <[exa]> | [itchyjunk]: `go` can't handle the end case with empty list |
| 19:50:02 | <[itchyjunk]> | hmm go gets 2 lists and hmmmmm |
| 19:50:16 | [itchyjunk] | can't seem to handle the case with empty list either |
| 19:50:57 | <[itchyjunk]> | ah |
| 19:52:43 | <[exa]> | [itchyjunk]: what about doing it the other way, running through the string and allowing letters through only if they are not in the list of forbidden letters? |
| 19:52:57 | <[exa]> | (sounds a bit more like foldr to me) |
| 19:53:06 | <hololeap> | hopefully this isn't too close to giving away the answer, but |
| 19:53:11 | <hololeap> | > blah :: String -> Char -> String -> String ; blah s0 c s = if any (== c) s0 then s else c:s |
| 19:53:12 | <lambdabot> | <hint>:1:44: error: parse error on input ‘;’ |
| 19:53:19 | <hololeap> | % blah :: String -> Char -> String -> String ; blah s0 c s = if any (== c) s0 then s else c:s |
| 19:53:20 | <yahb> | hololeap: |
| 19:53:28 | <EvanR> | if you write filter with foldr, and elems with foldr, and combine them, you technically used foldr |
| 19:53:33 | <EvanR> | er, elem |
| 19:53:38 | <EvanR> | :t elem |
| 19:53:39 | <lambdabot> | (Foldable t, Eq a) => a -> t a -> Bool |
| 19:53:42 | <EvanR> | bah |
| 19:53:46 | <[exa]> | it's very foldy, yes |
| 19:54:02 | <geekosaur> | % :t elem @[] |
| 19:54:02 | <yahb> | geekosaur: Eq a => a -> [a] -> Bool |
| 19:54:17 | <[exa]> | [itchyjunk]: if I get the code correctly, the thing you are doing now is kinda headed towards foldl |
| 19:55:05 | <[itchyjunk]> | hmm |
| 19:56:12 | <[itchyjunk]> | go [] y ys = y:ys |
| 19:56:27 | <[itchyjunk]> | if the list of things to removee is empty, just accumulate y into the accumulator, no? |
| 19:56:40 | × | nhatanh02 quits (~satori@123.24.172.30) (Ping timeout: 256 seconds) |
| 19:56:42 | <hololeap> | aren't you supposed to use foldr? |
| 19:56:57 | <[itchyjunk]> | yes i am using foldr |
| 19:57:48 | <EvanR> | you're using recursion |
| 19:58:01 | <EvanR> | maybe the problem should have said, use foldr and not recursion |
| 19:58:10 | <[exa]> | +1 ^ |
| 19:58:15 | <[itchyjunk]> | https://bpa.st/PWZA |
| 19:58:19 | <hololeap> | % foldr (:) "" "abcd" |
| 19:58:19 | <yahb> | hololeap: "abcd" |
| 19:58:28 | <[itchyjunk]> | oh i should be doing this without recursion? |
| 19:58:34 | <hololeap> | foldr is already building the list back in the correct direction |
| 19:58:35 | <[exa]> | likely |
| 19:58:35 | <EvanR> | foldr is all you need |
| 19:58:37 | → | ouestbillie joins (~gallup@142.169.33.81) |
| 19:58:41 | <[itchyjunk]> | hmmmmmmmmmmmmmmmmmmmmmmmmmmmmm |
| 19:58:49 | <[itchyjunk]> | maybe i will just start over then |
| 19:58:54 | <EvanR> | though likely to only 1 foldr |
| 19:58:58 | <EvanR> | NOT only 1 |
| 19:59:16 | × | ouestbillie quits (~gallup@142.169.33.81) (Client Quit) |
| 19:59:25 | × | moshet quits (~moshet@179.33.156.20) (Ping timeout: 240 seconds) |
| 19:59:33 | → | ouestbillie joins (~gallup@142.169.33.81) |
| 19:59:53 | <[itchyjunk]> | yup, this is too convoluted for my own good. From scratch! |
| 20:00:03 | <[exa]> | [itchyjunk]: if you get "ap" and "apple", imagine the problem as solving a small instance ('a':"pple") and deciding whether to return the whole thing or just continue with the result of processing "pple" |
| 20:01:33 | <[itchyjunk]> | well i wanna take 'a' from "ap" and go through each char of "apple" and see if there is a 'a' in that list. then do the same with 'p' i think? |
| 20:01:43 | <[exa]> | that's foldl |
| 20:01:46 | × | cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 268 seconds) |
| 20:01:49 | <[itchyjunk]> | @_@ |
| 20:01:59 | <[exa]> | because you can't produce the result by tiny bits |
| 20:02:03 | <[itchyjunk]> | hmmm |
| 20:02:16 | <[exa]> | do it the other way, take 'a' from apple and decide if you can send it to output or not |
| 20:03:01 | <[itchyjunk]> | interesting.. guess i don't really understand foldr vs foldl very well. okay, get 'a' from "apple" and make a decision. i'll try this |
| 20:03:16 | <EvanR> | "see if x is in list" with foldr is fine |
| 20:03:28 | <EvanR> | then you can cancel early if it is |
| 20:03:38 | <hololeap> | foldr naturally builds the new list in the correct direction. you only have to use (:), not (++) |
| 20:04:24 | <[exa]> | the question is "can you produce partial output"? with recursing over the string, you can decide that "l" will be a part of output before processing the final "l". With recursing over the forbidden characters, you are never sure your output isn't going to get erased by the next forbidden character |
| 20:04:43 | <[exa]> | * the final "e" |
| 20:05:10 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 20:05:21 | <hololeap> | [itchyjunk]: for starters try to implement filter with foldr. that will get you most of the way to your answer |
| 20:05:25 | <hololeap> | :t filter |
| 20:05:26 | <lambdabot> | (a -> Bool) -> [a] -> [a] |
| 20:05:35 | × | juhp quits (~juhp@128.106.188.82) (Ping timeout: 256 seconds) |
| 20:05:46 | <[itchyjunk]> | oh okay. implement filter with foldr it is then |
| 20:06:31 | <EvanR> | someone was asking if the answer to a Bool question can return partial output? xD |
| 20:07:00 | <[itchyjunk]> | Maybe true / Maybe false |
| 20:07:07 | <EvanR> | file not found |
| 20:07:13 | <hpc> | EvanR: :D |
| 20:07:49 | <[exa]> | data Bool' = False | True | :¯\_(ツ)_/¯ |
| 20:07:50 | → | juhp joins (~juhp@128.106.188.82) |
| 20:09:21 | <hpc> | fun fact, https://thedailywtf.com/articles/What_Is_Truth_0x3f_ is 17 years old |
| 20:10:41 | × | ouestbillie quits (~gallup@142.169.33.81) (Read error: Connection reset by peer) |
| 20:14:15 | × | kronicma1 quits (user76545@neotame.csclub.uwaterloo.ca) (Ping timeout: 250 seconds) |
| 20:14:44 | <EvanR> | old enough to die for your country but not old enough to drink |
| 20:14:50 | <EvanR> | sorry wrong channel |
| 20:15:34 | → | ouestbillie joins (~gallup@modemcable053.204-20-96.mc.videotron.ca) |
| 20:15:57 | → | kronicma1 joins (user27604@neotame.csclub.uwaterloo.ca) |
| 20:16:37 | → | roboguy joins (~roboguy@user/roboguy) |
| 20:17:04 | <[itchyjunk]> | It seems to work? https://bpa.st/C4UQ |
| 20:17:17 | <[itchyjunk]> | wait |
| 20:17:27 | <[itchyjunk]> | wth, i never used foldr.. |
| 20:17:32 | <[itchyjunk]> | what am i doing? xD |
| 20:17:46 | <[exa]> | [itchyjunk]: yeah now transform to foldr |
| 20:17:49 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
| 20:18:55 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 20:19:17 | <EvanR> | you can basically write any function on List with foldr |
| 20:20:29 | <hpc> | not just basically, you actually can |
| 20:24:38 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 20:24:52 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 20:24:52 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 20:24:52 | → | wroathe joins (~wroathe@user/wroathe) |
| 20:27:56 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 20:31:14 | → | Guest80 joins (~Guest80@p200300d5572443000b6ab41968a4cb33.dip0.t-ipconnect.de) |
| 20:31:30 | <[itchyjunk]> | when i implement myFoldFilter using foldr, myFoldFilter :: (a -> Bool) -> [a] -> [a] right? |
| 20:31:50 | <[itchyjunk]> | the signature my the filter function made with foldr would be the same? |
| 20:33:44 | <polyphem> | [itchyjunk]: yes |
| 20:34:19 | <EvanR> | same store front, different back office |
| 20:34:27 | → | ouestbil1ie joins (~gallup@142.169.33.81) |
| 20:34:36 | <[itchyjunk]> | lol |
| 20:34:55 | <ephemient> | > let f a k (b:bs) = (a, b) : k bs; f _ _ _ = [] in foldr f (const []) ['a'..] [1..] -- just experimenting out of curiosity. if there's a way to define `f` in terms of `foldr` it's not obvious to me |
| 20:34:56 | <lambdabot> | [('a',1),('b',2),('c',3),('d',4),('e',5),('f',6),('g',7),('h',8),('i',9),('j... |
| 20:35:03 | <[itchyjunk]> | i need to massage the (a -> Bool) to soemthing that works with (a -> b -> b) |
| 20:35:39 | × | s2k quits (~textual@122.172.234.134) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 20:35:49 | <EvanR> | or just us the (a -> Bool) in the lambda |
| 20:35:53 | <EvanR> | use |
| 20:36:09 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 20:36:40 | × | Guest80 quits (~Guest80@p200300d5572443000b6ab41968a4cb33.dip0.t-ipconnect.de) (Quit: Client closed) |
| 20:39:10 | <EvanR> | style question |
| 20:39:38 | × | ouestbillie quits (~gallup@modemcable053.204-20-96.mc.videotron.ca) (Quit: Lost terminal) |
| 20:39:45 | <EvanR> | according to my flawless proof and understand of this algorithm, the list returned by my IO action will be empty. If it isn't, something is very wrong. So |
| 20:39:56 | <EvanR> | also there's a warning for ignoring the result in do notation |
| 20:40:30 | <EvanR> | do { [] <- myAction; ... carry on } -- if I do this, I appease the warning and dare my proof and understanding to be right. Good idea? |
| 20:40:50 | <geekosaur> | probably a good idea to test that understanding, yes |
| 20:40:52 | <EvanR> | or what's another way to deal with it |
| 20:41:08 | <geekosaur> | although I might prefer to capture the output and print what I got if it wasn't empty |
| 20:41:12 | → | nattiestnate joins (~nate@2001:448a:20a0:4134:25e:715f:d637:5263) |
| 20:41:25 | <geekosaur> | help me figure out what I got wrong |
| 20:41:28 | <EvanR> | ah |
| 20:42:15 | <int-e> | > let f a k = fst . foldr (\b ~(_, bs) -> ((a, b) : k bs, b : bs)) ([],[]) in foldr f (const []) ['a'..] [1..] -- ephemient |
| 20:42:17 | <lambdabot> | [('a',1),('b',2),('c',3),('d',4),('e',5),('f',6),('g',7),('h',8),('i',9),('j... |
| 20:42:28 | × | nattiestnate quits (~nate@2001:448a:20a0:4134:25e:715f:d637:5263) (Client Quit) |
| 20:42:31 | <int-e> | ephemient: it's quite awkward though |
| 20:42:47 | <EvanR> | I've had advice in the past to not do something like this, so the program has a chance of continuing on despite some horrible error having happened (in writing the code) |
| 20:43:10 | <geekosaur> | nowhere in there did I hear "is a good idea" with respect to writing everything with foldr :) |
| 20:43:29 | → | koalillo joins (~koalillo@2a0c:5a81:b804:9900:6f90:e8ce:c737:204c) |
| 20:43:45 | <ephemient> | ah, the fst lets you select between the cases |
| 20:43:49 | <int-e> | ephemient: and if you add a few more tweaks the code is likely to explode |
| 20:43:50 | <ephemient> | that is pretty awkward |
| 20:43:53 | <geekosaur> | EvanR, maybe. but too often ime that kind of logic is the logic of dynamic languages that silently deliver garbage |
| 20:44:16 | × | ouestbil1ie quits (~gallup@142.169.33.81) (Ping timeout: 256 seconds) |
| 20:45:10 | <int-e> | ephemient: note also the loss of sharing on `bs` (which becomes relevant if k actually uses it) |
| 20:45:22 | <EvanR> | also, I wonder where "let it crash" fits into this |
| 20:45:48 | <c_wraith> | "let it crash" is "we won't prevent garbage, but at least we won't propagate it" |
| 20:46:30 | <EvanR> | this is kind of like, "not only let it crash, cause it to crash more" |
| 20:47:54 | <hpc> | sometimes the most correct thing to do is be as wrong as possible |
| 20:47:59 | <EvanR> | lol |
| 20:48:01 | → | Garbanzo joins (~Garbanzo@2602:304:6eac:dc10::46) |
| 20:48:06 | → | acidjnk joins (~acidjnk@p200300d0c7271e945c697a298a149d84.dip0.t-ipconnect.de) |
| 20:48:06 | → | acidjnk_new joins (~acidjnk@p200300d0c7271e945c697a298a149d84.dip0.t-ipconnect.de) |
| 20:48:58 | × | ft quits (~ft@shell.chaostreff-dortmund.de) (Quit: leaving) |
| 20:49:11 | → | ft joins (~ft@shell.chaostreff-dortmund.de) |
| 20:49:15 | <[exa]> | ah the good old full-scale crashes, absolute units of crashage. |
| 20:50:12 | <hololeap> | [itchyjunk]: you'll need to use an if-then-else statement using your (a -> Bool) and the given a to get a -> [a] -> [a] |
| 20:50:29 | <Hecate> | I deeply dislike MonadFail |
| 20:51:12 | <EvanR> | oh ... this is MonadFail territory now, I forgot |
| 20:51:19 | <c_wraith> | I'm happy with MonadFail as much better solution to pattern-match failures than putting "fail" in monad was |
| 20:51:49 | <Hecate> | c_wraith: which instance of MonadFail do you use? |
| 20:51:55 | <Hecate> | (I also deeply dislike fail) |
| 20:52:22 | <c_wraith> | Mostly IO's, but I get some value out of []'s |
| 20:55:10 | <Hecate> | c_wraith: any reason why you don't directly raise exceptions or empty lists? |
| 20:55:41 | <c_wraith> | because the whole point of using a library is to not rewrite its code |
| 20:59:03 | <ephemient> | myIOActionReturningHopefullyNullList >>= unless <$> null <*> fail . show -- ugly but it'll show the list in the IO exception… |
| 20:59:11 | → | zincy joins (~zincy@host86-151-99-97.range86-151.btcentralplus.com) |
| 20:59:23 | <int-e> | > let foo :: (a -> b) -> [a] -> [b]; foo f [] = []; foo f (a:as) = f a : (foo (\a -> (f a, f a)) as >>= \(a,b) -> [a,b]) |
| 20:59:25 | <lambdabot> | <no location info>: error: |
| 20:59:25 | <lambdabot> | not an expression: ‘let foo :: (a -> b) -> [a] -> [b]; foo f [] = []; fo... |
| 20:59:32 | <int-e> | > let foo :: (a -> b) -> [a] -> [b]; foo f [] = []; foo f (a:as) = f a : (foo (\a -> (f a, f a)) as >>= \(a,b) -> [a,b]) in foo id [1..4] |
| 20:59:34 | <lambdabot> | [1,2,2,3,3,3,3,4,4,4,4,4,4,4,4] |
| 21:00:22 | <int-e> | ephemient: ^^ another thing that will be awkward with foldr (because the type of f changes in the recursive calls) |
| 21:00:55 | <int-e> | though one can probably make it work with an existential |
| 21:01:52 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 21:02:33 | → | hololeap_ joins (~hololeap@user/hololeap) |
| 21:04:12 | × | hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds) |
| 21:04:33 | hololeap_ | is now known as hololeap |
| 21:04:40 | <hololeap> | it looks like my earlier question is a subset of how you can run multiple computations in parallel and only return the first one that completes. does anyone know? I'm skimming Marlow's book and I don't see it |
| 21:05:23 | <Rembane> | hololeap: Doesn't the async library have a function for that? I might be misremembering. |
| 21:05:32 | <c_wraith> | race handles two computations |
| 21:05:51 | <c_wraith> | to handle multiples, you'd need to fold it |
| 21:05:53 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 21:06:23 | <hololeap> | uh, yeah but can I run each computation using race on multiple cores? |
| 21:06:49 | <c_wraith> | if you're using the threaded RTS with an approprate -N command line argument |
| 21:06:53 | <EvanR> | if all the computations racing should agree in the sense of definedness there's lub |
| 21:06:57 | × | coot quits (~coot@89-64-85-93.dynamic.chello.pl) (Remote host closed the connection) |
| 21:07:23 | → | coot joins (~coot@2a02:a310:e03f:8500:5cc8:47c:8ec0:b827) |
| 21:09:27 | <[itchyjunk]> | wait i think the solution just came to me |
| 21:09:39 | ← | koalillo parts (~koalillo@2a0c:5a81:b804:9900:6f90:e8ce:c737:204c) () |
| 21:09:47 | <[itchyjunk]> | is this a solution to implementing filter with foldr ? https://bpa.st/CPTA |
| 21:09:55 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 21:10:00 | <hololeap> | EvanR: this is what I'm finding. is this it? https://hackage.haskell.org/package/ghc-8.10.2/docs/Demand.html#v:lubDmd |
| 21:11:51 | × | coot quits (~coot@2a02:a310:e03f:8500:5cc8:47c:8ec0:b827) (Remote host closed the connection) |
| 21:12:01 | <hololeap> | [itchyjunk]: sort of, but you're missing whatever comes after "else" in the go function |
| 21:12:13 | → | coot joins (~coot@2a02:a310:e03f:8500:5cc8:47c:8ec0:b827) |
| 21:12:33 | <EvanR> | https://hackage.haskell.org/package/lub |
| 21:12:44 | <[itchyjunk]> | oh wtf |
| 21:12:48 | <[itchyjunk]> | it was supposed to be else xs |
| 21:12:50 | <[itchyjunk]> | :< |
| 21:12:57 | <hololeap> | then yes, that is correct |
| 21:13:41 | <[itchyjunk]> | https://bpa.st/HDDQ |
| 21:13:44 | <[itchyjunk]> | ah okay |
| 21:14:09 | × | coot quits (~coot@2a02:a310:e03f:8500:5cc8:47c:8ec0:b827) (Remote host closed the connection) |
| 21:14:34 | → | coot joins (~coot@2a02:a310:e03f:8500:5cc8:47c:8ec0:b827) |
| 21:17:08 | × | rito_ quits (~rito_gh@45.112.243.149) (Quit: Leaving) |
| 21:18:00 | <hololeap> | EvanR: that looks interesting, although I'm not sure how to use it. (fib 10) `lub` (fib 999999999) -- I would want both computations to run in parallel and hopefully return (fib 10) |
| 21:18:18 | <EvanR> | yeah no, lub is for when the values agree |
| 21:18:48 | <EvanR> | rather, having a common "definedness upper bound", those two don't |
| 21:19:32 | <EvanR> | in Async there are combinators for racing many threads |
| 21:19:36 | <hololeap> | ok, so something using race from async then |
| 21:22:01 | <hololeap> | but that introduces the IO monad. no way to do this on pure computations without IO coming in?? |
| 21:22:28 | <int-e> | @let data T a b = T { unT :: forall b'. (a -> b') -> ([b'] -> [b]) -> [b] } |
| 21:22:29 | <lambdabot> | Defined. |
| 21:22:36 | <int-e> | > let aux a (T as) = T (\f r -> as (\a -> (f a, f a)) (r . (f a :) . (>>= \(a,b) -> [a,b]))) in unT (foldr aux (T (\_ r -> r [])) [1..4]) id id |
| 21:22:37 | <lambdabot> | [1,2,2,3,3,3,3,4,4,4,4,4,4,4,4] |
| 21:23:00 | <int-e> | (tricky) |
| 21:23:15 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 21:24:03 | <hololeap> | is there an ST version of race? |
| 21:24:58 | <EvanR> | you can use unsafePerformIO to do the race of threads doing a pure computation |
| 21:24:59 | <int-e> | there's unsafeIOToST... and it is unsafe |
| 21:25:34 | <EvanR> | though |
| 21:25:38 | <EvanR> | the whole thing is not pure is it |
| 21:25:43 | geekosaur | is wondering if that even makes sense |
| 21:25:51 | <EvanR> | you "hope" fib 10 comes back, but there's no guaratantee |
| 21:25:56 | <EvanR> | guarantee |
| 21:26:17 | <EvanR> | it depends on real world circumstances |
| 21:27:44 | × | roboguy quits (~roboguy@user/roboguy) () |
| 21:28:17 | <hololeap> | yeah I suppose it's getting into nondeterminism since it's unclear which one will come back first |
| 21:29:40 | <hololeap> | so I guess IO actually makes sense here |
| 21:29:44 | <EvanR> | that's why lub is cool because you can explain why it's still valid to race the threads xD |
| 21:29:50 | <EvanR> | purely |
| 21:30:55 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 21:31:11 | <hololeap> | the idea was to parallelize the branches of LogicT, where all successes from any branch are considered equal, and it just returns the first one it finds |
| 21:32:01 | <EvanR> | if you can arrange for all results to be equal, then the referential transparency cops won't notice you |
| 21:32:24 | <EvanR> | doing unsafePerformIO |
| 21:32:26 | <EvanR> | hopefully |
| 21:33:12 | <hololeap> | I think in this case any successes will actually be identical |
| 21:33:46 | <hololeap> | I'm actually just playing around with this using 2021's AoC day 8 problem for practice |
| 21:35:16 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 21:35:19 | → | HotblackDesiato joins (~HotblackD@gateway/tor-sasl/hotblackdesiato) |
| 21:36:44 | → | dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net) |
| 21:38:02 | <hololeap> | for instance if I get the input "ag" then I know this corresponds to the digit 1, but I don't know if 'a' corresponds to the 'c' segment and 'g' corresponds to the 'f' segment, or vice versa. since both have equal weight, why not run both in parallel and see which one finds an answer first |
| 21:38:08 | → | sonny joins (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca) |
| 21:39:01 | <sonny> | how do you use a parameter in a function defintion inside a lambda definition? foo bar = foldl \(bar x y z -> ...) ... |
| 21:39:54 | → | Pickchea joins (~private@user/pickchea) |
| 21:40:02 | × | Pickchea quits (~private@user/pickchea) (Remote host closed the connection) |
| 21:40:18 | <jackson99> | just use it, without putting it in the argument list |
| 21:40:37 | × | n3rdy1 quits (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) (Ping timeout: 240 seconds) |
| 21:42:33 | <hololeap> | EvanR: now if my two branches are guaranteed to find the same value, but one may find it faster than the other, is that a good time to use lub? |
| 21:43:24 | × | dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3) |
| 21:44:04 | <jackson99> | > let mymap f xs = foldr (\x acc -> f x : acc) [] xs in mymap (*10) [1..5] -- sonny |
| 21:44:06 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 21:44:06 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 21:44:06 | → | wroathe joins (~wroathe@user/wroathe) |
| 21:44:06 | <lambdabot> | [10,20,30,40,50] |
| 21:44:29 | <sonny> | thanks |
| 21:44:37 | × | zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 240 seconds) |
| 21:45:17 | × | zincy quits (~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Remote host closed the connection) |
| 21:45:57 | × | shapr quits (~user@2601:7c0:c202:5190:232c:3331:7d0c:8370) (Ping timeout: 240 seconds) |
| 21:47:43 | <hololeap> | @hoogle unamb -- ok this explains it a little better |
| 21:47:44 | <lambdabot> | Prelude undefined :: forall (r :: RuntimeRep) . forall (a :: TYPE r) . HasCallStack => a |
| 21:47:44 | <lambdabot> | Control.Exception.Base absentSumFieldError :: a |
| 21:47:44 | <lambdabot> | Text.Printf errorShortFormat :: a |
| 21:48:03 | <hololeap> | s/hoogle/hackage |
| 21:48:11 | <hololeap> | @hackage unamb |
| 21:48:11 | <lambdabot> | https://hackage.haskell.org/package/unamb |
| 21:48:37 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
| 21:52:59 | <sonny> | is it actually possible to implement filter with fold? |
| 21:53:47 | <jackson99> | sure |
| 21:54:06 | <sonny> | I'm stumped because I can't think of some identity elment with : |
| 21:54:42 | <dolio> | Identity element? |
| 21:54:51 | <geekosaur> | you're just passing on xs instead of prepending an element to it (bool, or if-then-else) |
| 21:54:54 | <sonny> | well some zero operation |
| 21:55:09 | <jackson99> | it is a small change to the mymap I pasted above |
| 21:55:20 | <geekosaur> | and no, (:) doesn;t have a left identity |
| 21:55:44 | <geekosaur> | it's a constructor, it always constructs a value |
| 21:55:57 | × | mvk quits (~mvk@2607:fea8:5cdd:f000::45db) (Ping timeout: 240 seconds) |
| 21:56:07 | <sonny> | so it's not possible with foldl, but with foldr |
| 21:56:21 | <sonny> | I was trying with foldl |
| 21:56:24 | → | modnar joins (~quassel@162.195.88.254) |
| 21:56:47 | <geekosaur> | note thatyou can build foldl with foldr but not the reverse |
| 21:58:23 | <hololeap> | % :t \f -> foldl (\s c -> if f c then s ++ [c] else s) [] |
| 21:58:23 | <yahb> | hololeap: Foldable t => (a -> Bool) -> t a -> [a] |
| 21:59:04 | <hololeap> | it's possible but probably not as efficient |
| 22:00:39 | <sonny> | ok, I really need to figure out cons and lists |
| 22:00:41 | → | mvk joins (~mvk@2607:fea8:5cdd:f000::45db) |
| 22:01:14 | <sonny> | I think I sorta get fold |
| 22:02:02 | <hololeap> | foldr is a natural outgrowth of how lists are constructed. foldr (:) [] == id |
| 22:03:00 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Remote host closed the connection) |
| 22:03:13 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 22:04:01 | <hololeap> | :t toList -- which is why you can convert any Foldable to a list |
| 22:04:02 | <lambdabot> | Foldable t => t a -> [a] |
| 22:06:53 | <sonny> | hololeap: [] is the second argument right? |
| 22:07:43 | × | machinedgod quits (~machinedg@24.105.81.50) (Quit: Lost terminal) |
| 22:07:44 | <sonny> | yes very useful observation `foldr (:) [] == id` |
| 22:08:08 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 22:10:31 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 22:10:36 | <sonny> | filter p = foldr (\x acc -> if p x then x:acc else acc) [] |
| 22:11:00 | <sonny> | I never get this much confidence elsewhere :D |
| 22:11:46 | <hololeap> | well, technically, foldr (:) [] == toList |
| 22:12:06 | <geekosaur> | these days :) |
| 22:12:08 | <sonny> | I just read id as identity |
| 22:12:33 | <geekosaur> | sometimes I wonder if Foldable is all it's cracked up to be, and not just because of that tuple instance |
| 22:12:42 | <ephemient> | could also be foldr (\x -> if p x then (x:) else id) [] |
| 22:12:50 | <hololeap> | and toList == id, if we're specializing the Foldable to be [] |
| 22:13:06 | × | xff0x quits (~xff0x@2001:1a81:52d4:9900:4d46:915d:4480:7a51) (Remote host closed the connection) |
| 22:13:23 | → | xff0x joins (~xff0x@2001:1a81:52d4:9900:5627:62b8:c837:dd4a) |
| 22:13:30 | <sonny> | ephemient: where's id from? |
| 22:13:39 | <geekosaur> | @index id |
| 22:13:39 | <lambdabot> | Control.Category, Data.Function, Prelude |
| 22:13:40 | <ephemient> | :t id |
| 22:13:41 | <lambdabot> | a -> a |
| 22:13:46 | <sonny> | oh |
| 22:14:23 | <sonny> | is that typical haskell code? |
| 22:14:26 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 22:14:26 | → | timCF joins (~timCF@m91-129-100-224.cust.tele2.ee) |
| 22:14:37 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 22:14:37 | <jackson99> | @src id |
| 22:14:37 | <lambdabot> | id x = x |
| 22:14:51 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 22:14:58 | <sonny> | it's kinda magic when defined with the section :P |
| 22:15:56 | <timCF> | Hello! Want to ask a question, which haskell build infrastructure is better - provided in nixpkgs or haskell.nix by IOHK and why? |
| 22:16:57 | <geekosaur> | how about oen that doesn't involve nix at all? |
| 22:18:23 | → | Inst joins (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) |
| 22:18:42 | <timCF> | I've used stack for a long time, but nix is kinda cool to manage external binary deps for building and testing |
| 22:21:02 | <geekosaur> | "cool" for a thing with nightmarish tentacles… |
| 22:21:34 | <geekosaur> | sorry, that thing just has too many moving pieces and sharp edges |
| 22:21:42 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 22:23:03 | <timCF> | No worries) If it was perfect, i've not asked which one of two is better |
| 22:23:27 | <sm> | there was a recent discussion of this on reddit. IIRC nixpkgs was easier for just installing haskell things, haskell.nix is more powerful for fine grained haskell project building |
| 22:24:53 | <geekosaur> | I also don't like something that will silently consume gigabytes of space unless I remember to gc it every so often — but not too often as I may need to roll back an update |
| 22:29:12 | → | DNH joins (~DNH@2a02:8108:1100:16d8:c0bf:721a:fdec:b791) |
| 22:29:33 | <sonny> | reverse = foldl (flip (:)) [] -- why does it have to be flipped? |
| 22:30:11 | → | ouestbillie joins (~gallup@192-222-138-215.qc.cable.ebox.net) |
| 22:30:27 | <hololeap> | because foldl takes (b -> a -> b) as opposed to (a -> b -> b) |
| 22:30:37 | → | BrokenClutch joins (~pioneer@2804:d41:c292:6c00:33d8:d2f1:d8af:153e) |
| 22:31:26 | <geekosaur> | > foldl f z [a,b,c] |
| 22:31:27 | <lambdabot> | f (f (f z a) b) c |
| 22:31:28 | sonny | tries to parse the signature |
| 22:31:39 | <geekosaur> | > foldr f z [a,b,c] |
| 22:31:41 | <lambdabot> | f a (f b (f c z)) |
| 22:31:52 | → | deadmarshal joins (~deadmarsh@95.38.231.124) |
| 22:32:24 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 22:32:42 | → | shapr joins (~user@2601:7c0:c202:5190:ed4f:33d2:c7d1:3eb) |
| 22:32:56 | <jackson99> | position of the current element and accumulator arguments are flipped in function accepted by foldr vs foldl |
| 22:33:45 | <sonny> | ok, I'm just gonna guess it's defined differently in scheme. I'm comparing them and I got lost |
| 22:34:24 | <geekosaur> | yes, many languages make different decisions. look at the unrolling of the folds I asked the bot for to see why haskell defines it the way it does |
| 22:34:43 | <geekosaur> | (it's basically a matter of associativity) |
| 22:35:55 | <sonny> | associativity is order? don't remember |
| 22:36:17 | <BrokenClutch> | Is it? I think it's the same definition |
| 22:36:28 | × | deadmarshal quits (~deadmarsh@95.38.231.124) (Ping timeout: 256 seconds) |
| 22:36:57 | <geekosaur> | associativity is left vs. right, is a * b * c the same as (a * b) * c or is it a * (b * c) |
| 22:37:03 | <geekosaur> | for some operator * |
| 22:38:04 | <geekosaur> | so foldl is a left-associative fold, foldr a right-associative fold |
| 22:38:23 | <geekosaur> | lists are right-associative, which is why foldr is effectively an identity for lists |
| 22:38:37 | <sonny> | BrokenClutch: you can check here https://srfi.schemers.org/srfi-1/srfi-1.html#FoldUnfoldMap |
| 22:39:33 | <ephemient> | it's clearer to see with an infix function: foldr (+) z [a, b, c] = a + (b + (c + z)), foldl (+) z [a, b, c] = ((z + a) + b) + c |
| 22:41:31 | <sonny> | ok, I'll come back later. My brain is fried |
| 22:41:34 | <jackson99> | and even clearer if the function is -, because then you will get different result |
| 22:43:15 | × | sonny quits (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca) (Remote host closed the connection) |
| 22:43:34 | → | sonny joins (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca) |
| 22:48:13 | <sonny> | geekosaur: so they wanted to avoid (f (f (f z a) b) c)? |
| 22:50:31 | <geekosaur> | I don't quite understand the question |
| 22:50:35 | → | qrpnxz joins (abc4f95c31@user/qrpnxz) |
| 22:50:59 | <geekosaur> | My point is that (:) right-associates and doesn't take its parameters in the left-associative order |
| 22:51:02 | <sonny> | just thinking about the order |
| 22:51:25 | <geekosaur> | some things are naturally left-associative, some aren't |
| 22:52:17 | <geekosaur> | so Foldable gives us foldr and foldl, but also foldMap which is allowed to associate naturally for the Foldable in question iirc |
| 22:52:55 | <geekosaur> | (:) is also asymmetric, which is another part of the problem |
| 22:53:15 | <geekosaur> | it doesn't take the same type on both sides, so it doesn't "re-associate" cleanly |
| 22:53:32 | <geekosaur> | something like (+) can associate either way |
| 22:54:22 | <sonny> | yeah |
| 23:00:40 | × | sonny quits (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca) (Remote host closed the connection) |
| 23:00:59 | → | sonny joins (~sonny@bras-base-london1483w-grc-32-70-52-175-166.dsl.bell.ca) |
| 23:02:27 | × | danso quits (~danso@d67-193-121-2.home3.cgocable.net) (Ping timeout: 268 seconds) |
| 23:02:51 | → | danso joins (~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009) |
| 23:03:30 | × | juri_ quits (~juri@178.63.35.222) (Ping timeout: 260 seconds) |
| 23:04:37 | <BrokenClutch> | I must be dumb, they look the same to me |
| 23:06:18 | <dibblego> | > ((10 - 9) - 21) |
| 23:06:19 | <lambdabot> | -20 |
| 23:06:20 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 23:06:25 | <dibblego> | > (10 - (9 - 21)) |
| 23:06:26 | <lambdabot> | 22 |
| 23:06:32 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 23:07:01 | × | azimut_ quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 23:07:16 | <geekosaur> | you won't be able to tell with (+) because it does the same thing with either associativity |
| 23:07:32 | <geekosaur> | (-) shows it better, as dibblego demonstrated |
| 23:08:12 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 23:08:13 | <BrokenClutch> | No, this part and actually knows |
| 23:08:24 | <BrokenClutch> | I was talking about the scheme definition |
| 23:08:28 | <BrokenClutch> | looks the same to me |
| 23:08:45 | <geekosaur> | scheme defines them all taking the same parameters the same way, for consistency |
| 23:08:52 | × | little_mac quits (~little_ma@2601:410:4300:3ce0:54ff:c767:ef1d:433e) (Remote host closed the connection) |
| 23:09:09 | <geekosaur> | haskell flips things for mathematical consistency instead of programmatic |
| 23:09:40 | <geekosaur> | it's harder to demonstrate the things I showed earlier with the scheme definitions of fold and fold-right, vs. Haskell foldl/foldr |
| 23:10:54 | × | hololeap quits (~hololeap@user/hololeap) (Quit: Bye) |
| 23:12:48 | <Axman6> | foldr is "Replace all :'s with f, and any [] with z". Foldl is "given a starting value, pass in each element of the list to f to use as the starting value, until you find a []" |
| 23:13:18 | <BrokenClutch> | but like, the scheme one looks the same as the haskell one |
| 23:13:27 | <BrokenClutch> | I'm trying to see the difference, but i don't got it |
| 23:13:35 | <Axman6> | link to the scheme one? |
| 23:13:45 | <BrokenClutch> | https://srfi.schemers.org/srfi-1/srfi-1.html#FoldUnfoldMap |
| 23:14:16 | <BrokenClutch> | Is it after the compilation? Like, how scheme changes foldr to a c-loop on most compilers/transpillers? |
| 23:14:21 | <geekosaur> | is there supposed to be one, aside from parameter order (the "z" coming first instead of second) |
| 23:14:24 | <geekosaur> | ? |
| 23:15:03 | × | coot quits (~coot@2a02:a310:e03f:8500:5cc8:47c:8ec0:b827) (Quit: coot) |
| 23:15:37 | <Axman6> | (fold kons (kons (car lis) knil) (cdr lis)) clearly isn't the same as (kons (car lis) (fold-right kons knil (cdr lis))) |
| 23:15:46 | × | notzmv quits (~zmv@user/notzmv) (Read error: Connection reset by peer) |
| 23:16:33 | <BrokenClutch> | I'm not comparing foldl to foldr |
| 23:16:43 | <Axman6> | ok |
| 23:16:48 | <BrokenClutch> | I'm comparing scheme's foldl to haskell's foldl |
| 23:17:53 | → | notzmv joins (~zmv@user/notzmv) |
| 23:17:56 | <Axman6> | they are identical, apart from the order of the arguments to f/kons |
| 23:19:02 | → | lavaman joins (~lavaman@98.38.249.169) |
| 23:19:38 | <Axman6> | myFoldl :: (b -> a -> b) -> b -> [a] -> b; myFoldl kons knil (car:cdr) = myFoldl kons (kons car knil) cdr; myFoldl kons knil [] = knil |
| 23:19:54 | <BrokenClutch> | the problem is with the order |
| 23:20:07 | <BrokenClutch> | scheme is eager, so it solves the last part first |
| 23:20:29 | <BrokenClutch> | while haskell will do a more "accumulative" approach, because it's lazy |
| 23:22:16 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 23:22:34 | <BrokenClutch> | like, do the foldl expansion with scheme and evaluate it. It works diffently with haskell, you gonna be evaluating the thunks |
| 23:23:21 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
| 23:23:32 | <Axman6> | > foldl f z [1,2,3] :: Expr -- This is exactly what foldl evaluates. the compiler may notice this should be strict depending on what f is |
| 23:23:33 | <lambdabot> | f (f (f z 1) 2) 3 |
| 23:23:38 | <EvanR> | sonny, the foldl argument order seems more familiar, and makes sense since this is usually how you fold in other languages. given your accum, smush the next thing in the list into it |
| 23:23:50 | <EvanR> | foldr is backwards |
| 23:23:57 | <EvanR> | but it also makes sense |
| 23:24:04 | <Axman6> | foldr is constructor replacement, foldl is a loop |
| 23:24:26 | × | son0p quits (~ff@181.136.122.143) (Remote host closed the connection) |
| 23:24:49 | <BrokenClutch> | Oh, i was wrong |
| 23:24:49 | <EvanR> | in foldr, you have the list element itself, not the accum, and the rest of the fold is on the right (all of the above assuming we work left to right) |
| 23:24:52 | <BrokenClutch> | I got it now |
| 23:25:17 | <Axman6> | there is no difference betqeen scheme's fold and haskell's foldl. there is a big difference between foldr and fold-right though |
| 23:25:39 | <EvanR> | only recently I realized how "normal" foldl is xD |
| 23:25:46 | <EvanR> | just haskell does it weird |
| 23:26:00 | × | burnsidesLlama quits (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection) |
| 23:26:42 | <hpc> | funny, foldr feels more natural to me |
| 23:26:54 | × | bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 256 seconds) |
| 23:26:55 | <EvanR> | stockholm syndrome |
| 23:27:07 | <hpc> | glasgow syndrom? |
| 23:27:10 | <BrokenClutch> | like, I think the order of the arguments of the last f is flipped |
| 23:27:18 | <EvanR> | by normal I mean relative to normal programming outside haskell land |
| 23:27:19 | <BrokenClutch> | with scheme's foldl |
| 23:27:26 | <Axman6> | yes, but that's not really important, they're isomorphic |
| 23:28:31 | <BrokenClutch> | actually, i don't think they are flipped at all |
| 23:28:45 | <BrokenClutch> | man, i got confused |
| 23:28:47 | <Axman6> | :t foldl |
| 23:28:47 | <lambdabot> | Foldable t => (b -> a -> b) -> b -> t a -> b |
| 23:29:04 | <Axman6> | they are flipped |
| 23:29:17 | <Axman6> | scheme's fold is (a -> b -> b) -> b -> [a] -> b |
| 23:29:29 | <Axman6> | because the accumulator is passed as the second argument |
| 23:30:10 | <BrokenClutch> | you are right |
| 23:30:11 | <BrokenClutch> | thanks |
| 23:30:18 | <BrokenClutch> | man, never noticed that |
| 23:30:24 | <EvanR> | you can't use "frequency analysis" to decide which order to use since... both arguments change every step |
| 23:30:31 | ChanServ | sets mode +o Axman6 |
| 23:30:36 | <Axman6> | D:B |
| 23:30:43 | shapr | grins evilly |
| 23:30:52 | <EvanR> | so gotta dig deeper in the metaphor drawer |
| 23:31:00 | <Axman6> | I have been given great power! |
| 23:31:01 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 240 seconds) |
| 23:31:09 | <Axman6> | I am not ready for this responsibility! |
| 23:31:24 | <shapr> | you can handle the power! |
| 23:32:04 | <EvanR> | BrokenClutch, also the expansions lambdabot spits out skips over any operational issues so, looking at those doesn't make performance clear |
| 23:33:03 | <EvanR> | an infinitely nested application of f could work fine in haskell, but foldl on list doesn't give you that immediately, unfortunately |
| 23:33:18 | <ephemient> | beyond the argument order, fold in Scheme is also closer to foldl' in Haskell in terms of how it's evaluated, since it's strict in the accumulator |
| 23:34:05 | <BrokenClutch> | :t foldl' |
| 23:34:06 | <lambdabot> | Foldable t => (b -> a -> b) -> b -> t a -> b |
| 23:34:31 | <BrokenClutch> | ????? |
| 23:34:37 | <EvanR> | evaluates the b eagerly, as you go |
| 23:36:05 | <BrokenClutch> | ok, I will put this on my list of things I have to study |
| 23:36:16 | <BrokenClutch> | or I'm going to break |
| 23:37:00 | <geekosaur> | % :t foldl' @[] |
| 23:37:00 | <yahb> | geekosaur: (b -> a -> b) -> b -> [a] -> b |
| 23:37:41 | <EvanR> | oh right... I'm starting to not be annoyed by all the Foldable stuff and just see "list, tree, sequence" matrix style |
| 23:40:26 | <Axman6> | BrokenClutch: you can probably ignore Foldable for now, but it just means "the class of things which you can write foldl and foldr for", turns out it's useful for more than lists |
| 23:40:41 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 268 seconds) |
| 23:43:31 | <ephemient> | you can think of foldr on a foldable as equivalent to foldr on the toList of the foldable, can't you? |
| 23:43:38 | → | hololeap joins (~hololeap@user/hololeap) |
| 23:43:49 | <monochrom> | Yes. |
| 23:43:50 | × | hgolden quits (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (Remote host closed the connection) |
| 23:44:01 | <EvanR> | that's how it should be implemented |
| 23:45:40 | <geekosaur> | that's the default if an instance doesn't define its own |
| 23:47:45 | <monochrom> | I explain Foldable by putting foldMap at the spot light, not foldl or foldr. It formalizes "aggregate queries" (if you have heard of that wording from SQL) and is why sum, product, maximum, minimum, length are all in the same type class. |
| 23:47:49 | × | max22- quits (~maxime@2a01cb0883359800fc4f47b740d6e929.ipv6.abo.wanadoo.fr) (Remote host closed the connection) |
| 23:48:07 | × | Kaiepi quits (~Kaiepi@156.34.47.253) (Quit: Leaving) |
| 23:48:18 | <monochrom> | And yes monoids strike again. |
| 23:48:57 | × | CiaoSen quits (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 23:49:01 | <EvanR> | :t foldMap |
| 23:49:02 | <lambdabot> | (Foldable t, Monoid m) => (a -> m) -> t a -> m |
| 23:49:05 | <geekosaur> | monoids are the secret master sof the universe |
| 23:49:24 | <c_wraith> | I'm really unhappy with how Foldable is documented |
| 23:49:36 | <c_wraith> | I tried to argue against it when they were designing it |
| 23:49:47 | <c_wraith> | and was told that convenient lies are better than complicated truth |
| 23:50:01 | <c_wraith> | (when they were designing the new documentation, that is) |
| 23:50:11 | <Axman6> | what would you want it to say? |
| 23:50:29 | <c_wraith> | foldMap' is described as a left fold, which is entirely wrong |
| 23:50:44 | <Axman6> | Surely we can have "Intuitive understanding" and "How it actually works" sections in the docs |
| 23:50:52 | <c_wraith> | it should be whatever fold gives it the strictness properties that are desired |
| 23:51:11 | <c_wraith> | a right fold, a left fold, a tree fold. whatever. |
| 23:51:31 | <c_wraith> | The important part is that it doesn't accumulate thunks |
| 23:51:44 | <monochrom> | In this case the "complicated" truth is not harder than the convenient lie. |
| 23:52:02 | <dolio> | Presumably it seqs a bunch of children when combining them or something? |
| 23:52:42 | <EvanR> | more like what are foldMap amd foldMap' supposed to be |
| 23:52:46 | <geekosaur> | uh. "convenient lies are better than the complicated truth?" that's pretty much the last thing I want in API docs |
| 23:52:59 | <monochrom> | Especially if I troll with "data SnocList a = Nil | Snoc (SnocList a) a" then it is right-fold that can be made efficient. |
| 23:53:04 | <c_wraith> | This is why I argued the new docs are really bad |
| 23:53:54 | <monochrom> | Well yeah there are a lot of people, mostly millenials, who mistake API docs for free tutorials. |
| 23:54:14 | <monochrom> | Because millenials are used to free tutorials. |
| 23:54:17 | <dolio> | I can buy that sometimes not being absolutely precise can be more useful for developing an understanding. But it's hard to see why saying it's like foldl is helpful. |
| 23:54:24 | <c_wraith> | why blame millenials? I assure you, I see that problem very broadly. :P |
| 23:55:10 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 23:55:21 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 23:55:21 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 23:55:21 | → | wroathe joins (~wroathe@user/wroathe) |
| 23:55:34 | <dolio> | It doesn't actually seem like a convenient lie. |
| 23:56:18 | <c_wraith> | the people I was complaining to thought it was basically always true and I was just being contrarian by pointing out all the cases where it wasn't |
| 23:56:59 | <geekosaur> | *headwall* |
| 23:57:21 | <dolio> | What cases is it true for? |
| 23:57:34 | <c_wraith> | things shaped like [] |
| 23:58:20 | <c_wraith> | including the same implied ordering |
| 23:58:52 | <dibblego> | yu |
| 23:59:49 | <dolio> | What does it mean for `null` to be left associative? |
| 23:59:56 | <dibblego> | sorry ^ |
All times are in UTC on 2022-01-09.