2021-02-28 00:00:02 +0100 | <NieDzejkob> | ski: yeah, but I'd like the declaration of each part of state to be self-contained in the component that uses it |
2021-02-28 00:00:06 +0100 | <int-e> | (which will work fine until somebody does exactly that) |
2021-02-28 00:00:08 +0100 | finn_elija | (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) |
2021-02-28 00:00:33 +0100 | <nshepperd> | you could use lens combinators in this case. without a typeclass even, unless you really have a good reason for wanting to look things up by type specifically |
2021-02-28 00:00:40 +0100 | <ski> | (yea, and ideally, doing that should be a reasonable thing to do) |
2021-02-28 00:00:56 +0100 | <ski> | NieDzejkob : not sure what you have in mind by that |
2021-02-28 00:02:26 +0100 | systemhalted | (~aqualogic@71-129-231-253.lightspeed.rcsntx.sbcglobal.net) (Remote host closed the connection) |
2021-02-28 00:02:33 +0100 | systemhalted | (~aqualogic@71-129-231-253.lightspeed.rcsntx.sbcglobal.net) |
2021-02-28 00:05:55 +0100 | elliott_ | (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 276 seconds) |
2021-02-28 00:08:58 +0100 | Varis | (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
2021-02-28 00:09:44 +0100 | inkbottle | zebrag |
2021-02-28 00:10:45 +0100 | systemhalted | (~aqualogic@71-129-231-253.lightspeed.rcsntx.sbcglobal.net) (Ping timeout: 264 seconds) |
2021-02-28 00:10:59 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
2021-02-28 00:11:05 +0100 | fendor_ | (~fendor@178.165.128.181.wireless.dyn.drei.com) (Read error: Connection reset by peer) |
2021-02-28 00:13:20 +0100 | conal | (~conal@208.91.109.22) (Quit: Computer has gone to sleep.) |
2021-02-28 00:13:47 +0100 | pavonia | (~user@unaffiliated/siracusa) |
2021-02-28 00:16:29 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 260 seconds) |
2021-02-28 00:16:51 +0100 | ddellacosta | (~ddellacos@86.106.143.10) (Remote host closed the connection) |
2021-02-28 00:17:17 +0100 | elfets | (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
2021-02-28 00:20:57 +0100 | acarrico | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 265 seconds) |
2021-02-28 00:21:05 +0100 | ezrakilty | (~ezrakilty@97-113-55-149.tukw.qwest.net) |
2021-02-28 00:21:55 +0100 | alx741 | (~alx741@186.178.108.37) (Quit: alx741) |
2021-02-28 00:22:15 +0100 | conal | (~conal@192.145.118.121) |
2021-02-28 00:24:32 +0100 | <NieDzejkob> | OH, so import cycles are an error and I actually NEED to do this |
2021-02-28 00:25:38 +0100 | <fresheyeball> | https://gitlab.com/fresheyeball/Shpadoinkle/-/blob/master/html/Shpadoinkle/Html/Memo.hs#L44 |
2021-02-28 00:25:39 +0100 | <davean> | NieDzejkob: there are ways to do cylces, but they're special. You should avoid it. |
2021-02-28 00:25:48 +0100 | <fresheyeball> | turns out I am wrong about what this bit of code does |
2021-02-28 00:25:52 +0100 | <fresheyeball> | but I don't know how to fix it |
2021-02-28 00:26:02 +0100 | <fresheyeball> | I thought it would make an IORef on the first eval |
2021-02-28 00:26:09 +0100 | <fresheyeball> | and then re-use it for subsequent evals |
2021-02-28 00:26:20 +0100 | <fresheyeball> | but ghci is showing me it runs that monad on each eval |
2021-02-28 00:26:41 +0100 | <fresheyeball> | I added putStrLn between 44 and 45 and it prints each time |
2021-02-28 00:28:34 +0100 | <fresheyeball> | oh shit I see it |
2021-02-28 00:28:37 +0100 | <fresheyeball> | duck duck |
2021-02-28 00:31:29 +0100 | NieDzejkob | quacks |
2021-02-28 00:35:12 +0100 | <NieDzejkob> | Okay, let me try explaining what I'm trying to do again. Let's say I have a set of modules, and each of them defines a data type. I want to create a state monad that holds one of each type (the Context), and write operations in the Context monad, where each module uses its own part. I'm currently using a type-indexed map, and the simple-somewhat-ugly approach of just defining a record with all of the types doesn't work because of an import cycle. Any |
2021-02-28 00:35:12 +0100 | <NieDzejkob> | other options? |
2021-02-28 00:35:23 +0100 | Sheilong | (uid293653@gateway/web/irccloud.com/x-bfiroajaabomwjor) (Quit: Connection closed for inactivity) |
2021-02-28 00:37:29 +0100 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
2021-02-28 00:40:23 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:44cd:7ec7:332d:f0ab) |
2021-02-28 00:45:39 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-02-28 00:45:45 +0100 | usr25 | (~usr25@unaffiliated/usr25) |
2021-02-28 00:50:08 +0100 | ezrakilty | (~ezrakilty@97-113-55-149.tukw.qwest.net) (Remote host closed the connection) |
2021-02-28 00:51:43 +0100 | usr25 | (~usr25@unaffiliated/usr25) (Ping timeout: 245 seconds) |
2021-02-28 00:51:45 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:b84a:c23b:9840:733b) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-02-28 00:56:03 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:b84a:c23b:9840:733b) |
2021-02-28 00:59:53 +0100 | fresheyeball | (~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9) |
2021-02-28 01:04:14 +0100 | <hyiltiz-M> | But how in seven hells did you put yourself in such a situation? Sounds like you needed a bunch of custom type classes instead, no? |
2021-02-28 01:09:02 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:44cd:7ec7:332d:f0ab) (Ping timeout: 264 seconds) |
2021-02-28 01:12:19 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:b84a:c23b:9840:733b) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-02-28 01:13:00 +0100 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
2021-02-28 01:17:35 +0100 | hiroaki_ | (~hiroaki@2a02:908:4b18:8c40:331:1c71:e87e:3061) (Ping timeout: 272 seconds) |
2021-02-28 01:17:55 +0100 | perrier-jouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.0) |
2021-02-28 01:19:57 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-02-28 01:22:14 +0100 | sh9 | (~sh9@softbank060116136158.bbtec.net) |
2021-02-28 01:25:36 +0100 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 240 seconds) |
2021-02-28 01:25:52 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds) |
2021-02-28 01:26:37 +0100 | ddellacosta | (~ddellacos@86.106.143.58) |
2021-02-28 01:31:09 +0100 | ddellacosta | (~ddellacos@86.106.143.58) (Ping timeout: 260 seconds) |
2021-02-28 01:31:45 +0100 | darjeeling_ | (~darjeelin@122.245.218.150) (Ping timeout: 264 seconds) |
2021-02-28 01:37:59 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:44cd:7ec7:332d:f0ab) |
2021-02-28 01:40:34 +0100 | elliott__ | (~elliott@pool-108-51-101-42.washdc.fios.verizon.net) |
2021-02-28 01:40:48 +0100 | bennofs_ | (~quassel@dslb-188-106-243-069.188.106.pools.vodafone-ip.de) |
2021-02-28 01:43:00 +0100 | hendursa1 | (~weechat@gateway/tor-sasl/hendursaga) (Quit: hendursa1) |
2021-02-28 01:43:23 +0100 | hendursaga | (~weechat@gateway/tor-sasl/hendursaga) |
2021-02-28 01:44:13 +0100 | Wuzzy | (~Wuzzy@p5b0df7c2.dip0.t-ipconnect.de) |
2021-02-28 01:44:57 +0100 | bennofs__ | (~quassel@dslb-094-222-055-234.094.222.pools.vodafone-ip.de) (Ping timeout: 264 seconds) |
2021-02-28 01:45:43 +0100 | Tario | (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
2021-02-28 01:46:15 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@2403:6200:8876:c8ae:4c2c:c3c0:6062:2fc9) |
2021-02-28 01:46:23 +0100 | conal | (~conal@192.145.118.121) (Quit: Computer has gone to sleep.) |
2021-02-28 01:48:37 +0100 | elfets | (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 276 seconds) |
2021-02-28 01:48:58 +0100 | darjeeling_ | (~darjeelin@122.245.218.150) |
2021-02-28 01:52:29 +0100 | gitgoood | (~gitgood@80-44-13-166.dynamic.dsl.as9105.com) |
2021-02-28 01:52:47 +0100 | gitgood | (~gitgood@80-44-13-166.dynamic.dsl.as9105.com) (Ping timeout: 265 seconds) |
2021-02-28 01:57:23 +0100 | conal | (~conal@198.8.81.202) |
2021-02-28 02:01:54 +0100 | supercoven | (~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi) |
2021-02-28 02:04:52 +0100 | supercoven_ | (~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi) (Ping timeout: 276 seconds) |
2021-02-28 02:05:36 +0100 | remby | (4c437c1b@bras-base-london1483w-grc-21-76-67-124-27.dsl.bell.ca) |
2021-02-28 02:07:01 +0100 | Rudd0 | (~Rudd0@185.189.115.108) (Remote host closed the connection) |
2021-02-28 02:07:08 +0100 | ddellacosta | (~ddellacos@86.106.143.201) |
2021-02-28 02:07:18 +0100 | Narinas | (~Narinas@187-178-93-112.dynamic.axtel.net) |
2021-02-28 02:11:36 +0100 | ddellacosta | (~ddellacos@86.106.143.201) (Ping timeout: 240 seconds) |
2021-02-28 02:11:39 +0100 | whataday | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2021-02-28 02:11:57 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
2021-02-28 02:12:47 +0100 | whataday | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2021-02-28 02:13:48 +0100 | MidAutumnHotaru0 | (~MidAutumn@unaffiliated/midautumnhotaru) |
2021-02-28 02:15:55 +0100 | MidAutumnHotaru | (~MidAutumn@unaffiliated/midautumnhotaru) (Ping timeout: 260 seconds) |
2021-02-28 02:15:55 +0100 | MidAutumnHotaru0 | MidAutumnHotaru |
2021-02-28 02:16:45 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 264 seconds) |
2021-02-28 02:17:11 +0100 | Tario | (~Tario@201.192.165.173) |
2021-02-28 02:18:50 +0100 | klardotsh | (~klardotsh@75-172-17-41.tukw.qwest.net) (Quit: WeeChat 3.0.1) |
2021-02-28 02:25:50 +0100 | aplainzetakind | (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) |
2021-02-28 02:25:56 +0100 | aplainze1akind | (~johndoe@captainludd.powered.by.lunarbnc.net) |
2021-02-28 02:26:21 +0100 | aplainze1akind | aplainzetakind |
2021-02-28 02:26:23 +0100 | Feuermagier | (~Feuermagi@2a02:2488:4211:3400:246e:bf09:8453:9d6) (Remote host closed the connection) |
2021-02-28 02:26:40 +0100 | Feuermagier | (~Feuermagi@2a02:2488:4211:3400:246e:bf09:8453:9d6) |
2021-02-28 02:26:58 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Ping timeout: 276 seconds) |
2021-02-28 02:27:35 +0100 | cheater | (~user@unaffiliated/cheater) (Ping timeout: 265 seconds) |
2021-02-28 02:28:24 +0100 | remby | (4c437c1b@bras-base-london1483w-grc-21-76-67-124-27.dsl.bell.ca) () |
2021-02-28 02:28:32 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:b84a:c23b:9840:733b) |
2021-02-28 02:30:24 +0100 | int80h | (uid148779@gateway/web/irccloud.com/x-byitmqwoaqxynwkn) |
2021-02-28 02:38:06 +0100 | cheater | (~user@unaffiliated/cheater) |
2021-02-28 02:38:14 +0100 | elliott__ | (~elliott@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 260 seconds) |
2021-02-28 02:41:36 +0100 | vicfred | (vicfred@gateway/vpn/mullvad/vicfred) (Ping timeout: 265 seconds) |
2021-02-28 02:47:21 +0100 | ddellacosta | (ddellacost@gateway/vpn/mullvad/ddellacosta) |
2021-02-28 02:50:47 +0100 | Ariakenom | (~Ariakenom@2001:9b1:efb:fc00:2494:eb54:ea13:73ca) (Quit: Leaving) |
2021-02-28 02:52:19 +0100 | ddellacosta | (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 276 seconds) |
2021-02-28 02:56:36 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) |
2021-02-28 03:00:19 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
2021-02-28 03:00:58 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Ping timeout: 260 seconds) |
2021-02-28 03:04:36 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
2021-02-28 03:09:19 +0100 | conal | (~conal@198.8.81.202) (Quit: Computer has gone to sleep.) |
2021-02-28 03:10:27 +0100 | Tario | (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
2021-02-28 03:10:52 +0100 | jpds_ | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2021-02-28 03:11:16 +0100 | jpds_ | (~jpds@gateway/tor-sasl/jpds) |
2021-02-28 03:12:18 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@2403:6200:8876:c8ae:4c2c:c3c0:6062:2fc9) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-02-28 03:13:14 +0100 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
2021-02-28 03:15:51 +0100 | banyanRob | (49f11cfb@c-73-241-28-251.hsd1.ca.comcast.net) |
2021-02-28 03:16:09 +0100 | geowiesnot_bis | (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 264 seconds) |
2021-02-28 03:16:21 +0100 | conal | (~conal@192.145.118.137) |
2021-02-28 03:16:59 +0100 | Tario | (~Tario@201.192.165.173) |
2021-02-28 03:19:04 +0100 | slack1256 | (~slack1256@45.4.2.52) |
2021-02-28 03:20:21 +0100 | sakirious5 | (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) |
2021-02-28 03:20:43 +0100 | conal | (~conal@192.145.118.137) (Client Quit) |
2021-02-28 03:20:48 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-02-28 03:21:51 +0100 | conal | (~conal@192.145.118.137) |
2021-02-28 03:22:29 +0100 | conal | (~conal@192.145.118.137) (Client Quit) |
2021-02-28 03:23:35 +0100 | sakirious | (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Ping timeout: 260 seconds) |
2021-02-28 03:23:35 +0100 | sakirious5 | sakirious |
2021-02-28 03:24:39 +0100 | vchlup_ | (~vchlup@115.128.broadband17.iol.cz) |
2021-02-28 03:27:02 +0100 | vchlup | (~vchlup@115.128.broadband17.iol.cz) (Ping timeout: 265 seconds) |
2021-02-28 03:29:24 +0100 | MidAutumnHotaru | (~MidAutumn@unaffiliated/midautumnhotaru) (Quit: Quit 啾) |
2021-02-28 03:29:32 +0100 | banyanRob | (49f11cfb@c-73-241-28-251.hsd1.ca.comcast.net) (Quit: Connection closed) |
2021-02-28 03:30:17 +0100 | MidAutumnHotaru | (~MidAutumn@unaffiliated/midautumnhotaru) |
2021-02-28 03:30:35 +0100 | perrier-jouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2021-02-28 03:31:06 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@184.22.157.95) |
2021-02-28 03:33:01 +0100 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
2021-02-28 03:36:37 +0100 | conal | (~conal@66.115.157.135) |
2021-02-28 03:39:12 +0100 | Lord_of_Life_ | (~Lord@unaffiliated/lord-of-life/x-0885362) |
2021-02-28 03:40:36 +0100 | Deide | (~Deide@217.155.19.23) (Quit: Seeee yaaaa) |
2021-02-28 03:40:36 +0100 | Lord_of_Life | (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 240 seconds) |
2021-02-28 03:40:36 +0100 | Lord_of_Life_ | Lord_of_Life |
2021-02-28 03:44:56 +0100 | zq | (~zq@xorshift.org) |
2021-02-28 03:45:01 +0100 | <minoru_shiraeesh> | NieDzejkob: if you were to describe it to a child, a child would ask: "why do you want to merge all the contexts into a single context if they are separate from each other?" |
2021-02-28 03:45:18 +0100 | <zq> | :t foldl |
2021-02-28 03:45:19 +0100 | <lambdabot> | Foldable t => (b -> a -> b) -> b -> t a -> b |
2021-02-28 03:45:56 +0100 | <zq> | how to prove that foldl (:) ys xs == concat (reverse xs) ys? |
2021-02-28 03:46:38 +0100 | <koz_> | Start with the definitions of 'foldl', 'concat' and 'reverse'. |
2021-02-28 03:46:49 +0100 | <koz_> | Then inline those and see what you get. |
2021-02-28 03:46:58 +0100 | <koz_> | Then apply reductions until LHS and RHS look the same. |
2021-02-28 03:47:27 +0100 | <zq> | um, let me correct my statement: foldl (:) ys xs == reverse xs ++ ys |
2021-02-28 03:47:39 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 260 seconds) |
2021-02-28 03:50:11 +0100 | <minoru_shiraeesh> | and then a child would say: "it would make sense to use different states for different contexts and to have a way of switching from one context to another, like a bridge or something" |
2021-02-28 03:50:28 +0100 | <koz_> | zq: My answer is unchanged, modulo the fact you no longer need 'concat'. |
2021-02-28 03:52:49 +0100 | <minoru_shiraeesh> | but how do you do that with monad stacks, I don't know |
2021-02-28 03:53:10 +0100 | kupi | (uid212005@gateway/web/irccloud.com/x-vvucditfymkrygow) (Quit: Connection closed for inactivity) |
2021-02-28 03:53:42 +0100 | <koz_> | minoru_shiraeesh: Is the goal to go from StateT s m a to StateT s' m a or something? |
2021-02-28 03:54:07 +0100 | Wuzzy | (~Wuzzy@p5b0df7c2.dip0.t-ipconnect.de) (Quit: Wuzzy) |
2021-02-28 03:54:21 +0100 | <minoru_shiraeesh> | koz_: Is NieDzeijkob's earlier description visible to you? |
2021-02-28 03:54:43 +0100 | <minoru_shiraeesh> | it was posted at 05:35 |
2021-02-28 03:54:48 +0100 | <koz_> | minoru_shiraeesh: No, but I recall vaguely that the issue was the MonadState s (State s) fundep. |
2021-02-28 03:55:19 +0100 | <minoru_shiraeesh> | here is his message: |
2021-02-28 03:55:22 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds) |
2021-02-28 03:55:25 +0100 | <minoru_shiraeesh> | Okay, let me try explaining what I'm trying to do again. Let's say I have a set of modules, and each of them defines a data type. I want to create a state monad that holds one of each type (the Context), and write operations in the Context monad, where each module uses its own part. I'm currently using a type-indexed map, and the simple-somewhat-ugly approach of just defining a record with all of the types doesn't work because of an import |
2021-02-28 03:55:27 +0100 | <minoru_shiraeesh> | cycle. Any |
2021-02-28 03:55:32 +0100 | <minoru_shiraeesh> | other options? |
2021-02-28 03:55:54 +0100 | rajivr | (uid269651@gateway/web/irccloud.com/x-nydprmgitcsjloxf) |
2021-02-28 03:55:54 +0100 | mrchampion | (~mrchampio@38.18.109.23) (Read error: Connection reset by peer) |
2021-02-28 03:56:23 +0100 | <koz_> | 'One of each type' - one what of each type? |
2021-02-28 03:57:47 +0100 | conal | (~conal@66.115.157.135) (Quit: Computer has gone to sleep.) |
2021-02-28 03:59:04 +0100 | <minoru_shiraeesh> | one record holding a state I guess |
2021-02-28 03:59:33 +0100 | <koz_> | I read that as 'one value of each data type'. |
2021-02-28 03:59:49 +0100 | mrchampion | (~mrchampio@38.18.109.23) |
2021-02-28 03:59:52 +0100 | <koz_> | So you basically have a closed set of values, one of each type. |
2021-02-28 03:59:57 +0100 | <zq> | koz_: what reductions should i be applying? |
2021-02-28 04:00:10 +0100 | <koz_> | zq: Like, evaluations? |
2021-02-28 04:00:16 +0100 | <koz_> | Or equivalences from laws. |
2021-02-28 04:00:31 +0100 | <koz_> | Look at how we demonstrate things like type class laws for examples if you need to see this in action. |
2021-02-28 04:00:33 +0100 | m0rphism1 | (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 264 seconds) |
2021-02-28 04:00:33 +0100 | ddellacosta | (~ddellacos@86.106.143.32) |
2021-02-28 04:00:37 +0100 | conal | (~conal@192.145.118.103) |
2021-02-28 04:00:44 +0100 | <zq> | that's pretty much my question. i'm not clear on which equivalences i should be using |
2021-02-28 04:00:52 +0100 | <koz_> | zq: There isn't a magic formula. |
2021-02-28 04:01:00 +0100 | <koz_> | It's like solving an equation. |
2021-02-28 04:01:02 +0100 | slack1256 | (~slack1256@45.4.2.52) (Remote host closed the connection) |
2021-02-28 04:01:15 +0100 | <koz_> | You need to see what transformations are available and work towards making the two sides the same. |
2021-02-28 04:01:21 +0100 | <koz_> | It's different every time. |
2021-02-28 04:01:37 +0100 | <koz_> | Proofs are not automatable in general. If they were, mathematics would cease to be a science. |
2021-02-28 04:01:44 +0100 | <koz_> | Try some and see what happens? |
2021-02-28 04:01:53 +0100 | <zq> | so, foldl f ys (x:xs) = foldl f (x:ys) xs where f = reverse (:) -- where do i go from here? |
2021-02-28 04:02:19 +0100 | <koz_> | zq: You apply reductions to the whole equality you want to prove. |
2021-02-28 04:02:22 +0100 | <koz_> | it's a substitution. |
2021-02-28 04:02:29 +0100 | Mrbuck | (~Mrbuck@gateway/tor-sasl/mrbuck) |
2021-02-28 04:02:29 +0100 | <koz_> | You're not substituting. |
2021-02-28 04:02:38 +0100 | <zq> | what wasnt substituted? |
2021-02-28 04:02:53 +0100 | xff0x | (~xff0x@2001:1a81:5311:f400:9a7d:6852:57d4:8353) (Ping timeout: 272 seconds) |
2021-02-28 04:03:05 +0100 | <zq> | it's trivial when xs == [] so i've assumed that it isn't |
2021-02-28 04:03:24 +0100 | <koz_> | Your goal is 'prove that 'foldl (:) ys xs == reverse xs ++ ys' |
2021-02-28 04:03:37 +0100 | <koz_> | So first, replace the entire LHS with the definition of foldl, renaming parameters as appropriate. |
2021-02-28 04:03:40 +0100 | <koz_> | Ditto reverse. |
2021-02-28 04:03:43 +0100 | <koz_> | (except RHS) |
2021-02-28 04:03:57 +0100 | <koz_> | Maintain the ==, maintain variable names, ensure the == stays intact through each trnasformation. |
2021-02-28 04:04:00 +0100 | <koz_> | Then see what you get. |
2021-02-28 04:04:09 +0100 | <zq> | isn't that exactly what i've done on the lhs? |
2021-02-28 04:04:27 +0100 | <koz_> | Except I don't see 'reverse xs ++ ys' anywhere in the thing you just posted. |
2021-02-28 04:04:30 +0100 | <zq> | the definition of foldl is recursive |
2021-02-28 04:04:38 +0100 | xff0x | (~xff0x@2001:1a81:5349:9200:4bab:e866:1730:4463) |
2021-02-28 04:04:38 +0100 | ddellacosta | (~ddellacos@86.106.143.32) (Ping timeout: 245 seconds) |
2021-02-28 04:04:39 +0100 | <koz_> | So do one step, keep the recursive part. |
2021-02-28 04:04:53 +0100 | <koz_> | (also, is this homework?) |
2021-02-28 04:04:54 +0100 | <zq> | that's what the above is? |
2021-02-28 04:05:00 +0100 | <zq> | no, it's weekend fun |
2021-02-28 04:05:07 +0100 | <koz_> | OK, let me try. |
2021-02-28 04:05:22 +0100 | <zq> | i know i should be proving some side property of (++) but it's unclear to me which |
2021-02-28 04:05:45 +0100 | <zq> | for reference, this is the haskellified version of ex 4f in https://www.fstar-lang.org/tutorial/ |
2021-02-28 04:07:56 +0100 | darjeeling_ | (~darjeelin@122.245.218.150) (Ping timeout: 240 seconds) |
2021-02-28 04:08:29 +0100 | banyanRob | (49f11cfb@c-73-241-28-251.hsd1.ca.comcast.net) |
2021-02-28 04:08:44 +0100 | <minoru_shiraeesh> | how about proving by induction? |
2021-02-28 04:10:08 +0100 | <minoru_shiraeesh> | prove for empty list, then prove that if it holds for some list, then it holds for incremented (consed) list |
2021-02-28 04:10:30 +0100 | lawid | (~quassel@dslb-090-186-099-002.090.186.pools.vodafone-ip.de) (Ping timeout: 246 seconds) |
2021-02-28 04:10:47 +0100 | <koz_> | I don't think it even compiles, as foldl (:) ys xs won't work when ys is a list, because the args are in the wrong order. |
2021-02-28 04:11:21 +0100 | <zq> | koz_: yeah, that was the second mistake in my original question. should isntead be `reverse (:)` |
2021-02-28 04:11:29 +0100 | lawid | (~quassel@dslb-090-186-208-048.090.186.pools.vodafone-ip.de) |
2021-02-28 04:11:33 +0100 | <koz_> | reverse (:) also makes no sense |
2021-02-28 04:11:35 +0100 | <zq> | reflected in 03:01:53 < zq> so, foldl f ys (x:xs) = foldl f (x:ys) xs where f = reverse (:) -- where do i go from here? |
2021-02-28 04:11:37 +0100 | <koz_> | You can't reverse a function. |
2021-02-28 04:11:52 +0100 | <koz_> | So first, we need a _compiling_ LHS. |
2021-02-28 04:12:22 +0100 | <zq> | flip (:) -- it's been a while since i've haskelled |
2021-02-28 04:12:30 +0100 | <koz_> | OK, so our goal is |
2021-02-28 04:12:41 +0100 | <koz_> | foldl (flip (:)) ys xs == reverse xs ++ ys |
2021-02-28 04:12:43 +0100 | <koz_> | Right? |
2021-02-28 04:13:08 +0100 | Mrbuck | (~Mrbuck@gateway/tor-sasl/mrbuck) (Remote host closed the connection) |
2021-02-28 04:13:19 +0100 | <zq> | yessir, and if proving inductively then this trivially holds when xs == [] so i've skipped ahead to xs == (s:ss) |
2021-02-28 04:13:54 +0100 | Mrbuck | (~Mrbuck@gateway/tor-sasl/mrbuck) |
2021-02-28 04:15:24 +0100 | <zq> | i think i get it, rhs has to be expanded first and then leverage associativity of (++) |
2021-02-28 04:15:54 +0100 | <koz_> | zq: Here's a start: https://paste.tomsmeding.com/vbSX0vE2 |
2021-02-28 04:16:26 +0100 | <koz_> | This should help you see the next steps. |
2021-02-28 04:16:39 +0100 | <koz_> | Now, onto the other problem. |
2021-02-28 04:17:03 +0100 | <koz_> | How I see it is this - your Context monad is actually parameterized over what particular type you are examining at the moment. |
2021-02-28 04:17:14 +0100 | <koz_> | So it makes sense to talk about Context s a, not Context a. |
2021-02-28 04:17:28 +0100 | <koz_> | So you can have a Context a, which 'forgets' what state it's focused on. |
2021-02-28 04:17:47 +0100 | <koz_> | And then you have a function that turns a Context a into Context s a for some s. |
2021-02-28 04:17:54 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
2021-02-28 04:18:00 +0100 | <koz_> | Problem is, you can't have this be universal, because there might not _be_ an 's' to project into. |
2021-02-28 04:18:20 +0100 | <koz_> | So you want one function per projection, as well as a 'forgetting' function. |
2021-02-28 04:18:20 +0100 | kw | (d4662d5d@212.102.45.93) |
2021-02-28 04:18:27 +0100 | FinnElija | (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) |
2021-02-28 04:18:27 +0100 | finn_elija | Guest72499 |
2021-02-28 04:18:27 +0100 | FinnElija | finn_elija |
2021-02-28 04:18:32 +0100 | <koz_> | Then you can define MonadState s (Context s) and live your happy life. |
2021-02-28 04:18:35 +0100 | <minoru_shiraeesh> | you're talking about State s a? |
2021-02-28 04:18:47 +0100 | <koz_> | Context s would be equivalent to State s, yes. |
2021-02-28 04:18:59 +0100 | theelous3 | (~theelous3@unaffiliated/theelous3) (Read error: Connection reset by peer) |
2021-02-28 04:19:45 +0100 | <minoru_shiraeesh> | but why forget what state it's focused on? that's just sugaring anyway |
2021-02-28 04:20:02 +0100 | <koz_> | Because then you can't have a Context which _doesn't_ know what type it's focusing on. |
2021-02-28 04:20:06 +0100 | <minoru_shiraeesh> | how do you glue them together? |
2021-02-28 04:20:07 +0100 | <koz_> | Which I assumed was the get-go goal. |
2021-02-28 04:20:15 +0100 | <koz_> | That is exactly how you glue them together. |
2021-02-28 04:20:44 +0100 | <minoru_shiraeesh> | but the module doesn't care about other contexts |
2021-02-28 04:20:50 +0100 | <minoru_shiraeesh> | and it's not going to use them |
2021-02-28 04:20:56 +0100 | <koz_> | So then what's the problem? |
2021-02-28 04:21:00 +0100 | <koz_> | I'm genuinely confused now. |
2021-02-28 04:21:12 +0100 | <kw> | What are the dangers of using `unsafePerformIO` with `newIORef` at the top level to create a cache? Values that aren't in the cache will be calculated, inserted into the cache, and returned as needed (in IO). |
2021-02-28 04:21:27 +0100 | Guest72499 | (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Ping timeout: 268 seconds) |
2021-02-28 04:21:40 +0100 | <koz_> | Why do you think you need this kw? |
2021-02-28 04:21:42 +0100 | pfurla | (~pfurla@ool-182ed2e2.dyn.optonline.net) (Quit: gone to sleep. ZZZzzz…) |
2021-02-28 04:21:45 +0100 | <minoru_shiraeesh> | why don't we just provide a module with a simple State ModuleSpecificState a |
2021-02-28 04:22:02 +0100 | <koz_> | minoru_shiraeesh: I dunno, I'm just answering the posed question, as I understood it. |
2021-02-28 04:22:14 +0100 | <koz_> | If I misunderstood the posed question, NieDzejkob needs to clarify what they want. |
2021-02-28 04:22:47 +0100 | <kw> | koz_: It's a shared cache for data that has to be accessed from an external (C) library. |
2021-02-28 04:23:11 +0100 | <koz_> | If you're calling a C library, aren't you in IO already? |
2021-02-28 04:23:14 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 260 seconds) |
2021-02-28 04:23:21 +0100 | redmp_ | (~redmp@172.58.35.206) (Ping timeout: 264 seconds) |
2021-02-28 04:23:30 +0100 | darjeeling_ | (~darjeelin@122.245.218.150) |
2021-02-28 04:23:40 +0100 | <minoru_shiraeesh> | I answered that it would make sense to provide each module with its own State s a, and then create a bridge between those states somehow, I don't know how |
2021-02-28 04:23:51 +0100 | <koz_> | That is the bridge. |
2021-02-28 04:23:53 +0100 | <kw> | Right, but the lookups will be through individual calls in IO. I don't want each call to make a new empty cache. |
2021-02-28 04:23:57 +0100 | <koz_> | You define a thing that 'forgets' its focus. |
2021-02-28 04:24:09 +0100 | <koz_> | If your calls are in IO, your cache can be in IO as well. |
2021-02-28 04:24:25 +0100 | <koz_> | You can just have 'cache :: IORef whatever'. |
2021-02-28 04:25:17 +0100 | <kw> | :t newIORef |
2021-02-28 04:25:18 +0100 | <lambdabot> | error: |
2021-02-28 04:25:18 +0100 | <lambdabot> | • Variable not in scope: newIORef |
2021-02-28 04:25:18 +0100 | <lambdabot> | • Perhaps you meant ‘newSTRef’ (imported from Data.STRef) |
2021-02-28 04:25:25 +0100 | <zq> | koz_: you're right about substituting then reducing |
2021-02-28 04:25:26 +0100 | <koz_> | % :t newIORef |
2021-02-28 04:25:26 +0100 | <yahb> | koz_: a -> IO (IORef a) |
2021-02-28 04:25:35 +0100 | <zq> | i grok it now |
2021-02-28 04:25:46 +0100 | <koz_> | zq: It's just like solving an equation. |
2021-02-28 04:26:01 +0100 | <koz_> | This at least helps you see some similarities if nothing else. |
2021-02-28 04:26:10 +0100 | <kw> | :t Data.IORef.newIORef |
2021-02-28 04:26:11 +0100 | <lambdabot> | a -> IO (GHC.IORef.IORef a) |
2021-02-28 04:27:44 +0100 | <koz_> | So you create your cache in main (hence in IO), bind that, then pass the resulting IORef as an extra parameter where needed. |
2021-02-28 04:27:52 +0100 | <koz_> | If you want this to be 'seamless', use ReaderT. |
2021-02-28 04:29:48 +0100 | <kw> | This is library code, not app code. If possible I'd like to avoid forcing users to put 'initializeCache' in their `main` . At that point I'd probably just give up on caching and just suck up the performance hit. |
2021-02-28 04:30:22 +0100 | <koz_> | If it's a library, just assume they did it for you. |
2021-02-28 04:30:27 +0100 | <koz_> | Just take an extra parameter. |
2021-02-28 04:30:58 +0100 | jacks2 | (~bc8134e3@217.29.117.252) |
2021-02-28 04:31:01 +0100 | <koz_> | Or make a monad involving ReaderT myCacheType IO or whatever in a newtype, and write everything in that. |
2021-02-28 04:31:17 +0100 | <kw> | So, getting back to my original question, why are we trying so hard to avoid `unsafePerformIO` ? |
2021-02-28 04:31:22 +0100 | <koz_> | And provide a 'runMyMonad :: MyMonad a -> cacheType -> IO a' |
2021-02-28 04:31:44 +0100 | <koz_> | There's a reason for the 'unsafe' in that name. |
2021-02-28 04:31:51 +0100 | <koz_> | Other folks in here can tell you what gore to anticipate. |
2021-02-28 04:32:14 +0100 | <kw> | In this case it should be transparent to the user: The caller of the function will get the same value regardless of whether it's in the cache. |
2021-02-28 04:32:32 +0100 | <koz_> | Yeah, but the functions are in IO, correct? |
2021-02-28 04:32:54 +0100 | <koz_> | So your users can already assume funky stuff will happen, and you have to say if not. |
2021-02-28 04:33:16 +0100 | <koz_> | Honestly, just carry around an extra argument for the IORef cacheType. |
2021-02-28 04:33:20 +0100 | <koz_> | It's not that onerous. |
2021-02-28 04:33:32 +0100 | <koz_> | You can provide a function that gives back an initialized cache for convenience. |
2021-02-28 04:33:38 +0100 | <koz_> | And then your users can wrap it or w/e. |
2021-02-28 04:34:15 +0100 | <jacks2> | top level IORef is not unheard of, random uses it for randomIO to update seed |
2021-02-28 04:34:40 +0100 | <koz_> | jacks2: But it's not initialized with unsafePerformIO right? |
2021-02-28 04:34:43 +0100 | <kw> | I'm not going to create a shitty API for performance reasons. As I said, forcing folks to thread an extra cache parameter is not going to happen. |
2021-02-28 04:34:49 +0100 | ddellacosta | (ddellacost@gateway/vpn/mullvad/ddellacosta) |
2021-02-28 04:35:01 +0100 | <koz_> | kw: Why do you consider it that bad? |
2021-02-28 04:35:02 +0100 | <jacks2> | koz_, I did not check the source, but I'm not sure how else it would be created |
2021-02-28 04:35:11 +0100 | <kw> | If it's 10 to 50 times slower, OK. Haskell is still reasonably fast. |
2021-02-28 04:35:33 +0100 | <koz_> | jacks2: Then how do you know about the top level IORef and what it updates? |
2021-02-28 04:35:35 +0100 | <jacks2> | yep, they are using unsafePerformIO |
2021-02-28 04:35:37 +0100 | <kw> | I consider it bad because the cache is an implementation artifact, not a part of the semantics of the function. |
2021-02-28 04:35:38 +0100 | <jacks2> | theStdGen = unsafePerformIO $ SM.initSMGen >>= newIORef . StdGen |
2021-02-28 04:35:49 +0100 | <jacks2> | koz_, because that is the only way to do it |
2021-02-28 04:35:49 +0100 | <infinisil> | zq: Just dug up this proof of `reverse (xs ++ reverse ys) == ys ++ reverse xs` from my university notes. Should be relatively self-explanatory, and will be very similar to what you want to prove: https://paste.infinisil.com/_FAwpWitJg.txt |
2021-02-28 04:35:50 +0100 | <koz_> | OK, well, there you go kw, go right ahead. |
2021-02-28 04:36:29 +0100 | <jacks2> | {-# NOINLINE theStdGen #-} is also the important part of |
2021-02-28 04:37:23 +0100 | <kw> | Oh, yeah. Forgot about NOINLINE. It actually wouldn't be terrible to have multiple caches floating around, but it would be a lot less useful. |
2021-02-28 04:37:29 +0100 | viluon | (uid453725@gateway/web/irccloud.com/x-ignoxmynamzxzkoi) (Quit: Connection closed for inactivity) |
2021-02-28 04:38:31 +0100 | pfurla | (~pfurla@ool-182ed2e2.dyn.optonline.net) |
2021-02-28 04:39:13 +0100 | ddellacosta | (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 245 seconds) |
2021-02-28 04:39:28 +0100 | POGtastic | (~POGtastic@2601:1c0:6000:fe1:6f92:35eb:b863:d90a) |
2021-02-28 04:39:58 +0100 | <POGtastic> | > pl \x -> map (x:) [[]] |
2021-02-28 04:39:59 +0100 | <lambdabot> | error: |
2021-02-28 04:39:59 +0100 | <lambdabot> | Unexpected lambda expression in function application: |
2021-02-28 04:39:59 +0100 | <lambdabot> | \ x -> map (x :) [[]] |
2021-02-28 04:40:29 +0100 | <minoru_shiraeesh> | kw: you can take a look at lambdabot, the approach you described is used there |
2021-02-28 04:42:34 +0100 | <infinisil> | POGtastic: It's `@pl <expr>` or the , but don't do it in the channel unless you have a relevant question, PM lambdabot instead |
2021-02-28 04:42:43 +0100 | <infinisil> | s/or the // |
2021-02-28 04:42:50 +0100 | <jacks2> | kw, see this for all the things you should watch out for if you're going that route. http://hackage.haskell.org/package/base-4.14.1.0/docs/System-IO-Unsafe.html |
2021-02-28 04:43:59 +0100 | <POGtastic> | infinisil: gotcha, thanks! |
2021-02-28 04:44:46 +0100 | POGtastic | (~POGtastic@2601:1c0:6000:fe1:6f92:35eb:b863:d90a) (Quit: WeeChat 2.9) |
2021-02-28 04:46:02 +0100 | <kw> | jacks2: thanks. |
2021-02-28 04:47:57 +0100 | theDon | (~td@94.134.91.67) (Ping timeout: 264 seconds) |
2021-02-28 04:49:19 +0100 | theDon | (~td@muedsl-82-207-238-016.citykom.de) |
2021-02-28 04:49:36 +0100 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 240 seconds) |
2021-02-28 04:52:19 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
2021-02-28 04:52:46 +0100 | HarveyPwca | (~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06) (Quit: Leaving) |
2021-02-28 04:54:16 +0100 | Narinas | (~Narinas@187-178-93-112.dynamic.axtel.net) (Read error: Connection reset by peer) |
2021-02-28 04:55:55 +0100 | Narinas | (~Narinas@187-178-93-112.dynamic.axtel.net) |
2021-02-28 04:57:10 +0100 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
2021-02-28 04:57:36 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 240 seconds) |
2021-02-28 04:57:42 +0100 | soft-warm | (44695313@ip68-105-83-19.sd.sd.cox.net) (Ping timeout: 240 seconds) |
2021-02-28 05:00:28 +0100 | Rudd0 | (~Rudd0@185.189.115.108) |
2021-02-28 05:00:54 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-02-28 05:01:17 +0100 | jacks2 | (~bc8134e3@217.29.117.252) (Quit: http://www.okay.uz/) |
2021-02-28 05:02:35 +0100 | myShoggoth | (~myShoggot@75.164.81.55) |
2021-02-28 05:02:39 +0100 | hendursaga | (~weechat@gateway/tor-sasl/hendursaga) (Remote host closed the connection) |
2021-02-28 05:05:01 +0100 | hendursaga | (~weechat@gateway/tor-sasl/hendursaga) |
2021-02-28 05:07:42 +0100 | andreas303 | (~andreas@gateway/tor-sasl/andreas303) (Ping timeout: 268 seconds) |
2021-02-28 05:09:06 +0100 | andreas303 | (~andreas@gateway/tor-sasl/andreas303) |
2021-02-28 05:11:19 +0100 | ddellacosta | (~ddellacos@86.106.143.10) |
2021-02-28 05:15:58 +0100 | ddellacosta | (~ddellacos@86.106.143.10) (Ping timeout: 276 seconds) |
2021-02-28 05:21:46 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@184.22.157.95) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-02-28 05:27:17 +0100 | banyanRob | (49f11cfb@c-73-241-28-251.hsd1.ca.comcast.net) (Quit: Connection closed) |
2021-02-28 05:27:42 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) |
2021-02-28 05:30:21 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:b84a:c23b:9840:733b) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-02-28 05:32:32 +0100 | supercoven | (~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-02-28 05:32:49 +0100 | supercoven | (~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi) |
2021-02-28 05:32:50 +0100 | supercoven | (~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi) (Max SendQ exceeded) |
2021-02-28 05:33:04 +0100 | supercoven | (~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi) |
2021-02-28 05:33:05 +0100 | supercoven | (~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi) (Max SendQ exceeded) |
2021-02-28 05:33:19 +0100 | supercoven | (~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi) |
2021-02-28 05:33:20 +0100 | supercoven | (~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi) (Max SendQ exceeded) |
2021-02-28 05:33:24 +0100 | egp_ | (~egp_@2.95.74.168) (Quit: EXIT) |
2021-02-28 05:33:34 +0100 | supercoven | (~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi) |
2021-02-28 05:33:35 +0100 | supercoven | (~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi) (Max SendQ exceeded) |
2021-02-28 05:34:34 +0100 | banyanRob | (49f11cfb@c-73-241-28-251.hsd1.ca.comcast.net) |
2021-02-28 05:35:21 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
2021-02-28 05:35:54 +0100 | myShoggoth | (~myShoggot@75.164.81.55) (Ping timeout: 245 seconds) |
2021-02-28 05:36:19 +0100 | myShoggoth | (~myShoggot@75.164.81.55) |
2021-02-28 05:47:13 +0100 | ddellacosta | (~ddellacos@83.143.246.102) |
2021-02-28 05:51:16 +0100 | ddellacosta | (~ddellacos@83.143.246.102) (Ping timeout: 240 seconds) |
2021-02-28 05:51:48 +0100 | mrioqueiroz | (~mrioqueir@186.251.19.98) |
2021-02-28 05:52:26 +0100 | kevin__ | (~kevin@pool-100-37-189-79.nycmny.fios.verizon.net) |
2021-02-28 05:54:10 +0100 | Narinas | (~Narinas@187-178-93-112.dynamic.axtel.net) (Read error: Connection reset by peer) |
2021-02-28 05:56:11 +0100 | MidAutumnHotaru | (~MidAutumn@unaffiliated/midautumnhotaru) (Quit: Ping timeout (120 seconds)) |
2021-02-28 05:56:29 +0100 | MidAutumnHotaru | (~MidAutumn@unaffiliated/midautumnhotaru) |
2021-02-28 05:56:39 +0100 | Narinas | (~Narinas@187-178-93-112.dynamic.axtel.net) |
2021-02-28 05:58:13 +0100 | kevin__ | (~kevin@pool-100-37-189-79.nycmny.fios.verizon.net) (Ping timeout: 276 seconds) |
2021-02-28 05:59:47 +0100 | Mrbuck | (~Mrbuck@gateway/tor-sasl/mrbuck) (Quit: WeeChat 1.9.1) |
2021-02-28 06:00:52 +0100 | retlo1 | \2E0KNO |
2021-02-28 06:11:12 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-02-28 06:13:19 +0100 | egp_ | (~egp_@2.95.74.168) |
2021-02-28 06:13:56 +0100 | roconnor | (~roconnor@host-104-157-194-235.dyn.295.ca) (Quit: Konversation terminated!) |
2021-02-28 06:16:45 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
2021-02-28 06:18:45 +0100 | Pooky | (~Pooky@84.203.101.64) |
2021-02-28 06:19:57 +0100 | Narinas | (~Narinas@187-178-93-112.dynamic.axtel.net) (Read error: Connection reset by peer) |
2021-02-28 06:21:56 +0100 | Narinas | (~Narinas@187-178-93-112.dynamic.axtel.net) |
2021-02-28 06:24:35 +0100 | kit | (~kit@144.138.56.36) |
2021-02-28 06:24:50 +0100 | kit | (~kit@144.138.56.36) (Client Quit) |
2021-02-28 06:24:55 +0100 | elliott__ | (~elliott@pool-108-51-101-42.washdc.fios.verizon.net) |
2021-02-28 06:25:43 +0100 | kit | (~kit@144.138.56.36) |
2021-02-28 06:25:43 +0100 | kit | (~kit@144.138.56.36) (Client Quit) |
2021-02-28 06:31:01 +0100 | Mrbuck | (~Mrbuck@gateway/tor-sasl/mrbuck) |
2021-02-28 06:32:01 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-83-46.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-02-28 06:33:38 +0100 | Tops2 | (~Tobias@dyndsl-095-033-017-115.ewe-ip-backbone.de) |
2021-02-28 06:35:55 +0100 | kit | (~kit@144.138.56.36) |
2021-02-28 06:36:37 +0100 | haya | (~haya@ec2-18-231-117-140.sa-east-1.compute.amazonaws.com) |
2021-02-28 06:36:59 +0100 | Tops21 | (~Tobias@dyndsl-095-033-025-207.ewe-ip-backbone.de) (Ping timeout: 265 seconds) |
2021-02-28 06:37:27 +0100 | Pooky | (~Pooky@84.203.101.64) (Quit: Leaving) |
2021-02-28 06:40:28 +0100 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 276 seconds) |
2021-02-28 06:40:36 +0100 | drbean_ | (~drbean@TC210-63-209-142.static.apol.com.tw) |
2021-02-28 06:42:33 +0100 | minoru_shiraeesh | (~shiraeesh@109.166.56.139) (Ping timeout: 264 seconds) |
2021-02-28 06:48:09 +0100 | banyanRob | (49f11cfb@c-73-241-28-251.hsd1.ca.comcast.net) (Quit: Connection closed) |
2021-02-28 06:51:48 +0100 | int80h | (uid148779@gateway/web/irccloud.com/x-byitmqwoaqxynwkn) (Quit: Connection closed for inactivity) |
2021-02-28 06:51:53 +0100 | Mrbuck | (~Mrbuck@gateway/tor-sasl/mrbuck) (Quit: WeeChat 1.9.1) |
2021-02-28 06:53:49 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
2021-02-28 06:58:59 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 260 seconds) |
2021-02-28 07:10:02 +0100 | kw | (d4662d5d@212.102.45.93) (Ping timeout: 240 seconds) |
2021-02-28 07:10:12 +0100 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection) |
2021-02-28 07:10:40 +0100 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
2021-02-28 07:11:26 +0100 | xff0x | (~xff0x@2001:1a81:5349:9200:4bab:e866:1730:4463) (Ping timeout: 264 seconds) |
2021-02-28 07:11:40 +0100 | elliott__ | (~elliott@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 276 seconds) |
2021-02-28 07:11:48 +0100 | xff0x | (~xff0x@2001:1a81:5349:9200:adc4:69eb:c86a:66d9) |
2021-02-28 07:13:04 +0100 | redmp | (~redmp@172.58.35.206) |
2021-02-28 07:13:23 +0100 | myShoggoth | (~myShoggot@75.164.81.55) (Ping timeout: 245 seconds) |
2021-02-28 07:15:30 +0100 | <hyiltiz> | koz_: I fed your quotes into bellard.org/textsynth/ (GPT-2) and got a poem-like thing that is fun to read: https://bellard.org/textsynth/ |
2021-02-28 07:15:45 +0100 | <hyiltiz> | Wait this link: http://ix.io/2Rac |
2021-02-28 07:16:25 +0100 | <koz_> | hyiltiz: Lol. |
2021-02-28 07:16:45 +0100 | mrioqueiroz | (~mrioqueir@186.251.19.98) (Ping timeout: 264 seconds) |
2021-02-28 07:16:47 +0100 | <koz_> | Due to limited data, this model makes me sound like some kind of IORef fetishist. |
2021-02-28 07:17:16 +0100 | <hyiltiz> | yeah it reads like someone read about haskell and half drunk in a bar |
2021-02-28 07:17:32 +0100 | <hyiltiz> | feeding more data... |
2021-02-28 07:17:32 +0100 | <koz_> | Lol. |
2021-02-28 07:17:41 +0100 | <koz_> | That's not an unusual combination to be fair. |
2021-02-28 07:17:51 +0100 | <koz_> | I don't doubt a lot of Haskell papers began as drunken academic benders. |
2021-02-28 07:17:57 +0100 | <koz_> | monochrom can confirm. |
2021-02-28 07:21:27 +0100 | <hyiltiz> | http://ix.io/2Rad with more data and user ids, it invented new users, among whom kaz is an extreme narcissist and kl is a re-incarnation of koz+kw+lambdabot afaict |
2021-02-28 07:22:25 +0100 | <koz_> | hyiltiz: That is hilarious, since I know someone (not here) who goes by kaz. |
2021-02-28 07:22:27 +0100 | <hyiltiz> | well it was a low day for me today, and I am having fun feeding #haskell into GTP-2 through bellard. Speak of a nerd |
2021-02-28 07:23:04 +0100 | <hyiltiz> | LMFAO esp. if kaz the real shares similarities with kaz the re-incarnate |
2021-02-28 07:23:50 +0100 | <koz_> | "<koz_> Maybe a class is better, but it shouldn't be an object." LOLZOR |
2021-02-28 07:24:10 +0100 | <koz_> | "<kaz> I agree with kaz." I AM DED |
2021-02-28 07:25:01 +0100 | average | (uid473595@gateway/web/irccloud.com/x-vkybhfbovzssiwuk) (Quit: Connection closed for inactivity) |
2021-02-28 07:28:46 +0100 | <hyiltiz> | and here comes a completely new character called matthewjr out of nowhere and preaches about C++ but never used it himself and only read a few C who apparently replaces you out from the conversation. Reality in AI's mind is bleak http://ix.io/2Raf |
2021-02-28 07:29:02 +0100 | <hyiltiz> | Now I'll stop hijacking #haskell with GPT-2 funsies |
2021-02-28 07:29:53 +0100 | <hyiltiz> | Hmm, I am going to feed it my love letter to my gf (hope I won't regret it...) |
2021-02-28 07:30:19 +0100 | <koz_> | "<matthewjr> I'd say I would never have expected to see *anything* out of the ordinary from C++ code |
2021-02-28 07:30:21 +0100 | <koz_> | " |
2021-02-28 07:30:33 +0100 | <koz_> | Sounds _exactly_ like something I expect to hear from a C++ person. |
2021-02-28 07:30:58 +0100 | <koz_> | hyiltiz: Feed it all of Edward Kmett's articles. |
2021-02-28 07:31:11 +0100 | <koz_> | I wanna see what kind of category-theory-driven stuff it can design. |
2021-02-28 07:31:14 +0100 | <koz_> | (and whether it compiles) |
2021-02-28 07:31:25 +0100 | <boxscape> | is there a difference between love letters and ed kmett articles? |
2021-02-28 07:31:28 +0100 | <hyiltiz> | haha! That is gonna be so fun |
2021-02-28 07:32:17 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2021-02-28 07:32:29 +0100 | <koz_> | boxscape: Yes. In direction. |
2021-02-28 07:32:41 +0100 | <boxscape> | I see! |
2021-02-28 07:32:53 +0100 | <hyiltiz> | hmm GTP-2 thinks she has a boyfriend... |
2021-02-28 07:33:00 +0100 | <hyiltiz> | I already regret it |
2021-02-28 07:33:12 +0100 | <hyiltiz> | didn't took GPT-2 5 sentences to say that out loud |
2021-02-28 07:34:28 +0100 | <hyiltiz> | The next day she asked me for my address because her boyfriend had not arrived yet. i took a long time. Finally i replied that i don't have an address. She said maybe her boyfriend can call her. i said i didn't have an address. She said i never promised i would see her again. i said i'm sorry. |
2021-02-28 07:34:53 +0100 | <hyiltiz> | Does anyone have the tex or lhs files for edwardk's articles? |
2021-02-28 07:35:02 +0100 | <koz_> | No, sadly. |
2021-02-28 07:35:11 +0100 | <koz_> | edwardk: Could you contribute to a good cause? ^ |
2021-02-28 07:35:32 +0100 | <hyiltiz> | Well I can tesseract them out from PDF's or pandoc out from HTML if necessary |
2021-02-28 07:36:08 +0100 | <koz_> | hyiltiz: You can look through Comonad Reader. |
2021-02-28 07:36:17 +0100 | <koz_> | Or School of Haskell. |
2021-02-28 07:36:22 +0100 | <koz_> | Here's one to get you started: https://www.schoolofhaskell.com/user/edwardk/heap-of-successes |
2021-02-28 07:36:29 +0100 | <hyiltiz> | Would be so funny if the next big idea in FP comes from GPT-2 |
2021-02-28 07:38:00 +0100 | <boxscape> | OpenAI has used a specially trained version of GPT-3 to implement relatively simple python functions, on reason you couldn't do that with haskell, at least, assuming you have millions of dollars worth of compute |
2021-02-28 07:38:09 +0100 | <boxscape> | s/on/no |
2021-02-28 07:41:33 +0100 | <hyiltiz> | http://ix.io/2Rah seems like it needs more code to be able to innovate |
2021-02-28 07:42:41 +0100 | <hyiltiz> | I once fed it the debian and BSD handbook trying to learn more about the Unix/Linux sysadmin stuff |
2021-02-28 07:43:24 +0100 | <hyiltiz> | and fed GRRM's ASOIAF series as I couldn't wait for the Winds of Winter |
2021-02-28 07:43:55 +0100 | <hyiltiz> | cant recall if I learned anything new tho |
2021-02-28 07:47:36 +0100 | kam1 | (~kam1@5.125.126.175) (Ping timeout: 240 seconds) |
2021-02-28 07:50:15 +0100 | <koz_> | Keep feeding it until we get Robo-Edward. |
2021-02-28 07:51:10 +0100 | urodna | (~urodna@unaffiliated/urodna) (Quit: urodna) |
2021-02-28 07:51:39 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@2403:6200:8876:d719:7006:9537:bdbe:8690) |
2021-02-28 07:51:39 +0100 | <boxscape> | The kmettinator |
2021-02-28 07:55:39 +0100 | gioyik | (~gioyik@gateway/tor-sasl/gioyik) (Quit: WeeChat 3.0) |
2021-02-28 08:03:33 +0100 | xff0x | (~xff0x@2001:1a81:5349:9200:adc4:69eb:c86a:66d9) (Ping timeout: 272 seconds) |
2021-02-28 08:04:01 +0100 | xff0x | (~xff0x@2001:1a81:5349:9200:616f:f9e7:ca53:6ba3) |
2021-02-28 08:05:02 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@2403:6200:8876:d719:7006:9537:bdbe:8690) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-02-28 08:12:04 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-02-28 08:23:23 +0100 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 245 seconds) |
2021-02-28 08:23:55 +0100 | ski | . o O ( "<vixey> this is fabricatino" ) |
2021-02-28 08:23:58 +0100 | rayyyy | (~nanoz@gateway/tor-sasl/nanoz) |
2021-02-28 08:26:57 +0100 | darjeeling_ | (~darjeelin@122.245.218.150) (Ping timeout: 264 seconds) |
2021-02-28 08:32:40 +0100 | jpds_ | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2021-02-28 08:33:13 +0100 | jpds_ | (~jpds@gateway/tor-sasl/jpds) |
2021-02-28 08:33:28 +0100 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 265 seconds) |
2021-02-28 08:34:06 +0100 | sh9 | (~sh9@softbank060116136158.bbtec.net) (Quit: WeeChat 2.8) |
2021-02-28 08:39:39 +0100 | Tario | (~Tario@201.192.165.173) (Ping timeout: 245 seconds) |
2021-02-28 08:41:10 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@2403:6200:8876:d719:a529:2602:758:74a6) |
2021-02-28 08:42:17 +0100 | darjeeling_ | (~darjeelin@122.245.218.150) |
2021-02-28 08:46:19 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-02-28 08:48:47 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:44cd:7ec7:332d:f0ab) (Remote host closed the connection) |
2021-02-28 08:49:24 +0100 | kit | (~kit@144.138.56.36) (Quit: leaving) |
2021-02-28 08:52:44 +0100 | egp_ | (~egp_@2.95.74.168) (Remote host closed the connection) |
2021-02-28 08:52:44 +0100 | egp__ | (~egp_@2.95.74.168) (Remote host closed the connection) |
2021-02-28 08:54:44 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
2021-02-28 08:55:52 +0100 | kit | (~kit@144.138.56.36) |
2021-02-28 08:57:04 +0100 | sh9 | (~sh9@softbank060116136158.bbtec.net) |
2021-02-28 08:58:09 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds) |
2021-02-28 08:58:44 +0100 | kit | (~kit@144.138.56.36) (Client Quit) |
2021-02-28 08:59:39 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 245 seconds) |
2021-02-28 09:03:19 +0100 | toorevitimirp | (~tooreviti@117.182.182.60) |
2021-02-28 09:03:22 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-28 09:04:34 +0100 | kit | (~kit@144.138.56.36) |
2021-02-28 09:05:30 +0100 | kit | (~kit@144.138.56.36) (Client Quit) |
2021-02-28 09:07:56 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
2021-02-28 09:08:44 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Remote host closed the connection) |
2021-02-28 09:11:52 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) |
2021-02-28 09:13:04 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Remote host closed the connection) |
2021-02-28 09:13:17 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) |
2021-02-28 09:21:25 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Remote host closed the connection) |
2021-02-28 09:22:06 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) |
2021-02-28 09:23:26 +0100 | Varis | (~Tadas@unaffiliated/varis) |
2021-02-28 09:26:33 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Ping timeout: 260 seconds) |
2021-02-28 09:26:39 +0100 | sablib | (~sablib@59.173.155.233) (Ping timeout: 260 seconds) |
2021-02-28 09:27:58 +0100 | MKirisame | (~MarisaKir@c-98-237-240-11.hsd1.wa.comcast.net) |
2021-02-28 09:28:30 +0100 | sablib | (~sablib@59.173.152.160) |
2021-02-28 09:28:56 +0100 | redmp | (~redmp@172.58.35.206) (Ping timeout: 240 seconds) |
2021-02-28 09:37:07 +0100 | forgottenone | (~forgotten@176.42.27.254) |
2021-02-28 09:40:09 +0100 | Svet_ | (~svet@90.200.185.163) (Ping timeout: 264 seconds) |
2021-02-28 09:42:08 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-28 09:44:28 +0100 | I440r | (~I440r@217.146.82.202) (Remote host closed the connection) |
2021-02-28 09:46:36 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
2021-02-28 09:48:14 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2021-02-28 09:48:33 +0100 | mananamenos_ | (~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) |
2021-02-28 09:49:11 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:44cd:7ec7:332d:f0ab) |
2021-02-28 09:50:03 +0100 | mhw0 | (~mhw0@213.230.119.134) |
2021-02-28 09:54:02 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:44cd:7ec7:332d:f0ab) (Ping timeout: 264 seconds) |
2021-02-28 09:55:47 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) |
2021-02-28 09:56:40 +0100 | bitmapper | (uid464869@gateway/web/irccloud.com/x-kykpxwvfcawrxiyd) (Quit: Connection closed for inactivity) |
2021-02-28 09:56:55 +0100 | xff0x | (~xff0x@2001:1a81:5349:9200:616f:f9e7:ca53:6ba3) (Ping timeout: 272 seconds) |
2021-02-28 09:57:06 +0100 | James_F1 | (~James_F@139.28.218.148) |
2021-02-28 09:57:14 +0100 | xff0x | (~xff0x@2001:1a81:5349:9200:2ca8:4ef3:12c9:ba81) |
2021-02-28 09:57:57 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Remote host closed the connection) |
2021-02-28 09:58:36 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) |
2021-02-28 09:59:28 +0100 | carlomagno | (~cararell@148.87.23.6) (Quit: Leaving.) |
2021-02-28 09:59:56 +0100 | darjeeling_ | (~darjeelin@122.245.218.150) (Ping timeout: 240 seconds) |
2021-02-28 10:00:59 +0100 | mhw0 | (~mhw0@213.230.119.134) ("leaving") |
2021-02-28 10:01:18 +0100 | kuribas | (~user@ptr-25vy0i8a0npfg024kq6.18120a2.ip6.access.telenet.be) |
2021-02-28 10:01:37 +0100 | danso | (~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Ping timeout: 258 seconds) |
2021-02-28 10:02:20 +0100 | inerkick | (~rohit@2402:8100:2828:ff35:c014:d64c:1ae3:c0a0) |
2021-02-28 10:02:56 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Ping timeout: 240 seconds) |
2021-02-28 10:03:02 +0100 | Svet_ | (~svet@90.200.185.163) |
2021-02-28 10:03:19 +0100 | mananamenos | (~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) |
2021-02-28 10:06:08 +0100 | egp_ | (~egp_@2.95.74.168) |
2021-02-28 10:06:11 +0100 | egp__ | (~egp_@2.95.74.168) |
2021-02-28 10:06:49 +0100 | mananamenos_ | (~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) (Ping timeout: 260 seconds) |
2021-02-28 10:08:11 +0100 | tanuki_ | (~quassel@173.168.154.189) |
2021-02-28 10:08:34 +0100 | Svet_ | (~svet@90.200.185.163) (Ping timeout: 260 seconds) |
2021-02-28 10:09:17 +0100 | hendursa1 | (~weechat@gateway/tor-sasl/hendursaga) |
2021-02-28 10:10:02 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) |
2021-02-28 10:11:06 +0100 | hendursaga | (~weechat@gateway/tor-sasl/hendursaga) (Ping timeout: 268 seconds) |
2021-02-28 10:11:38 +0100 | danvet | (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) |
2021-02-28 10:11:59 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Remote host closed the connection) |
2021-02-28 10:12:35 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) |
2021-02-28 10:13:46 +0100 | danso | (~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009) |
2021-02-28 10:14:10 +0100 | darjeeling_ | (~darjeelin@122.245.218.150) |
2021-02-28 10:14:20 +0100 | mputz | (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
2021-02-28 10:17:11 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Ping timeout: 272 seconds) |
2021-02-28 10:17:52 +0100 | son0p | (~son0p@181.58.39.182) |
2021-02-28 10:22:22 +0100 | Svet_ | (~svet@90.200.185.163) |
2021-02-28 10:23:33 +0100 | mananamenos_ | (~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) |
2021-02-28 10:23:43 +0100 | drbean_ | (~drbean@TC210-63-209-142.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in) |
2021-02-28 10:24:19 +0100 | mananamenos | (~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) (Ping timeout: 260 seconds) |
2021-02-28 10:31:02 +0100 | zaquest | (~notzaques@5.128.210.178) (Quit: Leaving) |
2021-02-28 10:32:11 +0100 | <edwardk> | boxscape: the problem with producing clones of me is that i have to feed them, and we still only have the one tax id, so it raises some serious eyebrows when we're forced to explain things to the IRS. GPT-3 me seems easier on that front, but seems even more dubious from an AI safety and alignment perspective. |
2021-02-28 10:32:43 +0100 | <boxscape> | those are some good points |
2021-02-28 10:34:47 +0100 | zaquest | (~notzaques@5.128.210.178) |
2021-02-28 10:34:47 +0100 | <edwardk> | a friend of mine posted this to facebook https://www.irccloud.com/pastebin/dZzR4f7u/clones.txt |
2021-02-28 10:36:06 +0100 | <edwardk> | My response was that the number I'd pick would be very large to the point where I'll be calling on government assistance to deal with the refugee problem that I'd be creating, but that I didn't suspect it be quite to the point of overwhelming the western seaboard. |
2021-02-28 10:36:26 +0100 | <boxscape> | tempted to choose a number high enough that they don't fit into the observable universe to check if I can break the system |
2021-02-28 10:37:08 +0100 | mputz | (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 245 seconds) |
2021-02-28 10:37:09 +0100 | Guest77245 | (~textual@zrcout.mskcc.org) (Ping timeout: 264 seconds) |
2021-02-28 10:37:27 +0100 | danso | (~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Ping timeout: 272 seconds) |
2021-02-28 10:37:49 +0100 | <edwardk> | from the standpoint of many decision theories that seems pretty suboptimal as you'd be condemning a near total fraction of you to die. |
2021-02-28 10:38:08 +0100 | <boxscape> | I admit it's more of a "fun" choice than a smart choice |
2021-02-28 10:38:51 +0100 | inerkick | (~rohit@2402:8100:2828:ff35:c014:d64c:1ae3:c0a0) (Quit: Leaving) |
2021-02-28 10:40:48 +0100 | <boxscape> | edwardk though I'm still working out on whether or not I should care about versions of myself ceasing to exist |
2021-02-28 10:40:57 +0100 | <boxscape> | s/on// |
2021-02-28 10:41:50 +0100 | <boxscape> | s/versions/instantiations |
2021-02-28 10:42:15 +0100 | m0rphism1 | (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) |
2021-02-28 10:42:21 +0100 | danso | (~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009) |
2021-02-28 10:42:41 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-02-28 10:43:29 +0100 | <edwardk> | well, if you want to play a simple first order version of the game, assume you could instantiate another copy of yourself, but one of you gets executed, but you have a 50% chance of "you" being the copy, do you care? delay the execution 10 years so it takes with it 10 years of memories, do you care then? |
2021-02-28 10:44:12 +0100 | <boxscape> | My current best guess is I wouldn't care in the first case, but would in the second case |
2021-02-28 10:44:42 +0100 | <edwardk> | caring about this tends to bite folks who are looking for consistent ethical frameworks harder, folks who care about utilitarianism and variants and the like. |
2021-02-28 10:45:18 +0100 | <boxscape> | I've been meaning to read Bostrom's paper about infinities in ethics because that seems where this tends to break down, but haven't gotten around to it |
2021-02-28 10:45:25 +0100 | <boxscape> | s/seems/seems to be |
2021-02-28 10:45:27 +0100 | ixlun | (~user@213.205.241.12) |
2021-02-28 10:45:30 +0100 | <edwardk> | fair |
2021-02-28 10:45:39 +0100 | catt | (~r@31.127.31.99) |
2021-02-28 10:46:05 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
2021-02-28 10:47:00 +0100 | <edwardk> | i don't personally tend to think it takes infinities for that to come up, a "Heat Signature" grade teleporter malfunction seems to hit all the same salient points |
2021-02-28 10:47:32 +0100 | <boxscape> | hm I'm not sure what that means |
2021-02-28 10:47:47 +0100 | <edwardk> | (Heat Signature the game has an npc who is a clone of herself created by a teleporter accident, who was contractually/culturally obligated to off either her original self or the cloned copy, but then reneged.) |
2021-02-28 10:48:04 +0100 | <boxscape> | I see |
2021-02-28 10:48:49 +0100 | mananamenos_ | (~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) (Ping timeout: 260 seconds) |
2021-02-28 10:49:29 +0100 | edwardk | should go to bed or write more code. not sure which |
2021-02-28 10:49:51 +0100 | <ixlun> | Hi all, if I've got `data Foo = Foo {num :: String, val :: Int, map :: Map String Int}' and I want to insert a new value into the map, is there a short hand I can use for constructing a new Foo with the new map returned from Map.insert? |
2021-02-28 10:50:19 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:692f:34e4:c65a:92f2) |
2021-02-28 10:50:41 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) |
2021-02-28 10:51:04 +0100 | <edwardk> | ixlun: foo = Foo "hello" mempty; bar = foo { map = Map.insert 1 2 (map foo) } -- is the common way to do this. you can shave a little bit by using RecordWildcards but they aren't popular. lenses is another way to make it more concise |
2021-02-28 10:51:36 +0100 | <edwardk> | er foo = Foo "hello" 14 mempty -- missed your 'val' member |
2021-02-28 10:52:31 +0100 | <ixlun> | Ah, didn't know about the `bar = foo {map = ... }' syntax |
2021-02-28 10:52:50 +0100 | <edwardk> | with lenses you can get that down to something like foo & map.at 1 ?~ 2 |
2021-02-28 10:53:22 +0100 | <ixlun> | I remember starting to take a look at lenses and I got scared! |
2021-02-28 10:53:48 +0100 | <edwardk> | there are some pretty gentle introductions, and a bunch of folks here and over in #haskell-lens happy to answer questions about them |
2021-02-28 10:54:18 +0100 | knupfer | (~Thunderbi@200116b82cc9eb004cd887aa2955feba.dip.versatel-1u1.de) |
2021-02-28 10:54:26 +0100 | <edwardk> | unlike most haskell i recommend trying to get a feel for them from examples rather than studying the types super hard. then once you have the intuion the types peel themselves apart much easier when you go to try to figure out how they are actually implemented |
2021-02-28 10:54:37 +0100 | <edwardk> | otherwise you spend a lot of time staring a trees and not seeing the forest |
2021-02-28 10:55:09 +0100 | mananamenos | (~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) |
2021-02-28 10:55:14 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:692f:34e4:c65a:92f2) (Ping timeout: 264 seconds) |
2021-02-28 10:55:37 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
2021-02-28 10:55:41 +0100 | <ixlun> | to be honest, that's kind of how I got to grips with applicative syntax. I brushed up on the types but it wasn't until I used parser combinators that I really got it. |
2021-02-28 10:56:03 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Ping timeout: 258 seconds) |
2021-02-28 10:56:40 +0100 | _ht | (~quassel@82-169-194-8.biz.kpn.net) |
2021-02-28 10:57:03 +0100 | <ixlun> | Just one question, the brace syntax that you used above, do I need a language extension for that? |
2021-02-28 10:57:49 +0100 | <tomsmeding> | that syntax is ancient haskell :) |
2021-02-28 10:58:52 +0100 | <ixlun> | Cool, thanks :) |
2021-02-28 10:58:53 +0100 | <edwardk> | ixlun: that has been around since dirt |
2021-02-28 10:59:20 +0100 | <hyiltiz> | cd |
2021-02-28 10:59:53 +0100 | tomsmeding | thinks somebody went home |
2021-02-28 11:00:07 +0100 | <edwardk> | there's no place like $HOME |
2021-02-28 11:00:16 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 240 seconds) |
2021-02-28 11:02:45 +0100 | mayleesia | (4d0db908@dynamic-077-013-185-008.77.13.pool.telefonica.de) |
2021-02-28 11:03:41 +0100 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) |
2021-02-28 11:04:52 +0100 | <edwardk> | hyiltiz: i could maybe scrape the content code out of comonad.com, but i think john wiegley already has a script for doing that. |
2021-02-28 11:05:09 +0100 | mananamenos | (~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) (Ping timeout: 260 seconds) |
2021-02-28 11:05:40 +0100 | <hyiltiz> | yeah i accidentally tried to go home in #haskell |
2021-02-28 11:05:48 +0100 | <hyiltiz> | but #haskell is home so that is good |
2021-02-28 11:06:22 +0100 | <hyiltiz> | edwardk: don't wanna bother u with that; if u dont have anything ready to dump at me, I can look up john wiegley's script |
2021-02-28 11:07:04 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Read error: Connection timed out) |
2021-02-28 11:07:34 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
2021-02-28 11:07:36 +0100 | <edwardk> | ai dungeon's dragon model managed to perform a pretty convincing impression of me a few times |
2021-02-28 11:09:07 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@2403:6200:8876:d719:a529:2602:758:74a6) (Quit: Textual IRC Client: www.textualapp.com) |
2021-02-28 11:10:03 +0100 | m4lvin | (~m4lvin@w4eg.de) () |
2021-02-28 11:12:05 +0100 | <edwardk> | https://gist.github.com/ekmett/38513c7894e2d28863f8202acb1a3447 https://gist.github.com/ekmett/1b9ad5c361dfd1f23887ce1ab11a23fe -- it did a better job of staying in genre in the former |
2021-02-28 11:12:44 +0100 | <kuribas> | ixlun: you can also write `set (map . at 1) 2 foo`, which I find more readable that the operators. |
2021-02-28 11:13:56 +0100 | <kuribas> | There is a logic to the way lens operators are constructed, but I still find them ugly... |
2021-02-28 11:14:11 +0100 | danso | (~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Ping timeout: 272 seconds) |
2021-02-28 11:14:36 +0100 | <hyiltiz> | those conversations look really fun |
2021-02-28 11:14:56 +0100 | Svet_ | (~svet@90.200.185.163) (Ping timeout: 240 seconds) |
2021-02-28 11:16:04 +0100 | <kuribas> | ixlun: I also find the documentation for micro-lens (which is lens-compatible) a bit more beginner-friendly. |
2021-02-28 11:16:43 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
2021-02-28 11:17:00 +0100 | <hyiltiz-M> | Or optics |
2021-02-28 11:17:11 +0100 | <olligobber> | when I do `cabal repl' it loads one of my 16 module's functions, is there a way of not loading any? |
2021-02-28 11:17:35 +0100 | Sgeo | (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer) |
2021-02-28 11:18:25 +0100 | <boxscape> | edwardk were the "Edward:" parts in the first one generated as well or only the "Eliezer:" parts? |
2021-02-28 11:20:18 +0100 | <olligobber> | ah, found this: https://github.com/haskell/cabal/issues/5374 |
2021-02-28 11:20:52 +0100 | danso | (~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009) |
2021-02-28 11:21:12 +0100 | <edwardk> | everything below the -- End Prompt is generated |
2021-02-28 11:21:20 +0100 | <boxscape> | Huh, in that case I'm really impressed it came up with "I thought you didn't believe in ascribing zero or one hundred percent odds to anything?" and "So how many significant digits are there in that one hundred percent estimate?" |
2021-02-28 11:21:31 +0100 | <edwardk> | both of them shocked me |
2021-02-28 11:21:46 +0100 | <edwardk> | it does seem to have read a lot of yudkowsky though |
2021-02-28 11:21:55 +0100 | <edwardk> | so i'm not surprised it put some of his style of words into my mouth |
2021-02-28 11:22:03 +0100 | <boxscape> | hm, makes sense |
2021-02-28 11:22:54 +0100 | <edwardk> | another example of confusing personalities between characters is this one https://gist.github.com/ekmett/6cd785180659e3c2f9284e5128c11025 it makes him out to be much more of a bad-ass than he is in real life ;) |
2021-02-28 11:24:46 +0100 | <olligobber> | maybe I'll just use stack instead of cabal |
2021-02-28 11:25:32 +0100 | <edwardk> | olligobber: in theory you can set you a .ghci file, but iirc cabal repl loads the first (or is it the last) module in the library |
2021-02-28 11:26:25 +0100 | <edwardk> | olligobber: i guess you could add a second sublibrary with no modules and load it instead? |
2021-02-28 11:27:28 +0100 | <olligobber> | it loads the first |
2021-02-28 11:27:34 +0100 | <olligobber> | that seems hacky |
2021-02-28 11:29:10 +0100 | <edwardk> | olligobber: i think the mindset is if you list things in alphabetical order you'll tend to place Foo at the top of the list before Foo.Bar Foo.Baz, etc. |
2021-02-28 11:29:22 +0100 | <edwardk> | so it'll load a nice top level module |
2021-02-28 11:29:36 +0100 | <olligobber> | I don't want it to load any module... |
2021-02-28 11:29:51 +0100 | <olligobber> | hmm, stack won't load validated-literals |
2021-02-28 11:29:54 +0100 | <edwardk> | i understand that. just giving a general sense of what it picks what it picks |
2021-02-28 11:33:18 +0100 | toorevitimirp | (~tooreviti@117.182.182.60) (Remote host closed the connection) |
2021-02-28 11:33:46 +0100 | todda7 | (~torstein@athedsl-258913.home.otenet.gr) (Read error: Connection reset by peer) |
2021-02-28 11:33:58 +0100 | <olligobber> | ugh, best solution seems to be a dummy Empty module |
2021-02-28 11:33:59 +0100 | <olligobber> | :( |
2021-02-28 11:34:02 +0100 | todda7 | (~torstein@athedsl-258913.home.otenet.gr) |
2021-02-28 11:34:12 +0100 | average | (uid473595@gateway/web/irccloud.com/x-fxgddkvvlaaxcpgp) |
2021-02-28 11:34:51 +0100 | toorevitimirp | (~tooreviti@117.182.182.60) |
2021-02-28 11:35:29 +0100 | <edwardk> | adding another package to your cabal project that depends on the project you want the guts of but which doesn't export any modules? |
2021-02-28 11:35:46 +0100 | Ishutin_ | (~ishutin@80-95-70-202.pool.digikabel.hu) |
2021-02-28 11:35:46 +0100 | <edwardk> | then cabal repl yourdummyproject ? |
2021-02-28 11:35:57 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) |
2021-02-28 11:39:13 +0100 | hnOsmium0001 | (uid453710@gateway/web/irccloud.com/x-ssveckbgtfjmjehe) (Quit: Connection closed for inactivity) |
2021-02-28 11:39:37 +0100 | Ishutin | (~ishutin@92-249-193-15.pool.digikabel.hu) (Ping timeout: 272 seconds) |
2021-02-28 11:39:47 +0100 | daffy | (01c8aa98@1.200.170.152) |
2021-02-28 11:40:50 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Ping timeout: 264 seconds) |
2021-02-28 11:44:03 +0100 | hiroaki_ | (~hiroaki@2a02:908:4b18:8c40:cc64:29af:c80:536f) |
2021-02-28 11:44:04 +0100 | kuribas | (~user@ptr-25vy0i8a0npfg024kq6.18120a2.ip6.access.telenet.be) (Remote host closed the connection) |
2021-02-28 11:48:11 +0100 | fendor | (~fendor@078132053193.public.t-mobile.at) |
2021-02-28 11:48:33 +0100 | <tomsmeding> | olligobber: you know that ':m' will unfocus all modules? |
2021-02-28 11:48:56 +0100 | rdivyanshu | (uid322626@gateway/web/irccloud.com/x-qtewvwtwengjftbg) |
2021-02-28 11:50:00 +0100 | <olligobber> | tomsmeding, a way to do `:m' automatically after cabal loads the modules would be good, but I don't think it's possible |
2021-02-28 11:51:21 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:692f:34e4:c65a:92f2) |
2021-02-28 11:51:49 +0100 | todda7 | (~torstein@athedsl-258913.home.otenet.gr) (Ping timeout: 260 seconds) |
2021-02-28 11:54:06 +0100 | <tomsmeding> | olligobber: it doesn't seem so; you can inject additional ghci startup scripts, but those run before the modules are loaded |
2021-02-28 11:55:46 +0100 | <olligobber> | yeah :( |
2021-02-28 11:55:50 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:692f:34e4:c65a:92f2) (Ping timeout: 264 seconds) |
2021-02-28 11:57:36 +0100 | <tomsmeding> | olligobber: for a nice hack, you can take the command line that cabal uses to start ghci, remove all the modules from it, and then pass a -ghci-script that :add's those modules and then does :m |
2021-02-28 11:57:44 +0100 | <tomsmeding> | that seems to work for me on a simple project |
2021-02-28 11:57:51 +0100 | <daffy> | what does the error message "ambiguous type variable" mean? i using a function that is supposed to output four types, and the actual output seems to contain "Any" as one of the types. I'm assuming the "Any" type is where the ambiguity is coming from but I can't tell why it's one of the types |
2021-02-28 12:08:37 +0100 | <olligobber> | so in my .cabal file, I have an executable that includes the library in the build-depends, and the library includes a bunch of things in its build-depends, but when it builds the executable it doesn't have the things in the library's build-depends |
2021-02-28 12:10:47 +0100 | todda7 | (~torstein@athedsl-258913.home.otenet.gr) |
2021-02-28 12:11:24 +0100 | kiwi_3697 | (51f28de3@gateway/web/cgi-irc/kiwiirc.com/ip.81.242.141.227) |
2021-02-28 12:12:32 +0100 | Franciman | (~francesco@host-82-49-79-189.retail.telecomitalia.it) |
2021-02-28 12:13:42 +0100 | kiwi_3697 | (51f28de3@gateway/web/cgi-irc/kiwiirc.com/ip.81.242.141.227) () |
2021-02-28 12:14:33 +0100 | <boxscape> | daffy "ambiguous type variable" means there is not enough context to determine how a type variable should be instantiated. For example, in `read :: Read a => String -> a`, `a` is a type variable, and if you try to just do `read "42"` without context, you'll get such an error because it doesn't know what `a` should be. `Any` is a special type that |
2021-02-28 12:14:33 +0100 | <boxscape> | ghc uses in certain contexts to instantiate type variables if it doesn't know how else it should instantiate them - but Any should be a consequence, not the source of the issue here, I would think. |
2021-02-28 12:14:52 +0100 | <daffy> | hmmm |
2021-02-28 12:15:09 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-02-28 12:15:10 +0100 | <daffy> | i see |
2021-02-28 12:15:18 +0100 | psutcliffe | (~psutcliff@2a00:801:3f2:4b56:e93e:1663:ff0c:6c42) |
2021-02-28 12:17:03 +0100 | <boxscape> | daffy feel free to post a link to code if you need more specific help |
2021-02-28 12:17:16 +0100 | <xsperry> | if you pass the result of read "42" to some function, though, it will use the type of the argument to that function to determine what read should return |
2021-02-28 12:18:48 +0100 | <daffy> | I'm using the function fromLists from hip, and I'm passing it something of type [[Pixel Y Double]]. |
2021-02-28 12:18:59 +0100 | <daffy> | fromLists :: forall arr cs e. Array arr cs e => [[Pixel cs e]] -> Image arr cs e |
2021-02-28 12:19:06 +0100 | <daffy> | this is the type of fromLists |
2021-02-28 12:19:36 +0100 | <daffy> | _ :: [[Pixel Y Double]] -> Image Any Y Double and i believe this is the type of the variable I'm storing the result of fromLists to |
2021-02-28 12:19:49 +0100 | todda7 | (~torstein@athedsl-258913.home.otenet.gr) (Ping timeout: 260 seconds) |
2021-02-28 12:21:00 +0100 | <boxscape> | hm so it doesn't know what `arr` should be |
2021-02-28 12:21:18 +0100 | <daffy> | which arr is it talking about? I'm a bit confused about the type signature |
2021-02-28 12:24:55 +0100 | <boxscape> | I haven't used hip unfortunately so I'm not 100% sure how it works, it looks like there's a BaseArray class which has instances for various array types like `VU` (unboxed vectors) and others, and this is what `arr` should be filled with as well |
2021-02-28 12:25:06 +0100 | <boxscape> | in Image |
2021-02-28 12:25:13 +0100 | <boxscape> | 's argument |
2021-02-28 12:26:26 +0100 | <boxscape> | daffy can you try adding a type signature `[[Pixel Y Double]] -> Image VU Y Double`? |
2021-02-28 12:27:22 +0100 | <boxscape> | basically arr determines which underlying array representation you use |
2021-02-28 12:27:37 +0100 | <daffy> | when I read the image originally i specific VS |
2021-02-28 12:27:44 +0100 | <daffy> | as the array representation |
2021-02-28 12:27:49 +0100 | <daffy> | *specified |
2021-02-28 12:27:50 +0100 | <boxscape> | ah, okay, in that case use VS |
2021-02-28 12:28:25 +0100 | <daffy> | the type signature right now is IO (Inte.Image GHC.Types.Any Y Double) though |
2021-02-28 12:28:29 +0100 | <daffy> | I'm doing this in main |
2021-02-28 12:28:33 +0100 | <daffy> | and the function is in a do block |
2021-02-28 12:29:23 +0100 | <boxscape> | in that case, can you try IO (Image VS Y Double)? |
2021-02-28 12:29:34 +0100 | <boxscape> | though I'm not sure why it would be "Inte.Image" |
2021-02-28 12:29:58 +0100 | __monty__ | (~toonn@unaffiliated/toonn) |
2021-02-28 12:30:20 +0100 | <daffy> | oh Inte is just an alias for one of the packages |
2021-02-28 12:30:26 +0100 | <boxscape> | ah, that makes sense |
2021-02-28 12:30:40 +0100 | <olligobber> | cabal is such a pain |
2021-02-28 12:32:03 +0100 | <[exa]> | olligobber: if I got your previous message right, you'd expect that dependencies are imported transitively? |
2021-02-28 12:32:15 +0100 | <[exa]> | s/imported/exposed/ |
2021-02-28 12:32:27 +0100 | <olligobber> | yeah |
2021-02-28 12:32:41 +0100 | <olligobber> | if a needs b and b needs c, then a needs c, right? |
2021-02-28 12:33:20 +0100 | <[exa]> | yeah, and the package is not getting installed for you? |
2021-02-28 12:33:32 +0100 | <[exa]> | ie. the middle library compilation dies with not having a dependency? |
2021-02-28 12:33:33 +0100 | <olligobber> | I'll share my .cabal and the error |
2021-02-28 12:33:41 +0100 | <olligobber> | but yeah, that's what's happening |
2021-02-28 12:34:09 +0100 | <daffy> | boxscape it worked |
2021-02-28 12:34:42 +0100 | <daffy> | so the problem was that i had to specify what arr? |
2021-02-28 12:34:48 +0100 | <olligobber> | https://gist.github.com/olligobber/6ba9cfba3953f7320eb350db621b16fb |
2021-02-28 12:35:03 +0100 | <boxscape> | daffy: nice. I can't really tell you without more context why it didn't know what that variable should be, but generally speaking you can always get rid of "ambiguous type variable" errors by adding type signatures |
2021-02-28 12:35:20 +0100 | <daffy> | ah, ok |
2021-02-28 12:35:38 +0100 | <daffy> | so are the type signatures automatically generated by vscode no good? |
2021-02-28 12:35:52 +0100 | <boxscape> | daffy ah, the "Any" was generated by VSCode? |
2021-02-28 12:36:34 +0100 | <daffy> | uhhh no the the "Any" was when I hovered over the function |
2021-02-28 12:36:49 +0100 | <daffy> | and it said it had Any as one of the types |
2021-02-28 12:37:08 +0100 | <daffy> | IO (Inte.Image GHC.Types.Any Y Double) was what was generated by vscode |
2021-02-28 12:38:20 +0100 | minoru_shiraeesh | (~shiraeesh@109.166.56.139) |
2021-02-28 12:39:15 +0100 | dsrt^ | (dsrt@ip98-184-89-2.mc.at.cox.net) () |
2021-02-28 12:39:39 +0100 | <[exa]> | olligobber: well so it's thinking that you want to import the library file as a source of the executable |
2021-02-28 12:39:39 +0100 | <boxscape> | daffy I would guess that VSCode should generally produce decent type signatures, though I haven't tried it. In this particular case though it's unhelpful, because it also doesn't know how to properly fill the ambiguous type variable. |
2021-02-28 12:40:03 +0100 | <xsperry> | do you get the same type in ghci with your old code? |
2021-02-28 12:40:12 +0100 | <[exa]> | olligobber: which is kinda hard to explain to the compiler. Suggest separating src/ and lib/ ? |
2021-02-28 12:40:27 +0100 | vs^ | (vs@ip98-184-89-2.mc.at.cox.net) |
2021-02-28 12:40:30 +0100 | <olligobber> | [exa], use src for the executables and lib for the library? |
2021-02-28 12:40:32 +0100 | <boxscape> | xsperry keep in mind that this is inside an IO block so not trivial to ask for a type in ghci |
2021-02-28 12:40:55 +0100 | srk | (~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection) |
2021-02-28 12:40:55 +0100 | hexo | (~hexo@gateway/tor-sasl/hexo) (Remote host closed the connection) |
2021-02-28 12:41:00 +0100 | <xsperry> | type holes would work |
2021-02-28 12:41:06 +0100 | <xsperry> | typed* |
2021-02-28 12:41:09 +0100 | <[exa]> | olligobber: yeah. Just to make this perfectly unambiguous for the downstream compiler |
2021-02-28 12:41:10 +0100 | srk | (~sorki@gateway/tor-sasl/sorki) |
2021-02-28 12:41:15 +0100 | hexo | (~hexo@gateway/tor-sasl/hexo) |
2021-02-28 12:41:53 +0100 | daffy80 | (01c8aa98@1.200.170.152) |
2021-02-28 12:41:59 +0100 | <[exa]> | unfortunately the `import` statements cannot easily distinguish between external library and local file |
2021-02-28 12:42:03 +0100 | <daffy80> | boxscape ah okay I see |
2021-02-28 12:42:04 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-28 12:42:08 +0100 | <olligobber> | oh I see |
2021-02-28 12:42:56 +0100 | <[exa]> | olligobber: to fix that, cabal would need to pass explicit file lists of files that should not be touched in the build, which becomes rather clumsy with growing projects |
2021-02-28 12:43:18 +0100 | <olligobber> | yay it compiled |
2021-02-28 12:43:40 +0100 | <olligobber> | though my ghc-options got ignored... |
2021-02-28 12:44:46 +0100 | <daffy> | boxscape if I wanted to display the image, I would have to do in a separate function? because displayImage outputs type IO() but that doesn't match the type signature i added |
2021-02-28 12:45:05 +0100 | cartwright | (~chatting@gateway/tor-sasl/cantstanya) (Remote host closed the connection) |
2021-02-28 12:46:18 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 245 seconds) |
2021-02-28 12:46:24 +0100 | <[exa]> | olligobber: actually I never used shared options like this so cannot tell (blind suggestion: bump cabal req version to one that supports it) |
2021-02-28 12:47:04 +0100 | <[exa]> | `common` is supported only since 2.2 |
2021-02-28 12:47:23 +0100 | <boxscape> | daffy you should be able to do it in the same function. displayImage has type `Image arr cs e -> IO ()` I'm guessing? |
2021-02-28 12:47:26 +0100 | cartwright | (~chatting@gateway/tor-sasl/cantstanya) |
2021-02-28 12:47:38 +0100 | <daffy80> | yessir |
2021-02-28 12:48:17 +0100 | <olligobber> | [exa], ah, ty |
2021-02-28 12:48:54 +0100 | <[exa]> | olligobber: anyway, packaging is hard and the amount of surprise is often surprising. |
2021-02-28 12:49:54 +0100 | <boxscape> | daffy80 and you want this function you're in to return `IO (Image VS Y Double)`? |
2021-02-28 12:50:33 +0100 | <daffy80> | yeap, the same type that I read it as |
2021-02-28 12:52:23 +0100 | <boxscape> | daffy the last line in your do block should be a value of that type then, so if you want to display it first, you can write `do <first few lines> ioImg <- lastLine; displayImage lastLine; return lastLine` |
2021-02-28 12:52:27 +0100 | James_F1 | (~James_F@139.28.218.148) (Remote host closed the connection) |
2021-02-28 12:52:29 +0100 | <boxscape> | where semicolons are newlines |
2021-02-28 12:52:58 +0100 | <boxscape> | ehh |
2021-02-28 12:52:59 +0100 | <boxscape> | wait |
2021-02-28 12:53:12 +0100 | <boxscape> | `do <first few lines> img <- lastLine; displayImage img; return lastLine` |
2021-02-28 12:53:18 +0100 | <boxscape> | ^ should have been this daffy80 |
2021-02-28 12:53:42 +0100 | daffy | (01c8aa98@1.200.170.152) (Ping timeout: 240 seconds) |
2021-02-28 12:54:03 +0100 | <boxscape> | do let me know if that's not a comprehensible way of sharing code |
2021-02-28 12:54:29 +0100 | <daffy80> | sorry what is lastLine? |
2021-02-28 12:54:46 +0100 | <boxscape> | daffy80 just referring to the last line of your current do block in that function |
2021-02-28 12:54:52 +0100 | <daffy80> | oh haha |
2021-02-28 12:55:07 +0100 | <boxscape> | daffy80 oh sorry it's still wrong |
2021-02-28 12:55:15 +0100 | <boxscape> | `do <first few lines> img <- lastLine; displayImage img; return img` |
2021-02-28 12:55:20 +0100 | <boxscape> | should have been this.. |
2021-02-28 12:56:15 +0100 | <daffy80> | Ahh okay |
2021-02-28 12:56:30 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
2021-02-28 12:56:31 +0100 | <daffy80> | Do I need to change the type signature accordingly? |
2021-02-28 12:56:41 +0100 | <daffy80> | Because I'm outputting something different |
2021-02-28 12:57:51 +0100 | <boxscape> | daffy80 you shouldn't have to - the type of displayImage is different, but if the last line is `return img`, that's what the type of that function is (the type of a do block is always the type of the last line). `<-` unwraps it from `IO` and `return` rewraps `img` into IO, so the type ought to be the same as before |
2021-02-28 12:57:55 +0100 | Varis | (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
2021-02-28 12:59:32 +0100 | <daffy80> | I meant like before when I was working on getting fromList to work, I changed the type signature , do I keep that? |
2021-02-28 12:59:57 +0100 | <boxscape> | daffy80 if my mental image of what your code looks like is correct then yes, you keep that |
2021-02-28 13:00:16 +0100 | <daffy80> | ok I see |
2021-02-28 13:00:53 +0100 | <daffy80> | So <- allows you to extract something from IO? |
2021-02-28 13:01:08 +0100 | <daffy80> | But when the do block ends it still outputs as IO? |
2021-02-28 13:01:35 +0100 | sphalerite | (~sphalerit@NixOS/user/lheckemann) (Quit: updates!) |
2021-02-28 13:01:45 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 264 seconds) |
2021-02-28 13:02:49 +0100 | <boxscape> | daffy80 technically <- is syntactic sugar for the >>= function, but you'll learn about that when you learn about monads. The type of an IO do block is always `IO (something)`, but inside the IO block, you can "get rid" of the IO wrapping with `<-`. But the type of the last line has to be `IO (something)`, so in this case we have to use the `return` |
2021-02-28 13:02:49 +0100 | <boxscape> | function to wrap it back into IO so the type is correct. |
2021-02-28 13:03:17 +0100 | <boxscape> | (to be clear, it has very little to do with the `return` keyword in other languages) |
2021-02-28 13:03:56 +0100 | <daffy80> | oh |
2021-02-28 13:04:02 +0100 | kritzefitz | (~kritzefit@212.86.56.80) |
2021-02-28 13:04:12 +0100 | <daffy80> | Yeah I've been treating <- as an assignment operator |
2021-02-28 13:04:42 +0100 | <boxscape> | it is meant to be reminiscent of that though it works fairly differently |
2021-02-28 13:05:24 +0100 | <boxscape> | do-blocks are meant to look like imperative code, hence also the choice of the `return` name |
2021-02-28 13:05:38 +0100 | <daffy80> | I see |
2021-02-28 13:05:48 +0100 | int80h | (uid148779@gateway/web/irccloud.com/x-xjmwrihbawesmufs) |
2021-02-28 13:06:57 +0100 | <daffy80> | what is the difference between = and <- then? I guess you can use <- to work in the IO monad while = doesn't allow you to? |
2021-02-28 13:07:47 +0100 | <boxscape> | you can use `let x = something` inside a do block. This is somewhat similar to `y <- something`, but if something has type `IO A`, then `x :: IO A` and `y :: A`. |
2021-02-28 13:08:26 +0100 | <daffy80> | ahh ok |
2021-02-28 13:08:34 +0100 | <boxscape> | (so if you want to pass `something` to a function that expects an A, not an IO A, you need to use <- to get access to it) |
2021-02-28 13:08:47 +0100 | <daffy80> | I see |
2021-02-28 13:08:54 +0100 | <daffy80> | This kind of reminds me of pointer access |
2021-02-28 13:09:11 +0100 | <__monty__> | That's very different. |
2021-02-28 13:09:11 +0100 | sphalerite | (~sphalerit@NixOS/user/lheckemann) |
2021-02-28 13:09:22 +0100 | <__monty__> | Think of it as passing an argument to a function. |
2021-02-28 13:09:26 +0100 | <hugo> | 'do x <- something; return x' is equal to 'something >>= (\x -> return x)' |
2021-02-28 13:09:31 +0100 | <__monty__> | Don't try to equate it with concepts you have from other languages. |
2021-02-28 13:09:45 +0100 | <xsperry> | which is equal to 'something' :) |
2021-02-28 13:09:48 +0100 | <hugo> | As people have said above, bind (>>=) unwraps the monad context from a value |
2021-02-28 13:10:07 +0100 | <hugo> | xsperry: I know, but minimum viable example ;) |
2021-02-28 13:10:18 +0100 | <daffy80> | and <- is just syntactic sugar for bind? |
2021-02-28 13:10:41 +0100 | <hugo> | daffy80: yes. The entire 'do' notatation is just syntactic sugar for bind |
2021-02-28 13:10:47 +0100 | <boxscape> | @undo do x <- something; return x |
2021-02-28 13:10:47 +0100 | <lambdabot> | something >>= \ x -> return x |
2021-02-28 13:11:31 +0100 | <boxscape> | @undo img <- lastLine; displayImage img; return img |
2021-02-28 13:11:31 +0100 | <lambdabot> | <unknown>.hs:1:5:Parse error: <- |
2021-02-28 13:11:37 +0100 | <boxscape> | @undo do img <- lastLine; displayImage img; return img |
2021-02-28 13:11:37 +0100 | <lambdabot> | lastLine >>= \ img -> displayImage img >> return img |
2021-02-28 13:11:45 +0100 | <xsperry> | daffy80, did you try using do and <- with monads other than IO? |
2021-02-28 13:11:59 +0100 | xff0x | (~xff0x@2001:1a81:5349:9200:2ca8:4ef3:12c9:ba81) (Ping timeout: 272 seconds) |
2021-02-28 13:12:00 +0100 | <daffy80> | no, im just getting into haskell |
2021-02-28 13:12:28 +0100 | xff0x | (~xff0x@2001:1a81:5349:9200:2806:fad1:e222:a1c8) |
2021-02-28 13:12:40 +0100 | sh9 | (~sh9@softbank060116136158.bbtec.net) (Quit: WeeChat 2.8) |
2021-02-28 13:12:44 +0100 | knupfer | (~Thunderbi@200116b82cc9eb004cd887aa2955feba.dip.versatel-1u1.de) (Ping timeout: 240 seconds) |
2021-02-28 13:13:23 +0100 | <hugo> | Try 'do Just 10; Nothing; Just 20' |
2021-02-28 13:13:56 +0100 | <Aleksejs> | can I define types in lambdabot expressions? |
2021-02-28 13:14:08 +0100 | <boxscape> | daffy80 are you familiar with list comprehensions? |
2021-02-28 13:14:38 +0100 | <boxscape> | @let data Foo124 = Foo124 |
2021-02-28 13:14:40 +0100 | <daffy80> | I've heard of the term yes |
2021-02-28 13:14:40 +0100 | <lambdabot> | Defined. |
2021-02-28 13:14:52 +0100 | <boxscape> | ^ Aleksejs |
2021-02-28 13:14:59 +0100 | <Aleksejs> | nice |
2021-02-28 13:15:58 +0100 | <daffy80> | hugo in GHCi? |
2021-02-28 13:16:08 +0100 | <boxscape> | daffy80 list comprehensions in haskell are also more or less do notation, i.e. [ x + y | x <- [1..5] , y <- [1..6] ] is the same as `do x <- [1..5]; y <- [1..6]; return x + y`, so lists are another example of where do notation can be nice |
2021-02-28 13:16:31 +0100 | <boxscape> | IO is just the place where it comes up most often |
2021-02-28 13:17:07 +0100 | <daffy80> | So the do notation is just for readability? |
2021-02-28 13:17:12 +0100 | <boxscape> | yes |
2021-02-28 13:17:33 +0100 | <daffy80> | Ahh |
2021-02-28 13:17:47 +0100 | clog | (~nef@bespin.org) |
2021-02-28 13:18:49 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
2021-02-28 13:19:12 +0100 | <hugo> | daffy80: Raw do-notations in GHCi is clumsy. Try writing the following to a file and compiling it instead: |
2021-02-28 13:19:15 +0100 | <hugo> | main :: IO () |
2021-02-28 13:19:17 +0100 | <hugo> | main = putStrLn . show $ do Just 10; Nothing; Just 20 |
2021-02-28 13:19:21 +0100 | <boxscape> | Aleksejs fwiw you may find yahb more convenient which is just directly a bridge to ghci |
2021-02-28 13:19:31 +0100 | <boxscape> | % data Foo123 = FOo123 |
2021-02-28 13:19:31 +0100 | <yahb> | boxscape: |
2021-02-28 13:21:00 +0100 | <daffy80> | it returns Nothing when I run that hugo |
2021-02-28 13:21:59 +0100 | <hugo> | daffy80: That's expected. I wanted to show an example of do (and bind) on a different monad than IO |
2021-02-28 13:22:19 +0100 | Deide | (~Deide@217.155.19.23) |
2021-02-28 13:23:02 +0100 | <xsperry> | > do x <- Just 10; y <- Just 20; return (x+y) |
2021-02-28 13:23:04 +0100 | <lambdabot> | Just 30 |
2021-02-28 13:23:09 +0100 | <xsperry> | > do x <- Nothing; y <- Just 20; return (x+y) |
2021-02-28 13:23:11 +0100 | <daffy80> | Hmm what is Just doing? |
2021-02-28 13:23:11 +0100 | <lambdabot> | Nothing |
2021-02-28 13:23:47 +0100 | <hugo> | daffy80: Just and Nothing are the two instances of the Maybe datatype. Which represent the posibility of a value being there |
2021-02-28 13:24:03 +0100 | <xsperry> | Nothing is roughly equivalent to null reference in other languages. and Just is a constructor that indicates there's a value in Maybe |
2021-02-28 13:24:19 +0100 | <daffy80> | I see |
2021-02-28 13:24:38 +0100 | <daffy80> | So Maybe is a monad? |
2021-02-28 13:24:44 +0100 | <xsperry> | yes |
2021-02-28 13:25:02 +0100 | mputz | (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
2021-02-28 13:25:28 +0100 | <xsperry> | difference being that there's no all-encompassing null that is included in every type, you have to use Maybe to get null (Nothing) |
2021-02-28 13:27:02 +0100 | SchwarzeLocke | (~SchwarzeL@178.239.168.171) |
2021-02-28 13:27:46 +0100 | int80h | (uid148779@gateway/web/irccloud.com/x-xjmwrihbawesmufs) () |
2021-02-28 13:27:46 +0100 | sh9 | (~sh9@softbank060116136158.bbtec.net) |
2021-02-28 13:28:01 +0100 | <daffy80> | right |
2021-02-28 13:28:22 +0100 | <xsperry> | notice the similarity to IO do block, Just 20 is Maybe a, and x <- Just 20, x is a (where a is Num a => a, some numerical type) |
2021-02-28 13:30:21 +0100 | <daffy80> | so any instance of a Monad can be used in a do block ? |
2021-02-28 13:30:33 +0100 | <xsperry> | yes |
2021-02-28 13:31:10 +0100 | <daffy80> | ic ic |
2021-02-28 13:31:34 +0100 | cheater | (~user@unaffiliated/cheater) (Ping timeout: 260 seconds) |
2021-02-28 13:32:52 +0100 | <boxscape> | (though only one Monad per do block) |
2021-02-28 13:33:24 +0100 | <boxscape> | i.e. you can't use <- to unwrap `IO String` if the do Block is supposed to return `Maybe Int` in the end |
2021-02-28 13:33:46 +0100 | knupfer | (~Thunderbi@200116b82cc9eb0070e901fffe4f30ff.dip.versatel-1u1.de) |
2021-02-28 13:34:00 +0100 | <daffy80> | what determines what is supposed to return ? |
2021-02-28 13:34:06 +0100 | <daffy80> | whichever one comes first? |
2021-02-28 13:34:23 +0100 | <boxscape> | the type of the last line is the type of the do block |
2021-02-28 13:34:26 +0100 | knupfer | (~Thunderbi@200116b82cc9eb0070e901fffe4f30ff.dip.versatel-1u1.de) (Remote host closed the connection) |
2021-02-28 13:34:31 +0100 | <daffy80> | oh |
2021-02-28 13:34:44 +0100 | <boxscape> | so if you write `putStrLn "hi"` as last line, it will be a IO do block |
2021-02-28 13:34:51 +0100 | <daffy80> | Ah ok |
2021-02-28 13:35:09 +0100 | <hugo> | For me to properly get my head around all the intricacies of bind I had to reimplement it in a different language |
2021-02-28 13:35:14 +0100 | <boxscape> | though on the other hand if you write `line <- getLine` somewhere in the middle, it will also infer that it should be an IO do block, it'll just complain if the last line doesn't match that |
2021-02-28 13:35:44 +0100 | <daffy80> | hugo yeah I feel like I'm thinking of everything in terms of other languages |
2021-02-28 13:36:26 +0100 | <daffy80> | right so the main thing to remember is to only have one monad per do block |
2021-02-28 13:36:39 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) |
2021-02-28 13:36:40 +0100 | <hugo> | daffy |
2021-02-28 13:36:40 +0100 | <boxscape> | right |
2021-02-28 13:37:52 +0100 | <hugo> | daffy80: reimplementing bind in a different language was mostly to avoid implementing bind in terms of bind |
2021-02-28 13:38:52 +0100 | <hugo> | Also, the much more relaxed type system of scheme (which was what I wrote it in) allowed me to experiment with mixing types inside a do block, and got to see why it doesn't work |
2021-02-28 13:40:17 +0100 | <daffy80> | I find the type system in haskell tough to get used to |
2021-02-28 13:40:39 +0100 | <boxscape> | I find it so hard to go back to less strict systems at this point |
2021-02-28 13:40:55 +0100 | <daffy80> | oh really |
2021-02-28 13:41:02 +0100 | <Uniaika> | yeah it's a pain :/ |
2021-02-28 13:41:15 +0100 | <daffy80> | Shouldn't it go the other way |
2021-02-28 13:41:24 +0100 | <Uniaika> | you benefit from so much without having to compromise because you also have powerful abstractions |
2021-02-28 13:41:26 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Ping timeout: 264 seconds) |
2021-02-28 13:41:26 +0100 | ixlun | (~user@213.205.241.12) (Read error: Connection reset by peer) |
2021-02-28 13:41:29 +0100 | <hugo> | The type system can be a hindrance until you get your head around it. |
2021-02-28 13:41:51 +0100 | <boxscape> | every time I make a silly mistake I think "-.- this wouldn't have happened with haskell" |
2021-02-28 13:41:51 +0100 | cheater | (~user@unaffiliated/cheater) |
2021-02-28 13:42:12 +0100 | <boxscape> | (except for the silly mistakes that still coul have happened with haskell :P) |
2021-02-28 13:42:15 +0100 | <hugo> | I only just recently learned to actually leaverage the type system to my advantage |
2021-02-28 13:43:31 +0100 | <daffy80> | what are some of those advantages? |
2021-02-28 13:45:13 +0100 | <hugo> | In my current project I needed to parse messages of varying type. My code more or less looks like 'decoder = F <$> decoder <*> decoder <*> decoder' |
2021-02-28 13:45:36 +0100 | mputz | (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 240 seconds) |
2021-02-28 13:45:54 +0100 | ixlun | (~user@213.205.241.12) |
2021-02-28 13:45:54 +0100 | <hugo> | Where each instance of decoder has a different return type. Decided by F's type |
2021-02-28 13:46:33 +0100 | o1lo01ol1o | (~o1lo01ol1@89.214.221.60) |
2021-02-28 13:46:33 +0100 | o1lo01ol1o | (~o1lo01ol1@89.214.221.60) (Client Quit) |
2021-02-28 13:46:39 +0100 | <Uniaika> | hugo: applicative functors <3 |
2021-02-28 13:47:05 +0100 | daffy | (01c8aa98@1.200.170.152) |
2021-02-28 13:47:22 +0100 | daffy80 | (01c8aa98@1.200.170.152) (Quit: Connection closed) |
2021-02-28 13:48:01 +0100 | o1lo01ol1o | (~o1lo01ol1@89.214.221.60) |
2021-02-28 13:49:36 +0100 | kam1 | (~kam1@5.125.126.175) |
2021-02-28 13:51:38 +0100 | <daffy> | @boxs |
2021-02-28 13:51:38 +0100 | <lambdabot> | Maybe you meant: docs b52s |
2021-02-28 13:51:42 +0100 | <daffy> | oops |
2021-02-28 13:51:56 +0100 | <daffy> | boxscape i tried your suggestion but vscode is screaming at me |
2021-02-28 13:52:07 +0100 | <boxscape> | oh no! |
2021-02-28 13:52:10 +0100 | <boxscape> | can you paste the code? |
2021-02-28 13:52:11 +0100 | <daffy> | i think i misunderstood what you were saying lol |
2021-02-28 13:52:24 +0100 | <boxscape> | on https://paste.tomsmeding.com/ or similar |
2021-02-28 13:52:48 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:692f:34e4:c65a:92f2) |
2021-02-28 13:53:59 +0100 | <daffy> | https://paste.tomsmeding.com/GP2eJ91K |
2021-02-28 13:55:10 +0100 | viluon | (uid453725@gateway/web/irccloud.com/x-nrcpcvymghsotxnv) |
2021-02-28 13:55:25 +0100 | <boxscape> | daffy ah, looks like you just need `return fin` instead of `return img` |
2021-02-28 13:56:51 +0100 | <boxscape> | daffy since displayImage returns `IO ()`, the type of `img` in this case becomes `()`, and the type of `return img` is `IO ()` again, whereas the type of `fin` is `Image ...`, so `return fin` gives you `IO (Image ...)`, which is what you need |
2021-02-28 13:56:56 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:692f:34e4:c65a:92f2) (Ping timeout: 240 seconds) |
2021-02-28 13:57:01 +0100 | <daffy> | it worked but how come? isn't img holding the result of displayImage |
2021-02-28 13:57:11 +0100 | <boxscape> | indeed |
2021-02-28 13:57:17 +0100 | <boxscape> | but you want to return the result of fromLists |
2021-02-28 13:57:21 +0100 | <boxscape> | not the result of displayImage |
2021-02-28 13:57:54 +0100 | <boxscape> | the useful part of displayImage is that it has a side effect (i.e. displaying the image), not that it returns something interesting |
2021-02-28 13:58:49 +0100 | ambiso9 | (~ambiso@209.182.239.205) |
2021-02-28 13:58:59 +0100 | <boxscape> | in fact, its return value doesn't contain any interesting information, since there's only one possible value that's in `()` -- that value is also called `()`. functions that have return type `IO ()` are like functions that have return type void in C or Java |
2021-02-28 13:59:10 +0100 | <daffy> | hmm but if i'm not returning img how come the image is still displayed? |
2021-02-28 13:59:31 +0100 | <xsperry> | in the same way putStrLn doesn't return the string it prints |
2021-02-28 13:59:37 +0100 | <daffy> | oh wait fin itself is an image |
2021-02-28 13:59:54 +0100 | <daffy> | oh okay i see what u mean |
2021-02-28 14:01:17 +0100 | kritzefitz | (~kritzefit@212.86.56.80) (Remote host closed the connection) |
2021-02-28 14:01:29 +0100 | kritzefitz | (~kritzefit@212.86.56.80) |
2021-02-28 14:02:12 +0100 | <boxscape> | daffy since you're not using img you can also replace `img <- displayImage fin` with just `displayImage fin` |
2021-02-28 14:02:21 +0100 | fendor | (~fendor@078132053193.public.t-mobile.at) (Ping timeout: 264 seconds) |
2021-02-28 14:02:51 +0100 | <Clint> | and is there a purpose in not having main :: IO () ? |
2021-02-28 14:03:22 +0100 | <boxscape> | ah that's a good point |
2021-02-28 14:04:02 +0100 | <daffy> | not having? or having |
2021-02-28 14:04:42 +0100 | <boxscape> | daffy `main` typically has the type `IO ()`, since its only purpose (usually) is to perform an IO action, not to return anything |
2021-02-28 14:05:17 +0100 | <boxscape> | daffy in your case that would mean having the last line be `displayImage fin` instead of adding `return fin` at the end |
2021-02-28 14:05:44 +0100 | <daffy> | oh |
2021-02-28 14:06:22 +0100 | <boxscape> | daffy though then you would have to make sure that it knows it should be using `VS` somewhere else, for example by adding the signature to `let fin = I.fromLists a :: Inte.Image I.VS Y Double` |
2021-02-28 14:06:38 +0100 | <infinisil> | It probably would make sense for main to be `IO ExitCode` |
2021-02-28 14:07:15 +0100 | <xsperry> | it would make average main longer though, since you want to return 0 in most cases |
2021-02-28 14:07:18 +0100 | <boxscape> | infinisil does that work, as in, will the OS accept that as exit code? |
2021-02-28 14:07:34 +0100 | <infinisil> | Oh no it doesn't work currently, I'm pretty sure at least |
2021-02-28 14:07:38 +0100 | <boxscape> | I see |
2021-02-28 14:07:39 +0100 | <xsperry> | no, return of main is ignored (except in ghci) |
2021-02-28 14:08:24 +0100 | <daffy> | ok |
2021-02-28 14:09:06 +0100 | <daffy> | if i'm writing to a single folder, does the forward slash go before or after the name of the folder? i've tried both but both give me errros |
2021-02-28 14:09:23 +0100 | <boxscape> | writing what? |
2021-02-28 14:09:55 +0100 | <daffy> | writing image to a file |
2021-02-28 14:10:01 +0100 | <daffy> | i mean |
2021-02-28 14:10:16 +0100 | <daffy> | yeah writing image to a file lol |
2021-02-28 14:10:21 +0100 | <enikar> | is it possible to have a different type for main than IO ()? |
2021-02-28 14:10:34 +0100 | <boxscape> | enikar I think `IO t` works, for any t |
2021-02-28 14:11:07 +0100 | <enikar> | ok. That wonders me. |
2021-02-28 14:11:12 +0100 | <boxscape> | daffy hm, in principle I would think something like "foldrName/fileName" should work, though I haven't used the hip functions |
2021-02-28 14:11:44 +0100 | <boxscape> | enikar I'm pretty sure that's mostly just so you can use IO actions as the last line in main without having to explicitly discard the result |
2021-02-28 14:11:55 +0100 | <boxscape> | s/IO actions/IO actions which don't have type IO () |
2021-02-28 14:19:13 +0100 | <enikar> | but nothing can read this result. For what is it usefull? |
2021-02-28 14:21:11 +0100 | <boxscape> | enikar say you want to end your program with saying "press enter to exit the program" and then wait for enter to be pressed. You can do that by writing `do putStrLn "press enter"; getLine`. But the type of this is `IO String` - so you couldn't do this if the type had to be IO () |
2021-02-28 14:21:55 +0100 | <daffy> | oh i'm an idiot i just forgot to specify the name of the file |
2021-02-28 14:22:01 +0100 | <daffy> | thanks boxscape for the help |
2021-02-28 14:22:07 +0100 | <boxscape> | you're welcome |
2021-02-28 14:22:55 +0100 | <boxscape> | enikar if it had to be IO () the last line would have to be `void getLine` instead - not a huge difference, I admit |
2021-02-28 14:24:59 +0100 | <xsperry> | enikar, ghci can read the result. I sometimes take advantage of that (though rarely) |
2021-02-28 14:25:38 +0100 | <boxscape> | I wonder if a haskell REPL was assumed to become a thing when the committee came up with this rule |
2021-02-28 14:25:56 +0100 | <boxscape> | I imagine probably? |
2021-02-28 14:26:11 +0100 | pavonia | (~user@unaffiliated/siracusa) (Quit: Bye!) |
2021-02-28 14:28:12 +0100 | <boxscape> | hm can't figure out whether Miranda has a REPL |
2021-02-28 14:32:32 +0100 | <enikar> | boxscape: I see. But for continuing the programm, IO () should also work, I bet. am I wrong? To Continue, I just call main recursively. |
2021-02-28 14:32:43 +0100 | <enikar> | but never mind. |
2021-02-28 14:32:48 +0100 | <boxscape> | yeah |
2021-02-28 14:35:46 +0100 | Sheilong | (uid293653@gateway/web/irccloud.com/x-lljagtdqleuggsro) |
2021-02-28 14:35:49 +0100 | son0p | (~son0p@181.58.39.182) (Quit: leaving) |
2021-02-28 14:36:16 +0100 | rayyyy | (~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 268 seconds) |
2021-02-28 14:38:30 +0100 | Varis | (~Tadas@unaffiliated/varis) |
2021-02-28 14:51:54 +0100 | hiroaki_ | (~hiroaki@2a02:908:4b18:8c40:cc64:29af:c80:536f) (Ping timeout: 246 seconds) |
2021-02-28 14:52:20 +0100 | elfets | (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
2021-02-28 14:53:22 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:692f:34e4:c65a:92f2) |
2021-02-28 14:56:36 +0100 | bitmagie | (~Thunderbi@200116b806dcda002112473b8db035bd.dip.versatel-1u1.de) |
2021-02-28 14:57:23 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
2021-02-28 14:58:14 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:692f:34e4:c65a:92f2) (Ping timeout: 264 seconds) |
2021-02-28 14:58:25 +0100 | soft-warm | (44695313@ip68-105-83-19.sd.sd.cox.net) |
2021-02-28 14:59:26 +0100 | hendi | (uid489601@gateway/web/irccloud.com/x-cyumymliypkvjqpl) |
2021-02-28 14:59:52 +0100 | soft-warm | (44695313@ip68-105-83-19.sd.sd.cox.net) (Client Quit) |
2021-02-28 15:01:04 +0100 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection) |
2021-02-28 15:01:23 +0100 | dxld | (~dxld@rush.pub.dxld.at) (Remote host closed the connection) |
2021-02-28 15:02:34 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 260 seconds) |
2021-02-28 15:02:54 +0100 | soft-warm | (44695313@ip68-105-83-19.sd.sd.cox.net) |
2021-02-28 15:02:56 +0100 | ambiso9 | (~ambiso@209.182.239.205) (Quit: The Lounge - https://thelounge.chat) |
2021-02-28 15:03:36 +0100 | svet_ | (~svet@90.200.185.163) |
2021-02-28 15:04:38 +0100 | ambiso9 | (~ambiso@209.182.239.205) |
2021-02-28 15:05:17 +0100 | ADG1089__ | (~aditya@110.226.222.179) |
2021-02-28 15:05:22 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-83-46.w86-212.abo.wanadoo.fr) |
2021-02-28 15:05:39 +0100 | <ADG1089__> | anyone running haskell on arch? |
2021-02-28 15:07:49 +0100 | forgottenone | (~forgotten@176.42.27.254) (Remote host closed the connection) |
2021-02-28 15:08:55 +0100 | forgottenone | (~forgotten@176.42.27.254) |
2021-02-28 15:10:48 +0100 | <ADG1089__> | how to automatically add extra deps based on hints from stack build? |
2021-02-28 15:11:20 +0100 | <int-e> | ADG1089__: I've done that for a while... I recommend only using the distro compiler to compile your own |
2021-02-28 15:11:43 +0100 | <int-e> | stack works I suppose |
2021-02-28 15:12:01 +0100 | carlomagno | (~cararell@148.87.23.10) |
2021-02-28 15:12:02 +0100 | <nshepperd2> | step 1 of using haskell on arch is to uninstall all haskell-related arch packages |
2021-02-28 15:12:07 +0100 | <int-e> | but then it shouyld no longer matter that you're on arch |
2021-02-28 15:13:11 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) |
2021-02-28 15:14:31 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Remote host closed the connection) |
2021-02-28 15:15:15 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-02-28 15:15:17 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) |
2021-02-28 15:15:35 +0100 | <ADG1089__> | problem is llvm is v11 on arch, latest ghc supports v10 or 9 i think |
2021-02-28 15:15:57 +0100 | minoru_shiraeesh | (~shiraeesh@109.166.56.139) (Remote host closed the connection) |
2021-02-28 15:17:18 +0100 | bitmapper | (uid464869@gateway/web/irccloud.com/x-fhpztltksioqsdcb) |
2021-02-28 15:18:03 +0100 | deja | (~deja@212095008174.public.telering.at) (Quit: requested) |
2021-02-28 15:18:38 +0100 | renzhi | (~renzhi@2607:fa49:653f:eb00::5bc7) |
2021-02-28 15:19:02 +0100 | minoru_shiraeesh | (~shiraeesh@109.166.56.139) |
2021-02-28 15:19:14 +0100 | mk2048 | (3e85a292@h62-133-162-146.dyn.bashtel.ru) |
2021-02-28 15:19:24 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Ping timeout: 240 seconds) |
2021-02-28 15:19:33 +0100 | acarrico | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
2021-02-28 15:19:44 +0100 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) |
2021-02-28 15:21:17 +0100 | <int-e> | ADG1089__: Oh, that may be a problem, but I can't help. I only used the native code generator (on x86-64)... |
2021-02-28 15:23:36 +0100 | hendursa1 | (~weechat@gateway/tor-sasl/hendursaga) (Quit: hendursa1) |
2021-02-28 15:23:49 +0100 | <int-e> | Arch just isn't a very nice distribution, I'm afraid... some packages just need slots to be used sanely, and llvm is one of them. not to mention the insanity of continually updating haskell packages shipped as shared libraries with no promise of binary compatibility between versions |
2021-02-28 15:23:57 +0100 | hendursaga | (~weechat@gateway/tor-sasl/hendursaga) |
2021-02-28 15:25:15 +0100 | luigy | (~luigy@104.236.106.229) (*.net *.split) |
2021-02-28 15:25:15 +0100 | xcin | (~x@159.203.132.140) (*.net *.split) |
2021-02-28 15:25:15 +0100 | debugloop | (~danieln@unaffiliated/debugloop) (*.net *.split) |
2021-02-28 15:25:22 +0100 | luigy | (~luigy@104.236.106.229) |
2021-02-28 15:25:33 +0100 | debugloop | (~danieln@unaffiliated/debugloop) |
2021-02-28 15:25:48 +0100 | hendursaga | (~weechat@gateway/tor-sasl/hendursaga) (Remote host closed the connection) |
2021-02-28 15:25:52 +0100 | mk2048 | (3e85a292@h62-133-162-146.dyn.bashtel.ru) (Quit: Connection closed) |
2021-02-28 15:26:07 +0100 | xcin | (~x@159.203.132.140) |
2021-02-28 15:27:31 +0100 | daffy | (01c8aa98@1.200.170.152) (Quit: Connection closed) |
2021-02-28 15:28:11 +0100 | hendursaga | (~weechat@gateway/tor-sasl/hendursaga) |
2021-02-28 15:28:52 +0100 | <ADG1089__> | int-e: what distro would you recommend then? |
2021-02-28 15:29:40 +0100 | <nshepperd2> | ADG1089__: you can install llvm10 to roll back |
2021-02-28 15:32:21 +0100 | <hpc> | whatever you're most comfortable installing ghcup on, probably |
2021-02-28 15:32:33 +0100 | acarrico | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 245 seconds) |
2021-02-28 15:34:40 +0100 | <ADG1089__> | I usually install ghcup and use it to install cabal, hls, ghc. Also install stack using wget for projects that require it. |
2021-02-28 15:34:50 +0100 | <ADG1089__> | Install global libraries using cabal |
2021-02-28 15:34:54 +0100 | <int-e> | ADG1089__: I don't know, I'm on debian unstable for development needs but still manage my own ghc installations. it can definitely install several llvm versions though |
2021-02-28 15:35:09 +0100 | <hpc> | bleh, stack |
2021-02-28 15:35:27 +0100 | <ADG1089__> | hpc: what do you recommend? |
2021-02-28 15:35:32 +0100 | <hpc> | if a project is so delicate that only stack can handle its build environment, i don't want to touch it |
2021-02-28 15:35:53 +0100 | dxld | (~dxld@rush.pub.dxld.at) |
2021-02-28 15:36:24 +0100 | <ADG1089__> | this i smy project: https://github.com/adityagupta1089/Project-Euler-Haskell |
2021-02-28 15:38:44 +0100 | kosmikus_ | (~kosmikus@nullzig.kosmikus.org) (Remote host closed the connection) |
2021-02-28 15:40:30 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-83-46.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-02-28 15:40:52 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-83-46.w86-212.abo.wanadoo.fr) |
2021-02-28 15:46:45 +0100 | kosmikus | (~kosmikus@haskell/developer/kosmikus) |
2021-02-28 15:49:45 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
2021-02-28 15:51:06 +0100 | geekosaur | (ae68c070@cpe-174-104-192-112.neo.res.rr.com) |
2021-02-28 15:51:29 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
2021-02-28 15:53:57 +0100 | kam1 | (~kam1@5.125.126.175) (Ping timeout: 264 seconds) |
2021-02-28 15:54:55 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:692f:34e4:c65a:92f2) |
2021-02-28 15:56:18 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 245 seconds) |
2021-02-28 15:59:43 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:692f:34e4:c65a:92f2) (Ping timeout: 260 seconds) |
2021-02-28 16:00:49 +0100 | minoru_shiraeesh | (~shiraeesh@109.166.56.139) (Read error: Connection reset by peer) |
2021-02-28 16:01:25 +0100 | minoru_shiraeesh | (~shiraeesh@109.166.56.139) |
2021-02-28 16:02:12 +0100 | redcherri | (bab724e7@186.183.36.231) |
2021-02-28 16:04:02 +0100 | p8m | (p8m@gateway/vpn/protonvpn/p8m) (Remote host closed the connection) |
2021-02-28 16:04:44 +0100 | acarrico | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
2021-02-28 16:05:06 +0100 | p8m | (p8m@gateway/vpn/protonvpn/p8m) |
2021-02-28 16:05:45 +0100 | eoyath | (uid489605@gateway/web/irccloud.com/x-jbebfqsuczylpppq) |
2021-02-28 16:06:00 +0100 | tv | (~tv@unaffiliated/tv) (Read error: Connection reset by peer) |
2021-02-28 16:06:43 +0100 | ep1ctetus | (~epictetus@ip72-194-215-136.sb.sd.cox.net) |
2021-02-28 16:08:06 +0100 | ADG1089__ | (~aditya@110.226.222.179) (Quit: Konversation terminated!) |
2021-02-28 16:08:10 +0100 | Tario | (~Tario@201.192.165.173) |
2021-02-28 16:11:33 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 16:14:39 +0100 | redcherri | (bab724e7@186.183.36.231) () |
2021-02-28 16:15:05 +0100 | usr25 | (~usr25@unaffiliated/usr25) |
2021-02-28 16:16:03 +0100 | <BigLama> | tomsmeding: hi |
2021-02-28 16:17:54 +0100 | <BigLama> | tomsmeding: Here's a follow-up about my issue with the Req library. The author answered me by email : "HTTP connections are indeed reused in Req, but this is just to make HTTP |
2021-02-28 16:17:54 +0100 | <BigLama> | calls happen faster." |
2021-02-28 16:18:20 +0100 | <BigLama> | tomsmeding: I switched to wreq which solved my issue (it has a session mechanism) |
2021-02-28 16:19:12 +0100 | <BigLama> | He also said to do like you suggested by passing the cookieJar manually |
2021-02-28 16:21:00 +0100 | <__monty__> | That was my suspicion, connection sharing and sessions are two different things. |
2021-02-28 16:21:24 +0100 | systemhalted | (~aqualogic@71-129-231-253.lightspeed.rcsntx.sbcglobal.net) |
2021-02-28 16:21:47 +0100 | <BigLama> | Right. So I don't know exactly how session are preserved, except that there are cookiese involved |
2021-02-28 16:22:02 +0100 | <BigLama> | cookies* |
2021-02-28 16:23:14 +0100 | tv | (~tv@unaffiliated/tv) |
2021-02-28 16:24:45 +0100 | mayleesia | (4d0db908@dynamic-077-013-185-008.77.13.pool.telefonica.de) (Quit: Connection closed) |
2021-02-28 16:25:02 +0100 | hiroaki_ | (~hiroaki@2a02:908:4b18:8c40:de89:ba5e:8412:9d71) |
2021-02-28 16:25:32 +0100 | urodna | (~urodna@unaffiliated/urodna) |
2021-02-28 16:26:34 +0100 | systemhalted | (~aqualogic@71-129-231-253.lightspeed.rcsntx.sbcglobal.net) (Ping timeout: 260 seconds) |
2021-02-28 16:27:39 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) |
2021-02-28 16:29:55 +0100 | dolio | (~dolio@haskell/developer/dolio) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-02-28 16:32:22 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Ping timeout: 260 seconds) |
2021-02-28 16:33:45 +0100 | dolio | (~dolio@haskell/developer/dolio) |
2021-02-28 16:36:31 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:98b:c360:694b:b651) |
2021-02-28 16:38:19 +0100 | cyphase | (~cyphase@unaffiliated/cyphase) (Ping timeout: 260 seconds) |
2021-02-28 16:38:44 +0100 | neiluj | (~jco@91-167-203-101.subs.proxad.net) |
2021-02-28 16:38:44 +0100 | neiluj | (~jco@91-167-203-101.subs.proxad.net) (Changing host) |
2021-02-28 16:38:44 +0100 | neiluj | (~jco@unaffiliated/neiluj) |
2021-02-28 16:39:59 +0100 | vchlup_ | (~vchlup@115.128.broadband17.iol.cz) (Ping timeout: 260 seconds) |
2021-02-28 16:41:06 +0100 | sQVe | (~sQVe@unaffiliated/sqve) |
2021-02-28 16:41:47 +0100 | kritzefitz | (~kritzefit@212.86.56.80) (Remote host closed the connection) |
2021-02-28 16:42:23 +0100 | sQVe | (~sQVe@unaffiliated/sqve) (Client Quit) |
2021-02-28 16:42:50 +0100 | mrioqueiroz | (~mrioqueir@186.251.19.98) |
2021-02-28 16:43:48 +0100 | <__monty__> | Afaik there's many mechanisms so cookies don't technically have to be involved. |
2021-02-28 16:45:19 +0100 | kam1 | (~kam1@5.125.126.175) |
2021-02-28 16:46:10 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:98b:c360:694b:b651) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-02-28 16:48:37 +0100 | <Philonous> | What's the best practice for wrapping C libraries? c2sh still? |
2021-02-28 16:49:14 +0100 | <geekosaur> | I don't think c2hs has ever been a best practice; it fails in too many cases |
2021-02-28 16:49:25 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:98b:c360:694b:b651) |
2021-02-28 16:49:30 +0100 | <geekosaur> | hsc2hs is the usual way |
2021-02-28 16:55:20 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:692f:34e4:c65a:92f2) |
2021-02-28 16:56:35 +0100 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
2021-02-28 16:58:43 +0100 | z0k | (~user@115-186-141-91.nayatel.pk) (Ping timeout: 272 seconds) |
2021-02-28 16:59:55 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:692f:34e4:c65a:92f2) (Ping timeout: 240 seconds) |
2021-02-28 16:59:57 +0100 | sdrodge | (~sdrodge@unaffiliated/sdrodge) (Quit: WeeChat 3.0) |
2021-02-28 17:01:01 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) |
2021-02-28 17:01:04 +0100 | sdrodge | (~sdrodge@unaffiliated/sdrodge) |
2021-02-28 17:01:08 +0100 | swarmcollective | (~joseph@cpe-65-31-18-174.insight.res.rr.com) |
2021-02-28 17:01:53 +0100 | vnz | (~vnz@unaffiliated/vnz) (Quit: ZNC - http://znc.in) |
2021-02-28 17:01:53 +0100 | hiroaki_ | (~hiroaki@2a02:908:4b18:8c40:de89:ba5e:8412:9d71) (Ping timeout: 272 seconds) |
2021-02-28 17:01:57 +0100 | <davean> | Philonous: I would agree that c2hs is not a good idea. |
2021-02-28 17:03:06 +0100 | <geekosaur> | there's also inline-c |
2021-02-28 17:03:17 +0100 | <davean> | inline-c is rather different. Great for its uses! |
2021-02-28 17:03:36 +0100 | <davean> | I don't think of it at all as solving the same problem, but who knows what their actual problem is. |
2021-02-28 17:03:50 +0100 | vnz | (~vnz@51.15.143.225) |
2021-02-28 17:03:50 +0100 | vnz | (~vnz@51.15.143.225) (Changing host) |
2021-02-28 17:03:50 +0100 | vnz | (~vnz@unaffiliated/vnz) |
2021-02-28 17:03:58 +0100 | <davean> | actually the best binding solution I knows involves mixing hsc2hs and inline-c |
2021-02-28 17:07:16 +0100 | <swarmcollective> | I'm trying to find a way to replicate this functionality with Data.Text: last $ concat $ sortOn length $ group $ sort "abacad" |
2021-02-28 17:07:57 +0100 | <swarmcollective> | However, it seems as though Data.Text does not have a `sort`, so the following does not produce the same output: T.last $ T.concat $ sortOn T.length $ T.group $ T.pack "abacad" |
2021-02-28 17:08:07 +0100 | <davean> | No, of course it doesn't |
2021-02-28 17:08:17 +0100 | <davean> | But that doesn't cause a problem persay. |
2021-02-28 17:08:31 +0100 | <davean> | You'd get a list of texts, because texts contain charactures, and you'd sort the list |
2021-02-28 17:08:47 +0100 | Alleria | (~textual@zrcout.mskcc.org) |
2021-02-28 17:08:55 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
2021-02-28 17:09:07 +0100 | <davean> | You just need to keep straight what you're talking about |
2021-02-28 17:09:11 +0100 | Alleria | Guest50271 |
2021-02-28 17:09:32 +0100 | <swarmcollective> | Is T.unpack the simplest solution? |
2021-02-28 17:09:41 +0100 | <EvanR> | yeah sorting a packed text seems tricky at best |
2021-02-28 17:10:01 +0100 | <dolio> | Is this just getting the most frequent character? |
2021-02-28 17:10:03 +0100 | <davean> | group :: Text -> [Text] |
2021-02-28 17:10:07 +0100 | <davean> | No, that should be fine |
2021-02-28 17:10:19 +0100 | <dolio> | There's probably a better way than that code. |
2021-02-28 17:10:23 +0100 | <swarmcollective> | Right, the character that occurs most often. |
2021-02-28 17:10:50 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2021-02-28 17:11:17 +0100 | <EvanR> | walk through the text updating a map representing a histogram |
2021-02-28 17:11:39 +0100 | <davean> | Right |
2021-02-28 17:11:53 +0100 | <dolio> | For instance, it's rebuilding the string just to take the last character, but you could drop all but the last group instead. But also yeah, keeping track of a map or something is probably better than that. |
2021-02-28 17:12:35 +0100 | <swarmcollective> | I'll give it a try with the Map Char Int (or similar) |
2021-02-28 17:12:51 +0100 | <dolio> | Oh, sorting and then taking the last character is worse than sorting by the opposite order, most likely, as well. |
2021-02-28 17:13:15 +0100 | <dolio> | But that won't matter for a map. |
2021-02-28 17:13:39 +0100 | <Philonous> | davean, inline-c seems convenient, however, I'm mostly look for a way to automatically convert C-enums to Haskell data including the Enum instance |
2021-02-28 17:14:32 +0100 | <minoru_shiraeesh> | serialize and then deserialize? |
2021-02-28 17:14:35 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 240 seconds) |
2021-02-28 17:14:39 +0100 | <davean> | Right, Philonous, different tasks. |
2021-02-28 17:15:11 +0100 | <Philonous> | Treating unicode strings as a list of code points can lead you astray, since you're most likely interested in grapheme clusters rather than code points. |
2021-02-28 17:15:48 +0100 | <davean> | Yah, theres never a right way to do anything with unicode :/ |
2021-02-28 17:16:06 +0100 | <EvanR> | there's the old fallback, "my data is mainly ascii anyway" xD |
2021-02-28 17:16:21 +0100 | Uniaika | hisses in French alphabet |
2021-02-28 17:16:37 +0100 | <davean> | I like that Uniaika only uses ASCII to hiss in french. |
2021-02-28 17:16:41 +0100 | Uniaika | can also hiss in German -> ßßßßßßßßß |
2021-02-28 17:16:55 +0100 | <minoru_shiraeesh> | Philonous: why would you want to automatically convert C-enums to Haskell data? you invoke C code from Haskell, or the opposite way? |
2021-02-28 17:17:11 +0100 | <Uniaika> | what's up davean? :) |
2021-02-28 17:17:23 +0100 | <Philonous> | I want to call into C |
2021-02-28 17:17:33 +0100 | jlamothe_ | jlamothe |
2021-02-28 17:17:41 +0100 | <EvanR> | for french, you could execute a graven rite to ensure your data is precomposed |
2021-02-28 17:19:00 +0100 | <davean> | Uniaika: I don't know, I've been avoiding checking in for the day to find out whats up because then I'd have to start dealing with it. |
2021-02-28 17:19:39 +0100 | <Uniaika> | davean: eh, I feel you |
2021-02-28 17:19:42 +0100 | <Uniaika> | <3 <3 |
2021-02-28 17:21:33 +0100 | boxscape | (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) (Ping timeout: 264 seconds) |
2021-02-28 17:22:42 +0100 | kevin__ | (~kevin@pool-100-37-189-79.nycmny.fios.verizon.net) |
2021-02-28 17:25:39 +0100 | bitmagie | (~Thunderbi@200116b806dcda002112473b8db035bd.dip.versatel-1u1.de) (Quit: bitmagie) |
2021-02-28 17:29:10 +0100 | jumper149 | (~jumper149@130.75.103.194) |
2021-02-28 17:31:40 +0100 | dropFM | (~dropFM@cpc1-brnt3-2-0-cust108.4-2.cable.virginm.net) |
2021-02-28 17:31:41 +0100 | jamm_ | (~jamm@unaffiliated/jamm) |
2021-02-28 17:32:37 +0100 | lazyshrk | (~lazyshrk@128.199.58.13) |
2021-02-28 17:32:48 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:692f:34e4:c65a:92f2) |
2021-02-28 17:33:19 +0100 | Franciman | (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving) |
2021-02-28 17:33:31 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-02-28 17:33:44 +0100 | jamm_ | (~jamm@unaffiliated/jamm) (Client Quit) |
2021-02-28 17:36:25 +0100 | ezrakilty | (~ezrakilty@97-113-55-149.tukw.qwest.net) |
2021-02-28 17:39:46 +0100 | conal | (~conal@192.145.118.103) (Quit: Computer has gone to sleep.) |
2021-02-28 17:40:16 +0100 | dyeplexer | (~lol@unaffiliated/terpin) |
2021-02-28 17:40:35 +0100 | ezrakilty | (~ezrakilty@97-113-55-149.tukw.qwest.net) (Ping timeout: 240 seconds) |
2021-02-28 17:40:47 +0100 | dropFM | (~dropFM@cpc1-brnt3-2-0-cust108.4-2.cable.virginm.net) (Quit: Leaving) |
2021-02-28 17:41:55 +0100 | poscat | (~poscat@114.243.61.85) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-02-28 17:43:57 +0100 | poscat | (~poscat@114.243.61.85) |
2021-02-28 17:44:05 +0100 | jamm_ | (~jamm@unaffiliated/jamm) |
2021-02-28 17:44:56 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Remote host closed the connection) |
2021-02-28 17:45:12 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) |
2021-02-28 17:45:13 +0100 | jamm__ | (~jamm@unaffiliated/jamm) |
2021-02-28 17:47:00 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Remote host closed the connection) |
2021-02-28 17:47:35 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) |
2021-02-28 17:48:15 +0100 | jamm_ | (~jamm@unaffiliated/jamm) (Ping timeout: 240 seconds) |
2021-02-28 17:49:24 +0100 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
2021-02-28 17:49:29 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
2021-02-28 17:51:03 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:98b:c360:694b:b651) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-02-28 17:51:55 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Ping timeout: 240 seconds) |
2021-02-28 17:51:55 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:98b:c360:694b:b651) |
2021-02-28 17:54:14 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 245 seconds) |
2021-02-28 17:55:24 +0100 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
2021-02-28 17:55:56 +0100 | berberman_ | (~berberman@unaffiliated/berberman) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-02-28 17:56:54 +0100 | berberman | (~berberman@unaffiliated/berberman) |
2021-02-28 18:02:24 +0100 | <swarmcollective> | The map as histogram works well: fst (M.foldlWithKey most (' ', 0 :: Int) (T.foldl hist M.empty (T.pack "abacad"))) Thanks for the help! |
2021-02-28 18:03:37 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-28 18:12:23 +0100 | dora | (~irfan@117.222.64.138) |
2021-02-28 18:16:18 +0100 | kritzefitz | (~kritzefit@212.86.56.80) |
2021-02-28 18:16:34 +0100 | <hololeap> | extensible effects seems like a cool concept, but it seems mostly unused. why is that? |
2021-02-28 18:17:33 +0100 | <geekosaur> | very slow, iirc |
2021-02-28 18:18:14 +0100 | <geekosaur> | the existing effect systems are all fairly heavyweight |
2021-02-28 18:19:23 +0100 | <dmj`> | hololeap: some use free monads, free monads allocate a lot, lots of allocations increases GC time, GC time slows you down. Not easy to optimize away either. |
2021-02-28 18:19:28 +0100 | <c_wraith> | Not convinced the utility is actually there |
2021-02-28 18:21:03 +0100 | hiroaki_ | (~hiroaki@2a02:908:4b18:8c40:a3ba:befb:e670:2e90) |
2021-02-28 18:21:24 +0100 | <[exa]> | hololeap: sometimes it's easier to just write your monad in the right way from scratch, and there's no software I know of that would really gain much from using the extensible effects. Also haskell people _love_ simple exercises, such as writing the right monad. |
2021-02-28 18:21:36 +0100 | dora | (~irfan@117.222.64.138) (Quit: leaving) |
2021-02-28 18:21:56 +0100 | <[exa]> | hololeap: anyway there's Eff and it has users and some performance benefits, it might be interesting to look around there |
2021-02-28 18:22:05 +0100 | fendor | (~fendor@178.115.128.216.wireless.dyn.drei.com) |
2021-02-28 18:23:13 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) |
2021-02-28 18:23:17 +0100 | <hololeap> | fair enough |
2021-02-28 18:23:22 +0100 | <swarmcollective> | hololeap, have you looked at fused-effects? (It is on my todo list) |
2021-02-28 18:23:49 +0100 | <hololeap> | i started learning purescript and it sounds like they use it quite a bit |
2021-02-28 18:24:57 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
2021-02-28 18:25:00 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Remote host closed the connection) |
2021-02-28 18:25:01 +0100 | <maerwald> | hololeap: https://github.com/hasura/eff |
2021-02-28 18:25:05 +0100 | pera | (~pera@unaffiliated/pera) |
2021-02-28 18:25:08 +0100 | <dolio> | Extensible effects are actually used all the time, in the form of mtl. |
2021-02-28 18:25:11 +0100 | <maerwald> | that's a WIP zero-cost (or so) one |
2021-02-28 18:25:30 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:98b:c360:694b:b651) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-02-28 18:25:32 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 18:25:40 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) |
2021-02-28 18:25:43 +0100 | <[exa]> | hololeap: btw check out the tagless final encoding (first 3 googles should do), IMHO it's a pretty good alternative, feels a bit more lightweight |
2021-02-28 18:26:00 +0100 | <maerwald> | hololeap: you might also wanna watch https://www.youtube.com/watch?v=0jI-AlWEwYI |
2021-02-28 18:26:32 +0100 | d34df00d | (~d34df00d@104-14-27-213.lightspeed.austtx.sbcglobal.net) |
2021-02-28 18:26:37 +0100 | <d34df00d> | Hi! |
2021-02-28 18:26:59 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
2021-02-28 18:27:20 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:90e2:dd27:98b8:d1b2) |
2021-02-28 18:27:33 +0100 | <d34df00d> | I want to contribute to a project that uses tasty for tests (and tasty's quickcheck integration in particular). One of the tests involves a property over bytestrings. What's the right way to ensure that quickcheck also checks sufficiently large bytestrings? |
2021-02-28 18:27:51 +0100 | Kaeipi | (~Kaiepi@47.54.252.148) (Remote host closed the connection) |
2021-02-28 18:27:54 +0100 | <d34df00d> | My modification introduces branching for strings longer than N, so I want to make sure that those are indeed checked. |
2021-02-28 18:29:29 +0100 | <tomsmeding> | BigLama: indeed, in the vast majority of cases, website sessions are kept using a cookie on the client side; cookies have nothing to do with connection sharing, but require you to keep a cookie jar. Some libraries do that for you, some don't; notably, plain 'curl' in the terminal also doesn't, but can be configured to use a cookie jar |
2021-02-28 18:29:36 +0100 | <tomsmeding> | browsers, of course, store cookies automatically |
2021-02-28 18:29:37 +0100 | <[exa]> | d34df00d: you can make an extra test with a predicate like `length str > N ==> myfunctionWorksOn str` |
2021-02-28 18:29:37 +0100 | mrioqueiroz | (~mrioqueir@186.251.19.98) (Ping timeout: 276 seconds) |
2021-02-28 18:29:57 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 264 seconds) |
2021-02-28 18:29:59 +0100 | jumper149 | (~jumper149@130.75.103.194) (Quit: WeeChat 3.0.1) |
2021-02-28 18:30:13 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Ping timeout: 260 seconds) |
2021-02-28 18:30:26 +0100 | <[exa]> | d34df00d: alternatively there might be some quickcheck tooling for generating longer strings; similar to the NonEmpty that it has for lists. Or you can write your own. |
2021-02-28 18:30:44 +0100 | <d34df00d> | [exa]: oh, that's a good idea! I remember seeing something for rejecting inputs in raw quickcheck. What's the right way to do that in tasty-speak? |
2021-02-28 18:30:59 +0100 | <d34df00d> | I'm rather lost at the "and" in "tasty and quickcheck". |
2021-02-28 18:31:26 +0100 | usr25 | (~usr25@unaffiliated/usr25) (Quit: Leaving) |
2021-02-28 18:31:44 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 245 seconds) |
2021-02-28 18:32:03 +0100 | <maerwald> | dolio: there was a lengthy argument by alexis why mtl isn't really an effects system, but I got lost in all the arguments |
2021-02-28 18:33:18 +0100 | <shapr> | where was that discussion? |
2021-02-28 18:33:23 +0100 | <maerwald> | here on IRC |
2021-02-28 18:33:31 +0100 | <maerwald> | I think I have it somewhere |
2021-02-28 18:35:23 +0100 | <maerwald> | shapr: https://paste.tomsmeding.com/ds5KKItJ |
2021-02-28 18:35:35 +0100 | <maerwald> | I think it was that |
2021-02-28 18:35:52 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 18:35:55 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
2021-02-28 18:36:28 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 18:36:29 +0100 | <[exa]> | d34df00d: well not sure how much tasty modifies that, I don't know it at all. The advice was plain quickcheckish. :D |
2021-02-28 18:40:11 +0100 | knupfer | (~Thunderbi@200116b82cc9eb00a0beb8f34ef315a0.dip.versatel-1u1.de) |
2021-02-28 18:40:56 +0100 | <tomsmeding> | d34df00d: what tasty interface are you using, exactly? |
2021-02-28 18:41:19 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 260 seconds) |
2021-02-28 18:41:55 +0100 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection) |
2021-02-28 18:42:10 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 18:42:11 +0100 | <tomsmeding> | in particular, if you're using tasty-quickcheck: that package just re-exports (most of) quickcheck's functionality, I believe |
2021-02-28 18:42:15 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
2021-02-28 18:42:20 +0100 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
2021-02-28 18:42:29 +0100 | <d34df00d> | [exa]: that's still a good advice! I completely forgot about samples rejection and was only looking at the modifiers. |
2021-02-28 18:42:34 +0100 | <d34df00d> | tomsmeding: https://github.com/haskell/bytestring/blob/master/tests/Properties/ByteString.hs#L285-L286 this one. |
2021-02-28 18:42:47 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 18:43:18 +0100 | <tomsmeding> | I see 'import Test.Tasty.QuickCheck' -- it seems my suspicion was correct :) |
2021-02-28 18:44:19 +0100 | toorevitimirp | (~tooreviti@117.182.182.60) (Remote host closed the connection) |
2021-02-28 18:46:26 +0100 | vicfred | (~vicfred@unaffiliated/vicfred) |
2021-02-28 18:47:09 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 245 seconds) |
2021-02-28 18:49:19 +0100 | geowiesnot_bis | (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
2021-02-28 18:50:05 +0100 | ddellacosta | (~ddellacos@86.106.143.201) |
2021-02-28 18:51:25 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 18:54:18 +0100 | kevin__ | (~kevin@pool-100-37-189-79.nycmny.fios.verizon.net) (Quit: Leaving) |
2021-02-28 18:55:21 +0100 | conal | (~conal@192.145.118.163) |
2021-02-28 18:55:54 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 260 seconds) |
2021-02-28 18:56:43 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 19:01:09 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 264 seconds) |
2021-02-28 19:01:29 +0100 | ClaudiusMaximus | (~claude@191.123.199.146.dyn.plus.net) |
2021-02-28 19:01:29 +0100 | ClaudiusMaximus | (~claude@191.123.199.146.dyn.plus.net) (Changing host) |
2021-02-28 19:01:29 +0100 | ClaudiusMaximus | (~claude@unaffiliated/claudiusmaximus) |
2021-02-28 19:02:03 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 19:02:19 +0100 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 260 seconds) |
2021-02-28 19:02:21 +0100 | ADG1089__ | (~aditya@110.226.222.179) |
2021-02-28 19:04:37 +0100 | dyeplexer | (~lol@unaffiliated/terpin) (Remote host closed the connection) |
2021-02-28 19:06:33 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 264 seconds) |
2021-02-28 19:07:27 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 19:07:30 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
2021-02-28 19:08:29 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 19:08:34 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
2021-02-28 19:09:36 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 19:09:51 +0100 | redmp | (~redmp@172.58.38.148) |
2021-02-28 19:10:45 +0100 | geowiesnot_bis | (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 264 seconds) |
2021-02-28 19:12:01 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:90e2:dd27:98b8:d1b2) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-02-28 19:13:59 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 260 seconds) |
2021-02-28 19:14:55 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 19:15:01 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
2021-02-28 19:15:40 +0100 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
2021-02-28 19:16:03 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 19:17:23 +0100 | rajivr | (uid269651@gateway/web/irccloud.com/x-nydprmgitcsjloxf) (Quit: Connection closed for inactivity) |
2021-02-28 19:18:03 +0100 | mayleesia | (4d0db908@dynamic-077-013-185-008.77.13.pool.telefonica.de) |
2021-02-28 19:20:57 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 264 seconds) |
2021-02-28 19:21:19 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 19:22:14 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
2021-02-28 19:23:06 +0100 | mayleesia | (4d0db908@dynamic-077-013-185-008.77.13.pool.telefonica.de) (Quit: Connection closed) |
2021-02-28 19:25:34 +0100 | Tops21 | (~Tobias@dyndsl-095-033-017-115.ewe-ip-backbone.de) |
2021-02-28 19:26:36 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-02-28 19:27:40 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 19:27:46 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
2021-02-28 19:28:07 +0100 | Codaraxis | (Codaraxis@gateway/vpn/mullvad/codaraxis) (Ping timeout: 276 seconds) |
2021-02-28 19:28:48 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 19:29:25 +0100 | Tops2 | (~Tobias@dyndsl-095-033-017-115.ewe-ip-backbone.de) (Ping timeout: 276 seconds) |
2021-02-28 19:30:02 +0100 | aveltras | (uid364989@gateway/web/irccloud.com/x-miyjlxdpioeuznoz) |
2021-02-28 19:30:18 +0100 | sakirious | (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Quit: The Lounge - https://thelounge.chat) |
2021-02-28 19:30:58 +0100 | Codaraxis | (Codaraxis@gateway/vpn/mullvad/codaraxis) |
2021-02-28 19:31:17 +0100 | akasha | (~user@unaffiliated/akasha) (Read error: Connection reset by peer) |
2021-02-28 19:31:56 +0100 | tanuki_ | (~quassel@173.168.154.189) (Ping timeout: 240 seconds) |
2021-02-28 19:32:28 +0100 | epicte7us | (~epictetus@ip72-194-215-136.sb.sd.cox.net) |
2021-02-28 19:33:33 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 264 seconds) |
2021-02-28 19:33:36 +0100 | ep1ctetus | (~epictetus@ip72-194-215-136.sb.sd.cox.net) (Ping timeout: 240 seconds) |
2021-02-28 19:35:07 +0100 | tanuki | (~quassel@173.168.154.189) |
2021-02-28 19:35:11 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 19:36:56 +0100 | kritzefitz | (~kritzefit@212.86.56.80) (Ping timeout: 240 seconds) |
2021-02-28 19:37:16 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
2021-02-28 19:39:06 +0100 | emmanuel_erc | (~user@cpe-74-71-106-64.nyc.res.rr.com) (Remote host closed the connection) |
2021-02-28 19:39:39 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 245 seconds) |
2021-02-28 19:40:26 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 19:40:33 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-83-46.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-02-28 19:40:53 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-83-46.w86-212.abo.wanadoo.fr) |
2021-02-28 19:41:35 +0100 | Franciman | (~francesco@host-82-49-79-189.retail.telecomitalia.it) |
2021-02-28 19:42:17 +0100 | vs^ | (vs@ip98-184-89-2.mc.at.cox.net) () |
2021-02-28 19:42:21 +0100 | Codaraxis | (Codaraxis@gateway/vpn/mullvad/codaraxis) (Remote host closed the connection) |
2021-02-28 19:42:42 +0100 | Codaraxis | (Codaraxis@gateway/vpn/mullvad/codaraxis) |
2021-02-28 19:42:49 +0100 | seneca | (~epictetus@152.89.204.185) |
2021-02-28 19:43:09 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-28 19:44:45 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-02-28 19:44:54 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 260 seconds) |
2021-02-28 19:45:54 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 19:45:55 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
2021-02-28 19:46:39 +0100 | epicte7us | (~epictetus@ip72-194-215-136.sb.sd.cox.net) (Ping timeout: 260 seconds) |
2021-02-28 19:46:52 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 19:46:56 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
2021-02-28 19:47:28 +0100 | Kaiepi | (~Kaiepi@47.54.252.148) |
2021-02-28 19:48:23 +0100 | seneca | (~epictetus@152.89.204.185) (Quit: Leaving) |
2021-02-28 19:48:24 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
2021-02-28 19:49:02 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 19:49:04 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
2021-02-28 19:50:06 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 19:50:09 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
2021-02-28 19:51:10 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 19:55:16 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds) |
2021-02-28 19:55:20 +0100 | usr25 | (~usr25@unaffiliated/usr25) |
2021-02-28 19:55:28 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 19:55:51 +0100 | __minoru__shirae | (~shiraeesh@5.101.59.4) |
2021-02-28 19:56:04 +0100 | minoru_shiraeesh | (~shiraeesh@109.166.56.139) (Ping timeout: 276 seconds) |
2021-02-28 19:56:39 +0100 | ADG1089__ | (~aditya@110.226.222.179) (Remote host closed the connection) |
2021-02-28 19:58:23 +0100 | deja | (~deja@212095008174.public.telering.at) |
2021-02-28 19:59:57 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 264 seconds) |
2021-02-28 20:00:45 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 20:03:32 +0100 | berberman_ | (~berberman@unaffiliated/berberman) |
2021-02-28 20:04:55 +0100 | berberman | (~berberman@unaffiliated/berberman) (Ping timeout: 272 seconds) |
2021-02-28 20:05:19 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 260 seconds) |
2021-02-28 20:08:02 +0100 | dxld | (~dxld@rush.pub.dxld.at) (Remote host closed the connection) |
2021-02-28 20:11:22 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 20:11:40 +0100 | Rudd0 | (~Rudd0@185.189.115.108) (Ping timeout: 276 seconds) |
2021-02-28 20:12:09 +0100 | elliott__ | (~elliott@pool-108-51-101-42.washdc.fios.verizon.net) |
2021-02-28 20:13:01 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-02-28 20:16:09 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 264 seconds) |
2021-02-28 20:16:37 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 20:16:40 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
2021-02-28 20:17:39 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 20:17:40 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
2021-02-28 20:18:49 +0100 | kritzefitz | (~kritzefit@212.86.56.80) |
2021-02-28 20:18:54 +0100 | fendor | (~fendor@178.115.128.216.wireless.dyn.drei.com) (Remote host closed the connection) |
2021-02-28 20:18:55 +0100 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Read error: Connection reset by peer) |
2021-02-28 20:20:01 +0100 | fendor | (~fendor@178.115.128.216.wireless.dyn.drei.com) |
2021-02-28 20:22:49 +0100 | Pickchea | (~private@unaffiliated/pickchea) |
2021-02-28 20:24:34 +0100 | elfets | (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 260 seconds) |
2021-02-28 20:25:55 +0100 | tsrt^ | (tsrt@ip98-184-89-2.mc.at.cox.net) |
2021-02-28 20:26:21 +0100 | raul782 | (~raul782@190.239.55.127) |
2021-02-28 20:27:50 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
2021-02-28 20:29:27 +0100 | conal | (~conal@192.145.118.163) (Quit: Computer has gone to sleep.) |
2021-02-28 20:30:15 +0100 | hiroaki_ | (~hiroaki@2a02:908:4b18:8c40:a3ba:befb:e670:2e90) (Ping timeout: 272 seconds) |
2021-02-28 20:30:21 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 20:30:26 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
2021-02-28 20:31:28 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 20:31:29 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
2021-02-28 20:32:35 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 240 seconds) |
2021-02-28 20:33:31 +0100 | raul782 | (~raul782@190.239.55.127) () |
2021-02-28 20:33:36 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 20:37:18 +0100 | nullniverse | (~null@unaffiliated/nullniverse) |
2021-02-28 20:37:59 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 260 seconds) |
2021-02-28 20:38:51 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 20:40:32 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-83-46.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-02-28 20:40:45 +0100 | tanuki | (~quassel@173.168.154.189) (Ping timeout: 264 seconds) |
2021-02-28 20:40:49 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:692f:34e4:c65a:92f2) (Remote host closed the connection) |
2021-02-28 20:40:52 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-83-46.w86-212.abo.wanadoo.fr) |
2021-02-28 20:40:56 +0100 | Sgeo | (~Sgeo@ool-18b98aa4.dyn.optonline.net) |
2021-02-28 20:41:14 +0100 | conal | (~conal@192.145.118.119) |
2021-02-28 20:42:55 +0100 | tanuki | (~quassel@173.168.154.189) |
2021-02-28 20:43:02 +0100 | hiroaki_ | (~hiroaki@2a02:908:4b18:8c40:2d1:b436:dd9b:cc7) |
2021-02-28 20:43:42 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-28 20:43:49 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 260 seconds) |
2021-02-28 20:44:10 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 20:44:14 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
2021-02-28 20:45:15 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 20:45:55 +0100 | jamm__ | (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
2021-02-28 20:48:09 +0100 | hendi | (uid489601@gateway/web/irccloud.com/x-cyumymliypkvjqpl) () |
2021-02-28 20:48:21 +0100 | hendi | (uid489601@gateway/web/irccloud.com/x-ftqhmsnmlpiygdyy) |
2021-02-28 20:49:15 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds) |
2021-02-28 20:49:30 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 20:53:10 +0100 | Tene | (~tene@poipu/supporter/slacker/tene) (Ping timeout: 272 seconds) |
2021-02-28 20:53:36 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds) |
2021-02-28 20:53:45 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 20:53:47 +0100 | ByronJohnson | (~bairyn@unaffiliated/bob0) (Ping timeout: 272 seconds) |
2021-02-28 20:53:49 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
2021-02-28 20:54:54 +0100 | acarrico | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 260 seconds) |
2021-02-28 20:54:55 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) |
2021-02-28 20:55:50 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 20:55:57 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
2021-02-28 20:56:36 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Remote host closed the connection) |
2021-02-28 20:56:50 +0100 | acarrico | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
2021-02-28 20:57:00 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 20:57:01 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
2021-02-28 20:57:37 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) |
2021-02-28 20:57:56 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
2021-02-28 20:57:59 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 20:58:05 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
2021-02-28 21:00:01 +0100 | mynickisrandom | (uid148779@gateway/web/irccloud.com/x-rsvsinemprsbzqpy) |
2021-02-28 21:01:00 +0100 | drakonis | (~drakonis@unaffiliated/drakonis) |
2021-02-28 21:02:28 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Ping timeout: 260 seconds) |
2021-02-28 21:03:44 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-28 21:03:50 +0100 | banyanRob | (49f11cfb@c-73-241-28-251.hsd1.ca.comcast.net) |
2021-02-28 21:04:14 +0100 | Tene | (~tene@mail.digitalkingdom.org) |
2021-02-28 21:04:14 +0100 | Tene | (~tene@mail.digitalkingdom.org) (Changing host) |
2021-02-28 21:04:14 +0100 | Tene | (~tene@poipu/supporter/slacker/tene) |
2021-02-28 21:04:53 +0100 | ByronJohnson | (~bairyn@unaffiliated/bob0) |
2021-02-28 21:05:09 +0100 | petersen | (~petersen@redhat/juhp) (Ping timeout: 246 seconds) |
2021-02-28 21:06:18 +0100 | elliott__ | (~elliott@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 245 seconds) |
2021-02-28 21:07:01 +0100 | buggymcbugfix | (sid432603@gateway/web/irccloud.com/x-naqvoueakkcopuie) (Quit: Connection closed for inactivity) |
2021-02-28 21:07:13 +0100 | petersen | (~petersen@redhat/juhp) |
2021-02-28 21:07:40 +0100 | jack1909 | (~qpls@cpeb4750e67d202-cmf81d0fad5840.cpe.net.fido.ca) |
2021-02-28 21:08:54 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
2021-02-28 21:09:22 +0100 | elliott__ | (~elliott@pool-108-51-101-42.washdc.fios.verizon.net) |
2021-02-28 21:11:36 +0100 | errst | (~errst@unaffiliated/tirej) |
2021-02-28 21:11:54 +0100 | ClaudiusMaximus | (~claude@unaffiliated/claudiusmaximus) (Quit: ->) |
2021-02-28 21:12:48 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:256c:b3b1:f90:ff2a) |
2021-02-28 21:14:02 +0100 | geowiesnot_bis | (~user@87-89-181-157.abo.bbox.fr) |
2021-02-28 21:14:25 +0100 | son0p | (~son0p@181.136.122.143) |
2021-02-28 21:16:00 +0100 | psutcliffe | (~psutcliff@2a00:801:3f2:4b56:e93e:1663:ff0c:6c42) (Quit: Leaving) |
2021-02-28 21:16:12 +0100 | kenran | (~kenran@i59F67BBA.versanet.de) |
2021-02-28 21:16:15 +0100 | <amx> | do we apply the PVP rules regarding removed/changed datatypes to Internal modules too? |
2021-02-28 21:16:46 +0100 | <edwardk> | amx: my usual rule of thumb is to state that any .Internal module explicitly does not follow the PVP |
2021-02-28 21:16:46 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 21:16:59 +0100 | <edwardk> | amx: otherwise we actively disincentivize library authors from providing them. |
2021-02-28 21:17:23 +0100 | <amx> | agreed |
2021-02-28 21:17:24 +0100 | <edwardk> | the cost of accessing guts is your code becomes more sensitive to minor changes that way, but its not 'free' from disincentive for library authors |
2021-02-28 21:17:30 +0100 | <edwardk> | er now |
2021-02-28 21:17:56 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-28 21:18:13 +0100 | rdivyanshu | (uid322626@gateway/web/irccloud.com/x-qtewvwtwengjftbg) (Quit: Connection closed for inactivity) |
2021-02-28 21:18:52 +0100 | cyphase | (~cyphase@unaffiliated/cyphase) |
2021-02-28 21:20:10 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) () |
2021-02-28 21:20:40 +0100 | coot_ | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-28 21:27:10 +0100 | invent[m] | (inventmatr@gateway/shell/matrix.org/x-jrwragskqrfqezvh) |
2021-02-28 21:29:45 +0100 | average | (uid473595@gateway/web/irccloud.com/x-fxgddkvvlaaxcpgp) (Quit: Connection closed for inactivity) |
2021-02-28 21:31:21 +0100 | kenran | (~kenran@i59F67BBA.versanet.de) (Remote host closed the connection) |
2021-02-28 21:31:35 +0100 | knupfer | (~Thunderbi@200116b82cc9eb00a0beb8f34ef315a0.dip.versatel-1u1.de) (Quit: knupfer) |
2021-02-28 21:31:39 +0100 | kenran | (~kenran@i59F67BBA.versanet.de) |
2021-02-28 21:31:42 +0100 | knupfer1 | (~Thunderbi@200116b82cc9eb00ed7c90a7ebf5ce01.dip.versatel-1u1.de) |
2021-02-28 21:33:13 +0100 | knupfer1 | (~Thunderbi@200116b82cc9eb00ed7c90a7ebf5ce01.dip.versatel-1u1.de) (Client Quit) |
2021-02-28 21:35:02 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) |
2021-02-28 21:35:09 +0100 | pera | (~pera@unaffiliated/pera) (Ping timeout: 260 seconds) |
2021-02-28 21:36:53 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Remote host closed the connection) |
2021-02-28 21:37:10 +0100 | kderme | (4fa758c1@ppp079167088193.access.hol.gr) |
2021-02-28 21:39:25 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) |
2021-02-28 21:39:47 +0100 | aveltras | (uid364989@gateway/web/irccloud.com/x-miyjlxdpioeuznoz) (Quit: Connection closed for inactivity) |
2021-02-28 21:39:49 +0100 | <hyiltiz-M> | Is there a Haskell library (or wrapper) that provides cross-platform (including mobile devices such as android and iOS) UI support? Kind of like flutter, libui, qt and the like, but without requiring the dev to write boilerplate to marshal stuff around. |
2021-02-28 21:40:17 +0100 | <Uniaika> | no |
2021-02-28 21:40:26 +0100 | <Uniaika> | this is an incredibly hard problem |
2021-02-28 21:40:27 +0100 | <hyiltiz-M> | Would be awesome to abstract away the platforms inside a monad :D |
2021-02-28 21:40:33 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-83-46.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-02-28 21:40:36 +0100 | tanuki | (~quassel@173.168.154.189) (Ping timeout: 240 seconds) |
2021-02-28 21:40:52 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-83-46.w86-212.abo.wanadoo.fr) |
2021-02-28 21:41:29 +0100 | <hyiltiz-M> | Wire seems to have cross platform apps some of which are written in Haskell and almost all in FP languages |
2021-02-28 21:41:29 +0100 | ixlun | (~user@213.205.241.12) (Read error: Connection reset by peer) |
2021-02-28 21:42:33 +0100 | redmp | (~redmp@172.58.38.148) (Ping timeout: 264 seconds) |
2021-02-28 21:42:57 +0100 | <hyiltiz-M> | Since they are switching languages and hence projects, I guess their “monad” is at the project level |
2021-02-28 21:43:35 +0100 | ixlun | (~user@213.205.241.12) |
2021-02-28 21:43:35 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:8c3e:8d1a:de68:76d3) (Ping timeout: 240 seconds) |
2021-02-28 21:46:22 +0100 | <Uniaika> | a monad is not the proper abstraction here |
2021-02-28 21:46:44 +0100 | <BigLama> | tomsmeding: " website sessions are kept using a cookie on the client side; cookies have nothing to do with connection sharing" => what is the difference between sessions and connection sharing then ? |
2021-02-28 21:46:49 +0100 | <BigLama> | I'm confused :/ |
2021-02-28 21:47:22 +0100 | tanuki | (~quassel@173.168.154.189) |
2021-02-28 21:48:43 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:692f:34e4:c65a:92f2) |
2021-02-28 21:48:48 +0100 | <alexfmpe> | hyiltiz-M: depends on what you mean, I guess - reflex-platform has a bunch of cross-compiling stuff (some has been upstreamed to nixpkgs) so you can compile reflex-dom apps to web/desktop/mobile, but the common UI abstraction is really the DOM (though outside of the web version, the only JS involved is for rendering) |
2021-02-28 21:49:56 +0100 | dxld | (~dxld@rush.pub.dxld.at) |
2021-02-28 21:50:39 +0100 | <alexfmpe> | Miso might also have mobile targets - I could have sworn I remember seeing that in the readme but can't find it |
2021-02-28 21:51:11 +0100 | banyanRob | (49f11cfb@c-73-241-28-251.hsd1.ca.comcast.net) (Quit: Connection closed) |
2021-02-28 21:52:24 +0100 | xff0x | (~xff0x@2001:1a81:5349:9200:2806:fad1:e222:a1c8) (Ping timeout: 240 seconds) |
2021-02-28 21:52:42 +0100 | xff0x | (xff0x@gateway/vpn/mullvad/xff0x) |
2021-02-28 21:53:11 +0100 | slack1256 | (~slack1256@45.4.2.52) |
2021-02-28 21:54:32 +0100 | hnOsmium0001 | (uid453710@gateway/web/irccloud.com/x-vdnrjtitbesdywow) |
2021-02-28 21:54:33 +0100 | nullniverse | (~null@unaffiliated/nullniverse) (Read error: Connection reset by peer) |
2021-02-28 21:54:54 +0100 | nullniverse | (~null@unaffiliated/nullniverse) |
2021-02-28 21:55:12 +0100 | pera | (~pera@unaffiliated/pera) |
2021-02-28 21:55:41 +0100 | mputz | (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
2021-02-28 21:56:37 +0100 | sparsity | (5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) |
2021-02-28 21:57:12 +0100 | rednaZ[m] | (r3dnazmatr@gateway/shell/matrix.org/x-welbcejgukwlyvmz) |
2021-02-28 21:57:13 +0100 | <rednaZ[m]> | Does anybody know why core coercion arguments exist at run time? What run time information to they contain? |
2021-02-28 21:57:36 +0100 | tanuki | (~quassel@173.168.154.189) (Ping timeout: 240 seconds) |
2021-02-28 22:00:16 +0100 | elliott__ | (~elliott@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 240 seconds) |
2021-02-28 22:00:29 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:692f:34e4:c65a:92f2) (Remote host closed the connection) |
2021-02-28 22:00:49 +0100 | _ht | (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
2021-02-28 22:00:54 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 245 seconds) |
2021-02-28 22:03:53 +0100 | Sheilong | (uid293653@gateway/web/irccloud.com/x-lljagtdqleuggsro) () |
2021-02-28 22:04:54 +0100 | nullniverse | (~null@unaffiliated/nullniverse) (Read error: Connection reset by peer) |
2021-02-28 22:05:10 +0100 | nullniverse | (~null@unaffiliated/nullniverse) |
2021-02-28 22:05:12 +0100 | nullniverse | (~null@unaffiliated/nullniverse) (Max SendQ exceeded) |
2021-02-28 22:05:46 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:692f:34e4:c65a:92f2) |
2021-02-28 22:06:11 +0100 | tanuki | (~quassel@173.168.154.189) |
2021-02-28 22:06:20 +0100 | <Cale> | rednaZ[m]: How do they exist at runtime? I was pretty sure coercions got erased when core is translated to stg |
2021-02-28 22:06:54 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-28 22:07:00 +0100 | <rednaZ[m]> | -ddump-stg disagrees. |
2021-02-28 22:07:00 +0100 | <edwardk> | hyiltiz-M: maybe the qt-quick bindings? or using threepenny-gui to drive an electron app? |
2021-02-28 22:07:09 +0100 | xff0x | (xff0x@gateway/vpn/mullvad/xff0x) (Ping timeout: 264 seconds) |
2021-02-28 22:07:20 +0100 | <edwardk> | hyiltiz-M: both of those are broadly portable and 'write once' for the most part from the haskell side |
2021-02-28 22:07:29 +0100 | <dolio> | stg isn't runtime, either, though. |
2021-02-28 22:07:40 +0100 | <Cale> | true |
2021-02-28 22:08:00 +0100 | <rednaZ[m]> | There is also the indicator that they can form a lambda that kills sharing. |
2021-02-28 22:08:01 +0100 | <dolio> | Isn't stg still possible to type check? |
2021-02-28 22:08:02 +0100 | <edwardk> | beyond that you start hitting things like linking out to imgui and wrapping vulkan/opengl/directx as a shallow interaction layer, but none of those except qt-quick looks very native |
2021-02-28 22:08:03 +0100 | kritzefitz | (~kritzefit@212.86.56.80) (Remote host closed the connection) |
2021-02-28 22:08:40 +0100 | <Cale> | dolio: It's imperative-ish code, but... maybe? |
2021-02-28 22:08:43 +0100 | <rednaZ[m]> | dolio: type arguments are not in stg |
2021-02-28 22:08:44 +0100 | <edwardk> | dolio: i thought we'd started adding those branch coalescing moves where it takes Left a -> Left a -- even when the types don't match, etc. to STG |
2021-02-28 22:08:54 +0100 | xff0x | (~xff0x@2001:1a81:5349:9200:2806:fad1:e222:a1c8) |
2021-02-28 22:09:16 +0100 | <dolio> | Ah, perhaps. |
2021-02-28 22:09:27 +0100 | <rednaZ[m]> | If I have `binder = \ coercion -> f x`, f x is not memoized. |
2021-02-28 22:09:37 +0100 | <rednaZ[m]> | So this tells me that the coercion argument either exists at run time or there is a crazy bug in GHC. |
2021-02-28 22:10:18 +0100 | <dolio> | Just because sharing is lost doesn't mean coercions are explicitly represented at runtime. |
2021-02-28 22:10:31 +0100 | <rednaZ[m]> | ? |
2021-02-28 22:10:51 +0100 | <Cale> | Causing things to be shared when they otherwise wouldn't be, would itself be regarded as a bug, I think |
2021-02-28 22:11:03 +0100 | <edwardk> | rednaz[m]: i can make things that take a 0-width argument and still turn the result into call-by-name. |
2021-02-28 22:11:20 +0100 | <edwardk> | e.g. (##) -> Int# |
2021-02-28 22:11:37 +0100 | <edwardk> | so even if the argument is erased it can affect 'memoization' |
2021-02-28 22:11:49 +0100 | <rednaZ[m]> | Why would you want that though? |
2021-02-28 22:11:54 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
2021-02-28 22:12:06 +0100 | <edwardk> | rednaZ[m]: funny you should ask. i actually _have_ to use it in code i'm writing now ;) |
2021-02-28 22:12:08 +0100 | <Cale> | Because sharing things can result in exponentially increasing the amount of memory required |
2021-02-28 22:12:23 +0100 | <edwardk> | i use type Lev (a :: TYPE r) = (()~()) => a -- in practice |
2021-02-28 22:12:46 +0100 | <edwardk> | ifThenElse :: Bool -> Lev a -> Lev a -> a; ifThenElse True a _ = a; ifThenElse False _ b = b |
2021-02-28 22:12:50 +0100 | <dolio> | There are probably situations where code needs to be emitted for an infinite loop that involves carrying around formal 0-width parameters that are only eliminated at a sufficiently low level for everything to already be sequential. |
2021-02-28 22:13:04 +0100 | <edwardk> | gives me a levity polymorphic if then else in RebindableSyntax that works for all runtimereps with one implementation that is properly laze |
2021-02-28 22:13:21 +0100 | <edwardk> | er lazy |
2021-02-28 22:13:45 +0100 | <Cale> | Here's an example (though I don't have one with a zero-width argument off-hand): permutations [] = [[]]; permutations (x:xs) = permutations xs ++ map (x:) (permutations xs) |
2021-02-28 22:13:50 +0100 | <Cale> | oops |
2021-02-28 22:13:55 +0100 | <Cale> | that should be combinations |
2021-02-28 22:13:56 +0100 | <edwardk> | so e.g. if you ifThenElse True 1# undefined -- it evaluates to 1# not undefined, like you'd get if you magically passed arguments 'a' at the right runtimerep. |
2021-02-28 22:13:57 +0100 | <Cale> | of course |
2021-02-28 22:14:14 +0100 | <dolio> | Because otherwise an equation that gets proved by an infinite loop might be 'optimized' to and unsound function. |
2021-02-28 22:14:34 +0100 | <Cale> | If we change it to share: combinations (x:xs) = let cs = combinations xs in cs ++ map (x:) cs |
2021-02-28 22:14:36 +0100 | <edwardk> | yeah dolio demonstrated this to me when i was trying to do a similar batch of tricks back when we worked together |
2021-02-28 22:15:01 +0100 | <edwardk> | now i make my newtype based versions of these things using evil pattern synonym tricks to regenerate the ~''s |
2021-02-28 22:15:34 +0100 | <Cale> | Then we have a space leak, where we have to hang on to cs at least until halfway through the list (and sublists of cs until much later) |
2021-02-28 22:15:37 +0100 | fendor_ | (~fendor@178.165.129.154.wireless.dyn.drei.com) |
2021-02-28 22:15:57 +0100 | <rednaZ[m]> | Unfortunately I have a case where I wish the equality constraint would not destroy sharing. |
2021-02-28 22:16:03 +0100 | <rednaZ[m]> | Is there a way to tell GHC that? |
2021-02-28 22:16:08 +0100 | Codaraxis | (Codaraxis@gateway/vpn/mullvad/codaraxis) (Remote host closed the connection) |
2021-02-28 22:16:29 +0100 | Codaraxis | (Codaraxis@gateway/vpn/mullvad/codaraxis) |
2021-02-28 22:17:57 +0100 | fendor | (~fendor@178.115.128.216.wireless.dyn.drei.com) (Ping timeout: 264 seconds) |
2021-02-28 22:17:58 +0100 | <edwardk> | rednaZ[m]: the pattern i'd probably use is to do something like capture the f x outside of the lambda that is taking the equality witness by computing y = f (unsafeCoerce x) or whatever. then inside the lambda prove the type of x matches the type of f's arguments using your equality then return y, otherwise leave it alone |
2021-02-28 22:17:59 +0100 | <Cale> | Maybe, though it seems like it would be tricky in practice -- if you can somehow define the body outside the coercion lambda |
2021-02-28 22:18:13 +0100 | <edwardk> | its a thunk with an invalid type but you never force it except when the types line up |
2021-02-28 22:18:19 +0100 | tanuki | (~quassel@173.168.154.189) (Ping timeout: 260 seconds) |
2021-02-28 22:18:22 +0100 | <Cale> | Ah yeah |
2021-02-28 22:18:30 +0100 | elliott__ | (~elliott@pool-108-51-101-42.washdc.fios.verizon.net) |
2021-02-28 22:19:00 +0100 | <edwardk> | that should restore sharing |
2021-02-28 22:20:26 +0100 | tanuki | (~quassel@173.168.154.189) |
2021-02-28 22:21:10 +0100 | <rednaZ[m]> | I have to think about whether I can apply that to my case. I have just uploaded my case too if you are curious, https://github.com/prednaz/open-sum/blob/type_equality/app/Main.hs#L38 . |
2021-02-28 22:21:44 +0100 | <rednaZ[m]> | It is about checked exceptions and what happens if you evaluate a computation twice catching the exceptions in different order. |
2021-02-28 22:22:06 +0100 | <rednaZ[m]> | Than you would want sharing. |
2021-02-28 22:22:37 +0100 | xlei | (znc@unaffiliated/xlei) (Ping timeout: 256 seconds) |
2021-02-28 22:22:37 +0100 | <rednaZ[m]> | The type variable of OpenSum is a phantom type. |
2021-02-28 22:23:11 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:256c:b3b1:f90:ff2a) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-02-28 22:23:15 +0100 | nullniverse | (~null@unaffiliated/nullniverse) |
2021-02-28 22:23:47 +0100 | elfets | (~elfets@37.201.23.96) |
2021-02-28 22:24:20 +0100 | sparsity | (5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) (Quit: Connection closed) |
2021-02-28 22:24:29 +0100 | <edwardk> | OpenSum = Dynamic? |
2021-02-28 22:25:25 +0100 | <edwardk> | oh, no, there's a list argument |
2021-02-28 22:25:34 +0100 | edwardk | goes and reads |
2021-02-28 22:25:41 +0100 | <rednaZ[m]> | data OpenSum list = forall value. Typeable value => OpenSum value |
2021-02-28 22:26:07 +0100 | <rednaZ[m]> | `list` is a phantom type-level list |
2021-02-28 22:26:10 +0100 | <edwardk> | why do you need the Typeable btw, rather than just the list index? |
2021-02-28 22:26:29 +0100 | <rednaZ[m]> | Because then the run-time representation is different |
2021-02-28 22:26:43 +0100 | <rednaZ[m]> | for different list orders |
2021-02-28 22:26:59 +0100 | <rednaZ[m]> | and the list order has to be determined by the order of catching |
2021-02-28 22:27:04 +0100 | <edwardk> | fair |
2021-02-28 22:27:10 +0100 | <rednaZ[m]> | because it cannot stay undetermined |
2021-02-28 22:27:29 +0100 | <rednaZ[m]> | which is kind of funny |
2021-02-28 22:28:09 +0100 | <rednaZ[m]> | there is no other reason why I can only catch the type at the head of the list |
2021-02-28 22:28:43 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
2021-02-28 22:29:05 +0100 | gienah | (~mwright@gentoo/developer/gienah) (Quit: Lost terminal) |
2021-02-28 22:29:15 +0100 | <rednaZ[m]> | I am still in the process of trying your idea out but I am afraid, it is probably only effective if I apply it to user code. |
2021-02-28 22:33:33 +0100 | Tario | (~Tario@201.192.165.173) (Ping timeout: 264 seconds) |
2021-02-28 22:34:03 +0100 | nf | (~n@monade.li) (Ping timeout: 260 seconds) |
2021-02-28 22:34:04 +0100 | bergey | (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 260 seconds) |
2021-02-28 22:34:12 +0100 | nf__ | (~n@monade.li) |
2021-02-28 22:34:46 +0100 | nf__ | nf |
2021-02-28 22:36:21 +0100 | <edwardk> | ok, if you're using this to hold Exceptions anyways, you'll always have a Typeable constraint, i guess my grumbles there are mostly sated |
2021-02-28 22:36:58 +0100 | nullniv15 | (~null@unaffiliated/nullniverse) |
2021-02-28 22:37:20 +0100 | nullniverse | (~null@unaffiliated/nullniverse) (Read error: No route to host) |
2021-02-28 22:37:21 +0100 | nullniv15 | (~null@unaffiliated/nullniverse) (Read error: Connection reset by peer) |
2021-02-28 22:37:45 +0100 | nullniverse | (~null@unaffiliated/nullniverse) |
2021-02-28 22:37:46 +0100 | nullniverse | (~null@unaffiliated/nullniverse) (Max SendQ exceeded) |
2021-02-28 22:38:00 +0100 | geekosaur | (ae68c070@cpe-174-104-192-112.neo.res.rr.com) (Quit: Connection closed) |
2021-02-28 22:38:42 +0100 | <NieDzejkob> | I have a set of tuples (a, b, c) and I need to retrieve the ones with matching a or b at different moments. Is there a better way to do this than multiple Maps that I have to keep in sync manually? |
2021-02-28 22:39:20 +0100 | Tario | (~Tario@200.119.184.155) |
2021-02-28 22:40:33 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-83-46.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-02-28 22:40:48 +0100 | <rednaZ[m]> | edwardk: I would not have the Typeable constraint if it did not seem like the most promising approach right now. GHC is actually often floating the expensive computation out from under the coercion argument lambda recovering sharing already. But it is not often enough. |
2021-02-28 22:40:52 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-83-46.w86-212.abo.wanadoo.fr) |
2021-02-28 22:41:01 +0100 | redmp | (~redmp@172.58.38.156) |
2021-02-28 22:43:06 +0100 | psutcliffe | (~psutcliff@2a00:801:3f2:4b56:e93e:1663:ff0c:6c42) |
2021-02-28 22:44:02 +0100 | <hololeap> | NieDzejkob: define "better" |
2021-02-28 22:44:11 +0100 | <NieDzejkob> | less error-prone |
2021-02-28 22:44:52 +0100 | <NieDzejkob> | Making illegal states unrepresentable and all that |
2021-02-28 22:45:08 +0100 | <hololeap> | i'm actually having a hard time imagining what you're talking about |
2021-02-28 22:45:30 +0100 | <edwardk> | rednaZ[m]: generally whenever i see a Typeable constraint i try to move to atze van der ploeg's keys or find some other way to recover type information, just a rule of thumb, because Typeable is quite the blunt instrument and gets in the way when i want region parameters for things like ST s, etc. |
2021-02-28 22:46:10 +0100 | <edwardk> | rednaZ[m]: not saying that this is doable in your circumstance, just giving you my mental model |
2021-02-28 22:46:31 +0100 | <hololeap> | it almost sounds like you would need dependent types to do this at the type level, but, again, i'm not really understanding what you're trying to do |
2021-02-28 22:46:39 +0100 | <dolio> | Create a type that represents the set of triples, with the operations you want. Implement it however, and use it in the dependent code. |
2021-02-28 22:47:58 +0100 | <ij> | Can a type become concrete by adding more typeclass constraints? |
2021-02-28 22:48:18 +0100 | <edwardk> | ij: is one of them x ~ MyConcreteType ? |
2021-02-28 22:49:40 +0100 | <hololeap> | edwardk: that doesn't really make it concrete though, does it? it will just fail on anything except one specific type. |
2021-02-28 22:50:01 +0100 | <ij> | No, it doesn't look like it. hip's "e" pixel channel type is first constrained by Elevator e, which doesn't compile when given to writeImage, but then, if I add (Elevator e, Fractional e) by "image / 400" (or similar), then it compiles |
2021-02-28 22:50:20 +0100 | <ij> | well, maybe I ought to check what the involved typeclass definitions look like |
2021-02-28 22:50:31 +0100 | <ij> | maybe they have that "a ~ b" |
2021-02-28 22:50:54 +0100 | <hololeap> | (/) requires Fractional |
2021-02-28 22:50:59 +0100 | <hololeap> | :t (/) |
2021-02-28 22:51:00 +0100 | <lambdabot> | Fractional a => a -> a -> a |
2021-02-28 22:51:21 +0100 | <ij> | right, but why would it make it choose a concrete type? that I don't understand or how rather |
2021-02-28 22:51:25 +0100 | <edwardk> | hololeap: Bool isn't really concrete, it just fails if the type is anything except Bool ;) |
2021-02-28 22:52:04 +0100 | <edwardk> | ij: guessing what you have is defaulting kicking in when Fractional is applied |
2021-02-28 22:52:39 +0100 | <hololeap> | edwardk: while `foo :: x ~ Bool => x` is semantically the same as `x :: Bool`, i would think they are not the same at the compiler/technical level |
2021-02-28 22:53:01 +0100 | <edwardk> | hololeap: they are the same modulo a core coercion you can't see |
2021-02-28 22:53:41 +0100 | <edwardk> | every GADT you've ever used has compiled the latter into the former in the different constructor definitions |
2021-02-28 22:53:57 +0100 | <ij> | https://kseo.github.io/posts/2017-01-04-type-defaulting-in-haskell.html |
2021-02-28 22:53:58 +0100 | <hololeap> | ok, fair enough. so will `main :: x ~ IO () => x` compile? |
2021-02-28 22:54:05 +0100 | <ij> | Fractional defaults to Double indeed |
2021-02-28 22:54:26 +0100 | vchlup_ | (~vchlup@nat.brnet.cz) |
2021-02-28 22:54:30 +0100 | <edwardk> | data Foo a where Foo :: Foo Int; makes Foo :: forall a. (a ~ Int) => Foo a |
2021-02-28 22:54:31 +0100 | <hololeap> | (with a definition for main, obviously) |
2021-02-28 22:55:05 +0100 | kderme48 | (4fa758c1@ppp079167088193.access.hol.gr) |
2021-02-28 22:55:09 +0100 | <edwardk> | hololeap: yes |
2021-02-28 22:55:31 +0100 | <hololeap> | good to know :) |
2021-02-28 22:55:32 +0100 | <edwardk> | {-# Language TypeFamilies #-}; main :: x ~ IO () => x; main = print "hello" runhaskell main.hs ===> "hello" |
2021-02-28 22:57:03 +0100 | kderme | (4fa758c1@ppp079167088193.access.hol.gr) (Ping timeout: 240 seconds) |
2021-02-28 22:57:25 +0100 | dansho | (~dansho@ec2-52-69-229-22.ap-northeast-1.compute.amazonaws.com) |
2021-02-28 22:57:30 +0100 | nullniverse | (~null@unaffiliated/nullniverse) |
2021-02-28 22:57:31 +0100 | nullniverse | (~null@unaffiliated/nullniverse) (Max SendQ exceeded) |
2021-02-28 22:57:33 +0100 | <rednaZ[m]> | edwardk: The fundamental problem when trying to get a OpenSum type is that Haskell does not have type-level sets. This makes me think of row polymorphism. What happened to ermine? |
2021-02-28 22:57:57 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Quit: Lost terminal) |
2021-02-28 22:58:52 +0100 | <edwardk> | rednaZ[m]: i got cancer and eventually left the company right as corporate will to carry it to completion flagged. |
2021-02-28 22:59:49 +0100 | <edwardk> | then i got better and landed at digital asset for a while and worked on daml instead |
2021-02-28 22:59:56 +0100 | <dansho> | does this look like an unreasonable amount of allocations? if im reading right its about 1G/s http://codepad.org/7MbUjQ21 |
2021-02-28 22:59:57 +0100 | <rednaZ[m]> | edwardk: Sorry to heart that. I hope you are o.k. |
2021-02-28 23:00:26 +0100 | <edwardk> | rednaZ[m]: afaict its all good now. I take a pill or two a day, but everything seems fine |
2021-02-28 23:00:28 +0100 | Rudd0 | (~Rudd0@185.189.115.108) |
2021-02-28 23:00:50 +0100 | <rednaZ[m]> | edwardk: In PureScript row's can contain the same label multiple times. Was this different in ermine? |
2021-02-28 23:00:56 +0100 | <edwardk> | yes |
2021-02-28 23:01:00 +0100 | <rednaZ[m]> | nice |
2021-02-28 23:01:09 +0100 | <dolio> | It really isn't nice. |
2021-02-28 23:01:11 +0100 | <rednaZ[m]> | That is how I understood it from that one youtube video. |
2021-02-28 23:01:23 +0100 | <edwardk> | ermine rowtypes used 'can be partitioned into' constraints. which are apparently their own brand of crazy. |
2021-02-28 23:01:36 +0100 | <tomsmeding> | BigLama: "connection" in "connection sharing" refers to the TCP connection, as in a TCP socket (or perhaps TLS connection if you're using https). If you give the header 'Connection: keep-alive' in a HTTP request, you can send another request on the same connection. This is advantageous since you don't have to setup the connection multiple times, which is fairly expensive when using TLS (https). |
2021-02-28 23:01:36 +0100 | <tomsmeding> | It's not so expensive when using plain http, but still removes some overhead. |
2021-02-28 23:01:45 +0100 | <rednaZ[m]> | edwardk: Seems like the way to avoid label duplication. |
2021-02-28 23:01:48 +0100 | <edwardk> | Elem e es becomes 'exists x. such that es can be parititoned into e and x. |
2021-02-28 23:02:10 +0100 | <edwardk> | similarly Lacks e es becomes exists y. such that y can be partitioned into e and es |
2021-02-28 23:02:11 +0100 | <tomsmeding> | BigLama: this is purely a performance thing; this has nothing to do with logins or anything on that level. |
2021-02-28 23:02:23 +0100 | <edwardk> | that part i liked. the practical aspects of typechecking it? not so much |
2021-02-28 23:03:02 +0100 | <rednaZ[m]> | edwardk: I think of rows as type-level maps from type-level strings to types. |
2021-02-28 23:03:21 +0100 | <edwardk> | xplat had a nice scheme involving describing such row types in terms of complete atomic boolean algebras, but we never got around to switching from the ad hoc pile of rules we made up to that. |
2021-02-28 23:03:54 +0100 | <rednaZ[m]> | edwardk: Have you ever thought about general type-level maps from types to types? |
2021-02-28 23:04:13 +0100 | cyphase | (~cyphase@unaffiliated/cyphase) (Read error: Connection reset by peer) |
2021-02-28 23:04:16 +0100 | <rednaZ[m]> | Than I could encode type-level sets as maps with index type unit. |
2021-02-28 23:04:17 +0100 | <edwardk> | rednaZ[m]: have you look at ur/web? |
2021-02-28 23:04:30 +0100 | <rednaZ[m]> | What is that? |
2021-02-28 23:04:32 +0100 | <edwardk> | rednaZ[m]: you're basically reinventiong adam chlipala's baby |
2021-02-28 23:04:36 +0100 | <edwardk> | er reinventing |
2021-02-28 23:05:12 +0100 | kenran | (~kenran@i59F67BBA.versanet.de) (Quit: leaving) |
2021-02-28 23:05:49 +0100 | Varis | (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
2021-02-28 23:06:23 +0100 | <rednaZ[m]> | Thanks for the pointer at adam chlipala. What is ur/web? |
2021-02-28 23:06:37 +0100 | SchwarzeLocke | (~SchwarzeL@178.239.168.171) (Remote host closed the connection) |
2021-02-28 23:06:50 +0100 | <rednaZ[m]> | Ah, found it. http://www.impredicative.com/ur/ |
2021-02-28 23:07:41 +0100 | <dolio> | I kind of think that, in real retrospect, the rows in ermine were a fundemantally wrong choice for the use case. |
2021-02-28 23:07:54 +0100 | <edwardk> | i agree |
2021-02-28 23:08:05 +0100 | <edwardk> | lots of heavy lifting put to poor use |
2021-02-28 23:08:07 +0100 | dcoutts_ | dcoutts |
2021-02-28 23:08:11 +0100 | <dolio> | The databases don't actually do natural joins automatically. |
2021-02-28 23:08:47 +0100 | <dolio> | So the real underlying rows automatically introduce duplicate fields that are only eliminated by further operations. |
2021-02-28 23:08:48 +0100 | <rednaZ[m]> | Do you think allowing label duplication is the better choice? |
2021-02-28 23:09:03 +0100 | <dolio> | In some situations, yes. |
2021-02-28 23:09:29 +0100 | <rednaZ[m]> | In a general-purpose language? |
2021-02-28 23:09:49 +0100 | <edwardk> | the joinOn (or joinWith, i forget the names) were the real workhorse of the language. |
2021-02-28 23:10:03 +0100 | <edwardk> | and that didn't lean on 'natural' joins at all |
2021-02-28 23:10:33 +0100 | <dolio> | That doesn't have an answer. You don't need rows for "general purpose". You need them for various features of a general purpose language, and which feature they're for might make duplicates or non-duplicates better. |
2021-02-28 23:10:55 +0100 | <dolio> | I would say people under-estimate duplicates, though. |
2021-02-28 23:10:57 +0100 | <edwardk> | in retrospect a more natural fit to sql would probably have been to have fully qualified Table.FieldName names or something, and then allow FieldName access to those when they were unambiguous, or something awful like that. |
2021-02-28 23:10:58 +0100 | <rednaZ[m]> | I feel like I need checked exceptions pretty badly. |
2021-02-28 23:11:01 +0100 | cyphase | (~cyphase@unaffiliated/cyphase) |
2021-02-28 23:11:15 +0100 | <slack1256> | Does anyone know if "space invariants" were developed onto a full theory? link: https://apfelmus.nfshost.com/blog/2013/08/21-space-invariants.html |
2021-02-28 23:11:21 +0100 | <edwardk> | rednaZ[m]: when i throw an exception at you, what do you do then? |
2021-02-28 23:11:40 +0100 | <dolio> | Okay, well, checked exceptions are actually an example where duplicates are good. |
2021-02-28 23:11:46 +0100 | <edwardk> | i used to be more bullish on checked exceptions |
2021-02-28 23:11:58 +0100 | <BigLama> | tomsmeding: thanks a lot :) |
2021-02-28 23:12:20 +0100 | <rednaZ[m]> | edwardk: I handle it if I can. I `error` if I know it cannot happen effectively turning the exception into an unchecked one. |
2021-02-28 23:12:35 +0100 | <dolio> | Because there's a problem with checked exceptions and polymorphism/abstraction. |
2021-02-28 23:12:37 +0100 | <edwardk> | but given i can basically throw anything at any thread i've since become a bit more prosaic about the fact that checked exceptions just means the more exotic code path never gets tested and that exotic code path is super important in most concurrent programming situations |
2021-02-28 23:13:11 +0100 | <rednaZ[m]> | I would already be happy about checked exceptions in pure code. |
2021-02-28 23:13:29 +0100 | <rednaZ[m]> | instead of using `Either SomeException` or similar |
2021-02-28 23:14:25 +0100 | <edwardk> | same issue arises there. you wind up with an Either case for things you are manually putting in expensive boxes and then taking out and putting back in expensive boxes all the time, and 'real exceptions' which blow up your leaky abstraction and are sadly cheaper. |
2021-02-28 23:14:41 +0100 | <dolio> | If you have `f : (a -> b throws e) -> ...` where `f g = try ... g x ... catch { Exn1 -> ... }`, then the naive way for that to work violates the abstraction of `e`, because if `e` happens to contain `Exn1`, your handler will actually catch it. |
2021-02-28 23:14:51 +0100 | <edwardk> | it _galls_ me that ReaderT (IORef s) IO -- is generally cheaper/faster than StateT s IO |
2021-02-28 23:14:59 +0100 | tsrt^ | (tsrt@ip98-184-89-2.mc.at.cox.net) () |
2021-02-28 23:15:01 +0100 | <edwardk> | same diff for EitherT variants |
2021-02-28 23:16:03 +0100 | <rednaZ[m]> | I do not care that much about performance. |
2021-02-28 23:16:05 +0100 | nrh^ | (nrh@ip98-184-89-2.mc.at.cox.net) |
2021-02-28 23:16:06 +0100 | <dolio> | So, either you muck about with lacks predicates for `e`, or you say that `e` is properly abstract, and you cannot catch `Exn1` from `e` even if it's there. But that is equivalent to being able to push on a duplicate `Exn1` field that gets caught by your handler. |
2021-02-28 23:16:29 +0100 | coot_ | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
2021-02-28 23:16:36 +0100 | <rednaZ[m]> | But I think you can even track "real exceptions" if you had row types. |
2021-02-28 23:16:39 +0100 | catt | (~r@31.127.31.99) (Ping timeout: 260 seconds) |
2021-02-28 23:16:41 +0100 | <dolio> | The duplicate fields is how Koka does this for algebraic effects. |
2021-02-28 23:16:52 +0100 | <edwardk> | rednaZ[m]: i get angry when i pay asymptotically more garbage because of administrative details in my language, the extra garbage then becomes additional heap walks slowly my program asymptotically. |
2021-02-28 23:17:05 +0100 | <edwardk> | er slowing |
2021-02-28 23:17:47 +0100 | <dolio> | It automatically had duplicate effects because it was written by Daan Liejen, and he just reused his records stuff. |
2021-02-28 23:18:36 +0100 | <dolio> | So early papers say things like, "we haven't come up with a good use for this." But it turns out to be a way of solving a problem. |
2021-02-28 23:18:51 +0100 | <rednaZ[m]> | edwardk: "asymptotically" in which argument? |
2021-02-28 23:19:24 +0100 | orion | (~orion@unaffiliated/orion) (Quit: "") |
2021-02-28 23:20:19 +0100 | <dolio> | This is apparently called "tunnelling" when people were just talking about exceptions. |
2021-02-28 23:20:25 +0100 | alx741 | (~alx741@181.196.68.52) |
2021-02-28 23:20:28 +0100 | tanuki | (~quassel@173.168.154.189) (Ping timeout: 245 seconds) |
2021-02-28 23:20:33 +0100 | vicfred | (~vicfred@unaffiliated/vicfred) (Quit: Leaving) |
2021-02-28 23:20:58 +0100 | <edwardk> | rednaZ[m]: i do a bunch of state operations, especially abstract ones using MonadState s m, and i shed the carcasses of discarded (a, s) tuples all throughout my program, growing my heap. now i pay proportional to the size of my youngest generation (plus some occasional large collections) to clean up after myself. |
2021-02-28 23:21:47 +0100 | <edwardk> | rednaZ[m]: its why i get annoyed at times working in haskekl. e.g. if i build a queue and put things in and take them off the other end of the job queue because of gc i have to pay proportional to the size of the queue, rather than the churn in the queue. (there's some tricks i keep playing with with compact regions to mitigate that) |
2021-02-28 23:21:47 +0100 | tanuki | (~quassel@173.168.154.189) |
2021-02-28 23:21:52 +0100 | <edwardk> | er haskell |
2021-02-28 23:22:28 +0100 | SatanX | (~SatanX@185.204.1.185) |
2021-02-28 23:22:29 +0100 | <edwardk> | with epoch based memory reclamation i can usually pay 'gc' overhead proportional to the churn, but i can't use that here directly. |
2021-02-28 23:22:49 +0100 | SatanX | Guest68145 |
2021-02-28 23:22:58 +0100 | <rednaZ[m]> | I agree. |
2021-02-28 23:23:24 +0100 | __minoru__shirae | (~shiraeesh@5.101.59.4) (Ping timeout: 245 seconds) |
2021-02-28 23:23:36 +0100 | <edwardk> | the win in the ReaderT case is that its not constantly shedding tuple carcasses to the heap. you pay to deref when you access it. |
2021-02-28 23:24:27 +0100 | <edwardk> | it annoys me that this is the path to the fastest haskell code i can write =) |
2021-02-28 23:25:04 +0100 | <dolio> | I guess if I were pressed, I'd say that set-like records are always the wrong semantics. Deduplication and reordering of fields are convenience features for local interaction of a particular presentation of a row, but expecting abstract rows to deduplicate and reorder gets you in a lot of trouble. |
2021-02-28 23:25:28 +0100 | svet_ | (~svet@90.200.185.163) (Ping timeout: 245 seconds) |
2021-02-28 23:25:38 +0100 | xlei | (znc@unaffiliated/xlei) |
2021-02-28 23:25:58 +0100 | <rednaZ[m]> | edwardk: But what is the problem with `ReaderT (IORef s) IO`? |
2021-02-28 23:26:21 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
2021-02-28 23:27:22 +0100 | <edwardk> | rednaZ[m]: honestly not much other than you get stuck with the IO on the bottom driving the computation forward unlike the lazier state monad which has super powers |
2021-02-28 23:27:48 +0100 | <edwardk> | on the plus side this fixes the fail issues with state |
2021-02-28 23:28:08 +0100 | <edwardk> | on the minus side all the cool brain bending state tricks fall away like they do in everyone's effect systems |
2021-02-28 23:28:10 +0100 | <nshepperd> | is there a continuation based StateT which doesn't make any tuples? |
2021-02-28 23:28:21 +0100 | __minoru__shirae | (~shiraeesh@5.101.59.4) |
2021-02-28 23:28:22 +0100 | <edwardk> | nshepperd: yes |
2021-02-28 23:28:43 +0100 | <edwardk> | still has the exception safety problems that the "ReaderT IO" pattern advocates complain about |
2021-02-28 23:29:03 +0100 | <edwardk> | and ghc is not always great about seeing through the cps to optimize it |
2021-02-28 23:29:05 +0100 | <nshepperd> | oh, sure |
2021-02-28 23:29:09 +0100 | <edwardk> | especially when abstract |
2021-02-28 23:29:18 +0100 | <nshepperd> | exception safety is futile :) |
2021-02-28 23:29:38 +0100 | <edwardk> | nshepperd: you never write any code that needs to use more than one core do you? =) |
2021-02-28 23:32:16 +0100 | curiousgay | (~AdminUser@178.217.208.8) |
2021-02-28 23:32:37 +0100 | Franciman | (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving) |
2021-02-28 23:35:46 +0100 | <nshepperd> | sometimes i do |
2021-02-28 23:35:59 +0100 | <rednaZ[m]> | dolio: I do not understand your point with the `throws e` example. |
2021-02-28 23:36:09 +0100 | <edwardk> | fair, i was being mildly facetious |
2021-02-28 23:36:40 +0100 | <nshepperd> | speaking of, is there any ghc flag to make my program default to +RTS -N |
2021-02-28 23:36:44 +0100 | <rednaZ[m]> | dolio: Surely, you should not be able to write a function `f` that catches all possible exceptions. |
2021-02-28 23:36:59 +0100 | <dolio> | f catches a single exception. |
2021-02-28 23:37:19 +0100 | kupi | (uid212005@gateway/web/irccloud.com/x-qxtkrwfdkyjvofwt) |
2021-02-28 23:37:21 +0100 | <edwardk> | you meam like -threaded -rtsopts -with-rtsopts=-N ? |
2021-02-28 23:37:37 +0100 | <nshepperd> | that sounds like what i want |
2021-02-28 23:37:48 +0100 | <rednaZ[m]> | dolio: `f : (a -> b throws e) -> b` would have to catch all, would it not? |
2021-02-28 23:37:48 +0100 | <dolio> | Oh, I actually wrote a misleading signature, I guess. It should be: `f : (a -> b throw e) -> c throw e` |
2021-02-28 23:38:21 +0100 | danvet | (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds) |
2021-02-28 23:39:18 +0100 | <dolio> | The point is that abstraction is broken, because the details of the exceptions used in the implementation of `f` leak into the type of its argument. |
2021-02-28 23:39:31 +0100 | <rednaZ[m]> | You can write `f : (a -> b throws {Exn1 | r}) -> b throws r`, can you not? |
2021-02-28 23:39:35 +0100 | <dolio> | Or the type is imprecise/unsound. |
2021-02-28 23:39:38 +0100 | <nshepperd> | i wrote a gloss application that seems to be poorly responsive without -N (which i didn't think was meant to happen and maybe means some ffi call is "unsafe" that shouldn't be?) |
2021-02-28 23:40:15 +0100 | __minoru__shirae | (~shiraeesh@5.101.59.4) (Ping timeout: 240 seconds) |
2021-02-28 23:41:08 +0100 | <nshepperd> | playing with writing a gui toolkit in gloss and reactive-banana |
2021-02-28 23:41:10 +0100 | <dolio> | You can do that if you want your checked exceptions to be anti-modular. |
2021-02-28 23:41:40 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-28 23:44:15 +0100 | <rednaZ[m]> | Why is that anti-modular? |
2021-02-28 23:44:33 +0100 | <rednaZ[m]> | Because "the details of the exceptions used in the implementation of `f` leak into the type of its argument"? |
2021-02-28 23:45:14 +0100 | <dolio> | Because the implementation details of `f` affect how it behaves on a parameter that would otherwise have an abstract type. |
2021-02-28 23:45:26 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-02-28 23:46:00 +0100 | <dolio> | It means that `g` can't throw Exn1 exceptions without them accidentally getting handled by `f`, which uses them for its own purposes. |
2021-02-28 23:47:09 +0100 | vchlup_ | (~vchlup@nat.brnet.cz) (Ping timeout: 245 seconds) |
2021-02-28 23:50:06 +0100 | usr25_tm | (~usr25@unaffiliated/usr25) |
2021-02-28 23:50:09 +0100 | <dolio> | Another way of explaining the problem is that exception handlers are usually dynamically scoped, and dynamic scoping is anti-modular. |
2021-02-28 23:50:28 +0100 | <dolio> | For perhaps more obvious reasons. |
2021-02-28 23:51:13 +0100 | <dolio> | And the answer in that presentation is to make handlers statically scoped. |
2021-02-28 23:51:14 +0100 | <rednaZ[m]> | Either g's or f's module defines and owns the Exn1 type. The Exn1 type becomes part of that modules specification. |
2021-02-28 23:51:23 +0100 | <rednaZ[m]> | If the other module acts in a way that causes problems it is violating what the first modules specification is asking from a user. |
2021-02-28 23:51:37 +0100 | <rednaZ[m]> | ...of that module. |
2021-02-28 23:52:00 +0100 | <rednaZ[m]> | All specifications are expecting some preconditions. |
2021-02-28 23:52:21 +0100 | <rednaZ[m]> | That is normal, is it not? |
2021-02-28 23:52:35 +0100 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
2021-02-28 23:53:49 +0100 | usr25 | (~usr25@unaffiliated/usr25) (Ping timeout: 245 seconds) |
2021-02-28 23:54:20 +0100 | aarvar | (~foewfoiew@2601:602:a080:fa0:d4c5:1ad7:b189:949e) |
2021-02-28 23:56:28 +0100 | <dolio> | Well, that probably isn't a good assumption. But even if f's implementation 'owns' the exception, its type is cluttered with implementation details. |
2021-02-28 23:57:08 +0100 | <dolio> | And those implementation details will build more and more clutter in the types that are just saying details that aren't supposed to matter about the implementations. |
2021-02-28 23:57:29 +0100 | <slack1256> | Is there an update for https://www.slideshare.net/tibbe/highperformance-haskell ? |
2021-02-28 23:57:43 +0100 | <NieDzejkob> | Is there a shorter way of writing r { field = f (field r) }? |
2021-02-28 23:57:59 +0100 | <dibblego> | over f |
2021-02-28 23:58:22 +0100 | <slack1256> | I was thinking on how to approach a project from the ground up with performance in mind (I have to show numbers :P ). This is an alternative to first writing it and then make it performant. |
2021-02-28 23:59:18 +0100 | __minoru__shirae | (~shiraeesh@5.101.59.4) |
2021-02-28 23:59:20 +0100 | <dolio> | If you represent checked exceptions with `Either`, for instance, it's not possible for `f :: (a -> Either e b) -> Either e c` to accidentally catch the exceptions from the argument, via parametricity. |
2021-02-28 23:59:22 +0100 | <rednaZ[m]> | NieDzejkob: `over #field f` if you are using https://hackage.haskell.org/package/optics or https://hackage.haskell.org/package/lens. |
2021-02-28 23:59:54 +0100 | <NieDzejkob> | I don't use either yet, any opinions on optics vs lens vs microlens? |