2022-05-24 00:00:11 +0200 | phma | (~phma@host-67-44-209-30.hnremote.net) (Read error: Connection reset by peer) |
2022-05-24 00:00:25 +0200 | flinner | (~flinner@user/flinner) (Remote host closed the connection) |
2022-05-24 00:03:10 +0200 | michalz | (~michalz@185.246.204.122) (Remote host closed the connection) |
2022-05-24 00:04:41 +0200 | CiaoSen | (~Jura@p200300c9571e4b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2022-05-24 00:05:28 +0200 | phma | (~phma@2001:5b0:211f:4558:378e:f00c:29a5:2a62) |
2022-05-24 00:06:29 +0200 | MajorBiscuit | (~MajorBisc@80.146.187.107) (Ping timeout: 244 seconds) |
2022-05-24 00:08:00 +0200 | renzhi | (~xp@2607:fa49:6500:b100::2dea) (Ping timeout: 258 seconds) |
2022-05-24 00:08:02 +0200 | chomwitt | (~chomwitt@2a02:587:dc1e:cc00:8ece:d1c3:481c:8e10) (Ping timeout: 260 seconds) |
2022-05-24 00:08:18 +0200 | MajorBiscuit | (~MajorBisc@c-001-015-032.client.tudelft.eduvpn.nl) |
2022-05-24 00:08:35 +0200 | acat | (~acat__@132.255.9.33) (Quit: Leaving) |
2022-05-24 00:13:34 +0200 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
2022-05-24 00:20:31 +0200 | coot | (~coot@213.134.190.95) (Ping timeout: 276 seconds) |
2022-05-24 00:21:08 +0200 | phma | (~phma@2001:5b0:211f:4558:378e:f00c:29a5:2a62) (Read error: Connection reset by peer) |
2022-05-24 00:22:50 +0200 | romesrf | (~romes@185.5.8.134) (Quit: WeeChat 3.4.1) |
2022-05-24 00:24:09 +0200 | phma | (~phma@2001:5b0:212a:cf68:bd21:e2c6:dbfb:9709) |
2022-05-24 00:24:41 +0200 | phma | (~phma@2001:5b0:212a:cf68:bd21:e2c6:dbfb:9709) (Read error: Connection reset by peer) |
2022-05-24 00:25:10 +0200 | acidjnk | (~acidjnk@p200300d0c7068b30b098d604dddded4a.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2022-05-24 00:29:00 +0200 | Everything | (~Everythin@37.115.210.35) (Quit: leaving) |
2022-05-24 00:31:56 +0200 | MajorBiscuit | (~MajorBisc@c-001-015-032.client.tudelft.eduvpn.nl) (Ping timeout: 272 seconds) |
2022-05-24 00:31:59 +0200 | merijn | (~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds) |
2022-05-24 00:34:07 +0200 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
2022-05-24 00:34:27 +0200 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2022-05-24 00:40:36 +0200 | phma | (phma@2001:5b0:211f:99c8:1e56:814f:39a7:4c4f) |
2022-05-24 00:40:54 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) (Ping timeout: 252 seconds) |
2022-05-24 00:41:47 +0200 | dsrt^ | (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 240 seconds) |
2022-05-24 00:41:49 +0200 | phma | (phma@2001:5b0:211f:99c8:1e56:814f:39a7:4c4f) (Read error: Connection reset by peer) |
2022-05-24 00:42:13 +0200 | phma | (~phma@host-67-44-208-37.hnremote.net) |
2022-05-24 00:43:36 +0200 | dsrt^ | (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) |
2022-05-24 00:47:06 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-05-24 00:50:10 +0200 | werneta | (~werneta@137.79.219.99) (Ping timeout: 258 seconds) |
2022-05-24 00:50:49 +0200 | ubert | (~Thunderbi@p200300ecdf3b99c36d3ba42fb5eab692.dip0.t-ipconnect.de) (Quit: ubert) |
2022-05-24 00:50:59 +0200 | werneta | (~werneta@137.78.30.207) |
2022-05-24 00:55:31 +0200 | zeenk | (~zeenk@2a02:2f04:a104:ef00:10:581:f80f:b980) (Quit: Konversation terminated!) |
2022-05-24 00:57:14 +0200 | Tuplanolla | (~Tuplanoll@91-159-68-39.elisa-laajakaista.fi) (Quit: Leaving.) |
2022-05-24 01:07:23 +0200 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Remote host closed the connection) |
2022-05-24 01:07:47 +0200 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2022-05-24 01:08:34 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds) |
2022-05-24 01:12:29 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 255 seconds) |
2022-05-24 01:14:34 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
2022-05-24 01:14:42 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
2022-05-24 01:16:22 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-05-24 01:16:52 +0200 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 260 seconds) |
2022-05-24 01:19:22 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
2022-05-24 01:23:54 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Ping timeout: 258 seconds) |
2022-05-24 01:24:32 +0200 | jrm | (~jrm@156.34.173.250) (Quit: ciao) |
2022-05-24 01:24:50 +0200 | jrm | (~jrm@156.34.173.250) |
2022-05-24 01:26:34 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
2022-05-24 01:26:35 +0200 | <Axman6> | o/ |
2022-05-24 01:28:27 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2022-05-24 01:29:27 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-05-24 01:37:34 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
2022-05-24 01:38:29 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-05-24 01:38:29 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-05-24 01:38:29 +0200 | wroathe | (~wroathe@user/wroathe) |
2022-05-24 01:39:10 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-05-24 01:42:59 +0200 | <EvanR> | \o |
2022-05-24 01:43:29 +0200 | <geekosaur> | \o/ |
2022-05-24 01:43:42 +0200 | <Axman6> | Connection established! |
2022-05-24 01:47:05 +0200 | <hpc> | lmao |
2022-05-24 01:48:34 +0200 | alx741 | (~alx741@host-186-3-154-11.netlife.ec) |
2022-05-24 01:50:28 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:f100:eba8:305a:4575) |
2022-05-24 01:50:47 +0200 | alx741 | (~alx741@host-186-3-154-11.netlife.ec) (Read error: Connection reset by peer) |
2022-05-24 01:51:23 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) |
2022-05-24 01:54:47 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:f100:eba8:305a:4575) (Ping timeout: 255 seconds) |
2022-05-24 01:59:56 +0200 | <dragestil> | does anyone know if integer-gmp has a source forge link? https://hackage.haskell.org/package/integer-gmp |
2022-05-24 02:00:50 +0200 | <dragestil> | I mean a link to its vcs repo |
2022-05-24 02:01:57 +0200 | nate1 | (~nate@98.45.169.16) |
2022-05-24 02:02:14 +0200 | <geekosaur> | https://gitlab.haskell.org/ghc/ghc/-/tree/master/libraries/integer-gmp |
2022-05-24 02:02:45 +0200 | <geekosaur> | it's not independent, it's part of the GHC repo |
2022-05-24 02:03:31 +0200 | <dragestil> | ok thanks. it's not even a submodule? |
2022-05-24 02:03:42 +0200 | <geekosaur> | nope |
2022-05-24 02:03:50 +0200 | <dragestil> | hmm ok |
2022-05-24 02:04:02 +0200 | <geekosaur> | too deeply wired into ghc currently. there is some work on changing this, but not quite that far as yet |
2022-05-24 02:04:43 +0200 | <dragestil> | i see, i do remember needing it to build ghc |
2022-05-24 02:04:48 +0200 | <geekosaur> | \(in particular they want to be able to choose between integer-gmp and integer-simple without having to rebuild ghc, which should also allow for pluggable implementations |
2022-05-24 02:04:52 +0200 | <geekosaur> | ) |
2022-05-24 02:05:12 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:f100:eba8:305a:4575) |
2022-05-24 02:05:49 +0200 | _PSY_ | (~PSY@2600:1700:2050:1040:dc85:ef8:9bc6:edde) |
2022-05-24 02:06:50 +0200 | nate1 | (~nate@98.45.169.16) (Ping timeout: 258 seconds) |
2022-05-24 02:07:07 +0200 | <dragestil> | makes sense |
2022-05-24 02:08:12 +0200 | <geekosaur> | there was some work a decade ago on using libtommath as an alternative, which didn't go much of anywhere; one hope is that it'll be easier to do such experiments in the future |
2022-05-24 02:09:59 +0200 | <Axman6> | what is integer-simple's implementation these days? I remember at some point it was a [Int] or something, but feel like it was turned into something more akin to GMP's representation? |
2022-05-24 02:10:27 +0200 | <geekosaur> | I know it was completely rewritten several years back but don't know details |
2022-05-24 02:11:50 +0200 | <geekosaur> | https://gitlab.haskell.org/ghc/ghc/-/tree/master/libraries/ghc-bignum has some details |
2022-05-24 02:12:08 +0200 | <geekosaur> | (that's the new swappable backend, if I read correctly) |
2022-05-24 02:13:15 +0200 | <Axman6> | I remember years ago Erik de Castro Lopo doing some work on making a pure Haskell implementationm for Integers, and the performance was very close to GMP, with somethings being slower, and some faster |
2022-05-24 02:13:34 +0200 | <Axman6> | https://github.com/erikd/haskell-big-integer-experiment |
2022-05-24 02:14:35 +0200 | werneta | (~werneta@137.78.30.207) (Ping timeout: 255 seconds) |
2022-05-24 02:15:05 +0200 | <EvanR> | that's either pretty impressive, or discouraging that gmp is that bad xD |
2022-05-24 02:15:45 +0200 | <EvanR> | like comparing the size of mars and ganymede, the reaction could go either way |
2022-05-24 02:15:52 +0200 | <Axman6> | using data Integer = Small# Int# | Large# BigNat gives q pretty big performance boost when either argument is small |
2022-05-24 02:16:01 +0200 | <Axman6> | GMP integers are always "big" |
2022-05-24 02:17:08 +0200 | <[Leary]> | I wrote two's-complement integers in lambda calculus at some point, maybe I should make my own joke backend. <.< |
2022-05-24 02:17:22 +0200 | <EvanR> | acme-bigint |
2022-05-24 02:17:38 +0200 | <Axman6> | integer-busy-beaver |
2022-05-24 02:21:01 +0200 | gurkenglas | (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) (Ping timeout: 258 seconds) |
2022-05-24 02:21:34 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
2022-05-24 02:23:09 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-05-24 02:23:22 +0200 | kenaryn | (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr) |
2022-05-24 02:23:57 +0200 | dcleonarski | (~user@2804:d51:479c:4300:c312:71c1:ee9b:86ea) (Ping timeout: 260 seconds) |
2022-05-24 02:25:13 +0200 | <hpc> | acme-idle-beaver |
2022-05-24 02:25:23 +0200 | <hpc> | ib n = replicateM_ n mempty |
2022-05-24 02:25:24 +0200 | <hpc> | :D |
2022-05-24 02:28:55 +0200 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-05-24 02:30:46 +0200 | xff0x | (~xff0x@b133147.ppp.asahi-net.or.jp) (Ping timeout: 246 seconds) |
2022-05-24 02:34:00 +0200 | <EvanR> | idle beaver is the dual beaver to busy beaver |
2022-05-24 02:35:18 +0200 | <geekosaur> | Axman6, actually GMP-backed Integers have that same optimization (see the J# constructor) |
2022-05-24 02:36:10 +0200 | <geekosaur> | @src Integer |
2022-05-24 02:36:10 +0200 | <lambdabot> | data Integer = S# Int# |
2022-05-24 02:36:10 +0200 | <lambdabot> | | J# Int# ByteArray# |
2022-05-24 02:36:16 +0200 | <geekosaur> | sorry, S# |
2022-05-24 02:36:59 +0200 | <geekosaur> | and that's a bit out of date: (1) there's a separate constructor for negative big Integers now (2) and the representation changed so it can be in common between all the backends |
2022-05-24 02:37:05 +0200 | <Axman6> | yeah I can't remember exactly what the advantage was 8 years ago. it might have been the explicit sign constructors simplifying things |
2022-05-24 02:39:15 +0200 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2022-05-24 02:40:15 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 276 seconds) |
2022-05-24 02:40:32 +0200 | Lord_of_Life_ | Lord_of_Life |
2022-05-24 02:48:30 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) (Ping timeout: 252 seconds) |
2022-05-24 02:49:43 +0200 | _PSY_ | (~PSY@2600:1700:2050:1040:dc85:ef8:9bc6:edde) (Remote host closed the connection) |
2022-05-24 02:49:50 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds) |
2022-05-24 02:53:01 +0200 | _PSY_ | (~PSY@2600:1700:2050:1040:dc85:ef8:9bc6:edde) |
2022-05-24 02:58:34 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-05-24 02:59:20 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) |
2022-05-24 03:00:18 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2022-05-24 03:04:19 +0200 | zmt00 | (~zmt00@user/zmt00) (Ping timeout: 240 seconds) |
2022-05-24 03:04:40 +0200 | zmt00 | (~zmt00@user/zmt00) |
2022-05-24 03:04:55 +0200 | stackdroid18 | (14094@user/stackdroid) (Quit: hasta la vista... tchau!) |
2022-05-24 03:11:36 +0200 | xff0x | (~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp) |
2022-05-24 03:36:43 +0200 | _PSY_ | (~PSY@2600:1700:2050:1040:dc85:ef8:9bc6:edde) (Remote host closed the connection) |
2022-05-24 03:37:43 +0200 | _PSY_ | (~PSY@2600:1700:2050:1040:dc85:ef8:9bc6:edde) |
2022-05-24 03:38:07 +0200 | <dons> | g'day folks |
2022-05-24 03:39:51 +0200 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Read error: Connection reset by peer) |
2022-05-24 03:39:55 +0200 | sammelweis_ | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-05-24 03:48:21 +0200 | andrey_ | (~andrey@p200300dbcf14f800f85ba15fc5bddcc0.dip0.t-ipconnect.de) |
2022-05-24 03:51:26 +0200 | andrey__ | (~andrey@p200300dbcf0986008b4668e560f4c52f.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
2022-05-24 03:51:27 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds) |
2022-05-24 03:51:56 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) (Ping timeout: 252 seconds) |
2022-05-24 03:52:39 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
2022-05-24 03:52:56 +0200 | _PSY_ | (~PSY@2600:1700:2050:1040:dc85:ef8:9bc6:edde) (Quit: .) |
2022-05-24 03:54:24 +0200 | <jackdk> | hi dons |
2022-05-24 03:57:28 +0200 | <sm> | g'day dons |
2022-05-24 04:09:04 +0200 | stiell_ | (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds) |
2022-05-24 04:10:07 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds) |
2022-05-24 04:16:03 +0200 | ashpil | (~ashpil@98.42.126.67) |
2022-05-24 04:16:31 +0200 | kenaryn | (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr) (Quit: leaving) |
2022-05-24 04:16:32 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) |
2022-05-24 04:18:56 +0200 | <ashpil> | How does `getChar` have referential transparency? |
2022-05-24 04:19:41 +0200 | <jackdk> | getChar is a constant value: a computation, which when run, will read a character from stdin |
2022-05-24 04:20:07 +0200 | dsrt^ | (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) (Read error: Connection reset by peer) |
2022-05-24 04:21:49 +0200 | stiell_ | (~stiell@gateway/tor-sasl/stiell) |
2022-05-24 04:21:53 +0200 | <ashpil> | Interesting. Makes sense, but does feel a bit hacky :p |
2022-05-24 04:21:59 +0200 | dsrt^ | (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) |
2022-05-24 04:24:35 +0200 | <jackdk> | I don't think it's that hacky. Have a look at https://github.com/system-f/fp-course#demonstrate-io-maintains-referential-transparency : in the haskell example, DRYing up the code by moving `readFile file` into the `let` block does not change the meaning of the program. In the python example, it does. |
2022-05-24 04:25:53 +0200 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) |
2022-05-24 04:26:24 +0200 | Guest54 | (~Guest54@modemcable048.16-160-184.mc.videotron.ca) |
2022-05-24 04:27:33 +0200 | <EvanR> | ashpil, consider let x = getChar in _ |
2022-05-24 04:27:45 +0200 | <ashpil> | Hmm yes it passes the technical definition, but it does sort of feel like moving the goalposts. |
2022-05-24 04:27:48 +0200 | <lambdabot> | <hint>:1:41: error: parse error on input ‘,’ |
2022-05-24 04:27:51 +0200 | <EvanR> | anywhere in _ you can replace x with getChar and it's the same thing |
2022-05-24 04:28:05 +0200 | <EvanR> | i.e. referential transparency |
2022-05-24 04:28:19 +0200 | <ashpil> | Yeah I get that |
2022-05-24 04:28:20 +0200 | <EvanR> | note how this differs from other languages |
2022-05-24 04:28:43 +0200 | xff0x | (~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp) (Ping timeout: 246 seconds) |
2022-05-24 04:29:05 +0200 | <EvanR> | part of which is that getChar isn't a function at all |
2022-05-24 04:29:23 +0200 | <[Leary]> | It's not a moving of goalposts, it's a key shift in perspective---that we step back from *performing* computations *specifying* them. |
2022-05-24 04:29:40 +0200 | <[Leary]> | to* |
2022-05-24 04:30:01 +0200 | <ashpil> | Fair enough |
2022-05-24 04:31:39 +0200 | jmcarthur | (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
2022-05-24 04:32:32 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
2022-05-24 04:32:33 +0200 | <EvanR> | IO actions = first class asm chunks xD |
2022-05-24 04:34:17 +0200 | <EvanR> | you can note only substitute them, but you could store them in data structures or IORefs |
2022-05-24 04:34:23 +0200 | <EvanR> | for fun and profit |
2022-05-24 04:34:53 +0200 | <EvanR> | or send them between threads |
2022-05-24 04:35:27 +0200 | SridharRatnakuma | (~sridmatri@2001:470:69fc:105::1c2) (Ping timeout: 240 seconds) |
2022-05-24 04:35:30 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-05-24 04:35:47 +0200 | RudraveerMandal[ | (~magphimat@2001:470:69fc:105::2:eb9) (Ping timeout: 240 seconds) |
2022-05-24 04:36:07 +0200 | Orbstheorem | (~orbstheor@2001:470:69fc:105::a56) (Ping timeout: 240 seconds) |
2022-05-24 04:36:07 +0200 | alexfmpe[m] | (~alexfmpem@2001:470:69fc:105::38ba) (Ping timeout: 240 seconds) |
2022-05-24 04:36:27 +0200 | Christoph[m] | (~hpotsirhc@2001:470:69fc:105::2ff8) (Ping timeout: 240 seconds) |
2022-05-24 04:37:10 +0200 | xff0x | (~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp) |
2022-05-24 04:37:50 +0200 | jmcarthur | (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
2022-05-24 04:41:26 +0200 | ashpil | (~ashpil@98.42.126.67) (Ping timeout: 252 seconds) |
2022-05-24 04:41:33 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-05-24 04:41:33 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-05-24 04:41:33 +0200 | wroathe | (~wroathe@user/wroathe) |
2022-05-24 04:42:00 +0200 | <jackdk> | [Leary] hit it very well. we almost never try and run these computations ourselves, we just assign `main :: IO ()` to the thing we want to run and hand that off to the runtime. |
2022-05-24 04:44:32 +0200 | bliminse | (~bliminse@host81-154-179-167.range81-154.btcentralplus.com) (Ping timeout: 260 seconds) |
2022-05-24 04:46:05 +0200 | bliminse | (~bliminse@host86-164-169-5.range86-164.btcentralplus.com) |
2022-05-24 04:47:22 +0200 | SridharRatnakuma | (~sridmatri@2001:470:69fc:105::1c2) |
2022-05-24 04:48:40 +0200 | YoungFrog | (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) (Ping timeout: 246 seconds) |
2022-05-24 04:48:50 +0200 | Alleria | (~textual@user/alleria) (Ping timeout: 240 seconds) |
2022-05-24 04:49:09 +0200 | toluene5 | (~toluene@user/toulene) |
2022-05-24 04:49:14 +0200 | YoungFrog | (~youngfrog@2a02:a03f:c21b:f900:8cee:eaed:9f2f:9769) |
2022-05-24 04:49:19 +0200 | feliix42_ | (~felix@gibbs.uberspace.de) |
2022-05-24 04:49:22 +0200 | feliix42 | (~felix@gibbs.uberspace.de) (Ping timeout: 246 seconds) |
2022-05-24 04:49:34 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
2022-05-24 04:49:43 +0200 | toluene | (~toluene@user/toulene) (Ping timeout: 246 seconds) |
2022-05-24 04:49:44 +0200 | toluene5 | toluene |
2022-05-24 04:49:45 +0200 | RudraveerMandal[ | (~magphimat@2001:470:69fc:105::2:eb9) |
2022-05-24 04:49:49 +0200 | jargon | (~jargon@174-22-206-112.phnx.qwest.net) (Remote host closed the connection) |
2022-05-24 04:50:01 +0200 | alexfmpe[m] | (~alexfmpem@2001:470:69fc:105::38ba) |
2022-05-24 04:50:04 +0200 | noctux | (~noctux@user/noctux) (Ping timeout: 246 seconds) |
2022-05-24 04:50:33 +0200 | Orbstheorem | (~orbstheor@2001:470:69fc:105::a56) |
2022-05-24 04:51:36 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2022-05-24 04:51:42 +0200 | Christoph[m] | (~hpotsirhc@2001:470:69fc:105::2ff8) |
2022-05-24 04:51:48 +0200 | noctux | (~noctux@user/noctux) |
2022-05-24 04:55:38 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) (Remote host closed the connection) |
2022-05-24 04:55:55 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) |
2022-05-24 04:56:28 +0200 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Remote host closed the connection) |
2022-05-24 04:57:35 +0200 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) |
2022-05-24 04:59:34 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 240 seconds) |
2022-05-24 05:00:16 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-05-24 05:04:05 +0200 | motherfsck | (~motherfsc@user/motherfsck) (Ping timeout: 244 seconds) |
2022-05-24 05:06:37 +0200 | <Guest54> | I am trying to understand how to display a list and how to take a specefic element from it. |
2022-05-24 05:06:37 +0200 | <Guest54> | So, I have a list of lists: [[Id,a,b],[Id,a,b],[Id,a,b]...] |
2022-05-24 05:06:38 +0200 | <Guest54> | And i want to display it to this format: |
2022-05-24 05:06:38 +0200 | <Guest54> | position(first one 1) space Id space b |
2022-05-24 05:06:39 +0200 | <Guest54> | ... |
2022-05-24 05:06:40 +0200 | <Guest54> | ... |
2022-05-24 05:06:40 +0200 | <Guest54> | then--------(8 lines) |
2022-05-24 05:06:41 +0200 | <Guest54> | if we take this example: |
2022-05-24 05:06:41 +0200 | <Guest54> | [[43525,5,2],[7455,3,4],[25545,7,5],[98674,10,5]] |
2022-05-24 05:06:42 +0200 | <Guest54> | i want to display somthing like this: |
2022-05-24 05:06:42 +0200 | <Guest54> | 1 43525 2 |
2022-05-24 05:06:43 +0200 | <Guest54> | 2 7455 4 |
2022-05-24 05:06:43 +0200 | <Guest54> | 3 25545 5 |
2022-05-24 05:06:44 +0200 | <Guest54> | 4 98674 5 |
2022-05-24 05:06:44 +0200 | <Guest54> | -------- |
2022-05-24 05:06:46 +0200 | <Axman6> | Don't do that! |
2022-05-24 05:06:50 +0200 | <Axman6> | @where paste |
2022-05-24 05:06:50 +0200 | <lambdabot> | Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com |
2022-05-24 05:07:07 +0200 | <Guest54> | sorry how can't delete it ? :/ |
2022-05-24 05:07:11 +0200 | <Axman6> | you can't |
2022-05-24 05:07:44 +0200 | <Guest54> | sorry, is there any link to read rules ... |
2022-05-24 05:07:58 +0200 | causal | (~user@50.35.83.177) |
2022-05-24 05:07:58 +0200 | <Guest54> | i m new beginner to this channel |
2022-05-24 05:08:54 +0200 | <Axman6> | it's pretty common across IRc to not spam lots of text,. The topic has useful links. Re: your querstion, have a look at the functions mapM_/traverse/sequence, putStrLn, unwords, show |
2022-05-24 05:09:10 +0200 | <Axman6> | Is this a homework exercise? |
2022-05-24 05:09:12 +0200 | <EvanR> | Guest54, break it down into subproblems. First, a function that takes [Id,a,b] and formats a line of text like you want |
2022-05-24 05:10:00 +0200 | <EvanR> | (Id,A,B) -> String |
2022-05-24 05:10:06 +0200 | <Axman6> | or were you asking about last week? |
2022-05-24 05:10:55 +0200 | <Guest54> | yeep that problem |
2022-05-24 05:11:08 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) (Ping timeout: 252 seconds) |
2022-05-24 05:11:11 +0200 | <Guest54> | but i figured out how to sort the lists and to parse the data... |
2022-05-24 05:11:14 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 272 seconds) |
2022-05-24 05:11:36 +0200 | <Axman6> | > unwords ["Hello,","world"] |
2022-05-24 05:11:37 +0200 | <lambdabot> | "Hello, world" |
2022-05-24 05:11:59 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
2022-05-24 05:22:01 +0200 | motherfsck | (~motherfsc@user/motherfsck) |
2022-05-24 05:27:10 +0200 | dsrt^ | (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 246 seconds) |
2022-05-24 05:28:27 +0200 | AkechiShiro | (~licht@user/akechishiro) (Ping timeout: 240 seconds) |
2022-05-24 05:28:57 +0200 | Raito_Bezarius | (~Raito@2a01:e0a:5f9:9681:a0a0:bb76:611f:9da7) (Ping timeout: 248 seconds) |
2022-05-24 05:29:27 +0200 | Luj4 | (~Luj@2a01:e0a:5f9:9681:4314:3e52:bdb3:a61e) (Ping timeout: 260 seconds) |
2022-05-24 05:30:09 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) |
2022-05-24 05:30:18 +0200 | frost | (~frost@user/frost) |
2022-05-24 05:31:01 +0200 | AkechiShiro | (~licht@user/akechishiro) |
2022-05-24 05:32:35 +0200 | Luj4 | (~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb) |
2022-05-24 05:34:36 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) (Ping timeout: 252 seconds) |
2022-05-24 05:34:52 +0200 | dsrt^ | (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) |
2022-05-24 05:37:37 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds) |
2022-05-24 05:42:08 +0200 | Raito_Bezarius | (~Raito@wireguard/tunneler/raito-bezarius) |
2022-05-24 05:58:01 +0200 | phma_ | (~phma@2001:5b0:210d:cc08:34f8:e479:1e76:ac53) |
2022-05-24 05:58:41 +0200 | phma | (~phma@host-67-44-208-37.hnremote.net) (Read error: Connection reset by peer) |
2022-05-24 06:00:03 +0200 | <Guest54> | is there anyway to access to an element of the internal list ? |
2022-05-24 06:00:03 +0200 | <Guest54> | [[43525,5,2],[7455,3,4]] |
2022-05-24 06:00:04 +0200 | <Guest54> | for example access to the number 5 in the firstl list |
2022-05-24 06:02:51 +0200 | <Axman6> | you can index into lists using !!, but generally we would recommend against it because it's not a safe function. you're better off to parse things into some sort of structure which guarantees the shame you care about, like we spoke about last week: data Patient = Patient {pId :: Int, pThing :: Int, pOther :: Int} |
2022-05-24 06:03:29 +0200 | nate1 | (~nate@98.45.169.16) |
2022-05-24 06:08:35 +0200 | nate1 | (~nate@98.45.169.16) (Ping timeout: 255 seconds) |
2022-05-24 06:10:38 +0200 | <sm> | but for the sake of learning.. [[43525,5,2],[7455,3,4]] !! 0 !! 1 |
2022-05-24 06:12:25 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) |
2022-05-24 06:12:38 +0200 | coot | (~coot@213.134.190.95) |
2022-05-24 06:14:34 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
2022-05-24 06:16:56 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-05-24 06:18:59 +0200 | phma_ | phma |
2022-05-24 06:20:48 +0200 | <sm> | when you have a small number of known shapes, you can extract it with pattern matching, eg... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/94457ea77c3bfc46d7bd14b9f375f1a93e61…) |
2022-05-24 06:25:34 +0200 | Guest54 | (~Guest54@modemcable048.16-160-184.mc.videotron.ca) (Ping timeout: 252 seconds) |
2022-05-24 06:32:53 +0200 | mvk | (~mvk@2607:fea8:5ce3:8500::ba9a) (Ping timeout: 255 seconds) |
2022-05-24 06:33:17 +0200 | <EvanR> | is that a thing, field name after first letter of type name |
2022-05-24 06:33:46 +0200 | P1RATEZ | (piratez@user/p1ratez) (Remote host closed the connection) |
2022-05-24 06:33:52 +0200 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2022-05-24 06:35:19 +0200 | kaskal- | (~kaskal@2001:4bb8:2e8:3abf:bc97:9581:8b80:8f4b) |
2022-05-24 06:35:35 +0200 | Infinite | (~Infinite@49.39.127.241) |
2022-05-24 06:36:03 +0200 | kaskal | (~kaskal@2001:4bb8:2e0:b5bd:e3c0:d71b:f32:84d8) (Ping timeout: 244 seconds) |
2022-05-24 06:36:13 +0200 | dsrt^ | (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 256 seconds) |
2022-05-24 06:37:33 +0200 | <jackdk> | yeah I do it a lot. Less so these days, GHC seems to be better about handling record field clashes. generic-lens also helps |
2022-05-24 06:43:44 +0200 | frost | (~frost@user/frost) (Quit: Client closed) |
2022-05-24 06:44:42 +0200 | k8yun | (~k8yun@user/k8yun) |
2022-05-24 06:44:49 +0200 | k8yun | (~k8yun@user/k8yun) (Remote host closed the connection) |
2022-05-24 06:54:00 +0200 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
2022-05-24 06:56:05 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
2022-05-24 06:56:22 +0200 | y04nn | (~y04nn@2001:ac8:28:95::a17e) (Ping timeout: 272 seconds) |
2022-05-24 06:57:25 +0200 | dsrt^ | (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) |
2022-05-24 06:59:06 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-05-24 06:59:17 +0200 | Unicorn_Princess | (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection) |
2022-05-24 06:59:39 +0200 | Vajb | (~Vajb@2001:999:42:1446:8c2:e3f9:b580:2e45) |
2022-05-24 07:00:21 +0200 | michalz | (~michalz@185.246.204.105) |
2022-05-24 07:07:22 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) (Ping timeout: 252 seconds) |
2022-05-24 07:14:59 +0200 | kst | Guest8247 |
2022-05-24 07:19:18 +0200 | frost | (~frost@user/frost) |
2022-05-24 07:21:11 +0200 | <c_wraith> | Wait, why isn't there eqInt# ? |
2022-05-24 07:23:30 +0200 | <dolio> | Because it's called (==#). |
2022-05-24 07:23:36 +0200 | <c_wraith> | ah, of course. |
2022-05-24 07:24:10 +0200 | <c_wraith> | thank you |
2022-05-24 07:28:51 +0200 | dsrt^ | (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 276 seconds) |
2022-05-24 07:30:42 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-05-24 07:33:40 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-05-24 07:36:03 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
2022-05-24 07:38:13 +0200 | dsrt^ | (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) |
2022-05-24 07:38:18 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2022-05-24 07:40:58 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-05-24 07:41:09 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Ping timeout: 244 seconds) |
2022-05-24 07:44:53 +0200 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-05-24 07:45:10 +0200 | img | (~img@user/img) |
2022-05-24 07:54:58 +0200 | <Inst> | @itchyjunk |
2022-05-24 07:54:58 +0200 | <lambdabot> | Unknown command, try @list |
2022-05-24 07:55:07 +0200 | <Inst> | [itchyjunk] how goes your haskell journey? |
2022-05-24 08:02:52 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) |
2022-05-24 08:04:06 +0200 | <[itchyjunk]> | Inst, I have seriously slacked off. |
2022-05-24 08:04:17 +0200 | <Inst> | did you ever get past the monad barrier? |
2022-05-24 08:04:20 +0200 | <Inst> | I need more monad tutorials |
2022-05-24 08:04:32 +0200 | <Inst> | if we make enough burritos we'll actually create one that works |
2022-05-24 08:04:43 +0200 | <[itchyjunk]> | Lol, i have a slightly better idea of what it is but not, i am not fully clear on it. |
2022-05-24 08:04:52 +0200 | <[itchyjunk]> | Concept of lifts and such from category theory. |
2022-05-24 08:05:27 +0200 | liebach | (~liebach@srv2047.zentience.net) |
2022-05-24 08:05:30 +0200 | <[itchyjunk]> | But I need to code up a) tree search stuff b) parser it seems. to forward my programming journey. |
2022-05-24 08:05:55 +0200 | <[itchyjunk]> | The crypto channel also recommend i implement a certain thing but might not be feasible for now |
2022-05-24 08:06:15 +0200 | <[itchyjunk]> | What have you been exploring, Inst ? |
2022-05-24 08:06:30 +0200 | <Inst> | haskell |
2022-05-24 08:06:39 +0200 | <Inst> | i'd think i have a good understanding of what a monad is, which i'd say is |
2022-05-24 08:06:46 +0200 | <Inst> | a type which can absorb another type |
2022-05-24 08:07:01 +0200 | <Inst> | and implements lawful <$>, pure, <*>, and >>= |
2022-05-24 08:07:10 +0200 | mattil | (~mattil@helsinki.portalify.com) |
2022-05-24 08:07:13 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
2022-05-24 08:07:36 +0200 | <Inst> | the internal variation among monads is obscene |
2022-05-24 08:08:20 +0200 | <Inst> | but the only commonality is that there's a type constructor that can take 1 type variable (either is not a monad, either e is) |
2022-05-24 08:08:32 +0200 | <Inst> | <$>, pure, <*>, >>= |
2022-05-24 08:10:10 +0200 | <[itchyjunk]> | hmm absorb other types |
2022-05-24 08:10:13 +0200 | <[itchyjunk]> | not sure what that means |
2022-05-24 08:10:30 +0200 | dsrt^ | (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 240 seconds) |
2022-05-24 08:10:36 +0200 | srk | (~sorki@user/srk) (Ping timeout: 244 seconds) |
2022-05-24 08:10:38 +0200 | Maxdaman1us | (~Maxdamant@user/maxdamantus) |
2022-05-24 08:10:42 +0200 | <[itchyjunk]> | but i gotta go for now! |
2022-05-24 08:11:00 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2022-05-24 08:11:37 +0200 | Maxdamantus | (~Maxdamant@user/maxdamantus) (Ping timeout: 260 seconds) |
2022-05-24 08:12:21 +0200 | srk | (~sorki@user/srk) |
2022-05-24 08:13:06 +0200 | stiell_ | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2022-05-24 08:13:30 +0200 | stiell_ | (~stiell@gateway/tor-sasl/stiell) |
2022-05-24 08:16:50 +0200 | <Inst> | i'm still unsure |
2022-05-24 08:16:53 +0200 | <Inst> | if anyone wants to play with me |
2022-05-24 08:17:32 +0200 | <Inst> | if we define a monad as containing a type constructor, a structure, and a value |
2022-05-24 08:18:17 +0200 | <Inst> | is the function embedded in the constructor StateT a value or part of the structure? It's technically a value, yes, but if you pure something into it |
2022-05-24 08:18:40 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 246 seconds) |
2022-05-24 08:18:41 +0200 | <Inst> | you end up with a \s -> (a,s) |
2022-05-24 08:19:49 +0200 | <[exa]> | Inst: the "value" as a "bindable type of the result of monadic computation" is different from the "value" that actually represents the computation |
2022-05-24 08:20:13 +0200 | <Inst> | yeah tbh the problem is that if you think of monads as sequencing effects and so on, or computations in a context, it's too abstract for me :( |
2022-05-24 08:20:22 +0200 | <Inst> | and probably most people |
2022-05-24 08:21:38 +0200 | <[exa]> | yeah the semantics of "sequencing effects" is already too specialized |
2022-05-24 08:22:27 +0200 | <[exa]> | I imagine "Monad a" as "something that may produce values of type a, but wrapped with some special semantics" |
2022-05-24 08:24:03 +0200 | <[exa]> | such as "a might not even exist" (Maybe), "there might be an error" (Either, Except), "there are multiple a's and user is free to choose" (List, LogicT), "computer needs access to IO actions to actually produce the a" (IO), "a is accompanied with a monoidal log of stuff" (Writer), "the whole computation needs a global parameter" (Reader), etc etc |
2022-05-24 08:24:03 +0200 | shriekingnoise | (~shrieking@201.231.16.156) (Quit: Quit) |
2022-05-24 08:24:07 +0200 | <Inst> | i'm sort of fascinated by this hypothesis, since monads are a Zen / Daoist like incommunicable idea |
2022-05-24 08:24:10 +0200 | <Inst> | given monad curse |
2022-05-24 08:24:48 +0200 | <Inst> | maybe everyone has a different conception of monads, even people who purportedly "grok" monads |
2022-05-24 08:24:59 +0200 | <[exa]> | the main problem of monad tutorial is that Monad does not "exist" as an object, which makes communication to post-OOP programmers really challenging |
2022-05-24 08:25:41 +0200 | <Inst> | it's easier just to declare the function embedded in the state monad as part of the structure, tbh |
2022-05-24 08:25:53 +0200 | <[exa]> | so don't think about it as an object, it's an unifying concept that allows you to write `do` and `<-` in the programs without thinking what exact computation there is |
2022-05-24 08:25:53 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-05-24 08:26:01 +0200 | <Inst> | and say proxy x is proxy and the value is just subsumed ala Nothing |
2022-05-24 08:26:24 +0200 | <Inst> | i mean the way i want to think about it is "any data type for which there's a lawful instance of fmap, pure, <*>, >>=" |
2022-05-24 08:26:48 +0200 | <[exa]> | there are multiple lawful instances for most of the types though |
2022-05-24 08:27:00 +0200 | dsrt^ | (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) |
2022-05-24 08:27:13 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
2022-05-24 08:28:53 +0200 | <[exa]> | how's proxy related to that? |
2022-05-24 08:29:15 +0200 | Luj4 | (~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb) (Quit: The Lounge - https://thelounge.chat) |
2022-05-24 08:29:25 +0200 | <[exa]> | also "the function embedded in the state monad" -- part of which structure? |
2022-05-24 08:29:35 +0200 | Luj4 | (~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb) |
2022-05-24 08:29:52 +0200 | Luj4 | Luj |
2022-05-24 08:32:05 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Ping timeout: 258 seconds) |
2022-05-24 08:33:10 +0200 | <Inst> | i mean before i grokked state, i assumed, there were just two things to a monad |
2022-05-24 08:33:37 +0200 | <Inst> | data declaration, implementations of fmap (of which there's only a single lawful instance), pure, <*>, >>= |
2022-05-24 08:33:55 +0200 | <Inst> | structure + methods |
2022-05-24 08:34:27 +0200 | <Inst> | now state / reader |
2022-05-24 08:34:34 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
2022-05-24 08:35:02 +0200 | <Inst> | then you have (->) r, which has no data declaration (iirc) but only instances |
2022-05-24 08:35:48 +0200 | <[exa]> | it has a data declaration, although it's tricky because it's glued to (->) |
2022-05-24 08:36:22 +0200 | <[exa]> | you may imagine there is `data (->) parameter result = ....????....` written somewhere deep in GHC internals :] |
2022-05-24 08:37:00 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-05-24 08:37:13 +0200 | <[exa]> | `Monad ((->) r)` is an instance for the case if someone would like to glue 2 such functions together with >> |
2022-05-24 08:39:12 +0200 | christiansen | (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) |
2022-05-24 08:39:33 +0200 | <[exa]> | luckily, standard ReaderT and Reader have the (->) wrapped in a newtype, you have _roughly_: `newtype Reader r a = Reader (r -> a)` |
2022-05-24 08:39:48 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2022-05-24 08:41:58 +0200 | <Inst> | also it creates annoyances because I want to read up about the Reader / ReaderT monad |
2022-05-24 08:44:13 +0200 | <[exa]> | the problem there is that many people just want to use ((->) r) as reader because it is super useful, esp with applicatives (`NewStructure <$> getOldStructField1 <*> getOldStructField2 $ oldStructure`), on the other hand it creates this bit of confusion because (->) is suddenly used for several different things |
2022-05-24 08:45:38 +0200 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 255 seconds) |
2022-05-24 08:48:24 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) (Remote host closed the connection) |
2022-05-24 08:48:41 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) |
2022-05-24 08:49:11 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2022-05-24 08:49:54 +0200 | <[exa]> | btw decomposing this is a nice related exercise: |
2022-05-24 08:50:47 +0200 | <[exa]> | > (drop <> take) 3 "Hello" |
2022-05-24 08:50:48 +0200 | <lambdabot> | "loHel" |
2022-05-24 08:53:14 +0200 | <Inst> | since when have functions had a <> instance? |
2022-05-24 08:53:16 +0200 | <Inst> | my eyes |
2022-05-24 08:53:51 +0200 | <[exa]> | functions that return monoids can be glued together -- you copy argument to both, and glue the results together |
2022-05-24 08:53:55 +0200 | <Inst> | https://stackoverflow.com/questions/44344706/how-do-i-use-a-monoid-instance-of-a-function |
2022-05-24 08:54:00 +0200 | <[exa]> | s/monoids/semigroups/ |
2022-05-24 08:54:34 +0200 | echoreply | (~echoreply@2001:19f0:9002:1f3b:5400:ff:fe6f:8b8d) (Quit: WeeChat 2.8) |
2022-05-24 08:55:02 +0200 | echoreply | (~echoreply@45.32.163.16) |
2022-05-24 08:55:07 +0200 | <[exa]> | (actually I'd say it also admits monoid, you can make `mempty` function as `const mempty`) |
2022-05-24 08:56:06 +0200 | <Inst> | how long has it been sport to instance (-> a) and other function types into typeclasses? |
2022-05-24 08:56:21 +0200 | <[exa]> | well, since forever |
2022-05-24 08:57:22 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) (Ping timeout: 252 seconds) |
2022-05-24 08:57:25 +0200 | <jackdk> | https://typeclasses.com/timeline/a-system-of-constructor-classes Haskell 1.3, maybe? |
2022-05-24 08:57:39 +0200 | <Inst> | also how does that even work? those are (a -> b... oh fuck |
2022-05-24 08:57:52 +0200 | <Inst> | it's valid for (a -> b) |
2022-05-24 08:57:55 +0200 | <[exa]> | you see, it's not very clean (look at the error messages sometime!) but super useful. I'd say that wrapping (->) in newtypes is actually a newer attempt to make the thing fail more gracefully |
2022-05-24 08:58:00 +0200 | <jackdk> | Functor has kind (Type -> Type) -> Constraint |
2022-05-24 08:58:00 +0200 | <Inst> | but (c -> d) can be an a |
2022-05-24 08:58:20 +0200 | <jackdk> | (->) has kind (very roughly, ignoring levity) Type -> Type -> Type |
2022-05-24 08:58:29 +0200 | <[exa]> | Inst: "how does that work" you mean the monoid example or something else? |
2022-05-24 08:58:43 +0200 | <jackdk> | ((->) r) therefore has kind Type -> Type |
2022-05-24 08:59:11 +0200 | <Inst> | * -> * -> * |
2022-05-24 09:00:42 +0200 | <[exa]> | Inst: *->*->* reads "you give it 2 representable Types and get a representable Type" |
2022-05-24 09:00:54 +0200 | jonathanx | (~jonathan@c-5eea24de-74736162.cust.telenor.se) |
2022-05-24 09:01:24 +0200 | Infinite | (~Infinite@49.39.127.241) (Ping timeout: 252 seconds) |
2022-05-24 09:03:43 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:40c3:3bf4:26ef:9b59) |
2022-05-24 09:05:29 +0200 | Ether17 | (~Ether17@103.217.111.249) |
2022-05-24 09:05:32 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:f100:eba8:305a:4575) (Remote host closed the connection) |
2022-05-24 09:09:47 +0200 | Ether17 | (~Ether17@103.217.111.249) (Client Quit) |
2022-05-24 09:11:23 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
2022-05-24 09:15:16 +0200 | mbuf | (~Shakthi@31.32.33.168) |
2022-05-24 09:15:24 +0200 | dsrt^ | (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 258 seconds) |
2022-05-24 09:18:52 +0200 | juri_ | (~juri@178.63.35.222) (Ping timeout: 246 seconds) |
2022-05-24 09:20:45 +0200 | cfricke | (~cfricke@user/cfricke) |
2022-05-24 09:25:48 +0200 | juri_ | (~juri@178.63.35.222) |
2022-05-24 09:27:29 +0200 | acidjnk | (~acidjnk@p200300d0c7068b81f860a70d68b3f398.dip0.t-ipconnect.de) |
2022-05-24 09:30:08 +0200 | juri_ | (~juri@178.63.35.222) (Remote host closed the connection) |
2022-05-24 09:30:37 +0200 | alp | (~alp@user/alp) |
2022-05-24 09:31:32 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2022-05-24 09:33:27 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) |
2022-05-24 09:33:59 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-05-24 09:34:27 +0200 | Infinite | (~Infinite@49.39.127.241) |
2022-05-24 09:35:06 +0200 | vonfry | (~user@139.227.167.223) |
2022-05-24 09:37:42 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) (Ping timeout: 252 seconds) |
2022-05-24 09:46:00 +0200 | Feuermagier | (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
2022-05-24 09:46:54 +0200 | kuribas | (~user@ptr-17d51emj6sz64bjx9i7.18120a2.ip6.access.telenet.be) |
2022-05-24 09:49:10 +0200 | juri_ | (~juri@178.63.35.222) |
2022-05-24 09:49:16 +0200 | machinedgod | (~machinedg@24.105.81.50) |
2022-05-24 09:52:09 +0200 | chomwitt | (~chomwitt@2a02:587:dc1e:cc00:f079:d366:2a9:ed7f) |
2022-05-24 09:56:21 +0200 | vonfry | (~user@139.227.167.223) (Quit: ERC 5.4 (IRC client for GNU Emacs 28.1)) |
2022-05-24 09:56:27 +0200 | ccntrq | (~Thunderbi@172.209.94.92.rev.sfr.net) |
2022-05-24 09:58:17 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-05-24 10:00:13 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
2022-05-24 10:02:03 +0200 | ccntrq | (~Thunderbi@172.209.94.92.rev.sfr.net) (Quit: ccntrq) |
2022-05-24 10:02:19 +0200 | ccntrq | (~Thunderbi@172.209.94.92.rev.sfr.net) |
2022-05-24 10:03:57 +0200 | zer0bitz | (~zer0bitz@2001:2003:f444:8f00:1ddb:ab6a:8605:cb77) |
2022-05-24 10:04:16 +0200 | jonathanx | (~jonathan@c-5eea24de-74736162.cust.telenor.se) (Ping timeout: 244 seconds) |
2022-05-24 10:04:22 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Ping timeout: 246 seconds) |
2022-05-24 10:04:54 +0200 | jgeerds | (~jgeerds@d53604b0.access.ecotel.net) |
2022-05-24 10:05:00 +0200 | nate1 | (~nate@98.45.169.16) |
2022-05-24 10:05:56 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:f100:eba8:305a:4575) |
2022-05-24 10:07:47 +0200 | jonathanx | (~jonathan@94.234.36.222) |
2022-05-24 10:09:57 +0200 | nate1 | (~nate@98.45.169.16) (Ping timeout: 244 seconds) |
2022-05-24 10:10:10 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:f100:eba8:305a:4575) (Ping timeout: 250 seconds) |
2022-05-24 10:10:42 +0200 | jonathanx_ | (~jonathan@dyn-5-sc.cdg.chalmers.se) |
2022-05-24 10:11:22 +0200 | <merijn> | representable is an awkward choice of word, as it already comes with connotations from other uses |
2022-05-24 10:11:55 +0200 | <merijn> | Additionally, depending on your POV * can also take types that I wouldn't meaningfully call "representable" (like, is Void representable?) |
2022-05-24 10:13:07 +0200 | jonathanx | (~jonathan@94.234.36.222) (Ping timeout: 246 seconds) |
2022-05-24 10:15:29 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:7590:47:8cf5:145e) |
2022-05-24 10:16:30 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
2022-05-24 10:17:24 +0200 | eggplant_ | (~Eggplanta@2600:1700:bef1:5e10:30cf:ca81:9fb0:16f5) |
2022-05-24 10:18:47 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
2022-05-24 10:20:08 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:7590:47:8cf5:145e) (Ping timeout: 255 seconds) |
2022-05-24 10:20:13 +0200 | __monty__ | (~toonn@user/toonn) |
2022-05-24 10:20:36 +0200 | <[Leary]> | It occurs to me that almost all important typeclasses are just Monoid in fancy dress. Semigroup? Half a Monoid. Num? Two Monoids. Category? Indexed Monoid. Applicative? Monoidal Functor (free edition). Alternative? Monoidal Functor (natural edition). Foldable? Monoid homomorphisms (free edition). Traversable? Foldable for Applicative; that's Monoid. Monad? Kleisli composition; Category; Monoid. |
2022-05-24 10:21:14 +0200 | <[Leary]> | I can't believe we let stupid Applicative and stupid Monad keep their stupid laws when we could bask all in their soft monoidal glow. |
2022-05-24 10:21:51 +0200 | zeenk | (~zeenk@2a02:2f04:a104:ef00:10:581:f80f:b980) |
2022-05-24 10:21:56 +0200 | eggplant_ | (~Eggplanta@2600:1700:bef1:5e10:30cf:ca81:9fb0:16f5) (Ping timeout: 255 seconds) |
2022-05-24 10:22:00 +0200 | <tomsmeding> | I suspect that indexed monoid laws for Monad would be less readable than the current monad laws |
2022-05-24 10:22:06 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 258 seconds) |
2022-05-24 10:22:37 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-05-24 10:22:46 +0200 | <merijn> | [Leary]: It appears you are rediscovering algebra >.> |
2022-05-24 10:22:49 +0200 | turlando | (~turlando@user/turlando) (Quit: turlando) |
2022-05-24 10:23:25 +0200 | <merijn> | [Leary]: You can reformulate monad laws more nicely if you use Kleisli fish instead of >>= |
2022-05-24 10:23:52 +0200 | <merijn> | "f >=> return = f = return >=> f" |
2022-05-24 10:24:11 +0200 | <[Leary]> | Yes, that's what I want people to see when they find Monad in the Prelude haddocks. |
2022-05-24 10:24:28 +0200 | turlando | (~turlando@93.51.40.51) |
2022-05-24 10:24:28 +0200 | turlando | (~turlando@93.51.40.51) (Changing host) |
2022-05-24 10:24:28 +0200 | turlando | (~turlando@user/turlando) |
2022-05-24 10:24:32 +0200 | <merijn> | but Kleisli fish is inconvenient to work with most of the time |
2022-05-24 10:24:51 +0200 | <tomsmeding> | haskell appeals, broadly, to two groups of people: algebraicists and programmers |
2022-05-24 10:25:07 +0200 | <tomsmeding> | I think this law reformulation would not be an improvement for the second group :p |
2022-05-24 10:26:30 +0200 | <[Leary]> | It really should unify and simplify things for all, but it's my bias to consider 'abstract' ~ 'simple'. |
2022-05-24 10:26:49 +0200 | <tomsmeding> | abstract is _not_ simple for most people |
2022-05-24 10:27:02 +0200 | <tomsmeding> | well, sometimes it is, if the abstraction is particularly useful to _reason_ about the thing |
2022-05-24 10:27:16 +0200 | <tomsmeding> | monad/monoid/etc. abstractions are super useful |
2022-05-24 10:27:21 +0200 | <kuribas> | merijn: well, people prefer (.) over ($), why not (>=>) over (>>=)? |
2022-05-24 10:27:38 +0200 | <tomsmeding> | but abstracting the laws of them wouldn't carry its weight, I think |
2022-05-24 10:28:22 +0200 | <tomsmeding> | an alternative could be to add a note to the haddocks to mention the monoid-based laws; a note is probably enough to inspire the right ideas into the people that are receptive to them :p |
2022-05-24 10:29:13 +0200 | turlando | (~turlando@user/turlando) (Ping timeout: 246 seconds) |
2022-05-24 10:29:52 +0200 | turlando | (~turlando@93.51.40.51) |
2022-05-24 10:29:52 +0200 | turlando | (~turlando@93.51.40.51) (Changing host) |
2022-05-24 10:29:52 +0200 | turlando | (~turlando@user/turlando) |
2022-05-24 10:29:52 +0200 | rodental | (~rodental@38.146.5.222) |
2022-05-24 10:30:12 +0200 | <tomsmeding> | I guess the overarching consideration is: will the reformulation of the laws make programmers write better code |
2022-05-24 10:30:15 +0200 | <tomsmeding> | I doubt that |
2022-05-24 10:30:43 +0200 | <tomsmeding> | and the _reference documentation_ of the language should be about empowering programmers |
2022-05-24 10:31:26 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2022-05-24 10:33:15 +0200 | <Philonous> | It seems like rust managed to steels Haskell's thunder just by avoiding any mention of graduate math. Haskeller's response: Hold my morphisms, I'ma add more category theory. ;) |
2022-05-24 10:33:29 +0200 | <Philonous> | steal* |
2022-05-24 10:34:14 +0200 | <kuribas> | call it flatMap or linq instead of "Monad", then people are happy :) |
2022-05-24 10:34:38 +0200 | <kuribas> | or "query expression". |
2022-05-24 10:34:46 +0200 | <tomsmeding> | Computation |
2022-05-24 10:34:50 +0200 | <[Leary]> | I feel like it could actually help new Haskellers learn all these super useful abstractions without getting lost in Applicative/Monad/etc tutorial land, since they can see that they're all variations on the same thing, and can understand them in terms of the simple version. |
2022-05-24 10:35:59 +0200 | <tomsmeding> | [Leary]: you may well be right, I don't know. There is an effort ongoing to improve haskell documentation; you could submit a proposal there |
2022-05-24 10:36:20 +0200 | <kuribas> | The main problem is when people use blogposts to learn about these concepts. |
2022-05-24 10:36:23 +0200 | <kuribas> | Or papers. |
2022-05-24 10:36:54 +0200 | <kuribas> | Instead of a proper haskell handbook. |
2022-05-24 10:37:06 +0200 | <kuribas> | Even the shittiest handbook is better than blogposts. |
2022-05-24 10:38:35 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 258 seconds) |
2022-05-24 10:39:25 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-05-24 10:39:25 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-05-24 10:39:25 +0200 | wroathe | (~wroathe@user/wroathe) |
2022-05-24 10:40:32 +0200 | CiaoSen | (~Jura@p200300c9571e4b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-05-24 10:40:35 +0200 | <tomsmeding> | [Leary]: not quite sure what the process is (if there is a real process), but Hecate would be the person to contact |
2022-05-24 10:41:30 +0200 | Guest810 | (~Guest8@2a02:26f7:cd46:4000:b4f0:3297:ff94:57fe) |
2022-05-24 10:41:49 +0200 | Guest810 | (~Guest8@2a02:26f7:cd46:4000:b4f0:3297:ff94:57fe) (Client Quit) |
2022-05-24 10:42:06 +0200 | Guest8 | (~Guest8@2a02:26f7:cd46:4000:b4f0:3297:ff94:57fe) |
2022-05-24 10:42:35 +0200 | <kuribas> | The goal of base haskell reference documentation is not to be beginner friendly, but to be concise and informative. |
2022-05-24 10:43:28 +0200 | akegalj | (~akegalj@93.140.42.158) |
2022-05-24 10:43:30 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-05-24 10:43:37 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.5) |
2022-05-24 10:43:58 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-05-24 10:50:02 +0200 | Guest8 | (~Guest8@2a02:26f7:cd46:4000:b4f0:3297:ff94:57fe) (Quit: Client closed) |
2022-05-24 10:50:29 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.5) |
2022-05-24 10:55:45 +0200 | mattil | (~mattil@helsinki.portalify.com) (Remote host closed the connection) |
2022-05-24 10:55:59 +0200 | jakalx | (~jakalx@base.jakalx.net) () |
2022-05-24 10:59:41 +0200 | ubert | (~Thunderbi@2a02:8109:9880:303c:d373:59fe:aee5:a075) |
2022-05-24 10:59:57 +0200 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2022-05-24 11:07:39 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
2022-05-24 11:16:43 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2022-05-24 11:23:17 +0200 | Maxdaman1us | Maxdamantus |
2022-05-24 11:27:33 +0200 | oo_miguel | (~pi@77.252.47.226) |
2022-05-24 11:29:05 +0200 | titibandit | (~thibaut@2a00:8a60:c000:1:8a13:bf74:b2:8d47) |
2022-05-24 11:29:10 +0200 | <oo_miguel> | Hello, what makes me wonder: does stackage give any other guarantees then that, the subset of packages "will compile"? I noticed that LTS-18.28 includes pacakges marked as deprecated (on hackage). |
2022-05-24 11:29:38 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2022-05-24 11:29:49 +0200 | <merijn> | oo_miguel: "we may have run some of the tests too" |
2022-05-24 11:31:26 +0200 | mcglk | (~mcglk@131.191.49.120) (Read error: Connection reset by peer) |
2022-05-24 11:31:48 +0200 | <oo_miguel> | ok thanks |
2022-05-24 11:32:16 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-05-24 11:34:53 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
2022-05-24 11:37:09 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2022-05-24 11:39:11 +0200 | polux | (~polux@51-15-169-172.rev.poneytelecom.eu) (Remote host closed the connection) |
2022-05-24 11:39:12 +0200 | <Inst> | kuribas : why (.) over ($)? |
2022-05-24 11:39:21 +0200 | <Inst> | is there some performance improvement? . is unpredictable |
2022-05-24 11:39:34 +0200 | <dminuoso_> | No, it's mostly just convention |
2022-05-24 11:39:34 +0200 | <Inst> | and often ends with a block . . . . $ data |
2022-05-24 11:39:44 +0200 | <dminuoso_> | There's some practical considerations, but its really just a convention. |
2022-05-24 11:40:08 +0200 | <kuribas> | Inst: it's to avoid naming a single variable, which is very, very difficult. |
2022-05-24 11:40:09 +0200 | <Inst> | at least, the main advantage is that . works when you're stuffing it into a name |
2022-05-24 11:40:20 +0200 | <dminuoso_> | Inst: yup, that's the sole reason. |
2022-05-24 11:40:27 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2022-05-24 11:40:30 +0200 | <dminuoso_> | also (.) is visually more pleasing than ($) I guess |
2022-05-24 11:40:36 +0200 | <Inst> | also can we agree to rename variables names in Haskell? |
2022-05-24 11:40:44 +0200 | <Inst> | or are names dangerous terms? |
2022-05-24 11:41:35 +0200 | <dminuoso_> | A variable is just a particular kind of name. Im not sure what benefits you gain from using a more overloaded name. |
2022-05-24 11:41:44 +0200 | <Inst> | *term |
2022-05-24 11:42:05 +0200 | <dminuoso_> | If you intend to differentiate it from "variables from traditional programming languages", rename them to mutable stores/references instead? |
2022-05-24 11:42:45 +0200 | polux | (~polux@51-15-169-172.rev.poneytelecom.eu) |
2022-05-24 11:43:42 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.5) |
2022-05-24 11:43:42 +0200 | <merijn> | Are we gonna rename variables in math too? >.> |
2022-05-24 11:45:53 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-05-24 11:46:15 +0200 | <Inst> | hahahaha |
2022-05-24 11:46:22 +0200 | <Inst> | does term work? |
2022-05-24 11:46:26 +0200 | <Inst> | term level vs type level |
2022-05-24 11:47:31 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
2022-05-24 11:47:40 +0200 | <merijn> | A term refers to any syntactically valid expression |
2022-05-24 11:48:01 +0200 | <merijn> | So "a" is a term, but so is "1 + 1" or "map f [1..10]" |
2022-05-24 11:48:30 +0200 | <Franciman> | but not "map :: (a -> b) -> [a] -> [b]" |
2022-05-24 11:49:01 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-05-24 11:49:07 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-05-24 11:49:45 +0200 | <merijn> | I mean, add some parens and it would be |
2022-05-24 11:49:47 +0200 | jgeerds | (~jgeerds@d53604b0.access.ecotel.net) (Ping timeout: 260 seconds) |
2022-05-24 11:50:03 +0200 | <merijn> | > (map :: (a -> b) -> [a] -> [b]) (+1) [1..5] |
2022-05-24 11:50:06 +0200 | <lambdabot> | [2,3,4,5,6] |
2022-05-24 11:50:11 +0200 | <merijn> | Looks like a valid term to me! |
2022-05-24 11:50:42 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
2022-05-24 11:51:43 +0200 | <kritzefitz> | > let f = map :: (a -> b) -> [a] -> [b] in f (+1) [1..5] |
2022-05-24 11:51:46 +0200 | <lambdabot> | [2,3,4,5,6] |
2022-05-24 11:52:05 +0200 | <kritzefitz> | Even works without parens in the right context. |
2022-05-24 11:52:26 +0200 | <Philonous> | dminuoso_, I thought they are conventionally called "reference cell" |
2022-05-24 11:53:06 +0200 | <Philonous> | Hmm, google doesn't find it, so perhaps not. |
2022-05-24 11:54:03 +0200 | <Franciman> | > map :: (a -> b) -> [a] -> [b] |
2022-05-24 11:54:05 +0200 | <lambdabot> | error: |
2022-05-24 11:54:05 +0200 | <lambdabot> | • No instance for (Typeable a0) |
2022-05-24 11:54:05 +0200 | <lambdabot> | arising from a use of ‘show_M28235964043627188638’ |
2022-05-24 11:54:12 +0200 | <Franciman> | ?? .. |
2022-05-24 11:54:12 +0200 | <lambdabot> | .. |
2022-05-24 11:54:24 +0200 | albertoCCz | (~albertoCC@nat-cvi-a-5086.ugr.es) |
2022-05-24 11:54:25 +0200 | <Franciman> | oh |
2022-05-24 11:55:05 +0200 | <Franciman> | so type signature assertions are expressions cool |
2022-05-24 11:55:16 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Ping timeout: 248 seconds) |
2022-05-24 11:55:29 +0200 | <Franciman> | when i write `myFunc :: its-type` it's syntactically the same as writing `3` |
2022-05-24 11:55:35 +0200 | <Franciman> | ? |
2022-05-24 11:56:11 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2022-05-24 11:56:17 +0200 | <merijn> | Franciman: More like "(foo :: bar)" is equivalent to "foo" in an expression context |
2022-05-24 11:56:31 +0200 | <merijn> | (well, foo with a potentially restricted type, I suppose) |
2022-05-24 11:58:13 +0200 | <Franciman> | skewy |
2022-05-24 11:58:15 +0200 | <Franciman> | i see |
2022-05-24 11:58:36 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2022-05-24 11:59:14 +0200 | Infinite | (~Infinite@49.39.127.241) (Ping timeout: 252 seconds) |
2022-05-24 12:00:40 +0200 | albertoCCz | (~albertoCC@nat-cvi-a-5086.ugr.es) (Remote host closed the connection) |
2022-05-24 12:01:42 +0200 | hsw | (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) |
2022-05-24 12:03:00 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) |
2022-05-24 12:04:13 +0200 | ubert | (~Thunderbi@2a02:8109:9880:303c:d373:59fe:aee5:a075) (Remote host closed the connection) |
2022-05-24 12:04:25 +0200 | ubert | (~Thunderbi@2a02:8109:9880:303c:a9d1:8889:83c0:913) |
2022-05-24 12:06:27 +0200 | <oo_miguel> | I just came across this: https://hackage.haskell.org/packages/preferred-versions Is there some elegant way to check if my stack project is using libraries within this ranges, and warn me otherweise? |
2022-05-24 12:08:14 +0200 | y04nn | (~y04nn@2001:ac8:28:95::a17e) |
2022-05-24 12:11:00 +0200 | CiaoSen | (~Jura@p200300c9571e4b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2022-05-24 12:14:27 +0200 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-05-24 12:15:20 +0200 | xff0x | (~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp) (Ping timeout: 255 seconds) |
2022-05-24 12:16:19 +0200 | zaquest | (~notzaques@5.130.79.72) (Remote host closed the connection) |
2022-05-24 12:19:23 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2022-05-24 12:23:19 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
2022-05-24 12:24:54 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) (Ping timeout: 252 seconds) |
2022-05-24 12:26:31 +0200 | zaquest | (~notzaques@5.130.79.72) |
2022-05-24 12:27:51 +0200 | feliix42_ | (~felix@gibbs.uberspace.de) (Read error: Connection reset by peer) |
2022-05-24 12:27:51 +0200 | AWizzArd | (~code@gehrels.uberspace.de) (Read error: Connection reset by peer) |
2022-05-24 12:28:05 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-05-24 12:29:47 +0200 | jmdaemon | (~jmdaemon@user/jmdaemon) (Ping timeout: 240 seconds) |
2022-05-24 12:29:50 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
2022-05-24 12:30:22 +0200 | CiaoSen | (~Jura@p200300c9571e4b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-05-24 12:30:43 +0200 | feliix42 | (~felix@gibbs.uberspace.de) |
2022-05-24 12:32:18 +0200 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
2022-05-24 12:33:20 +0200 | AWizzArd | (~code@gehrels.uberspace.de) |
2022-05-24 12:34:55 +0200 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds) |
2022-05-24 12:39:16 +0200 | ubert | (~Thunderbi@2a02:8109:9880:303c:a9d1:8889:83c0:913) (Ping timeout: 244 seconds) |
2022-05-24 12:43:28 +0200 | gurkenglas | (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) |
2022-05-24 12:43:29 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-05-24 12:51:40 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
2022-05-24 12:56:13 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Ping timeout: 246 seconds) |
2022-05-24 12:57:24 +0200 | sabry | (~sabry@197.37.57.10) |
2022-05-24 12:58:29 +0200 | xff0x | (~xff0x@b133147.ppp.asahi-net.or.jp) |
2022-05-24 12:58:54 +0200 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-05-24 13:03:19 +0200 | bwe | (~bwe@2a01:4f8:1c1c:4878::2) (Remote host closed the connection) |
2022-05-24 13:06:58 +0200 | polux | (~polux@51-15-169-172.rev.poneytelecom.eu) (Remote host closed the connection) |
2022-05-24 13:07:40 +0200 | ubert | (~Thunderbi@2a02:8109:9880:303c:ad75:2aef:bfae:2e4b) |
2022-05-24 13:08:42 +0200 | bwe | (~bwe@2a01:4f8:1c1c:4878::2) |
2022-05-24 13:09:33 +0200 | polux | (~polux@51-15-169-172.rev.poneytelecom.eu) |
2022-05-24 13:11:38 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
2022-05-24 13:14:47 +0200 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2022-05-24 13:20:44 +0200 | acidjnk | (~acidjnk@p200300d0c7068b81f860a70d68b3f398.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
2022-05-24 13:21:01 +0200 | <[exa]> | merijn: btw is there any better "kinda intuitive" word choice instead of representable? |
2022-05-24 13:22:08 +0200 | <merijn> | Some people use "concrete type", but I also dislike, so I guess the answer is "no"? :p |
2022-05-24 13:22:30 +0200 | <merijn> | https://gist.github.com/merijn/796b8e041885df870fbb53b7191644b6 and all that |
2022-05-24 13:22:53 +0200 | <[exa]> | "actual type, not just Type" |
2022-05-24 13:23:11 +0200 | <dminuoso_> | I like concrete types. There is normal concrete, reinforced concrete, precast concrete, air entrained concrete.. |
2022-05-24 13:23:22 +0200 | <merijn> | I dislike TypInType (and thus) Type, too :p |
2022-05-24 13:23:25 +0200 | <[exa]> | the gist recommends saying monotype? |
2022-05-24 13:23:56 +0200 | <merijn> | It definitely does not? |
2022-05-24 13:24:01 +0200 | <[exa]> | "something that can have values" <- broken too |
2022-05-24 13:24:06 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-05-24 13:24:37 +0200 | <merijn> | [exa]: No, that is well-defined in haskell |
2022-05-24 13:24:48 +0200 | <[exa]> | next time I'll go "yeah the tangible *type* you know which one I mean *wink wink*" |
2022-05-24 13:25:03 +0200 | <[exa]> | merijn: works with Void? |
2022-05-24 13:25:12 +0200 | <merijn> | [exa]: Void has a value in Haskell |
2022-05-24 13:25:14 +0200 | y04nn | (~y04nn@2001:ac8:28:95::a17e) (Ping timeout: 272 seconds) |
2022-05-24 13:25:15 +0200 | <merijn> | undefined |
2022-05-24 13:25:16 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
2022-05-24 13:25:17 +0200 | <dminuoso_> | [exa]: Dont conflate necessity with sufficiency |
2022-05-24 13:25:21 +0200 | <[exa]> | ok I'm happy |
2022-05-24 13:25:26 +0200 | <dminuoso_> | Ah but yeah |
2022-05-24 13:25:37 +0200 | <tdammers> | depends which side of that fast-and-loose fence you're looking from |
2022-05-24 13:25:39 +0200 | <[exa]> | "valuable types" it is. :D |
2022-05-24 13:25:43 +0200 | <dminuoso_> | Even if we dont consider bottom, its still correct |
2022-05-24 13:25:57 +0200 | z0k | (~z0k@39.40.43.194) |
2022-05-24 13:26:26 +0200 | <merijn> | Ignoring non-Haskell extensions like levity and unboxed types, all values have a type of kind * and all types of kind * are inhabitated (i.e. have a value), even if that value is only bottom |
2022-05-24 13:26:27 +0200 | <dminuoso_> | Sometimes you hear people saying that * is the kind of habitable (not necessarily habitated) types |
2022-05-24 13:27:17 +0200 | <[exa]> | hm habitable/inhabited is actually good, will use that |
2022-05-24 13:27:17 +0200 | <[exa]> | thanks :] |
2022-05-24 13:27:38 +0200 | <merijn> | [exa]: It is, because that at least has an unambiguous definition :) |
2022-05-24 13:28:10 +0200 | <[exa]> | true |
2022-05-24 13:29:08 +0200 | <dminuoso_> | From an implementation point of view, they are all considered inhabited, including bottom, which is what we have the DataKind'ed RuntimeRep for |
2022-05-24 13:30:07 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Ping timeout: 260 seconds) |
2022-05-24 13:30:18 +0200 | <dminuoso_> | So you have `type Type = TYPE LiftedRep` with `data TYPE (a :: RuntimeRep)` |
2022-05-24 13:30:42 +0200 | dminuoso_ | idly ponders about the irony of writing type three times in a row in `type Type = TYPE ...` |
2022-05-24 13:33:27 +0200 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-05-24 13:37:02 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2022-05-24 13:37:06 +0200 | sabry | (~sabry@197.37.57.10) (Quit: Client closed) |
2022-05-24 13:39:05 +0200 | christiansen | (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) (Quit: christiansen) |
2022-05-24 13:39:16 +0200 | christiansen | (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) |
2022-05-24 13:39:21 +0200 | <jackdk> | At least we don't have t@ype |
2022-05-24 13:40:04 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
2022-05-24 13:41:26 +0200 | akegalj | (~akegalj@93.140.42.158) (Quit: leaving) |
2022-05-24 13:50:08 +0200 | acidjnk | (~acidjnk@p200300d0c7068b816dc0927526e38c9a.dip0.t-ipconnect.de) |
2022-05-24 13:52:07 +0200 | acidjnk | (~acidjnk@p200300d0c7068b816dc0927526e38c9a.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
2022-05-24 13:54:12 +0200 | acidjnk | (~acidjnk@p200300d0c7068b81149b5d5938d07897.dip0.t-ipconnect.de) |
2022-05-24 13:55:17 +0200 | srk- | (~sorki@user/srk) |
2022-05-24 13:56:23 +0200 | srk| | (~sorki@user/srk) |
2022-05-24 13:57:56 +0200 | srk | (~sorki@user/srk) (Ping timeout: 255 seconds) |
2022-05-24 13:58:54 +0200 | mokee | (~mokee@37.228.215.190) |
2022-05-24 13:59:31 +0200 | srk| | srk |
2022-05-24 13:59:34 +0200 | srk- | (~sorki@user/srk) (Ping timeout: 246 seconds) |
2022-05-24 14:06:30 +0200 | nate1 | (~nate@98.45.169.16) |
2022-05-24 14:11:20 +0200 | nate1 | (~nate@98.45.169.16) (Ping timeout: 258 seconds) |
2022-05-24 14:15:30 +0200 | mima | (~mmh@net-93-148-81-31.cust.dsl.teletu.it) |
2022-05-24 14:20:37 +0200 | kenaryn | (~aurele@89-88-44-27.abo.bbox.fr) |
2022-05-24 14:29:03 +0200 | benin2 | (~benin@2401:4900:2323:425e:4253:4476:82af:eac4) |
2022-05-24 14:31:35 +0200 | benin | (~benin@183.82.30.29) (Ping timeout: 260 seconds) |
2022-05-24 14:31:36 +0200 | benin2 | benin |
2022-05-24 14:37:48 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) |
2022-05-24 14:42:02 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) (Ping timeout: 252 seconds) |
2022-05-24 14:45:58 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2022-05-24 14:52:05 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2022-05-24 14:54:27 +0200 | polyphem | (~polyphem@2a00:20:c014:d33:d5f0:b25b:c4f6:506) |
2022-05-24 15:00:42 +0200 | benin9 | (~benin@183.82.178.251) |
2022-05-24 15:02:01 +0200 | sabry | (~sabry@197.37.57.10) |
2022-05-24 15:02:44 +0200 | benin | (~benin@2401:4900:2323:425e:4253:4476:82af:eac4) (Ping timeout: 255 seconds) |
2022-05-24 15:02:44 +0200 | benin9 | benin |
2022-05-24 15:10:34 +0200 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.5) |
2022-05-24 15:11:54 +0200 | acidjnk | (~acidjnk@p200300d0c7068b81149b5d5938d07897.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
2022-05-24 15:12:35 +0200 | sabry | (~sabry@197.37.57.10) (Quit: Client closed) |
2022-05-24 15:16:36 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:30cf:ca81:9fb0:16f5) |
2022-05-24 15:20:06 +0200 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) |
2022-05-24 15:21:36 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
2022-05-24 15:22:54 +0200 | <kaol> | I think I need to update the old Java joke: Now I have a ProblemProfunctor. |
2022-05-24 15:23:26 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-05-24 15:25:15 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-05-24 15:26:14 +0200 | mcglk | (~mcglk@131.191.49.120) |
2022-05-24 15:26:29 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
2022-05-24 15:28:10 +0200 | dcleonarski | (~user@2804:d51:479c:4300:c312:71c1:ee9b:86ea) |
2022-05-24 15:28:25 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 248 seconds) |
2022-05-24 15:28:47 +0200 | cheater | (~Username@user/cheater) |
2022-05-24 15:29:42 +0200 | raym | (~raym@user/raym) (Ping timeout: 260 seconds) |
2022-05-24 15:29:43 +0200 | polyphem | (~polyphem@2a00:20:c014:d33:d5f0:b25b:c4f6:506) (Read error: Connection reset by peer) |
2022-05-24 15:29:52 +0200 | Pickchea | (~private@user/pickchea) |
2022-05-24 15:30:24 +0200 | raym | (~raym@user/raym) |
2022-05-24 15:31:10 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Quit: Leaving) |
2022-05-24 15:32:01 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-05-24 15:32:01 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-05-24 15:32:01 +0200 | wroathe | (~wroathe@user/wroathe) |
2022-05-24 15:33:25 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2022-05-24 15:36:20 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) |
2022-05-24 15:44:23 +0200 | vpan | (~0@212.117.1.172) |
2022-05-24 15:44:54 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
2022-05-24 15:50:59 +0200 | mbuf | (~Shakthi@31.32.33.168) (Quit: Leaving) |
2022-05-24 15:55:26 +0200 | coot | (~coot@213.134.190.95) (Quit: coot) |
2022-05-24 15:56:38 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 244 seconds) |
2022-05-24 15:57:29 +0200 | mc47 | (~mc47@xmonad/TheMC47) |
2022-05-24 16:00:01 +0200 | mbuf | (~Shakthi@31.32.33.168) |
2022-05-24 16:03:21 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2022-05-24 16:03:24 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-05-24 16:04:40 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2022-05-24 16:05:38 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:30cf:ca81:9fb0:16f5) (Remote host closed the connection) |
2022-05-24 16:06:27 +0200 | alp | (~alp@user/alp) (Ping timeout: 260 seconds) |
2022-05-24 16:10:33 +0200 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) |
2022-05-24 16:11:12 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:40c3:3bf4:26ef:9b59) (Quit: WeeChat 2.8) |
2022-05-24 16:14:26 +0200 | frost | (~frost@user/frost) (Ping timeout: 252 seconds) |
2022-05-24 16:15:01 +0200 | jonathanx_ | (~jonathan@dyn-5-sc.cdg.chalmers.se) (Remote host closed the connection) |
2022-05-24 16:23:44 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:30cf:ca81:9fb0:16f5) |
2022-05-24 16:25:40 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-05-24 16:30:10 +0200 | Unicorn_Princess | (~Unicorn_P@93-103-228-248.dynamic.t-2.net) |
2022-05-24 16:31:18 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) (Ping timeout: 252 seconds) |
2022-05-24 16:33:53 +0200 | jakalx | (~jakalx@base.jakalx.net) () |
2022-05-24 16:36:17 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
2022-05-24 16:36:42 +0200 | dcleonarski | (~user@2804:d51:479c:4300:c312:71c1:ee9b:86ea) (Remote host closed the connection) |
2022-05-24 16:38:44 +0200 | coot | (~coot@213.134.190.95) |
2022-05-24 16:38:52 +0200 | zebrag | (~chris@user/zebrag) |
2022-05-24 16:39:16 +0200 | shriekingnoise | (~shrieking@201.231.16.156) |
2022-05-24 16:40:06 +0200 | coot | (~coot@213.134.190.95) (Client Quit) |
2022-05-24 16:40:41 +0200 | coot | (~coot@213.134.190.95) |
2022-05-24 16:40:50 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Ping timeout: 255 seconds) |
2022-05-24 16:41:08 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2022-05-24 16:41:40 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 248 seconds) |
2022-05-24 16:44:15 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-05-24 16:45:03 +0200 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2022-05-24 16:47:40 +0200 | jonathanx | (~jonathan@c-5eea24de-74736162.cust.telenor.se) |
2022-05-24 16:48:04 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 240 seconds) |
2022-05-24 16:49:24 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-05-24 16:49:37 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:30cf:ca81:9fb0:16f5) (Remote host closed the connection) |
2022-05-24 16:50:48 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds) |
2022-05-24 16:51:32 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:30cf:ca81:9fb0:16f5) |
2022-05-24 16:52:35 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-05-24 16:53:49 +0200 | jonathanx_ | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2022-05-24 16:56:43 +0200 | jonathanx | (~jonathan@c-5eea24de-74736162.cust.telenor.se) (Ping timeout: 256 seconds) |
2022-05-24 17:00:42 +0200 | Pickchea | (~private@user/pickchea) (Ping timeout: 260 seconds) |
2022-05-24 17:01:27 +0200 | titibandit | (~thibaut@2a00:8a60:c000:1:8a13:bf74:b2:8d47) (Quit: Leaving.) |
2022-05-24 17:01:57 +0200 | APic | (apic@apic.name) (Quit: Boot tut gut™.) |
2022-05-24 17:02:26 +0200 | christiansen | (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) (Ping timeout: 255 seconds) |
2022-05-24 17:02:45 +0200 | Guest5451 | (~Guest54@132.208.12.88) |
2022-05-24 17:08:03 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
2022-05-24 17:09:56 +0200 | mvk | (~mvk@2607:fea8:5ce3:8500::ba9a) |
2022-05-24 17:12:04 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-05-24 17:17:47 +0200 | noctux | (~noctux@user/noctux) (Read error: Connection reset by peer) |
2022-05-24 17:17:47 +0200 | mbuf | (~Shakthi@31.32.33.168) (Quit: Leaving) |
2022-05-24 17:18:01 +0200 | noctux | (~noctux@user/noctux) |
2022-05-24 17:22:37 +0200 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 258 seconds) |
2022-05-24 17:23:09 +0200 | APic | (apic@apic.name) |
2022-05-24 17:23:59 +0200 | machinedgod | (~machinedg@24.105.81.50) |
2022-05-24 17:25:37 +0200 | gurkenglas | (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) (Ping timeout: 256 seconds) |
2022-05-24 17:26:02 +0200 | shapr | (~user@pool-173-73-44-186.washdc.fios.verizon.net) |
2022-05-24 17:26:13 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) |
2022-05-24 17:27:29 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) (Remote host closed the connection) |
2022-05-24 17:27:46 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) |
2022-05-24 17:32:10 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) (Ping timeout: 252 seconds) |
2022-05-24 17:33:34 +0200 | hololeap | (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
2022-05-24 17:34:09 +0200 | <romes[m]> | What could one say on linear vs hmatrix |
2022-05-24 17:35:44 +0200 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds) |
2022-05-24 17:35:50 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2022-05-24 17:36:25 +0200 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 258 seconds) |
2022-05-24 17:37:39 +0200 | myme | (~myme@2a01:799:d5a:cd00:b525:9c95:fca0:da0b) (Ping timeout: 240 seconds) |
2022-05-24 17:38:11 +0200 | hololeap | (~hololeap@user/hololeap) |
2022-05-24 17:38:45 +0200 | myme | (~myme@2a01:799:d5a:cd00:ca17:d4bb:5fc8:9461) |
2022-05-24 17:39:19 +0200 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection) |
2022-05-24 17:39:23 +0200 | dsrt^ | (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) |
2022-05-24 17:39:52 +0200 | Guest5451 | (~Guest54@132.208.12.88) (Ping timeout: 252 seconds) |
2022-05-24 17:39:59 +0200 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
2022-05-24 17:40:01 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) |
2022-05-24 17:40:44 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-05-24 17:40:57 +0200 | gurkenglas | (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) |
2022-05-24 17:44:25 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:30cf:ca81:9fb0:16f5) (Remote host closed the connection) |
2022-05-24 17:44:34 +0200 | <romes[m]> | Additionally: When compiling splitmix with ghc-9.2 I get this error:... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/9de0ac94fc5c6309a2cd004b3d7c4200b304…) |
2022-05-24 17:44:55 +0200 | <romes[m]> | How would one go about fixing this? |
2022-05-24 17:45:34 +0200 | hololeap | (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
2022-05-24 17:49:00 +0200 | seriously_pc | (~seriously@159.53.46.142) |
2022-05-24 17:49:36 +0200 | hololeap | (~hololeap@user/hololeap) |
2022-05-24 17:49:50 +0200 | <c_wraith> | what os are you on? |
2022-05-24 17:49:59 +0200 | <c_wraith> | and hardware, for that matter.... |
2022-05-24 17:50:18 +0200 | <romes[m]> | macOS Intel 12.3.1 |
2022-05-24 17:50:57 +0200 | slack1256 | (~slack1256@191.126.99.64) |
2022-05-24 17:53:18 +0200 | searemind | (~u0_a2289@122.161.50.103) |
2022-05-24 17:53:57 +0200 | <slack1256> | Now we will have OverloadedRecordDot, will you change the name of your accessor to be shorter? Previous advice was to prefix accessor with the type name or initial. This meant having declarations as `data User = User { userId :: Int, uAge :: Int }`. Is there still value on writing them like that with this new extension? |
2022-05-24 17:54:35 +0200 | <geekosaur> | not everyone likes OverloadedRecordDot |
2022-05-24 17:55:06 +0200 | <slack1256> | Apart from that. |
2022-05-24 17:56:34 +0200 | <tdammers> | like many other GHC extensions, this one makes the language "bigger", which may add cognitive overhead - that's the core thing behind the "simple haskell" "movement" |
2022-05-24 17:57:19 +0200 | <slack1256> | I know you guys probably have an axe to grind and are not happy about the extension. |
2022-05-24 17:57:22 +0200 | <c_wraith> | slack1256: no. now that we have OverloadedRecordFields I will change the name of my accessors to be short. |
2022-05-24 17:57:34 +0200 | <c_wraith> | slack1256: And I will never touch any sort of record dots |
2022-05-24 17:58:00 +0200 | <c_wraith> | Well. DuplicateRecordFields is actually the relevant one |
2022-05-24 17:58:16 +0200 | <c_wraith> | But other extensions make it actually usable |
2022-05-24 17:58:30 +0200 | <c_wraith> | like OverloadedLabels |
2022-05-24 17:58:57 +0200 | <tdammers> | also keep in mind that overloaded record dots effectively introduce type variables, and "too many" type variables (including implicit ones like these) means that you may need to explicitly annotate types in inconvenient spots, which destroys the conciseness advantage you might have gotten otherwise |
2022-05-24 17:58:59 +0200 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
2022-05-24 17:59:21 +0200 | <romes[m]> | tdammers: I wouldn't say it adds cognitive overhead; I think being able to use the same name is what one would expect at first, but only later realizes isn't possible, I know I tried at first to use the same name for two different things, only to get an error short after |
2022-05-24 18:00:09 +0200 | <tdammers> | romes[m]: the problem is that it's not 100% transparent - to reliably use it in all use cases, you have to understand how it is really sugar on top of HasField, so you kind of have to know how that works |
2022-05-24 18:00:28 +0200 | <romes[m]> | I see :) |
2022-05-24 18:00:49 +0200 | <tdammers> | you won't run into it with trivial examples, but when your project grows bigger, and you start piling up a couple abstractions and generalizations, it might come and bite you |
2022-05-24 18:01:14 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) (Remote host closed the connection) |
2022-05-24 18:01:20 +0200 | <c_wraith> | my objection to all this record dot stuff is that optics/lenses work better. Record dot stuff is a misguided attempt to prevent people coming in from other languages from having to learn anything. |
2022-05-24 18:01:31 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) |
2022-05-24 18:01:48 +0200 | <yushyin> | NoFieldSelectors + NamedFieldPuns + RecordWildCards will get you quite far, even without OverloadedRecordDot |
2022-05-24 18:02:01 +0200 | seriously_pc38 | (~seriously@159.53.110.217) |
2022-05-24 18:02:24 +0200 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-05-24 18:05:54 +0200 | seriously_pc | (~seriously@159.53.46.142) (Ping timeout: 252 seconds) |
2022-05-24 18:07:02 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2022-05-24 18:08:01 +0200 | nate1 | (~nate@98.45.169.16) |
2022-05-24 18:09:10 +0200 | Nunci | (~Nunci@2a02:a31b:3f:a400:e9a4:4a8d:7641:da1) |
2022-05-24 18:10:09 +0200 | Nunci | (~Nunci@2a02:a31b:3f:a400:e9a4:4a8d:7641:da1) (Client Quit) |
2022-05-24 18:12:30 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) (Ping timeout: 252 seconds) |
2022-05-24 18:13:15 +0200 | nate1 | (~nate@98.45.169.16) (Ping timeout: 260 seconds) |
2022-05-24 18:14:18 +0200 | [_] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-05-24 18:15:20 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 255 seconds) |
2022-05-24 18:19:40 +0200 | CiaoSen | (~Jura@p200300c9571e4b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2022-05-24 18:23:36 +0200 | searemind | (~u0_a2289@122.161.50.103) (Remote host closed the connection) |
2022-05-24 18:25:55 +0200 | dsrt^ | (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 246 seconds) |
2022-05-24 18:28:47 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4) |
2022-05-24 18:29:44 +0200 | econo | (uid147250@user/econo) |
2022-05-24 18:32:35 +0200 | sabry | (~sabry@197.37.57.10) |
2022-05-24 18:35:51 +0200 | seriously_pc38 | (~seriously@159.53.110.217) (Quit: Client closed) |
2022-05-24 18:36:27 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2022-05-24 18:37:01 +0200 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
2022-05-24 18:38:12 +0200 | dsrt^ | (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) |
2022-05-24 18:39:21 +0200 | king_gs | (~Thunderbi@187.201.97.18) |
2022-05-24 18:44:42 +0200 | jollygood2 | (~bc8147f2@199.204.85.195) |
2022-05-24 18:44:49 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:30cf:ca81:9fb0:16f5) |
2022-05-24 18:46:04 +0200 | zincy | (~zincy@2a00:23c8:970c:4801:5ce3:174f:85c3:8411) |
2022-05-24 18:47:55 +0200 | dennilo | (~dennilo@88.245.33.141) |
2022-05-24 18:48:00 +0200 | dennilo | (~dennilo@88.245.33.141) () |
2022-05-24 18:49:32 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:30cf:ca81:9fb0:16f5) (Ping timeout: 255 seconds) |
2022-05-24 18:49:52 +0200 | <geekosaur> | aaaand there's ghc 9.4.1 alpha2 |
2022-05-24 18:50:11 +0200 | <romes[m]> | Congrats! :) |
2022-05-24 18:51:29 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2022-05-24 18:52:04 +0200 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
2022-05-24 18:54:33 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
2022-05-24 18:54:40 +0200 | <maerwald> | is there a good tutorial on how to build an interpolated quasiquoter? |
2022-05-24 18:58:40 +0200 | alp | (~alp@user/alp) |
2022-05-24 18:59:20 +0200 | benin | (~benin@183.82.178.251) (Ping timeout: 260 seconds) |
2022-05-24 18:59:48 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Ping timeout: 276 seconds) |
2022-05-24 19:02:32 +0200 | <maerwald> | geekosaur: and the bindist is still defunct :D |
2022-05-24 19:03:13 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-05-24 19:03:40 +0200 | <geekosaur> | https://downloads.haskell.org/ghc/9.4.1-alpha2/ ? |
2022-05-24 19:03:43 +0200 | benin | (~benin@183.82.204.153) |
2022-05-24 19:04:02 +0200 | <geekosaur> | unless you mean it's broken somehow; it seems to be there and fairly complete to me |
2022-05-24 19:04:24 +0200 | <maerwald> | yes, DESTDIR is not honoured |
2022-05-24 19:04:29 +0200 | <geekosaur> | oh |
2022-05-24 19:04:30 +0200 | sabry | (~sabry@197.37.57.10) (Quit: Client closed) |
2022-05-24 19:04:50 +0200 | <maerwald> | apparently this was not backported, so now I can manually fix 10 bindists again |
2022-05-24 19:05:06 +0200 | <geekosaur> | wheee |
2022-05-24 19:05:25 +0200 | <sm> | GHC devs should add maerwald to their release test suite |
2022-05-24 19:05:34 +0200 | <sm> | g'day all |
2022-05-24 19:05:38 +0200 | <geekosaur> | go add your patch to the milestone so it gets backported? |
2022-05-24 19:05:52 +0200 | <geekosaur> | ohai |
2022-05-24 19:08:13 +0200 | vpan | (~0@212.117.1.172) (Quit: Leaving.) |
2022-05-24 19:09:08 +0200 | king_gs | (~Thunderbi@187.201.97.18) (Read error: Connection reset by peer) |
2022-05-24 19:10:27 +0200 | <Bulby[m]> | how do I say `Foo <$> ("someprefix" <>) foo` correctly |
2022-05-24 19:12:31 +0200 | king_gs | (~Thunderbi@187.201.97.18) |
2022-05-24 19:12:49 +0200 | <Bulby[m]> | given it's a Monad |
2022-05-24 19:14:07 +0200 | <Bulby[m]> | would it be |
2022-05-24 19:14:07 +0200 | <Bulby[m]> | `Foo . ("someprefix" <>) <$> foo` ? |
2022-05-24 19:14:25 +0200 | Guest54 | (~Guest54@132.208.12.88) |
2022-05-24 19:17:11 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:30cf:ca81:9fb0:16f5) |
2022-05-24 19:17:34 +0200 | hololeap | (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
2022-05-24 19:20:44 +0200 | gawen | (~gawen@user/gawen) (Quit: cya) |
2022-05-24 19:22:04 +0200 | gawen | (~gawen@user/gawen) |
2022-05-24 19:22:20 +0200 | hololeap | (~hololeap@user/hololeap) |
2022-05-24 19:28:35 +0200 | _ht | (~quassel@231-169-21-31.ftth.glasoperator.nl) |
2022-05-24 19:28:58 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) |
2022-05-24 19:30:04 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-05-24 19:31:21 +0200 | ccntrq | (~Thunderbi@172.209.94.92.rev.sfr.net) (Remote host closed the connection) |
2022-05-24 19:31:42 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) |
2022-05-24 19:32:49 +0200 | Guest54 | (~Guest54@132.208.12.88) (Quit: Client closed) |
2022-05-24 19:34:43 +0200 | <lyxia> | that looks like a good thing to try |
2022-05-24 19:35:21 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) (Remote host closed the connection) |
2022-05-24 19:35:38 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) |
2022-05-24 19:37:53 +0200 | jollygood2 | (~bc8147f2@199.204.85.195) (Quit: CGI:IRC (EOF)) |
2022-05-24 19:38:03 +0200 | jollygood2 | (~bc8147f2@199.204.85.195) |
2022-05-24 19:42:36 +0200 | vysn | (~vysn@user/vysn) |
2022-05-24 19:44:10 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) (Ping timeout: 252 seconds) |
2022-05-24 19:45:21 +0200 | machinedgod | (~machinedg@24.105.81.50) |
2022-05-24 19:52:49 +0200 | lagooned | (~lagooned@108-208-149-42.lightspeed.hstntx.sbcglobal.net) |
2022-05-24 19:52:49 +0200 | vicfred | (~vicfred@user/vicfred) (Quit: Leaving) |
2022-05-24 19:53:10 +0200 | <monochrom> | I might even start with `(\x -> Foo ("someprefix" <> x)) <$> foo` for beginners. |
2022-05-24 19:54:45 +0200 | <Bulby[m]> | HAHAH |
2022-05-24 19:54:57 +0200 | <Bulby[m]> | some days i'm beginner somedays i'm decent |
2022-05-24 19:55:36 +0200 | <geekosaur> | I think that applies to all of us, if we're being honest :) |
2022-05-24 19:58:57 +0200 | <Bulby[m]> | I work with polysemy (not well) then forget how fmap works 🙃 |
2022-05-24 20:00:08 +0200 | Adam_ | (uid555638@id-555638.lymington.irccloud.com) |
2022-05-24 20:05:38 +0200 | ubert | (~Thunderbi@2a02:8109:9880:303c:ad75:2aef:bfae:2e4b) (Remote host closed the connection) |
2022-05-24 20:05:39 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-05-24 20:06:02 +0200 | notzmv | (~zmv@user/notzmv) (Ping timeout: 255 seconds) |
2022-05-24 20:06:10 +0200 | Midjak | (~Midjak@82.66.147.146) |
2022-05-24 20:06:50 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-05-24 20:11:53 +0200 | king_gs | (~Thunderbi@187.201.97.18) (Read error: Connection reset by peer) |
2022-05-24 20:12:34 +0200 | stiell_ | (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds) |
2022-05-24 20:12:50 +0200 | king_gs | (~Thunderbi@187.201.97.18) |
2022-05-24 20:14:54 +0200 | jgeerds | (~jgeerds@d53604b0.access.ecotel.net) |
2022-05-24 20:18:34 +0200 | hololeap | (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
2022-05-24 20:20:35 +0200 | stiell_ | (~stiell@gateway/tor-sasl/stiell) |
2022-05-24 20:21:39 +0200 | hololeap | (~hololeap@user/hololeap) |
2022-05-24 20:24:25 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:30cf:ca81:9fb0:16f5) (Remote host closed the connection) |
2022-05-24 20:40:20 +0200 | Vajb | (~Vajb@2001:999:42:1446:8c2:e3f9:b580:2e45) (Ping timeout: 272 seconds) |
2022-05-24 20:40:34 +0200 | Vajb | (~Vajb@2001:999:600:879a:e69c:7638:2849:8a14) |
2022-05-24 20:42:41 +0200 | alp_ | (~alp@user/alp) |
2022-05-24 20:43:46 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
2022-05-24 20:44:56 +0200 | alp | (~alp@user/alp) (Ping timeout: 244 seconds) |
2022-05-24 20:45:34 +0200 | king_gs | (~Thunderbi@187.201.97.18) (Quit: king_gs) |
2022-05-24 20:47:15 +0200 | [_] | [itchyjunk] |
2022-05-24 20:48:30 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
2022-05-24 20:49:22 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Ping timeout: 260 seconds) |
2022-05-24 20:54:58 +0200 | agumonkey | (~user@88.163.231.79) |
2022-05-24 20:55:34 +0200 | Chai-T-Rex | (~ChaiTRex@user/chaitrex) (Ping timeout: 240 seconds) |
2022-05-24 20:56:09 +0200 | thonoht[m] | (~thonohtma@2001:470:69fc:105::d7be) |
2022-05-24 20:58:36 +0200 | Chai-T-Rex | (~ChaiTRex@user/chaitrex) |
2022-05-24 20:58:36 +0200 | Vajb | (~Vajb@2001:999:600:879a:e69c:7638:2849:8a14) (Read error: Connection reset by peer) |
2022-05-24 20:59:00 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2022-05-24 20:59:12 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) |
2022-05-24 21:00:02 +0200 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
2022-05-24 21:02:17 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 255 seconds) |
2022-05-24 21:02:32 +0200 | sabry | (~sabry@197.37.57.10) |
2022-05-24 21:02:56 +0200 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Read error: Connection reset by peer) |
2022-05-24 21:03:34 +0200 | hololeap | (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
2022-05-24 21:03:52 +0200 | jakalx | (~jakalx@base.jakalx.net) () |
2022-05-24 21:04:03 +0200 | vysn | (~vysn@user/vysn) (Ping timeout: 244 seconds) |
2022-05-24 21:04:16 +0200 | LukeHoersten | (~LukeHoers@user/lukehoersten) |
2022-05-24 21:04:47 +0200 | LukeHoersten | (~LukeHoers@user/lukehoersten) (Client Quit) |
2022-05-24 21:07:26 +0200 | mokee | (~mokee@37.228.215.190) (Quit: off) |
2022-05-24 21:08:37 +0200 | hololeap | (~hololeap@user/hololeap) |
2022-05-24 21:09:41 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2022-05-24 21:10:40 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Quit: ec) |
2022-05-24 21:11:55 +0200 | Guest49 | (~Guest49@105.112.44.177) |
2022-05-24 21:12:12 +0200 | <Guest49> | Hello all |
2022-05-24 21:12:25 +0200 | <geekosaur> | hi |
2022-05-24 21:13:09 +0200 | <Guest49> | I want to write a simple stack based vm in haskell that just supports creating a variable, addition and multiplicatoin, could I please get some pointers on how to start ? |
2022-05-24 21:15:00 +0200 | <Guest49> | I have a format for the Opcodes already |
2022-05-24 21:15:10 +0200 | notzmv | (~zmv@user/notzmv) |
2022-05-24 21:17:35 +0200 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds) |
2022-05-24 21:18:28 +0200 | jgeerds | (~jgeerds@d53604b0.access.ecotel.net) (Ping timeout: 248 seconds) |
2022-05-24 21:18:46 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) (Ping timeout: 252 seconds) |
2022-05-24 21:22:25 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-05-24 21:24:49 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:30cf:ca81:9fb0:16f5) |
2022-05-24 21:25:18 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 272 seconds) |
2022-05-24 21:25:39 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) |
2022-05-24 21:25:52 +0200 | <int-e> | Do you have any input or output? Any interaction with the "real world"? |
2022-05-24 21:27:42 +0200 | <int-e> | I mean this could be as simple as a recursive function taking a stack (a list of values), a value store (mapping variables to their values, Data.Map is your friend here), a program (list? vector or array?), and probably an instruction pointer as arguments and returning whatever final result you desire. |
2022-05-24 21:28:20 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2022-05-24 21:28:43 +0200 | <int-e> | or as difficult as a monad transformer stack that adds a reader for immutable parts, state for input, stack, and variables, and a writer for output... or a monad transformer on top of IO for direct interaction with the real world. |
2022-05-24 21:28:58 +0200 | <int-e> | So it's really hard to answer this generically. |
2022-05-24 21:29:17 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:30cf:ca81:9fb0:16f5) (Ping timeout: 255 seconds) |
2022-05-24 21:29:46 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) (Ping timeout: 252 seconds) |
2022-05-24 21:31:00 +0200 | <EvanR> | OpCode -> VM -> VM |
2022-05-24 21:31:09 +0200 | <EvanR> | write a function with this type |
2022-05-24 21:31:30 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-05-24 21:31:30 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-05-24 21:31:30 +0200 | wroathe | (~wroathe@user/wroathe) |
2022-05-24 21:31:35 +0200 | <Guest49> | int-e No I do not have any interactoin with the real world. |
2022-05-24 21:32:17 +0200 | <EvanR> | from what it sounds like, your VM is like... a stack. (a list) |
2022-05-24 21:32:24 +0200 | <Guest49> | Yes it is |
2022-05-24 21:33:23 +0200 | <EvanR> | so case analysis on the OpCode, do something with the VM |
2022-05-24 21:33:33 +0200 | <EvanR> | like push, pop, pop twice and push the answer, etc |
2022-05-24 21:33:45 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:30cf:ca81:9fb0:16f5) |
2022-05-24 21:33:56 +0200 | <Hecate> | I should write a VM with an instruction set similar to that of RISCV |
2022-05-24 21:34:14 +0200 | <maerwald> | too much work |
2022-05-24 21:34:49 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-05-24 21:34:49 +0200 | <maerwald> | programming sucks... get a rice pudding and a good movie instead |
2022-05-24 21:35:01 +0200 | <Guest49> | EvanR and int-e Thanks lemme think and try something out , Ill come back with more questions if I have |
2022-05-24 21:35:04 +0200 | hololeap | (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
2022-05-24 21:36:35 +0200 | mixfix41 | (~sdenynine@user/mixfix41) |
2022-05-24 21:39:41 +0200 | hololeap | (~hololeap@user/hololeap) |
2022-05-24 21:39:55 +0200 | <EvanR> | I like malbolge's VM. It has zero chance of ever being used to accomplish anything |
2022-05-24 21:40:14 +0200 | <EvanR> | it's not even a good RNG |
2022-05-24 21:43:55 +0200 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-05-24 21:44:26 +0200 | acidjnk | (~acidjnk@p200300d0c7068b8138d05884d43f32c7.dip0.t-ipconnect.de) |
2022-05-24 21:45:29 +0200 | sweater | (~sweater@206.81.18.26) (Remote host closed the connection) |
2022-05-24 21:46:42 +0200 | sweater | (~sweater@206.81.18.26) |
2022-05-24 21:46:43 +0200 | <int-e> | EvanR: the amazing thing about Malbolge is that people have figured out how to implement actual loops in the language (rather than straight line programs which don't have to care about the instructions being modified as they're executed), |
2022-05-24 21:46:53 +0200 | <int-e> | "language" |
2022-05-24 21:47:29 +0200 | <tomsmeding> | well it's a language |
2022-05-24 21:47:33 +0200 | <tomsmeding> | technically |
2022-05-24 21:47:56 +0200 | <int-e> | I suspect linguists would disagree :P |
2022-05-24 21:48:15 +0200 | <darkling> | Is there a quine in Malbolge yet? |
2022-05-24 21:48:23 +0200 | <int-e> | FWIW, I don't think machine code is a language either, and malbolge is closer to that than to the usual programming languages. |
2022-05-24 21:48:50 +0200 | <int-e> | https://lutter.cc/malbolge/quine.html (didn't test) |
2022-05-24 21:49:52 +0200 | <darkling> | o_O Wow |
2022-05-24 21:50:00 +0200 | <EvanR> | the bottom of that program is telling |
2022-05-24 21:50:12 +0200 | <int-e> | That... barely fits, using 59032 out of 59049 possible characters. |
2022-05-24 21:50:42 +0200 | <tomsmeding> | int-e: right, then our definitions of "language" don't agree :p |
2022-05-24 21:50:59 +0200 | <EvanR> | any data type is a language? |
2022-05-24 21:51:08 +0200 | <tomsmeding> | language is syntax + semantics |
2022-05-24 21:51:21 +0200 | <EvanR> | you lost me at semantics xD |
2022-05-24 21:51:26 +0200 | <tomsmeding> | meaning |
2022-05-24 21:51:35 +0200 | <EvanR> | i know the meaning of... |
2022-05-24 21:51:45 +0200 | <int-e> | tomsmeding: tbf, I have several notions of "language", including the formal language one; it's just not my default. |
2022-05-24 21:51:56 +0200 | <tomsmeding> | right |
2022-05-24 21:52:13 +0200 | <EvanR> | since semantics always given as more syntax, I call BS |
2022-05-24 21:52:22 +0200 | <tomsmeding> | EvanR: is it? |
2022-05-24 21:52:55 +0200 | coot | (~coot@213.134.190.95) (Quit: coot) |
2022-05-24 21:53:14 +0200 | <geekosaur> | at somew point you have to define something not in terms of more syntax. you may think of these as primitives or axioms or whatever |
2022-05-24 21:53:59 +0200 | <tomsmeding> | usually set theory, or something similar |
2022-05-24 21:54:06 +0200 | <int-e> | Yeah... we can't actually have turtles alls the way down |
2022-05-24 21:54:28 +0200 | <EvanR> | ah, set theory. The gold standard for meaningfulness |
2022-05-24 21:54:29 +0200 | <int-e> | Even set theory is built upon natural language, so something quite informal. |
2022-05-24 21:54:45 +0200 | <tomsmeding> | I mean, yes :p |
2022-05-24 21:54:58 +0200 | <tomsmeding> | unfortunately we humans don't really have much else to resort to |
2022-05-24 21:55:09 +0200 | <monochrom> | Unpopular opinion: s/built upon/communicated through/ |
2022-05-24 21:55:11 +0200 | <dolio> | Sure they do. |
2022-05-24 21:55:20 +0200 | <int-e> | But I feel it's best to leave this to the (mathematical) philosophers :) |
2022-05-24 21:57:12 +0200 | <monochrom> | What I personally do is I listen to a set of rules communicated to me in one way or another, and I build a formal model in my mind. But it's formal. |
2022-05-24 21:57:36 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2022-05-24 21:57:38 +0200 | seriously_pc | (~seriously@159.53.78.142) |
2022-05-24 21:57:54 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
2022-05-24 21:58:05 +0200 | <maerwald> | is there a jwt library that doesn't depend on cryptonite? |
2022-05-24 21:58:12 +0200 | <dolio> | Scenario: natural numbers correspond to cows in your barn. Arithmetic corresponds to cows entering and leaving. Cows aren't syntax. |
2022-05-24 21:58:15 +0200 | <geekosaur> | someone nstill has to define "formal", though. which gets us into metamathematics |
2022-05-24 22:00:08 +0200 | _ht | (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection) |
2022-05-24 22:00:45 +0200 | ystael | (~ystael@user/ystael) (Read error: Connection reset by peer) |
2022-05-24 22:01:26 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-05-24 22:02:38 +0200 | <seriously_pc> | Hey all... coming form the haskell-beginners chat to ask a question here. I've been learning haskell for about a month now and I'm trying to build a rest service with it. I've done the starter tutorials for yesod and servant; I've chose to go with servant as it seems to be more API oriented (meaning, more of a microservice, as opposed to serving |
2022-05-24 22:02:39 +0200 | <seriously_pc> | web pages). I'm having alot of trouble with the language pragmas (extensions)... I was notified by another user here that servant and yesod are built upon the principles of "type level programming". Alot of these extensions are beyond the scope of what I've learned so far in haskell.... Do you guys know of a easier way for me to get started with my |
2022-05-24 22:02:39 +0200 | <seriously_pc> | rest service? Not involving any "type level programming" ? |
2022-05-24 22:03:02 +0200 | Psybur | (~Psybur@c-76-123-45-25.hsd1.va.comcast.net) |
2022-05-24 22:08:59 +0200 | YoungFrawg | (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) |
2022-05-24 22:09:31 +0200 | nate1 | (~nate@98.45.169.16) |
2022-05-24 22:09:50 +0200 | <seriously_pc> | for some extra context: I'm mid-level software engineer; writing imperative/OO code in java and typescript for the past few years |
2022-05-24 22:10:40 +0200 | jgeerds | (~jgeerds@d53604b0.access.ecotel.net) |
2022-05-24 22:11:16 +0200 | YoungFrog | (~youngfrog@2a02:a03f:c21b:f900:8cee:eaed:9f2f:9769) (Ping timeout: 258 seconds) |
2022-05-24 22:11:16 +0200 | YoungFrawg | YoungFrog |
2022-05-24 22:14:10 +0200 | nate1 | (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
2022-05-24 22:14:21 +0200 | hololeap | (~hololeap@user/hololeap) (Remote host closed the connection) |
2022-05-24 22:14:44 +0200 | <tomsmeding> | seriously_pc: 'snap' is another web framework; in this pastebin implementation I'm using 'snap-core' https://github.com/tomsmeding/pastebin-haskell |
2022-05-24 22:14:55 +0200 | phma_ | (~phma@2001:5b0:2143:d2f8:5c18:7b3:2a38:5b88) |
2022-05-24 22:14:57 +0200 | phma | (~phma@2001:5b0:210d:cc08:34f8:e479:1e76:ac53) (Read error: Connection reset by peer) |
2022-05-24 22:15:02 +0200 | <maerwald> | snap is kinda outdated though |
2022-05-24 22:15:08 +0200 | <tomsmeding> | no type level programming here, though I'm using not using the full framework, just the core implementation using snap-core and snap-server |
2022-05-24 22:15:11 +0200 | <tomsmeding> | it works 🤷 |
2022-05-24 22:15:22 +0200 | <tomsmeding> | and it's fairly straightforward, I think |
2022-05-24 22:15:31 +0200 | <tomsmeding> | maybe that's what seriously_pc is looking for |
2022-05-24 22:17:08 +0200 | <maerwald> | seriously_pc: https://haskell-servant.github.io/posts/2018-07-12-servant-dsl-typelevel.html |
2022-05-24 22:17:08 +0200 | <tomsmeding> | (straightforward as web frameworks go, I guess) |
2022-05-24 22:17:16 +0200 | <seriously_pc> | tomsmeding maerwald let me check it out... As long as I'm able to recognize some familiar functions and patterns that I'm learning through tutorials + courses, then im happy |
2022-05-24 22:18:16 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-05-24 22:18:17 +0200 | zeenk | (~zeenk@2a02:2f04:a104:ef00:10:581:f80f:b980) (Quit: Konversation terminated!) |
2022-05-24 22:19:36 +0200 | <Hecate> | seriously_pc: the Twain library is a nice new player in the space of non-typelevel web libraries |
2022-05-24 22:19:48 +0200 | zeenk | (~zeenk@2a02:2f04:a104:ef00:10:581:f80f:b980) |
2022-05-24 22:20:04 +0200 | hololeap | (~hololeap@user/hololeap) |
2022-05-24 22:21:00 +0200 | <seriously_pc> | It seems right to me that I should know how to write a rest service with the original haskell compiler (no extensions) before I start learning what essentially seems like a hack (language pragmas) into haskell. Let me know if thats not a good categorizaiton of language pragmas. |
2022-05-24 22:21:24 +0200 | <dolio> | It's not. |
2022-05-24 22:21:28 +0200 | <tomsmeding> | I don't think that's a good characterisation :p |
2022-05-24 22:21:46 +0200 | <maerwald> | most of them are hacks |
2022-05-24 22:21:46 +0200 | <geekosaur> | it's not really a hack, it's just that the formal language definition has been frozen by a paralyzed language committee for over a decade |
2022-05-24 22:22:36 +0200 | <tomsmeding> | the language implemented by GHC is larger than the language specified in the haskell report, but as a general attempt at cleanliness and because some of the extensions (subtly) change the meaning of some Haskell syntax, the extensions need to be explicitly enabled |
2022-05-24 22:22:38 +0200 | <maerwald> | it's not like someone came up with those plugins after thinking about it very carefully... they're a result of implementation details of GHC |
2022-05-24 22:23:01 +0200 | <maerwald> | as in: "what if we expose more of the internal machinery to the user?" |
2022-05-24 22:23:07 +0200 | <seriously_pc> | ok then haha let me write back here in a few months when my haskell horizon will have no doubt broadened |
2022-05-24 22:23:19 +0200 | <tomsmeding> | maerwald: which extensions are you thinking about? |
2022-05-24 22:23:29 +0200 | <tomsmeding> | GADTs is hardly in that category :p |
2022-05-24 22:23:29 +0200 | <maerwald> | DataKinds |
2022-05-24 22:23:52 +0200 | <tomsmeding> | I'd rather point to TypeInType as the guilty one there |
2022-05-24 22:24:18 +0200 | <tomsmeding> | though that standpoint is weakened by not realistically being able to turn that off :p |
2022-05-24 22:25:19 +0200 | <tomsmeding> | MultiParamTypeClasses, GADTs, TypeFamilies, ScopedTypeVariables, QuantifiedConstraints, Deriving*, etc. are definitely not hacks |
2022-05-24 22:25:29 +0200 | <geekosaur> | which does strengthen maerwald's argument though |
2022-05-24 22:25:34 +0200 | <tomsmeding> | yeah for DataKinds it does |
2022-05-24 22:25:50 +0200 | <geekosaur> | I'd say for TypeInType as well |
2022-05-24 22:25:54 +0200 | coot | (~coot@213.134.190.95) |
2022-05-24 22:26:24 +0200 | <geekosaur> | it's exposing a decision to let things leak across boundaries in the typechecker. DataKinds just exposes that decision to the usert |
2022-05-24 22:26:53 +0200 | <seriously_pc> | Hecate thanks for the recomendation, looking into twain now |
2022-05-24 22:27:15 +0200 | <geekosaur> | *exposes a consequence |
2022-05-24 22:27:22 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds) |
2022-05-24 22:29:27 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-05-24 22:30:15 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-05-24 22:30:24 +0200 | sabry | (~sabry@197.37.57.10) (Quit: Client closed) |
2022-05-24 22:32:38 +0200 | <tomsmeding> | maerwald: I disagree on "_most_ of them are hacks", I went through the list of extensions and I think the following qualify as hacks in some reasonable way: |
2022-05-24 22:32:41 +0200 | <tomsmeding> | ConstraintKinds, DataKinds, TypeInType, IncoherentInstances, InstanceSigs(?), LiberalTypeSynonyms (TIL), MonoLocalBinds/MonomorphismRestriction, TypeSynonymInstances(?), Undecidable{Instances,SuperClasses} |
2022-05-24 22:33:07 +0200 | <maerwald> | well, type families certainly feel like a hack |
2022-05-24 22:33:07 +0200 | <tomsmeding> | that's 11 out of 123 |
2022-05-24 22:33:17 +0200 | <tomsmeding> | wat? |
2022-05-24 22:33:41 +0200 | <maerwald> | are you saying type families are 1. ergonomic and 2. powerful enough to do cool stuff? |
2022-05-24 22:34:12 +0200 | <tomsmeding> | it's sad that you can't partially apply them |
2022-05-24 22:34:46 +0200 | <geekosaur> | more ergonomic than FunctionalDependencies, which imo are the real hack because they're basically a chunk of Prolog dropped into the typechecker |
2022-05-24 22:34:49 +0200 | <maerwald> | like... would anyone come up with how type families are designed when starting a new language? |
2022-05-24 22:35:04 +0200 | <tomsmeding> | maerwald: what would you improve |
2022-05-24 22:35:08 +0200 | <geekosaur> | but do the same thing |
2022-05-24 22:35:15 +0200 | <maerwald> | tomsmeding: I don't know where to start |
2022-05-24 22:35:27 +0200 | <maerwald> | I'd just do something entirely different |
2022-05-24 22:36:28 +0200 | abrantesasf | (~abrantesa@177.137.232.91) |
2022-05-24 22:37:16 +0200 | <geekosaur> | will the result fill the need of correlating types, or do you want to ignore that problem (or leave it to fundeps) and invent something else instead |
2022-05-24 22:37:54 +0200 | <geekosaur> | do remember that the original point was making MultiParameterTypeClasses usable in practice |
2022-05-24 22:37:54 +0200 | <tomsmeding> | I mean, I'm not sure I agree (but perhaps if I see a better design I would be swayed that way), but in any case a suboptimal design of the language extension is something different than being a hack that just exposes internal machinery to the user :p |
2022-05-24 22:37:55 +0200 | dsrt^ | (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 246 seconds) |
2022-05-24 22:37:59 +0200 | <tomsmeding> | and that's what I was trying to refute |
2022-05-24 22:38:03 +0200 | agumonkey | (~user@88.163.231.79) (Remote host closed the connection) |
2022-05-24 22:38:19 +0200 | <maerwald> | I dunno... I'm not spending a lot of time with language design :p |
2022-05-24 22:38:57 +0200 | <tomsmeding> | no I'm not saying you should, I'm also not saying I like the current design a lot (I don't know anything much better, but that doesn't mean it doesn't exist) |
2022-05-24 22:39:08 +0200 | <maerwald> | I think the smart people who invented Haskell would know something better... the problem is only if you're trying to retro-fit ideas onto old horses |
2022-05-24 22:39:24 +0200 | <maerwald> | then you end up with C++ |
2022-05-24 22:40:28 +0200 | <maerwald> | and that might be one reason we won't get another standard, because all it would do is capture popular plugins and sanction them |
2022-05-24 22:40:59 +0200 | <maerwald> | not very interesting |
2022-05-24 22:41:25 +0200 | <tomsmeding> | maerwald: if we're going to talk about unfortunate language extension _design_, then let's take the elephant in the room, LinearTypes |
2022-05-24 22:41:54 +0200 | <maerwald> | yeah, I mean... I'm still on 8.10.7 and refuse to update to anything that starts with 9 |
2022-05-24 22:41:55 +0200 | <tomsmeding> | with the assumption that you must extend Haskell and keep the original language and ecosystem intact, it's a wonderful and brilliant design |
2022-05-24 22:42:19 +0200 | <tomsmeding> | but without that assumption, there's other designs (uniqueness types yo) that are 1. well-understood and 2. much more ergonomic |
2022-05-24 22:42:23 +0200 | <tomsmeding> | like, _much_ more |
2022-05-24 22:42:36 +0200 | <maerwald> | there's some interesting things linear types could solve in streaming libraries |
2022-05-24 22:42:57 +0200 | <maerwald> | right now, streamly relies on GC hooks |
2022-05-24 22:43:01 +0200 | <maerwald> | to clean up resources |
2022-05-24 22:43:08 +0200 | <tomsmeding> | sounds like a use for LT yes |
2022-05-24 22:43:12 +0200 | raym | (~raym@user/raym) (Ping timeout: 272 seconds) |
2022-05-24 22:43:21 +0200 | <dolio> | Uniqueness types aren't a substitute for linear types. |
2022-05-24 22:43:58 +0200 | <maerwald> | and resource cleanup depending on GC sounds like a good way to create extremely difficult to debug bugs |
2022-05-24 22:46:10 +0200 | <maerwald> | so, there seems to be a use case beyond someone promoting their PhD thesis |
2022-05-24 22:46:10 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) |
2022-05-24 22:47:49 +0200 | mmhat | (~mmh@p200300f1c705841dee086bfffe095315.dip0.t-ipconnect.de) |
2022-05-24 22:49:11 +0200 | <dmj`> | I think it'd be cool to make IO / ST use uniqueness types, and maybe even like have mutable blocks in a similar vein to ST, except not implemented w/ a monad, and not using existentials |
2022-05-24 22:50:26 +0200 | nate1 | (~nate@98.45.169.16) |
2022-05-24 22:50:39 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) |
2022-05-24 22:50:44 +0200 | yauhsien | (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Ping timeout: 255 seconds) |
2022-05-24 22:50:56 +0200 | Guest49 | (~Guest49@105.112.44.177) (Quit: Client closed) |
2022-05-24 22:51:03 +0200 | <EvanR> | mutable variables are weird enough to use for actual things without also having to use a weird type system at the same time xD |
2022-05-24 22:51:17 +0200 | <EvanR> | linear types for using a resource API correctly seems interesting though |
2022-05-24 22:52:14 +0200 | ubert | (~Thunderbi@p200300ecdf3b997ccd2957383dda91a7.dip0.t-ipconnect.de) |
2022-05-24 22:53:32 +0200 | stackdroid18 | (14094@user/stackdroid) |
2022-05-24 22:54:19 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-05-24 22:54:28 +0200 | <maerwald> | https://hackage.haskell.org/package/text-builder-linear-0.1/candidate |
2022-05-24 22:54:50 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) (Ping timeout: 252 seconds) |
2022-05-24 22:55:28 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) |
2022-05-24 22:57:51 +0200 | dsrt^ | (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) |
2022-05-24 22:58:44 +0200 | <dmj`> | EvanR: well, maybe like mutable "blocks", as a first class language construct, where you have the same freeze / thaw situation, but for any type. |
2022-05-24 22:59:19 +0200 | pavonia | (~user@user/siracusa) |
2022-05-24 23:01:19 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5) |
2022-05-24 23:02:16 +0200 | coot | (~coot@213.134.190.95) (Quit: coot) |
2022-05-24 23:04:57 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2022-05-24 23:07:44 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:30cf:ca81:9fb0:16f5) (Remote host closed the connection) |
2022-05-24 23:09:42 +0200 | ubert | (~Thunderbi@p200300ecdf3b997ccd2957383dda91a7.dip0.t-ipconnect.de) (Quit: ubert) |
2022-05-24 23:09:55 +0200 | zincy | (~zincy@2a00:23c8:970c:4801:5ce3:174f:85c3:8411) (Remote host closed the connection) |
2022-05-24 23:10:30 +0200 | zincy | (~zincy@2a00:23c8:970c:4801:5ce3:174f:85c3:8411) |
2022-05-24 23:12:33 +0200 | michalz | (~michalz@185.246.204.105) (Remote host closed the connection) |
2022-05-24 23:14:46 +0200 | slack1256 | (~slack1256@191.126.99.64) (Ping timeout: 244 seconds) |
2022-05-24 23:14:54 +0200 | zincy | (~zincy@2a00:23c8:970c:4801:5ce3:174f:85c3:8411) (Ping timeout: 258 seconds) |
2022-05-24 23:15:10 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) (Remote host closed the connection) |
2022-05-24 23:15:27 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) |
2022-05-24 23:16:05 +0200 | Pickchea | (~private@user/pickchea) |
2022-05-24 23:19:26 +0200 | sympt2 | (~sympt@user/sympt) |
2022-05-24 23:19:51 +0200 | wagle | (~wagle@quassel.wagle.io) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) |
2022-05-24 23:20:16 +0200 | wagle | (~wagle@quassel.wagle.io) |
2022-05-24 23:20:36 +0200 | sympt | (~sympt@user/sympt) (Ping timeout: 248 seconds) |
2022-05-24 23:20:36 +0200 | sympt2 | sympt |
2022-05-24 23:20:42 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:30cf:ca81:9fb0:16f5) |
2022-05-24 23:21:44 +0200 | zer0bitz | (~zer0bitz@2001:2003:f444:8f00:1ddb:ab6a:8605:cb77) (Read error: Connection reset by peer) |
2022-05-24 23:24:38 +0200 | shiraeeshi | (~shiraeesh@46.34.206.185) |
2022-05-24 23:25:47 +0200 | alp_ | (~alp@user/alp) (Ping timeout: 240 seconds) |
2022-05-24 23:28:31 +0200 | Guest52 | (~Guest52@catv-89-132-181-211.catv.fixed.vodafone.hu) |
2022-05-24 23:31:30 +0200 | <shiraeeshi> | I have some questions about polymorphic type synonyms |
2022-05-24 23:31:52 +0200 | <shiraeeshi> | So I was reading Pipes Tutorial https://hackage.haskell.org/package/pipes-4.3.16/docs/Pipes-Tutorial.html |
2022-05-24 23:32:17 +0200 | <shiraeeshi> | in the "Appendix: Types" it says: |
2022-05-24 23:32:33 +0200 | <shiraeeshi> | <quote> |
2022-05-24 23:32:34 +0200 | <shiraeeshi> | However, polymorphic type synonyms cause problems in many other cases: |
2022-05-24 23:32:43 +0200 | <shiraeeshi> | They usually give the wrong behavior when used as the argument of a function (known as the "negative" or "contravariant" position) like this: |
2022-05-24 23:32:50 +0200 | <shiraeeshi> | f :: Producer' a m r -> ... -- Wrong |
2022-05-24 23:32:56 +0200 | <shiraeeshi> | f :: Producer a m r -> ... -- Right |
2022-05-24 23:33:05 +0200 | <shiraeeshi> | The former function only accepts polymorphic Producers as arguments. The latter function accepts both polymorphic and concrete Producers, which is probably what you want. |
2022-05-24 23:33:09 +0200 | <shiraeeshi> | </quote> |
2022-05-24 23:33:53 +0200 | z0k | (~z0k@39.40.43.194) (Ping timeout: 244 seconds) |
2022-05-24 23:33:59 +0200 | <shiraeeshi> | Producer and Producer' are defined as: |
2022-05-24 23:34:01 +0200 | <shiraeeshi> | type Producer' b m r = forall x' x . Proxy x' x () b m r |
2022-05-24 23:34:12 +0200 | <shiraeeshi> | type Producer b = Proxy X () () b |
2022-05-24 23:35:26 +0200 | abrantesasf | (~abrantesa@177.137.232.91) (Ping timeout: 244 seconds) |
2022-05-24 23:35:28 +0200 | <shiraeeshi> | it seemed counter-intuitive to me that a function that says in the type declaration that it accepts polymorphic Producers, accepts only polymorphic Producers and not concrete ones |
2022-05-24 23:35:31 +0200 | _abrantesasf_ | (abrantesas@gateway/vpn/protonvpn/abrantesasf) |
2022-05-24 23:35:47 +0200 | <shiraeeshi> | arent concrete Producers instances of polymorphic ones? |
2022-05-24 23:35:51 +0200 | <dminuoso_> | Yes. |
2022-05-24 23:35:58 +0200 | <shiraeeshi> | so I tried to run an experiment |
2022-05-24 23:36:02 +0200 | <dminuoso_> | So this is essentially just RankNTypes |
2022-05-24 23:36:04 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:30cf:ca81:9fb0:16f5) (Remote host closed the connection) |
2022-05-24 23:36:12 +0200 | <dminuoso_> | Compare with the following: |
2022-05-24 23:36:41 +0200 | <dminuoso_> | `f :: (forall t. Num t => t) -> String` is a function that demands the caller apply it to a polymorphic value. |
2022-05-24 23:36:44 +0200 | Guest52 | (~Guest52@catv-89-132-181-211.catv.fixed.vodafone.hu) (Quit: Client closed) |
2022-05-24 23:36:50 +0200 | <dminuoso_> | It's conceptually similar to say: |
2022-05-24 23:37:05 +0200 | <dminuoso_> | `f :: (Int -> Char) -> Bool` demands the argument to be a function itself. |
2022-05-24 23:37:47 +0200 | Midjak | (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep) |
2022-05-24 23:38:12 +0200 | <dminuoso_> | shiraeeshi: You can draw some intuition by understanding that a polymorphic value is one whose *user/caller* must chose a type for. But they can make multiple such choices |
2022-05-24 23:39:03 +0200 | <shiraeeshi> | hmm |
2022-05-24 23:39:04 +0200 | <dminuoso_> | f :: (forall t. Num t => t) -> (Int, Double); f x = (x, x) |
2022-05-24 23:39:07 +0200 | <dminuoso_> | @let f :: (forall t. Num t => t) -> (Int, Double); f x = (x, x) |
2022-05-24 23:39:09 +0200 | <lambdabot> | Defined. |
2022-05-24 23:39:25 +0200 | <dminuoso_> | Note that in a Rank2Type like here the roles are inverted. |
2022-05-24 23:39:49 +0200 | <dminuoso_> | The caller of f must supply an polymorphic value, but the implementor of f can instantiate that polymorphic value at multiple types. |
2022-05-24 23:40:21 +0200 | <shiraeeshi> | let me show you what I tried: https://paste.tomsmeding.com/lsxdzath |
2022-05-24 23:40:37 +0200 | <shiraeeshi> | a compiler output: https://paste.tomsmeding.com/C0F74KMK |
2022-05-24 23:41:23 +0200 | <shiraeeshi> | I tried to show that I can pass any value to a function that accepts polymorphic type synonyms |
2022-05-24 23:41:50 +0200 | <shiraeeshi> | but the problem is that I can't create instances of such polymorphic synonyms |
2022-05-24 23:42:12 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:30cf:ca81:9fb0:16f5) |
2022-05-24 23:42:39 +0200 | <shiraeeshi> | and it seems like indeed the compiler complains that I can't pass concrete values to such functions (that accept polymorphic synonyms) |
2022-05-24 23:42:41 +0200 | zincy | (~zincy@2a00:23c8:970c:4801:5ce3:174f:85c3:8411) |
2022-05-24 23:42:53 +0200 | <dminuoso_> | shiraeeshi: Lets start with my above example of `f`. |
2022-05-24 23:43:02 +0200 | <dminuoso_> | > f 20 |
2022-05-24 23:43:05 +0200 | <lambdabot> | error: |
2022-05-24 23:43:05 +0200 | <lambdabot> | Ambiguous occurrence ‘f’ |
2022-05-24 23:43:05 +0200 | <lambdabot> | It could refer to |
2022-05-24 23:43:07 +0200 | <dminuoso_> | Ugh |
2022-05-24 23:43:18 +0200 | <dminuoso_> | @let two :: (forall t. Num t => t) -> (Int, Double); two x = (x, x) |
2022-05-24 23:43:19 +0200 | <lambdabot> | Defined. |
2022-05-24 23:43:21 +0200 | <dminuoso_> | > two 10 |
2022-05-24 23:43:23 +0200 | <lambdabot> | (10,10.0) |
2022-05-24 23:43:46 +0200 | <dminuoso_> | Note how the literal `10 :: Num a => a`, so its a properly polymorphic thing. |
2022-05-24 23:44:19 +0200 | <dminuoso_> | The implementation of `two` can then instantiate this at one or more types of its choice. In this example it instantiates it at both Int and Double. |
2022-05-24 23:44:32 +0200 | <dminuoso_> | But the caller of two has no choice. You cant pass a specific Int. |
2022-05-24 23:44:36 +0200 | <dminuoso_> | > two (10 :: Int) |
2022-05-24 23:44:38 +0200 | <lambdabot> | error: |
2022-05-24 23:44:39 +0200 | <lambdabot> | • Couldn't match expected type ‘t’ with actual type ‘Int’ |
2022-05-24 23:44:39 +0200 | <lambdabot> | ‘t’ is a rigid type variable bound by |
2022-05-24 23:45:30 +0200 | <dminuoso_> | You're essentially trying to do just that. |
2022-05-24 23:46:05 +0200 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds) |
2022-05-24 23:46:30 +0200 | <shiraeeshi> | what about this sentence "The latter function accepts both polymorphic and concrete Producers, which is probably what you want." |
2022-05-24 23:47:17 +0200 | zincy | (~zincy@2a00:23c8:970c:4801:5ce3:174f:85c3:8411) (Ping timeout: 260 seconds) |
2022-05-24 23:47:53 +0200 | <dminuoso_> | @let type Id a = a |
2022-05-24 23:47:54 +0200 | <lambdabot> | Defined. |
2022-05-24 23:48:07 +0200 | <shiraeeshi> | how can it accept polymorphic Producers if it has already decided the types to be () and X? |
2022-05-24 23:48:15 +0200 | <[Leary]> | The polymorphic argument specialises down to the concrete. |
2022-05-24 23:48:29 +0200 | phma_ | phma |
2022-05-24 23:48:52 +0200 | nate1 | (~nate@98.45.169.16) (Ping timeout: 244 seconds) |
2022-05-24 23:49:28 +0200 | <[Leary]> | In the same way that you can pass `id :: a -> a` to a function that wants an `Int -> Int`. |
2022-05-24 23:49:35 +0200 | <shiraeeshi> | wait, so polymorphic Producer says "I don't know what the types will be, you decide", right? |
2022-05-24 23:49:41 +0200 | <geekosaur> | a polymorphic Producer can be specialized to a concrete type |
2022-05-24 23:49:55 +0200 | <geekosaur> | a monomorphic Producer can't be generalized to a polymorphic type |
2022-05-24 23:50:07 +0200 | <dminuoso_> | shiraeeshi: In a polymorphic value, the *caller/user* decides/instantiates the types. To the *implementor* its an opaque unknown type. |
2022-05-24 23:50:43 +0200 | <dminuoso_> | In a rank 2 type the *caller* specifies a polymorphic type, but the *implementor* gets to decide/instantiate that polymorphic tye |
2022-05-24 23:50:47 +0200 | acidjnk | (~acidjnk@p200300d0c7068b8138d05884d43f32c7.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-05-24 23:51:30 +0200 | <shiraeeshi> | I think this is it: in my intuitive understanding the word "polymorphic" meant that if function says that it accepts polymorphic types, then anybody can pass anything to it |
2022-05-24 23:51:54 +0200 | <dminuoso_> | shiraeeshi: In the example of [Leary], if you pass `id` to a function that wants `Int -> Int`, its really *you* who monomorphizes `id`. |
2022-05-24 23:51:58 +0200 | <dminuoso_> | Not that other function. |
2022-05-24 23:52:14 +0200 | <monochrom> | s/accept/provide/ then that sentence would be right. |
2022-05-24 23:52:27 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-05-24 23:52:48 +0200 | <monochrom> | Example: "id :: forall a. a -> a". id provides a polymorphic type, namely "forall a. a -> a". |
2022-05-24 23:53:03 +0200 | <dminuoso_> | shiraeeshi: Perhaps another useful angle is to think of polymorphic values as "functions taking a type, producing a value" |
2022-05-24 23:54:29 +0200 | <dminuoso_> | Then it might help understand who has the obligation (or even possibility) to apply that "function taking a type" |
2022-05-24 23:54:33 +0200 | _abrantesasf_ | (abrantesas@gateway/vpn/protonvpn/abrantesasf) (Ping timeout: 244 seconds) |
2022-05-24 23:54:58 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) (Ping timeout: 252 seconds) |
2022-05-24 23:56:17 +0200 | <shiraeeshi> | in the "id" example the type "a" is both in the covariant and contra-variant position |
2022-05-24 23:56:33 +0200 | <dminuoso_> | Not from a type rank position |
2022-05-24 23:56:53 +0200 | <dminuoso_> | Write out the implicit forall |
2022-05-24 23:56:54 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2022-05-24 23:56:56 +0200 | <shiraeeshi> | but the text says that polymorphic type synonyms are problematic in contra-variant position, but ok in covariant position |
2022-05-24 23:57:00 +0200 | <dminuoso_> | id :: forall a. (a -> a) |
2022-05-24 23:57:05 +0200 | <dminuoso_> | c.f. |
2022-05-24 23:57:07 +0200 | <monochrom> | But look at the "forall a" instead. |
2022-05-24 23:57:12 +0200 | anon15041149 | (~anon15041@host-80-41-95-245.as13285.net) |
2022-05-24 23:57:18 +0200 | <dminuoso_> | wo :: (forall t. Num t => t) -> String |
2022-05-24 23:57:27 +0200 | <monochrom> | That is the reason I explicate "forall a". |
2022-05-24 23:57:48 +0200 | <monochrom> | You should be looking at where is the "forall", not where are the type variables. |
2022-05-24 23:57:52 +0200 | <shiraeeshi> | hmm, so it's not in contravariant position in the "id" example? |
2022-05-24 23:57:55 +0200 | <dminuoso_> | shiraeeshi: Yes, because in a rank-2 type synonym its not obvious at all |
2022-05-24 23:58:41 +0200 | <dminuoso_> | @let type PolyNum = forall t. Num t => t |
2022-05-24 23:58:43 +0200 | <lambdabot> | Defined. |
2022-05-24 23:58:59 +0200 | <monochrom> | "foo :: forall a. blah" is equivalent to "foo :: () -> (forall a. blah)" so is that positive or negative? |
2022-05-24 23:59:14 +0200 | <dminuoso_> | `g :: PolyNum -> String` if you substitute PolyNum for its type alias definition, you get `g :: (forall t. Num t => t) -> String` |
2022-05-24 23:59:40 +0200 | <shiraeeshi> | monochrom: so id becomes "id :: () -> (forall a . a -> a)" ? |