2021-07-27 00:00:28 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection) |
2021-07-27 00:04:13 +0200 | roboguy_ | (~roboguy_@2605:a601:ac0e:ae00:b012:8971:aef9:153c) |
2021-07-27 00:05:20 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
2021-07-27 00:05:57 +0200 | mnrmnaugh | (~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) (Quit: Leaving) |
2021-07-27 00:06:36 +0200 | Morrow | (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 256 seconds) |
2021-07-27 00:06:38 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-07-27 00:06:47 +0200 | mnrmnaugh | (~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) |
2021-07-27 00:07:51 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection) |
2021-07-27 00:09:26 +0200 | roboguy_ | (~roboguy_@2605:a601:ac0e:ae00:b012:8971:aef9:153c) () |
2021-07-27 00:09:39 +0200 | meinside_ | (uid24933@id-24933.brockwell.irccloud.com) (Quit: Connection closed for inactivity) |
2021-07-27 00:09:55 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 258 seconds) |
2021-07-27 00:15:04 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-07-27 00:16:41 +0200 | fawful | (~guy@c-76-104-217-93.hsd1.wa.comcast.net) (Quit: WeeChat 3.2) |
2021-07-27 00:17:38 +0200 | Guest57 | (~Guest57@node-1w7jr9umlq4q4axiuyck8v83b.ipv6.telus.net) |
2021-07-27 00:18:15 +0200 | Guest57 | (~Guest57@node-1w7jr9umlq4q4axiuyck8v83b.ipv6.telus.net) (Client Quit) |
2021-07-27 00:19:08 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 250 seconds) |
2021-07-27 00:21:32 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-07-27 00:22:46 +0200 | <juri_> | i used to read all of lkml. it really does make haskell seem friendly. |
2021-07-27 00:25:42 +0200 | drd | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) |
2021-07-27 00:29:06 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2021-07-27 00:29:49 +0200 | arthurxavierx | (~arthurxav@201.17.157.69) (Remote host closed the connection) |
2021-07-27 00:33:06 +0200 | jgeerds | (~jgeerds@55d45555.access.ecotel.net) |
2021-07-27 00:34:50 +0200 | dhil | (~dhil@195.213.192.47) (Ping timeout: 258 seconds) |
2021-07-27 00:35:13 +0200 | Morrow | (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
2021-07-27 00:39:38 +0200 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2021-07-27 00:40:02 +0200 | mc47 | (~mc47@xmonad/TheMC47) |
2021-07-27 00:40:04 +0200 | Maxdamantus | (~Maxdamant@user/maxdamantus) (Ping timeout: 265 seconds) |
2021-07-27 00:40:28 +0200 | Maxdamantus | (~Maxdamant@user/maxdamantus) |
2021-07-27 00:42:28 +0200 | pera | (~pera@user/pera) (Quit: leaving) |
2021-07-27 00:43:57 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) (Remote host closed the connection) |
2021-07-27 00:44:42 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) |
2021-07-27 00:48:35 +0200 | acidjnk_new3 | (~acidjnk@p200300d0c72b953020abcb826e8e1ebf.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2021-07-27 00:49:27 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-07-27 00:49:42 +0200 | mc47 | (~mc47@xmonad/TheMC47) (Quit: Leaving) |
2021-07-27 00:50:01 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-07-27 00:54:34 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 265 seconds) |
2021-07-27 00:57:06 +0200 | drd | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 276 seconds) |
2021-07-27 00:58:23 +0200 | dagit | (~dagit@2601:1c2:1b7f:9fa0:ad74:311a:d89a:e0b1) |
2021-07-27 00:59:23 +0200 | cjb | (~cjb@user/cjb) |
2021-07-27 00:59:44 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) (Remote host closed the connection) |
2021-07-27 01:00:00 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) |
2021-07-27 01:01:46 +0200 | jgeerds | (~jgeerds@55d45555.access.ecotel.net) (Ping timeout: 240 seconds) |
2021-07-27 01:05:41 +0200 | drd | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) |
2021-07-27 01:06:06 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection) |
2021-07-27 01:06:19 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
2021-07-27 01:08:24 +0200 | mr-red | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) |
2021-07-27 01:10:06 +0200 | peterhil | (~peterhil@mobile-access-5d6af6-209.dhcp.inet.fi) (Ping timeout: 258 seconds) |
2021-07-27 01:10:57 +0200 | drd | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 268 seconds) |
2021-07-27 01:12:33 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) (Remote host closed the connection) |
2021-07-27 01:12:47 +0200 | sciencentistguy | (~sciencent@hacksoc/ordinary-member) (Ping timeout: 258 seconds) |
2021-07-27 01:13:23 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) |
2021-07-27 01:16:08 +0200 | meinside_ | (uid24933@id-24933.brockwell.irccloud.com) |
2021-07-27 01:17:39 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) |
2021-07-27 01:18:07 +0200 | yauhsien | (~yauhsien@61-231-38-146.dynamic-ip.hinet.net) |
2021-07-27 01:23:06 +0200 | tomku | (~tomku@user/tomku) (Ping timeout: 240 seconds) |
2021-07-27 01:23:15 +0200 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2021-07-27 01:23:49 +0200 | peterhil | (~peterhil@mobile-access-b04815-181.dhcp.inet.fi) |
2021-07-27 01:23:50 +0200 | tomku | (~tomku@user/tomku) |
2021-07-27 01:25:35 +0200 | tcard | (~tcard@p2307053-ipngn17101hodogaya.kanagawa.ocn.ne.jp) (Quit: Leaving) |
2021-07-27 01:25:58 +0200 | roboguy_ | (~roboguy_@2605:a601:ac0e:ae00:1c28:4bf5:c94e:40b1) |
2021-07-27 01:29:18 +0200 | <phaazon> | hey; anyone here with write access to the time package to approve a PR of mine (and eventually release on crates.io? :D) https://github.com/haskell/unix/pull/194 |
2021-07-27 01:29:23 +0200 | <phaazon> | this is blocking me from using the latest warp |
2021-07-27 01:30:37 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) (Remote host closed the connection) |
2021-07-27 01:30:52 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) |
2021-07-27 01:32:31 +0200 | turlando | (~turlando@user/turlando) (Remote host closed the connection) |
2021-07-27 01:32:43 +0200 | <Axman6> | I assume you mean the unix package :) |
2021-07-27 01:33:02 +0200 | <Axman6> | phaazon: can you use --allow-newer temporarily? |
2021-07-27 01:33:20 +0200 | <phaazon> | Axman6: I mean warp |
2021-07-27 01:33:37 +0200 | <phaazon> | because it depends on that, which prevents me from using the time I want :( |
2021-07-27 01:33:43 +0200 | turlando | (~turlando@93-42-250-112.ip89.fastwebnet.it) |
2021-07-27 01:33:43 +0200 | turlando | (~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host) |
2021-07-27 01:33:43 +0200 | turlando | (~turlando@user/turlando) |
2021-07-27 01:33:45 +0200 | <phaazon> | (so I had to downgrade warp :( ) |
2021-07-27 01:33:54 +0200 | <phaazon> | Axman6: --allow-newer, hm |
2021-07-27 01:34:43 +0200 | <phaazon> | not sure it’s a good idea though |
2021-07-27 01:34:52 +0200 | <phaazon> | I’ve never really used that flag :P |
2021-07-27 01:35:02 +0200 | tcard | (~tcard@p2307053-ipngn17101hodogaya.kanagawa.ocn.ne.jp) |
2021-07-27 01:36:01 +0200 | <Axman6> | if it works, it works. |
2021-07-27 01:37:16 +0200 | bitmapper | (uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity) |
2021-07-27 01:38:28 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-07-27 01:38:34 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-07-27 01:38:59 +0200 | <phaazon> | well, I don’t really know what it does |
2021-07-27 01:39:09 +0200 | <phaazon> | so I’d rather stick around simple concepts such as upgrading PVP ranges :D |
2021-07-27 01:39:50 +0200 | yauhsien | (~yauhsien@61-231-38-146.dynamic-ip.hinet.net) (Remote host closed the connection) |
2021-07-27 01:40:07 +0200 | <Axman6> | I'm confused, your PR is against the unix package, not the time package, so why do you need someone with access to the time package? |
2021-07-27 01:40:46 +0200 | <monochrom> | Use concurrency. Find out what --allow-newer does while the upgrade path is waiting. |
2021-07-27 01:40:53 +0200 | myShoggoth | (~myShoggot@97-120-70-214.ptld.qwest.net) |
2021-07-27 01:40:57 +0200 | <myShoggoth> | I'm looking for a project lead volunteer for our open source volunteering platform (so meta): https://discourse.haskell.org/t/seeking-a-project-lead-for-matchmaker/2799 |
2021-07-27 01:41:46 +0200 | <monochrom> | But I can see a variant of https://xkcd.com/303/ |
2021-07-27 01:42:11 +0200 | <monochrom> | "Hey get back to work!" "Waiting on PR approval!" "OK carry on!" |
2021-07-27 01:43:04 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 258 seconds) |
2021-07-27 01:44:05 +0200 | <phaazon> | Axman6: oh yeah the “write access” I meant haskell/unix, sorry |
2021-07-27 01:46:10 +0200 | mr-red | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-07-27 01:46:57 +0200 | drd | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) |
2021-07-27 01:48:32 +0200 | peterhil | (~peterhil@mobile-access-b04815-181.dhcp.inet.fi) (Ping timeout: 252 seconds) |
2021-07-27 01:51:28 +0200 | fendor_ | (~fendor@77.119.218.44.wireless.dyn.drei.com) |
2021-07-27 01:53:06 +0200 | notzmv | (~zmv@user/notzmv) (Ping timeout: 240 seconds) |
2021-07-27 01:54:01 +0200 | fendor | (~fendor@178.165.161.47.wireless.dyn.drei.com) (Ping timeout: 265 seconds) |
2021-07-27 01:54:38 +0200 | roboguy__ | (~roboguy_@2605:a601:ac0e:ae00:119d:d383:500:6200) |
2021-07-27 01:56:25 +0200 | yauhsien | (~yauhsien@61-231-38-146.dynamic-ip.hinet.net) |
2021-07-27 01:56:58 +0200 | dajoer | (~david@user/gvx) |
2021-07-27 01:58:26 +0200 | roboguy_ | (~roboguy_@2605:a601:ac0e:ae00:1c28:4bf5:c94e:40b1) (Ping timeout: 252 seconds) |
2021-07-27 01:59:25 +0200 | qrpnxz | (~qrpnxz@user/qrpnxz) (Quit: Gateway shutdown) |
2021-07-27 01:59:44 +0200 | qrpnxz | (~qrpnxz@user/qrpnxz) |
2021-07-27 02:01:03 +0200 | roboguy__ | (~roboguy_@2605:a601:ac0e:ae00:119d:d383:500:6200) () |
2021-07-27 02:01:05 +0200 | deejaytee | (~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net) (Ping timeout: 258 seconds) |
2021-07-27 02:04:21 +0200 | oldleather | (~Old@172.58.168.61) |
2021-07-27 02:04:42 +0200 | oldleather | (~Old@172.58.168.61) (Leaving) |
2021-07-27 02:06:42 +0200 | drd | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Read error: Connection reset by peer) |
2021-07-27 02:07:28 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) |
2021-07-27 02:11:33 +0200 | Atum_ | (~IRC@user/atum/x-2392232) (Quit: Atum_) |
2021-07-27 02:12:18 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-07-27 02:12:21 +0200 | Deide | (~Deide@user/deide) (Quit: Seeee yaaaa) |
2021-07-27 02:14:03 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) (Remote host closed the connection) |
2021-07-27 02:14:49 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) |
2021-07-27 02:16:51 +0200 | slack1256 | (~slack1256@191.125.99.204) |
2021-07-27 02:18:58 +0200 | slac61603 | (~slack1256@191.125.21.222) (Ping timeout: 240 seconds) |
2021-07-27 02:20:51 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-07-27 02:22:23 +0200 | myShoggoth | (~myShoggot@97-120-70-214.ptld.qwest.net) (Quit: Leaving) |
2021-07-27 02:23:42 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) |
2021-07-27 02:24:27 +0200 | jeetelongname | (~jeet@host-89-241-98-229.as13285.net) |
2021-07-27 02:30:19 +0200 | mr-red | (~drd@93-39-151-19.ip76.fastwebnet.it) |
2021-07-27 02:30:45 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 265 seconds) |
2021-07-27 02:32:38 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2021-07-27 02:33:44 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2021-07-27 02:39:35 +0200 | mr-red | (~drd@93-39-151-19.ip76.fastwebnet.it) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-07-27 02:40:44 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) |
2021-07-27 02:43:27 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) (Remote host closed the connection) |
2021-07-27 02:43:42 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) |
2021-07-27 02:46:16 +0200 | pschorf | (~user@c-73-77-28-188.hsd1.tx.comcast.net) |
2021-07-27 02:47:22 +0200 | zebrag | (~chris@user/zebrag) (Ping timeout: 240 seconds) |
2021-07-27 02:56:35 +0200 | raehik1 | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 255 seconds) |
2021-07-27 02:56:40 +0200 | slack1256 | (~slack1256@191.125.99.204) (Ping timeout: 258 seconds) |
2021-07-27 02:57:17 +0200 | jeetelongname | (~jeet@host-89-241-98-229.as13285.net) (Remote host closed the connection) |
2021-07-27 02:58:52 +0200 | renzhi | (~xp@142.184.90.63) (Ping timeout: 256 seconds) |
2021-07-27 02:59:38 +0200 | LukeHoersten | (~LukeHoers@user/lukehoersten) |
2021-07-27 03:00:22 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-07-27 03:03:35 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
2021-07-27 03:03:54 +0200 | pschorf | (~user@c-73-77-28-188.hsd1.tx.comcast.net) (Remote host closed the connection) |
2021-07-27 03:11:13 +0200 | notzmv | (~zmv@user/notzmv) |
2021-07-27 03:11:42 +0200 | pschorf | (~user@c-73-77-28-188.hsd1.tx.comcast.net) |
2021-07-27 03:14:35 +0200 | xff0x | (~xff0x@2001:1a81:523c:b300:ba7e:c7d5:b4b7:3493) (Ping timeout: 255 seconds) |
2021-07-27 03:14:41 +0200 | ham | (~ham4@user/ham) |
2021-07-27 03:16:13 +0200 | xff0x | (~xff0x@2001:1a81:527c:b500:49fa:e8ed:ea99:60ec) |
2021-07-27 03:23:30 +0200 | <arkho> | As a Haskell newb, should I read the Haskell Report? |
2021-07-27 03:24:11 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-07-27 03:24:16 +0200 | <sclv> | arkho: depends how comfortable you are with bnf grammer, specs, etc in general |
2021-07-27 03:24:33 +0200 | <sclv> | if you are, then the report can be helpful -- if not, it might be a bit dense and you could be better off reading other things |
2021-07-27 03:24:48 +0200 | <sclv> | I _do_ suggest reading the report's version of the haskell prelude, because it is simple and idiomatic |
2021-07-27 03:24:51 +0200 | <geekosaur> | I would say no, formal language reports are rarely a good way to get to know a language unless you are fairly experienced with those kinds of reports |
2021-07-27 03:25:20 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 252 seconds) |
2021-07-27 03:25:28 +0200 | <sclv> | there are lots of intro books (some free) linked from the haskell homepage |
2021-07-27 03:25:30 +0200 | <sclv> | ?where documentation |
2021-07-27 03:25:31 +0200 | <lambdabot> | I know nothing about documentation. |
2021-07-27 03:25:48 +0200 | <sclv> | oh her |
2021-07-27 03:25:50 +0200 | <sclv> | er |
2021-07-27 03:25:52 +0200 | <sclv> | ?where docs |
2021-07-27 03:25:52 +0200 | <lambdabot> | https://www.haskell.org/documentation/ |
2021-07-27 03:25:57 +0200 | <sclv> | ?botsnack |
2021-07-27 03:25:57 +0200 | <lambdabot> | :) |
2021-07-27 03:28:57 +0200 | alx741 | (~alx741@186.178.108.3) (Quit: alx741) |
2021-07-27 03:32:37 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 265 seconds) |
2021-07-27 03:33:24 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) (Read error: Connection reset by peer) |
2021-07-27 03:35:03 +0200 | drd | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) |
2021-07-27 03:37:05 +0200 | drd | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Client Quit) |
2021-07-27 03:37:21 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) |
2021-07-27 03:41:11 +0200 | Tuplanolla | (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.) |
2021-07-27 03:42:12 +0200 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 245 seconds) |
2021-07-27 03:42:37 +0200 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) |
2021-07-27 03:44:12 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 258 seconds) |
2021-07-27 03:54:22 +0200 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 265 seconds) |
2021-07-27 03:55:07 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) |
2021-07-27 03:55:57 +0200 | Erutuon | (~Erutuon@user/erutuon) |
2021-07-27 03:57:26 +0200 | <smtnet3> | cute |
2021-07-27 03:59:27 +0200 | derelict | (~derelict@user/derelict) |
2021-07-27 04:00:10 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 265 seconds) |
2021-07-27 04:09:05 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-07-27 04:10:20 +0200 | LukeHoersten | (~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-07-27 04:10:21 +0200 | epolanski | (uid312403@id-312403.brockwell.irccloud.com) (Quit: Connection closed for inactivity) |
2021-07-27 04:13:29 +0200 | AkechiShiro | (~licht@user/akechishiro) (Ping timeout: 268 seconds) |
2021-07-27 04:13:32 +0200 | Raito_Bezarius | (~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 255 seconds) |
2021-07-27 04:15:09 +0200 | Raito_Bezarius | (~Raito@wireguard/tunneler/raito-bezarius) |
2021-07-27 04:15:35 +0200 | AkechiShiro | (~licht@user/akechishiro) |
2021-07-27 04:15:36 +0200 | aegon | (~mike@174.127.249.180) |
2021-07-27 04:15:47 +0200 | derelict_ | (~derelict@user/derelict) |
2021-07-27 04:16:00 +0200 | <aegon> | holy balls guys, i just got hasktorch working with rocm and it is blazing fast, going to make a post about perf next weekend or the one after |
2021-07-27 04:19:15 +0200 | derelict | (~derelict@user/derelict) (Ping timeout: 276 seconds) |
2021-07-27 04:19:17 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-07-27 04:23:30 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
2021-07-27 04:23:37 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) |
2021-07-27 04:30:14 +0200 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2021-07-27 04:30:14 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (copper.libera.chat (Nickname regained by services))) |
2021-07-27 04:30:14 +0200 | finn_elija | FinnElija |
2021-07-27 04:31:05 +0200 | Morrow | (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 255 seconds) |
2021-07-27 04:31:13 +0200 | Morrow- | (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
2021-07-27 04:31:14 +0200 | Morrow | (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
2021-07-27 04:31:22 +0200 | MorrowM | (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 245 seconds) |
2021-07-27 04:32:15 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 276 seconds) |
2021-07-27 04:34:58 +0200 | pschorf | (~user@c-73-77-28-188.hsd1.tx.comcast.net) (Ping timeout: 265 seconds) |
2021-07-27 04:43:11 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-07-27 04:51:41 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 252 seconds) |
2021-07-27 04:57:06 +0200 | derelict | (~derelict@user/derelict) |
2021-07-27 04:59:56 +0200 | shapr | (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 250 seconds) |
2021-07-27 05:00:06 +0200 | derelict_ | (~derelict@user/derelict) (Ping timeout: 258 seconds) |
2021-07-27 05:00:14 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) (Remote host closed the connection) |
2021-07-27 05:00:34 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) |
2021-07-27 05:01:10 +0200 | favonia | (~favonia@user/favonia) |
2021-07-27 05:01:16 +0200 | td_ | (~td@94.134.91.47) (Ping timeout: 256 seconds) |
2021-07-27 05:02:48 +0200 | td_ | (~td@muedsl-82-207-238-215.citykom.de) |
2021-07-27 05:05:17 +0200 | Morrow | (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Remote host closed the connection) |
2021-07-27 05:05:37 +0200 | Morrow | (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
2021-07-27 05:09:43 +0200 | pottsy | (~pottsy@2400:4050:b560:3700:3495:fb9e:8fab:95bf) |
2021-07-27 05:10:28 +0200 | MidAutumnMoon90 | (~MidAutumn@user/midautumnmoon) (Quit: Leaving for a break - theLounge) |
2021-07-27 05:10:42 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) (Remote host closed the connection) |
2021-07-27 05:11:03 +0200 | MidAutumnMoon90 | (~MidAutumn@user/midautumnmoon) |
2021-07-27 05:11:13 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 265 seconds) |
2021-07-27 05:11:25 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) |
2021-07-27 05:15:07 +0200 | dermato_ | (~dermatobr@154.21.114.128) |
2021-07-27 05:16:38 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) (Remote host closed the connection) |
2021-07-27 05:16:53 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) |
2021-07-27 05:17:26 +0200 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 255 seconds) |
2021-07-27 05:21:56 +0200 | zaquest | (~notzaques@5.128.210.178) (Remote host closed the connection) |
2021-07-27 05:23:20 +0200 | zaquest | (~notzaques@5.128.210.178) |
2021-07-27 05:31:28 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) (Remote host closed the connection) |
2021-07-27 05:32:17 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) |
2021-07-27 05:33:21 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) (Read error: Connection reset by peer) |
2021-07-27 05:33:35 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) |
2021-07-27 05:34:48 +0200 | tomboy64 | (~tomboy64@user/tomboy64) (Ping timeout: 255 seconds) |
2021-07-27 05:37:29 +0200 | wei2912 | (~wei2912@112.199.250.21) |
2021-07-27 05:39:16 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-07-27 05:39:24 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-07-27 05:40:30 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) |
2021-07-27 05:40:43 +0200 | <Cajun> | rocm = Radeon Open Compute and hasktorch is the pytorch equivalent? |
2021-07-27 05:41:01 +0200 | <Cajun> | hasktorch does look interesting, havent heard of that before |
2021-07-27 05:44:04 +0200 | pesada | (~agua@2804:18:4c:684a:1:0:5b66:52cd) |
2021-07-27 05:46:10 +0200 | agua | (~agua@2804:14c:8793:8e2f:39e9:c5a8:c532:7498) (Ping timeout: 240 seconds) |
2021-07-27 05:46:12 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) (Remote host closed the connection) |
2021-07-27 05:46:26 +0200 | derelict_ | (~derelict@user/derelict) |
2021-07-27 05:46:52 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) |
2021-07-27 05:48:15 +0200 | Topsi | (~Tobias@dyndsl-037-138-065-137.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
2021-07-27 05:48:23 +0200 | nate3 | (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) |
2021-07-27 05:49:23 +0200 | derelict | (~derelict@user/derelict) (Ping timeout: 255 seconds) |
2021-07-27 05:51:34 +0200 | yauhsien | (~yauhsien@61-231-38-146.dynamic-ip.hinet.net) (Remote host closed the connection) |
2021-07-27 05:51:49 +0200 | roboguy_ | (~roboguy_@2605:a601:ac0e:ae00:119d:d383:500:6200) |
2021-07-27 05:54:25 +0200 | flounders_ | (~flounders@173.246.200.33) |
2021-07-27 05:55:06 +0200 | flounders | (~flounders@173.246.200.33) (Ping timeout: 272 seconds) |
2021-07-27 05:59:08 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 258 seconds) |
2021-07-27 06:01:38 +0200 | tomboy64 | (~tomboy64@user/tomboy64) |
2021-07-27 06:02:59 +0200 | pe200012_ | (~pe200012@113.105.10.33) |
2021-07-27 06:03:31 +0200 | roboguy_ | (~roboguy_@2605:a601:ac0e:ae00:119d:d383:500:6200) (Remote host closed the connection) |
2021-07-27 06:03:40 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) (Remote host closed the connection) |
2021-07-27 06:03:55 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) |
2021-07-27 06:04:05 +0200 | roboguy_ | (~roboguy_@2605:a601:ac0e:ae00:119d:d383:500:6200) |
2021-07-27 06:09:16 +0200 | roboguy_ | (~roboguy_@2605:a601:ac0e:ae00:119d:d383:500:6200) (Ping timeout: 256 seconds) |
2021-07-27 06:09:56 +0200 | yauhsien | (~yauhsien@61-231-38-146.dynamic-ip.hinet.net) |
2021-07-27 06:10:46 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-07-27 06:11:41 +0200 | paddymahoney | (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (Remote host closed the connection) |
2021-07-27 06:14:05 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) (Remote host closed the connection) |
2021-07-27 06:14:42 +0200 | <eltonpinto> | yea, hasktorch uses pytorch's tensor library |
2021-07-27 06:14:51 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) |
2021-07-27 06:15:29 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 255 seconds) |
2021-07-27 06:17:43 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-07-27 06:18:17 +0200 | Vajb | (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) |
2021-07-27 06:19:35 +0200 | Melantha | (~pyon@user/pyon) (Quit: WeeChat 3.2) |
2021-07-27 06:19:53 +0200 | Melantha | (~pyon@user/pyon) |
2021-07-27 06:19:53 +0200 | Vajb | (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer) |
2021-07-27 06:21:32 +0200 | <Cajun> | i read that it uses the underlying C++ library that pytorch also uses, i assume thats what you mean lol |
2021-07-27 06:21:41 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
2021-07-27 06:22:38 +0200 | <eltonpinto> | yes, that is correct. it has bindings to the underlying c++ library |
2021-07-27 06:27:38 +0200 | nate3 | (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds) |
2021-07-27 06:28:07 +0200 | Cajun | (~Cajun@ip98-163-211-112.no.no.cox.net) (Ping timeout: 246 seconds) |
2021-07-27 06:28:21 +0200 | Cajun | (~Cajun@ip98-163-211-112.no.no.cox.net) |
2021-07-27 06:36:27 +0200 | <Arahael> | Is it possible, with proto-lens, to have the `Message msg` types converted to JSON in a generic fashion? (They do not use GHC.Generics) |
2021-07-27 06:36:37 +0200 | roboguy_ | (~roboguy_@2605:a601:ac0e:ae00:119d:d383:500:6200) |
2021-07-27 06:37:38 +0200 | <Arahael> | If so, what should I be looking at to achieve it? |
2021-07-27 06:38:39 +0200 | fef | (~thedawn@user/thedawn) |
2021-07-27 06:39:44 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-07-27 06:41:17 +0200 | <dsal> | The descriptor is available, so it should be relatively straightforward to generate a JSON representation. |
2021-07-27 06:46:58 +0200 | roboguy_ | (~roboguy_@2605:a601:ac0e:ae00:119d:d383:500:6200) (Ping timeout: 240 seconds) |
2021-07-27 06:52:58 +0200 | amahl | (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) |
2021-07-27 06:56:24 +0200 | amahl | (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-07-27 06:59:48 +0200 | dunkeln | (~dunkeln@94.129.69.87) |
2021-07-27 07:00:15 +0200 | Feuermagier | (~Feuermagi@user/feuermagier) (Quit: Leaving) |
2021-07-27 07:00:20 +0200 | amahl | (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) |
2021-07-27 07:02:44 +0200 | derelict_ | (~derelict@user/derelict) (Ping timeout: 255 seconds) |
2021-07-27 07:06:47 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer) |
2021-07-27 07:06:57 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-07-27 07:08:04 +0200 | <Arahael> | dsal: Could you elaborate? |
2021-07-27 07:08:53 +0200 | <dsal> | Not very much unfortunately. I've only used the proto stuff for proto directly. I only know about the descriptor stuff because I stuffed them into the library: https://github.com/google/proto-lens/commits?author=dustin |
2021-07-27 07:09:12 +0200 | <dsal> | But theoretically, for a given message type, you can look up the descriptor which will tell you the fields and then you can generate a ToJSON from that. |
2021-07-27 07:09:33 +0200 | <Arahael> | dsal: What I can't figure out is how to get the values given a FieldDescriptor. |
2021-07-27 07:09:51 +0200 | <Arahael> | The field names themselves are the easy bit. |
2021-07-27 07:12:51 +0200 | yaroot | (~yaroot@6.3.30.125.dy.iij4u.or.jp) (Quit: The Lounge - https://thelounge.chat) |
2021-07-27 07:13:38 +0200 | yaroot | (~yaroot@6.3.30.125.dy.iij4u.or.jp) |
2021-07-27 07:13:53 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
2021-07-27 07:17:16 +0200 | <dsal> | I see. I've not used this lib in a year or so. It looks like the answer is in Message, but I don't have any protos to poke around with. It's possible the answer isn't there since you're expected to use lens to access all the field data, but it's been a while. It looks like digging around in the Message module should have the answer, though. |
2021-07-27 07:17:47 +0200 | codelegend | (~codelegen@27.5.195.204) |
2021-07-27 07:17:48 +0200 | amahl | (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection) |
2021-07-27 07:17:59 +0200 | michalz | (~michalz@185.246.204.58) |
2021-07-27 07:18:11 +0200 | <codelegend> | ``` |
2021-07-27 07:18:47 +0200 | peterhil | (~peterhil@mobile-access-b04815-181.dhcp.inet.fi) |
2021-07-27 07:18:49 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 265 seconds) |
2021-07-27 07:19:44 +0200 | <codelegend> | https://paste.tomsmeding.com/wf5VMlDI |
2021-07-27 07:20:20 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 250 seconds) |
2021-07-27 07:21:02 +0200 | <codelegend> | I was writing something using ST, and this failed to typecheck. Can someone explain why? The error says `No instance for (MArray (STUArray s) Int (ST s1))`, I don't understand why it assumes the states are different (s and s1) |
2021-07-27 07:21:12 +0200 | anandprabhu | (~anandprab@94.202.243.198) |
2021-07-27 07:22:20 +0200 | anandprabhu | (~anandprab@94.202.243.198) (Client Quit) |
2021-07-27 07:22:28 +0200 | <codelegend> | updated paste with the error: https://paste.tomsmeding.com/govHGUlu |
2021-07-27 07:23:06 +0200 | doyougnu | (~user@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection) |
2021-07-27 07:24:12 +0200 | nate3 | (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) |
2021-07-27 07:28:53 +0200 | nate3 | (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds) |
2021-07-27 07:34:28 +0200 | pe200012 | (~pe200012@218.107.49.28) |
2021-07-27 07:34:40 +0200 | <c_wraith> | short answer: you need ScopedTypeVariables |
2021-07-27 07:34:46 +0200 | pe200012_ | (~pe200012@113.105.10.33) (Ping timeout: 265 seconds) |
2021-07-27 07:35:07 +0200 | <c_wraith> | slightly longer answer - without that extension, type variables in different type ascriptions are assumed to always be different |
2021-07-27 07:36:23 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-07-27 07:36:50 +0200 | <c_wraith> | So the two different s variables on line 7? They're in the same type, so they're the same s. But they're different from the s on line 5 or the s on line 8 |
2021-07-27 07:38:31 +0200 | <Arahael> | dsal: Yeah, sadly for me, poking in it seems a bit of a rabbit hole for me. I consider myself good at Haskell, but I'm still frankly still a novice. |
2021-07-27 07:40:33 +0200 | <dsal> | Arahael: Yeah, it'll take some digging. It's a bit late for me. I understand the rabbit hole, though. Those two changes I made were for a similar excursion. I was surprised the functionality was missing. I would be less surprised if more functionality were missing. |
2021-07-27 07:40:36 +0200 | vish | (~igloo@24.130.32.174) |
2021-07-27 07:40:42 +0200 | vish | (~igloo@24.130.32.174) (Client Quit) |
2021-07-27 07:41:32 +0200 | roboguy_ | (~roboguy_@2605:a601:ac0e:ae00:119d:d383:500:6200) |
2021-07-27 07:41:38 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
2021-07-27 07:41:40 +0200 | <Arahael> | dsal: Not supporting Generics was a deliberate design decision from what I can tell from the issue tracker. |
2021-07-27 07:41:56 +0200 | <Arahael> | dsal: Though perhaps you should get some sleep. :) I'm at work, myself, and work is Swift, not Haskell. :( |
2021-07-27 07:42:06 +0200 | <codelegend> | c_wraith Ah okay. So I was reading the wiki on ScopedTypeVariables (https://wiki.haskell.org/Scoped_type_variables), and I don't really understand the example. It seems to claim that `b` is a free variable in the third case. But if that is the case here, how does it ensure all the `s` are the same? |
2021-07-27 07:42:40 +0200 | <dsal> | Arahael: yeah, that's a good idea. I have no excuse to still be sitting here. Didn't work on any of my own problems. heh 'night |
2021-07-27 07:43:02 +0200 | <c_wraith> | codelegend: that example is really confusing. It doesn't explain *why* each case works the way it does. |
2021-07-27 07:43:07 +0200 | <Arahael> | Ha. :) Lovely thing about side personal projects: There's no deadline! It'll still be here next week! |
2021-07-27 07:43:12 +0200 | <Arahael> | dsal: G'night! |
2021-07-27 07:43:35 +0200 | <c_wraith> | codelegend: the important thing is that to actually scope a type variable, you need to use an explicit forall to introduce it |
2021-07-27 07:43:43 +0200 | <c_wraith> | codelegend: the third example on that page doesn't do that |
2021-07-27 07:43:59 +0200 | <c_wraith> | The other two examples do |
2021-07-27 07:44:24 +0200 | <codelegend> | Ah okay, I think I get it now (sort of). I'll play around with some more examples and see. Thanks a lot! |
2021-07-27 07:48:37 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) (Remote host closed the connection) |
2021-07-27 07:48:52 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) |
2021-07-27 07:48:56 +0200 | Null_A | (~null_a@2601:645:8700:2290:98e5:42b9:7e41:db99) (Remote host closed the connection) |
2021-07-27 07:51:32 +0200 | dunkeln | (~dunkeln@94.129.69.87) (Ping timeout: 252 seconds) |
2021-07-27 07:53:29 +0200 | jneira | (~jneira@212.8.115.226) |
2021-07-27 07:54:56 +0200 | azeem | (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Ping timeout: 255 seconds) |
2021-07-27 07:55:42 +0200 | azeem | (~azeem@176.200.228.157) |
2021-07-27 07:56:39 +0200 | jneira39 | (~jneira@212.8.115.226) |
2021-07-27 07:58:53 +0200 | codelegend | (~codelegen@27.5.195.204) (Quit: Client closed) |
2021-07-27 08:00:10 +0200 | jneira | (~jneira@212.8.115.226) (Ping timeout: 246 seconds) |
2021-07-27 08:01:20 +0200 | jneira39 | jneira |
2021-07-27 08:02:18 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2021-07-27 08:04:56 +0200 | zmt01 | (~zmt00@user/zmt00) (Ping timeout: 272 seconds) |
2021-07-27 08:08:02 +0200 | xff0x | (~xff0x@2001:1a81:527c:b500:49fa:e8ed:ea99:60ec) (Ping timeout: 245 seconds) |
2021-07-27 08:08:55 +0200 | pe200012_ | (~pe200012@113.105.10.33) |
2021-07-27 08:09:05 +0200 | pe200012 | (~pe200012@218.107.49.28) (Ping timeout: 265 seconds) |
2021-07-27 08:09:06 +0200 | xff0x | (~xff0x@2001:1a81:527c:b500:a365:4553:d50c:f6f5) |
2021-07-27 08:10:31 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) |
2021-07-27 08:10:45 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
2021-07-27 08:10:57 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) |
2021-07-27 08:11:37 +0200 | burnside_ | (~burnsides@dhcp168-022.wadham.ox.ac.uk) |
2021-07-27 08:11:38 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
2021-07-27 08:12:40 +0200 | jgeerds | (~jgeerds@55d45555.access.ecotel.net) |
2021-07-27 08:12:48 +0200 | ham | (~ham4@user/ham) (Ping timeout: 256 seconds) |
2021-07-27 08:13:34 +0200 | ham2 | (~ham4@d8D8627D5.access.telenet.be) |
2021-07-27 08:15:49 +0200 | zaquest | (~notzaques@5.128.210.178) (Read error: Connection reset by peer) |
2021-07-27 08:16:16 +0200 | zaquest | (~notzaques@5.128.210.178) |
2021-07-27 08:17:48 +0200 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2021-07-27 08:17:54 +0200 | aegon | (~mike@174.127.249.180) (Remote host closed the connection) |
2021-07-27 08:18:40 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 258 seconds) |
2021-07-27 08:19:01 +0200 | Lord_of_Life_ | Lord_of_Life |
2021-07-27 08:20:51 +0200 | burnside_ | (~burnsides@dhcp168-022.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-07-27 08:21:15 +0200 | roboguy_ | (~roboguy_@2605:a601:ac0e:ae00:119d:d383:500:6200) () |
2021-07-27 08:21:18 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) |
2021-07-27 08:21:40 +0200 | andreabedini | (~andreabed@202.94.72.249) |
2021-07-27 08:22:52 +0200 | dhil | (~dhil@195.213.192.47) |
2021-07-27 08:23:41 +0200 | burnside_ | (~burnsides@dhcp168-022.wadham.ox.ac.uk) |
2021-07-27 08:25:18 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
2021-07-27 08:26:29 +0200 | jgeerds | (~jgeerds@55d45555.access.ecotel.net) (Ping timeout: 265 seconds) |
2021-07-27 08:26:53 +0200 | azeem | (~azeem@176.200.228.157) (Ping timeout: 255 seconds) |
2021-07-27 08:27:15 +0200 | azeem | (~azeem@176.200.241.36) |
2021-07-27 08:32:13 +0200 | dunkeln | (~dunkeln@94.129.69.87) |
2021-07-27 08:34:30 +0200 | shriekingnoise | (~shrieking@186.137.144.80) (Quit: Quit) |
2021-07-27 08:34:42 +0200 | azeem | (~azeem@176.200.241.36) (Ping timeout: 272 seconds) |
2021-07-27 08:34:55 +0200 | azeem | (~azeem@176.200.241.36) |
2021-07-27 08:36:09 +0200 | yauhsien | (~yauhsien@61-231-38-146.dynamic-ip.hinet.net) (Remote host closed the connection) |
2021-07-27 08:37:32 +0200 | zeenk | (~zeenk@2a02:2f04:a008:d600:18f2:3421:bac6:8f38) |
2021-07-27 08:39:01 +0200 | burnside_ | (~burnsides@dhcp168-022.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-07-27 08:39:27 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) |
2021-07-27 08:41:59 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2021-07-27 08:42:29 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-07-27 08:43:06 +0200 | chomwitt | (~chomwitt@2a02:587:dc0c:8100:12c3:7bff:fe6d:d374) |
2021-07-27 08:43:59 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) (Ping timeout: 255 seconds) |
2021-07-27 08:44:02 +0200 | yauhsien | (~yauhsien@61-231-38-146.dynamic-ip.hinet.net) |
2021-07-27 08:46:44 +0200 | pe200012_ | pe200012 |
2021-07-27 08:47:16 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 265 seconds) |
2021-07-27 08:47:47 +0200 | oxide | (~lambda@user/oxide) |
2021-07-27 08:48:30 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) |
2021-07-27 08:49:38 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:7d8e:40bb:852a:65d0) |
2021-07-27 08:50:48 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) |
2021-07-27 08:52:10 +0200 | chele | (~chele@user/chele) |
2021-07-27 08:52:25 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-07-27 08:52:33 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
2021-07-27 08:53:04 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) (Ping timeout: 265 seconds) |
2021-07-27 08:53:56 +0200 | ham2 | (~ham4@d8D8627D5.access.telenet.be) (Ping timeout: 258 seconds) |
2021-07-27 08:54:19 +0200 | dunkeln | (~dunkeln@94.129.69.87) (Ping timeout: 258 seconds) |
2021-07-27 08:55:50 +0200 | andreabedini | (~andreabed@202.94.72.249) (Quit: WeeChat 2.8) |
2021-07-27 08:56:57 +0200 | dunkeln | (~dunkeln@94.129.69.87) |
2021-07-27 08:57:16 +0200 | neceve | (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) |
2021-07-27 08:58:56 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) |
2021-07-27 09:00:12 +0200 | taktoa[c] | (sid282096@id-282096.tinside.irccloud.com) (Read error: Connection reset by peer) |
2021-07-27 09:00:23 +0200 | taktoa[c] | (sid282096@id-282096.tinside.irccloud.com) |
2021-07-27 09:00:32 +0200 | martin02 | (silas@hund.fs.lmu.de) (Ping timeout: 245 seconds) |
2021-07-27 09:01:08 +0200 | ikex | (~ash@user/ikex) (Quit: ZNC - https://znc.in) |
2021-07-27 09:01:27 +0200 | ikex | (~ash@user/ikex) |
2021-07-27 09:03:12 +0200 | jneira_ | (~jneira_@28.red-80-28-169.staticip.rima-tde.net) (Quit: Connection closed) |
2021-07-27 09:03:27 +0200 | jakalx | (~jakalx@base.jakalx.net) () |
2021-07-27 09:03:42 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) (Ping timeout: 265 seconds) |
2021-07-27 09:06:30 +0200 | Pent | (sid313808@id-313808.tooting.irccloud.com) (Ping timeout: 250 seconds) |
2021-07-27 09:06:32 +0200 | pe200012_ | (~pe200012@113.105.10.33) |
2021-07-27 09:06:35 +0200 | pe200012 | (~pe200012@113.105.10.33) (Ping timeout: 258 seconds) |
2021-07-27 09:08:27 +0200 | Pent | (sid313808@id-313808.tooting.irccloud.com) |
2021-07-27 09:09:03 +0200 | fendor_ | fendor |
2021-07-27 09:10:22 +0200 | slowButPresent | (~slowButPr@user/slowbutpresent) (Quit: leaving) |
2021-07-27 09:10:23 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-07-27 09:10:24 +0200 | Pent | (sid313808@id-313808.tooting.irccloud.com) (Max SendQ exceeded) |
2021-07-27 09:10:38 +0200 | meinside_ | (uid24933@id-24933.brockwell.irccloud.com) (Ping timeout: 252 seconds) |
2021-07-27 09:10:38 +0200 | epolanski | (uid312403@id-312403.brockwell.irccloud.com) |
2021-07-27 09:11:10 +0200 | martin02 | (silas@hund.fs.lmu.de) |
2021-07-27 09:11:40 +0200 | Pent | (sid313808@id-313808.tooting.irccloud.com) |
2021-07-27 09:12:15 +0200 | meinside_ | (uid24933@id-24933.brockwell.irccloud.com) |
2021-07-27 09:13:58 +0200 | nrr | (sid20938@id-20938.tooting.irccloud.com) (Ping timeout: 272 seconds) |
2021-07-27 09:14:08 +0200 | sa | (sid1055@2a03:5180:f::41f) (Ping timeout: 255 seconds) |
2021-07-27 09:15:00 +0200 | hongminhee | (sid295@id-295.tinside.irccloud.com) (Ping timeout: 276 seconds) |
2021-07-27 09:15:32 +0200 | jakesyl | (sid56879@id-56879.stonehaven.irccloud.com) (Ping timeout: 245 seconds) |
2021-07-27 09:15:34 +0200 | sa | (sid1055@id-1055.tinside.irccloud.com) |
2021-07-27 09:16:12 +0200 | hongminhee | (sid295@id-295.tinside.irccloud.com) |
2021-07-27 09:17:37 +0200 | nrr | (sid20938@id-20938.tooting.irccloud.com) |
2021-07-27 09:17:58 +0200 | meinside_ | (uid24933@id-24933.brockwell.irccloud.com) (Ping timeout: 256 seconds) |
2021-07-27 09:18:18 +0200 | jakesyl | (sid56879@id-56879.stonehaven.irccloud.com) |
2021-07-27 09:19:46 +0200 | meinside_ | (uid24933@id-24933.brockwell.irccloud.com) |
2021-07-27 09:20:00 +0200 | jakesyl | (sid56879@id-56879.stonehaven.irccloud.com) (Max SendQ exceeded) |
2021-07-27 09:20:00 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) |
2021-07-27 09:20:34 +0200 | jakesyl | (sid56879@id-56879.stonehaven.irccloud.com) |
2021-07-27 09:22:11 +0200 | dunkeln | (~dunkeln@94.129.69.87) (Ping timeout: 252 seconds) |
2021-07-27 09:24:16 +0200 | dunkeln | (~dunkeln@94.129.69.87) |
2021-07-27 09:24:17 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) (Ping timeout: 245 seconds) |
2021-07-27 09:26:27 +0200 | acidjnk_new3 | (~acidjnk@p200300d0c72b953020abcb826e8e1ebf.dip0.t-ipconnect.de) |
2021-07-27 09:27:40 +0200 | jolly | (~jolly@208.180.97.158) (Ping timeout: 258 seconds) |
2021-07-27 09:28:10 +0200 | hnOsmium0001 | (uid453710@id-453710.stonehaven.irccloud.com) (Ping timeout: 256 seconds) |
2021-07-27 09:30:29 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) |
2021-07-27 09:30:30 +0200 | hnOsmium0001 | (uid453710@id-453710.stonehaven.irccloud.com) |
2021-07-27 09:31:55 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2021-07-27 09:32:04 +0200 | johnw | (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Ping timeout: 250 seconds) |
2021-07-27 09:32:06 +0200 | mikoto-chan | (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) |
2021-07-27 09:38:24 +0200 | dpratt_ | (sid193493@id-193493.brockwell.irccloud.com) (Ping timeout: 276 seconds) |
2021-07-27 09:38:41 +0200 | dpratt_ | (sid193493@id-193493.brockwell.irccloud.com) |
2021-07-27 09:44:09 +0200 | kenran | (~kenran@b2b-37-24-119-190.unitymedia.biz) |
2021-07-27 09:44:32 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
2021-07-27 09:44:44 +0200 | azeem | (~azeem@176.200.241.36) (Ping timeout: 255 seconds) |
2021-07-27 09:45:01 +0200 | kenran | (~kenran@b2b-37-24-119-190.unitymedia.biz) (Client Quit) |
2021-07-27 09:45:09 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-07-27 09:45:32 +0200 | azeem | (~azeem@176.200.241.36) |
2021-07-27 09:46:49 +0200 | cfricke | (~cfricke@user/cfricke) |
2021-07-27 09:52:31 +0200 | azeem | (~azeem@176.200.241.36) (Ping timeout: 265 seconds) |
2021-07-27 09:53:04 +0200 | azeem | (~azeem@176.200.241.36) |
2021-07-27 09:54:05 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
2021-07-27 09:59:45 +0200 | deejaytee | (~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net) |
2021-07-27 10:00:12 +0200 | azeem | (~azeem@176.200.241.36) (Ping timeout: 272 seconds) |
2021-07-27 10:00:21 +0200 | azeem | (~azeem@176.200.241.36) |
2021-07-27 10:06:03 +0200 | chele | (~chele@user/chele) (Remote host closed the connection) |
2021-07-27 10:06:21 +0200 | chele | (~chele@user/chele) |
2021-07-27 10:08:13 +0200 | hendursaga | (~weechat@user/hendursaga) (Ping timeout: 244 seconds) |
2021-07-27 10:08:25 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-07-27 10:13:00 +0200 | dunkeln | (~dunkeln@94.129.69.87) (Ping timeout: 268 seconds) |
2021-07-27 10:15:12 +0200 | dunkeln | (~dunkeln@94.129.69.87) |
2021-07-27 10:15:28 +0200 | aerona | (~aerona@2600:6c54:4600:f300:5d:533e:d781:9302) (Read error: Connection reset by peer) |
2021-07-27 10:17:08 +0200 | chomwitt | (~chomwitt@2a02:587:dc0c:8100:12c3:7bff:fe6d:d374) (Ping timeout: 255 seconds) |
2021-07-27 10:17:48 +0200 | allbery_b | (~geekosaur@xmonad/geekosaur) |
2021-07-27 10:17:48 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
2021-07-27 10:17:51 +0200 | allbery_b | geekosaur |
2021-07-27 10:18:31 +0200 | chomwitt | (~chomwitt@2a02:587:dc0c:8100:12c3:7bff:fe6d:d374) |
2021-07-27 10:20:29 +0200 | cjb | (~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50) |
2021-07-27 10:20:44 +0200 | dunkeln | (~dunkeln@94.129.69.87) (Ping timeout: 255 seconds) |
2021-07-27 10:22:41 +0200 | deejaytee | (~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net) (Killed (iridium.libera.chat (Nickname regained by services))) |
2021-07-27 10:22:45 +0200 | deejaytee | (~deejaytee@193.46-255-62.static.virginmediabusiness.co.uk) |
2021-07-27 10:25:57 +0200 | acidjnk_new3 | (~acidjnk@p200300d0c72b953020abcb826e8e1ebf.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
2021-07-27 10:26:29 +0200 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2021-07-27 10:27:48 +0200 | acidjnk_new3 | (~acidjnk@p200300d0c72b953020abcb826e8e1ebf.dip0.t-ipconnect.de) |
2021-07-27 10:28:28 +0200 | jumper149 | (~jumper149@80.240.31.34) |
2021-07-27 10:33:17 +0200 | burnside_ | (~burnsides@dhcp168-022.wadham.ox.ac.uk) |
2021-07-27 10:33:37 +0200 | cfricke | (~cfricke@user/cfricke) (Read error: Connection reset by peer) |
2021-07-27 10:33:59 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
2021-07-27 10:35:31 +0200 | azeem | (~azeem@176.200.241.36) (Ping timeout: 258 seconds) |
2021-07-27 10:35:59 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) (Ping timeout: 252 seconds) |
2021-07-27 10:36:09 +0200 | azeem | (~azeem@176.200.241.36) |
2021-07-27 10:36:40 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) |
2021-07-27 10:40:04 +0200 | yauhsien | (~yauhsien@61-231-38-146.dynamic-ip.hinet.net) (Quit: Leaving...) |
2021-07-27 10:40:45 +0200 | chomwitt | (~chomwitt@2a02:587:dc0c:8100:12c3:7bff:fe6d:d374) (Ping timeout: 268 seconds) |
2021-07-27 10:44:31 +0200 | mastarija | (~mastarija@31.217.8.174) |
2021-07-27 10:44:34 +0200 | johnw | (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) |
2021-07-27 10:44:34 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-07-27 10:45:28 +0200 | <mastarija> | Say that I have a type `MyType i m v`, and that type can be a functor on either i or v, how would I write an instance for functor over i? |
2021-07-27 10:45:42 +0200 | <mastarija> | V is easy, instance Functor (MyType i m v) |
2021-07-27 10:46:02 +0200 | <mastarija> | * instance Functor (MyType i m) |
2021-07-27 10:46:24 +0200 | <mastarija> | But what about i? Can I use some type family to "swap" the arguments? |
2021-07-27 10:48:42 +0200 | <thomasjm[m]> | mastarija: probably just write out the `fmap` instance explicitly? you might want https://hackage.haskell.org/package/base-4.15.0.0/docs/Data-Bifunctor.html |
2021-07-27 10:49:04 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-07-27 10:49:12 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 250 seconds) |
2021-07-27 10:49:22 +0200 | <mastarija> | thomasjm[m], a... but my type is not a Bifunctor |
2021-07-27 10:49:37 +0200 | <mastarija> | It's either a functor on i, or a functor on v |
2021-07-27 10:49:42 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-07-27 10:50:03 +0200 | <lortabac> | mastarija: since you can't have 2 Functor instances for the same type, you need to define a newtype with a different variable order |
2021-07-27 10:50:40 +0200 | <mastarija> | lortabac, hm.. yes, I was hoping there could be some trick |
2021-07-27 10:50:59 +0200 | <lortabac> | mastarija: how would you select which instance you want? |
2021-07-27 10:51:16 +0200 | <mastarija> | Didn't think about that :D |
2021-07-27 10:52:16 +0200 | <deejaytee> | mastarija: could you explain a bit more about the underlying structure, and why that means that it's either one functor or the other? |
2021-07-27 10:52:55 +0200 | <deejaytee> | I don't doubt such a thing is possible, I'm just having trouble thinking of an example |
2021-07-27 10:53:08 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-07-27 10:53:08 +0200 | _bin | (~bin@user/bin/x-1583188) (Quit: ZNC - https://znc.in) |
2021-07-27 10:53:15 +0200 | <mastarija> | deejaytee, it's a bit complex, but basically I have a type like either (a bit more complex) |
2021-07-27 10:53:21 +0200 | _bin | (~bin@user/bin/x-1583188) |
2021-07-27 10:53:46 +0200 | <mastarija> | So I might want to fmap over left or right |
2021-07-27 10:54:00 +0200 | <lortabac> | isn't it the definition of a Bifunctor? |
2021-07-27 10:54:06 +0200 | <mastarija> | No |
2021-07-27 10:54:12 +0200 | <mastarija> | It can be |
2021-07-27 10:54:14 +0200 | ham | (~ham4@user/ham) |
2021-07-27 10:54:17 +0200 | <mastarija> | But I don't want a bifunctor |
2021-07-27 10:54:29 +0200 | <lortabac> | ok, you want it to be a Functor in both cases |
2021-07-27 10:54:46 +0200 | <mastarija> | I want just a functor over a, and just a functor over b in `Either a b` |
2021-07-27 10:55:12 +0200 | <deejaytee> | well Either is a Bifunctor - it's just that lmap and rmap don't do anything |
2021-07-27 10:55:24 +0200 | <deejaytee> | But if your heart is set on fmap, yeah a newtype wrapper is what you'll need |
2021-07-27 10:55:56 +0200 | <mastarija> | Although, now that I think about selecting the right instance, I guess that function type could be the "clue" to select the right instance |
2021-07-27 10:56:04 +0200 | <deejaytee> | (*it's just that first and second don't do anything unless you're on the correct constructor) |
2021-07-27 10:56:21 +0200 | burnside_ | (~burnsides@dhcp168-022.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-07-27 10:56:23 +0200 | <mastarija> | Problem is, I want to have different Monad instances as well :D |
2021-07-27 10:56:29 +0200 | <mastarija> | And applicatives |
2021-07-27 10:56:42 +0200 | <mastarija> | So bifunctor doesn't help |
2021-07-27 10:57:45 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds) |
2021-07-27 10:57:45 +0200 | <tomsmeding> | % map (Data.Bifunctor.first (+1)) [Left 2, Right 2] |
2021-07-27 10:57:46 +0200 | <yahb> | tomsmeding: [Left 3,Right 2] |
2021-07-27 10:58:04 +0200 | <deejaytee> | Yeah for your monad instance you're definitely going to want a newtype, otherwise I wager it'll be difficult to tell `do` which instance to pick, even if you find a trick to get the functor & applicative instances working |
2021-07-27 10:58:47 +0200 | dunkeln | (~dunkeln@94.129.69.87) |
2021-07-27 10:59:02 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) |
2021-07-27 11:00:19 +0200 | <mastarija> | I guess, but one can dream :D |
2021-07-27 11:01:18 +0200 | <deejaytee> | unless you're too cool for do notation, in which case: https://hackage.haskell.org/package/bifunctors-5.5.11/docs/Data-Bifunctor-Functor.html#t:Bifunctor… |
2021-07-27 11:02:01 +0200 | bingruns | (~bingruns@bxk158.neoplus.adsl.tpnet.pl) |
2021-07-27 11:03:24 +0200 | agua | (~agua@2804:14c:8793:8e2f:39e9:c5a8:c532:7498) |
2021-07-27 11:03:53 +0200 | dunkeln | (~dunkeln@94.129.69.87) (Ping timeout: 258 seconds) |
2021-07-27 11:06:43 +0200 | bingruns | (~bingruns@bxk158.neoplus.adsl.tpnet.pl) (Client Quit) |
2021-07-27 11:06:57 +0200 | bingruns | (~bingruns@bxk158.neoplus.adsl.tpnet.pl) |
2021-07-27 11:07:20 +0200 | pesada | (~agua@2804:18:4c:684a:1:0:5b66:52cd) (Ping timeout: 256 seconds) |
2021-07-27 11:08:11 +0200 | bingruns | (~bingruns@bxk158.neoplus.adsl.tpnet.pl) (Client Quit) |
2021-07-27 11:08:21 +0200 | bingruns | (~bingruns@bxk158.neoplus.adsl.tpnet.pl) |
2021-07-27 11:09:47 +0200 | mei | (~mei@user/mei) (Read error: Connection reset by peer) |
2021-07-27 11:10:03 +0200 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 276 seconds) |
2021-07-27 11:10:14 +0200 | mei | (~mei@user/mei) |
2021-07-27 11:15:07 +0200 | bingruns | (~bingruns@bxk158.neoplus.adsl.tpnet.pl) (Quit: Client closed) |
2021-07-27 11:26:22 +0200 | azeem | (~azeem@176.200.241.36) (Ping timeout: 245 seconds) |
2021-07-27 11:26:49 +0200 | azeem | (~azeem@176.200.241.36) |
2021-07-27 11:29:04 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) (Ping timeout: 250 seconds) |
2021-07-27 11:29:25 +0200 | <tomsmeding> | why does that type class use 't' as the monad type, instead of 'm' |
2021-07-27 11:29:52 +0200 | <ixlun> | What's the best way to implement a fast circular buffer of fixed sized? |
2021-07-27 11:29:54 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:7d8e:40bb:852a:65d0) (Ping timeout: 240 seconds) |
2021-07-27 11:30:12 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) |
2021-07-27 11:30:25 +0200 | <ixlun> | So as you add one element at the head, an element gets dropped at the tail |
2021-07-27 11:30:44 +0200 | <tomsmeding> | ixlun: should it be functional, or can it be in ST? |
2021-07-27 11:30:48 +0200 | <deejaytee> | tomsmeding: I assume because it "transforms" the underlying bifunctor |
2021-07-27 11:31:00 +0200 | <ixlun> | Can be in ST |
2021-07-27 11:31:09 +0200 | <tomsmeding> | deejaytee: then I'd expect 't' to be a monad transformer :p |
2021-07-27 11:31:18 +0200 | <tomsmeding> | but it doesn't matter anyway |
2021-07-27 11:31:27 +0200 | <ixlun> | or IO |
2021-07-27 11:31:29 +0200 | <tomsmeding> | ixlun: then just an STArray, right? or the vector equivalent |
2021-07-27 11:31:36 +0200 | azeem | (~azeem@176.200.241.36) (Ping timeout: 265 seconds) |
2021-07-27 11:31:37 +0200 | <tomsmeding> | not going to get a faster one |
2021-07-27 11:31:47 +0200 | chomwitt | (~chomwitt@athedsl-32041.home.otenet.gr) |
2021-07-27 11:31:54 +0200 | <deejaytee> | agree that I'd expect a transformer, agree that it doesn't matter :P |
2021-07-27 11:32:18 +0200 | azeem | (~azeem@176.200.241.36) |
2021-07-27 11:32:28 +0200 | <ixlun> | Right, so I'm looking at Data.Vector.Unboxed.Mutable |
2021-07-27 11:32:41 +0200 | <ixlun> | That sound about right? |
2021-07-27 11:32:50 +0200 | <tomsmeding> | yeah |
2021-07-27 11:32:58 +0200 | <tomsmeding> | if your data type can be unboxed, that is |
2021-07-27 11:33:08 +0200 | <tomsmeding> | I wrote this at some point for a different #haskell'er: https://gist.github.com/tomsmeding/1a9f9f6d64ab60699751c9bdeb99bc81 |
2021-07-27 11:33:21 +0200 | <tomsmeding> | uses array, not vector, but it should be similar |
2021-07-27 11:34:11 +0200 | tomsmeding | isn't sure why that declares DataKinds, it doesn't use it |
2021-07-27 11:35:18 +0200 | hnOsmium0001 | (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
2021-07-27 11:35:29 +0200 | Tuplanolla | (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
2021-07-27 11:35:42 +0200 | <ixlun> | Right, that's perfect, I'll try and convert that to Vector code and see how I get on. Thanks for the help tomsmeding ! |
2021-07-27 11:36:26 +0200 | <tomsmeding> | ixlun: FYI the name is because the person I wrote it for used 'fog' as a nick :p |
2021-07-27 11:36:52 +0200 | <ixlun> | Haha, I was wondering if there was some subtle joke with the name |
2021-07-27 11:40:20 +0200 | cfricke | (~cfricke@user/cfricke) |
2021-07-27 11:40:27 +0200 | cfricke | (~cfricke@user/cfricke) (Client Quit) |
2021-07-27 11:51:25 +0200 | azeem | (~azeem@176.200.241.36) (Ping timeout: 265 seconds) |
2021-07-27 11:51:34 +0200 | dunkeln | (~dunkeln@94.129.69.87) |
2021-07-27 11:52:45 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:5a6e:2d28:b93b:2c96) |
2021-07-27 11:52:45 +0200 | azeem | (~azeem@176.200.241.36) |
2021-07-27 11:54:43 +0200 | mikoto-chan | (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) (Quit: mikoto-chan) |
2021-07-27 11:55:20 +0200 | troydm | (~troydm@host-176-37-124-197.b025.la.net.ua) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset) |
2021-07-27 11:59:07 +0200 | troydm | (~troydm@host-176-37-124-197.b025.la.net.ua) |
2021-07-27 11:59:28 +0200 | SoF | (~skius@user/skius) (Quit: Ping timeout (120 seconds)) |
2021-07-27 11:59:49 +0200 | SoF | (~skius@user/skius) |
2021-07-27 12:00:32 +0200 | jippiedoe | (~david@2a02-a44c-e14e-1-19ba-6ff5-814d-2f81.fixed6.kpn.net) |
2021-07-27 12:00:42 +0200 | haritz | (~hrtz@user/haritz) (Remote host closed the connection) |
2021-07-27 12:00:50 +0200 | haritz | (~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) |
2021-07-27 12:00:51 +0200 | haritz | (~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) (Changing host) |
2021-07-27 12:00:51 +0200 | haritz | (~hrtz@user/haritz) |
2021-07-27 12:01:47 +0200 | mastarija | (~mastarija@31.217.8.174) (Ping timeout: 245 seconds) |
2021-07-27 12:01:52 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-07-27 12:02:17 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-07-27 12:02:59 +0200 | texasmynsted_ | (~texasmyns@99.96.221.112) |
2021-07-27 12:03:27 +0200 | dunkeln | (~dunkeln@94.129.69.87) (Ping timeout: 245 seconds) |
2021-07-27 12:04:42 +0200 | texasmynsted | (~texasmyns@99.96.221.112) (Ping timeout: 240 seconds) |
2021-07-27 12:05:18 +0200 | tomsmeding | (~tomsmedin@2a03:b0c0:0:1010::767:3001) (Remote host closed the connection) |
2021-07-27 12:05:34 +0200 | dunkeln | (~dunkeln@94.129.69.87) |
2021-07-27 12:05:36 +0200 | chomwitt | (~chomwitt@athedsl-32041.home.otenet.gr) (Ping timeout: 258 seconds) |
2021-07-27 12:05:37 +0200 | tomsmeding | (~tomsmedin@tomsmeding.com) |
2021-07-27 12:09:03 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-07-27 12:14:19 +0200 | <pmk> | I have a function f :: t -> Either a String and I would like to do something like "<" ++ f x ++ ">". I am not sure how to map (++) through Either. I've tried (++) <$> Right "<" <*> f x <*> Right ">" but the second (<*>) rightly complains since its first argument is not a function. I probably could write a function to do it with do notation but is there an idiomatic way to accomplish this using Applicative? |
2021-07-27 12:14:53 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) (Ping timeout: 252 seconds) |
2021-07-27 12:15:30 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) |
2021-07-27 12:16:57 +0200 | jippiedoe | (~david@2a02-a44c-e14e-1-19ba-6ff5-814d-2f81.fixed6.kpn.net) (Ping timeout: 268 seconds) |
2021-07-27 12:17:56 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-07-27 12:18:01 +0200 | __monty__ | (~toonn@user/toonn) |
2021-07-27 12:18:21 +0200 | <sshine_> | > let f x = pure (show x) :: Either a String; between l r m = l <> m <> r in between "<" ">" <$> f 42 |
2021-07-27 12:18:23 +0200 | <lambdabot> | Right "<42>" |
2021-07-27 12:19:36 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:5a6e:2d28:b93b:2c96) (Ping timeout: 276 seconds) |
2021-07-27 12:20:13 +0200 | <pmk> | Thanks sshine_! |
2021-07-27 12:20:26 +0200 | <deejaytee> | Using <&> from Data.Functor, you can preserve infix placement if you *really* want to :P |
2021-07-27 12:20:31 +0200 | <deejaytee> | e.g. ("<" ++) <$> Right "a" <&> (++ ">") |
2021-07-27 12:20:38 +0200 | <sshine_> | > concat <$> sequence [Right "<", Right "42", Right ">"] |
2021-07-27 12:20:40 +0200 | <lambdabot> | Right "<42>" |
2021-07-27 12:22:10 +0200 | <sshine_> | :t sequence |
2021-07-27 12:22:12 +0200 | <lambdabot> | (Traversable t, Monad m) => t (m a) -> m (t a) |
2021-07-27 12:22:31 +0200 | <sshine_> | > sequence [Just "hello", Nothing, Just "world"] |
2021-07-27 12:22:33 +0200 | <lambdabot> | Nothing |
2021-07-27 12:22:41 +0200 | dunkeln | (~dunkeln@94.129.69.87) (Ping timeout: 252 seconds) |
2021-07-27 12:22:45 +0200 | <sshine_> | > sequence [Just "hello", Just " ", Just "world"] |
2021-07-27 12:22:46 +0200 | <lambdabot> | Just ["hello"," ","world"] |
2021-07-27 12:22:47 +0200 | Kaipi | (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) |
2021-07-27 12:23:12 +0200 | <sshine_> | > concat ["hello", " ", "world"] |
2021-07-27 12:23:15 +0200 | <lambdabot> | "hello world" |
2021-07-27 12:23:23 +0200 | <sshine_> | > fmap concat (Just ["hello", " ", "world"]) |
2021-07-27 12:23:25 +0200 | <lambdabot> | Just "hello world" |
2021-07-27 12:23:37 +0200 | <sshine_> | :t fmap concat . sequence |
2021-07-27 12:23:39 +0200 | <lambdabot> | (Traversable t, Monad f) => t (f [a]) -> f [a] |
2021-07-27 12:23:48 +0200 | <dexterfoo> | Is there something like memcpy for Data.Vector.Unboxed.Mutable? |
2021-07-27 12:24:03 +0200 | <sshine_> | :t fmap concat . sequence :: [Either a String] -> Either a [String] |
2021-07-27 12:24:04 +0200 | <lambdabot> | error: |
2021-07-27 12:24:04 +0200 | <lambdabot> | • Couldn't match type ‘Char’ with ‘[Char]’ |
2021-07-27 12:24:05 +0200 | <lambdabot> | Expected type: [Either a1 String] -> Either a1 [String] |
2021-07-27 12:24:11 +0200 | <sshine_> | er :) |
2021-07-27 12:24:21 +0200 | <pmk> | hehe :) |
2021-07-27 12:24:46 +0200 | Kaiepi | (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Ping timeout: 265 seconds) |
2021-07-27 12:24:47 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
2021-07-27 12:24:49 +0200 | <pmk> | I think fmap concat . sequence is what I was looking for (or pretty close to it). Thanks! |
2021-07-27 12:25:03 +0200 | <sshine_> | :t fmap concat . sequence :: [Either a String] -> Either a String -- there |
2021-07-27 12:25:04 +0200 | <lambdabot> | [Either a String] -> Either a String |
2021-07-27 12:25:37 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Read error: Connection reset by peer) |
2021-07-27 12:25:56 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
2021-07-27 12:26:09 +0200 | sshine_ | sshine |
2021-07-27 12:26:17 +0200 | royo | (~royo@user/royo) (Remote host closed the connection) |
2021-07-27 12:26:33 +0200 | pesada | (~agua@177.79.68.96) |
2021-07-27 12:28:11 +0200 | euouae | (~euouae@user/euouae) |
2021-07-27 12:28:15 +0200 | <euouae> | Hello |
2021-07-27 12:28:22 +0200 | dunkeln | (~dunkeln@94.129.69.87) |
2021-07-27 12:28:54 +0200 | <euouae> | How do I use haddock to comment individual arguments? I am not sure how to format it. For example, now I use this style: https://paste.tomsmeding.com/jDqAB5mL |
2021-07-27 12:29:15 +0200 | <euouae> | Notice that I have to place :: on a newline so that -> always matches up. If I don't do this, my editor does not enter the right amount of spaces (I have to tab it myself) |
2021-07-27 12:29:17 +0200 | agua | (~agua@2804:14c:8793:8e2f:39e9:c5a8:c532:7498) (Ping timeout: 268 seconds) |
2021-07-27 12:31:47 +0200 | royo | (~royo@user/royo) |
2021-07-27 12:31:47 +0200 | <tomsmeding> | euouae: looks like the "standard style", for as far as there's one https://hackage.haskell.org/package/base-4.14.0.0/docs/src/System.IO.html#line-458 |
2021-07-27 12:32:10 +0200 | <euouae> | do you know which formatter follows that style? |
2021-07-27 12:32:12 +0200 | azeem | (~azeem@176.200.241.36) (Ping timeout: 245 seconds) |
2021-07-27 12:32:19 +0200 | tomsmeding | doesn't use a formatter |
2021-07-27 12:32:20 +0200 | <euouae> | The one formatter I just tried replaces my -- ^ with newlines and -- |
2021-07-27 12:32:21 +0200 | <euouae> | -- | |
2021-07-27 12:32:35 +0200 | <euouae> | You don't? Oh I love them! |
2021-07-27 12:32:37 +0200 | <tomsmeding> | can you post what its output is? |
2021-07-27 12:32:46 +0200 | <tomsmeding> | does it put the -- | before the argument instead of after it? |
2021-07-27 12:32:53 +0200 | <euouae> | https://paste.tomsmeding.com/U2AKRT6Q |
2021-07-27 12:33:03 +0200 | <tomsmeding> | that looks horrible to me :p |
2021-07-27 12:33:31 +0200 | azeem | (~azeem@62.18.161.85) |
2021-07-27 12:33:48 +0200 | <euouae> | I agree |
2021-07-27 12:33:52 +0200 | <euouae> | It's not too great |
2021-07-27 12:33:57 +0200 | <tomsmeding> | so I guess your question is: which formatter preserves "-> Int -- ^ documentation" formatting for function arguments |
2021-07-27 12:34:15 +0200 | <euouae> | What I can say is that I prefer a formatter over custom stylistic stuff |
2021-07-27 12:36:36 +0200 | <tomsmeding> | but it's all opinion anyway |
2021-07-27 12:36:41 +0200 | <tomsmeding> | which formatting is "nicest" |
2021-07-27 12:37:23 +0200 | jippiedoe | (~david@2a02-a44c-e14e-1-46af-5566-11c4-28b2.fixed6.kpn.net) |
2021-07-27 12:37:26 +0200 | acidjnk_new3 | (~acidjnk@p200300d0c72b953020abcb826e8e1ebf.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2021-07-27 12:37:29 +0200 | terrorjack | (~terrorjac@ec2-54-95-39-30.ap-northeast-1.compute.amazonaws.com) (Remote host closed the connection) |
2021-07-27 12:37:33 +0200 | <tomsmeding> | euouae: a regular here in this channel expresses this sentiment https://twitter.com/comerijn/status/1257804634833420292 |
2021-07-27 12:38:26 +0200 | terrorjack | (~terrorjac@ec2-54-95-39-30.ap-northeast-1.compute.amazonaws.com) |
2021-07-27 12:38:39 +0200 | <euouae> | Doesn't matter what they think |
2021-07-27 12:39:09 +0200 | <euouae> | I know I waste time and energy overthinking it and it's better spent elsewhere |
2021-07-27 12:41:28 +0200 | neurocyte0 | (~neurocyte@46.243.81.131) |
2021-07-27 12:41:28 +0200 | neurocyte0 | (~neurocyte@46.243.81.131) (Changing host) |
2021-07-27 12:41:28 +0200 | neurocyte0 | (~neurocyte@user/neurocyte) |
2021-07-27 12:41:54 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-07-27 12:43:03 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-07-27 12:43:39 +0200 | neurocyte0 | (~neurocyte@user/neurocyte) (Client Quit) |
2021-07-27 12:43:51 +0200 | neurocyte0 | (~neurocyte@46.243.81.131) |
2021-07-27 12:43:51 +0200 | neurocyte0 | (~neurocyte@46.243.81.131) (Changing host) |
2021-07-27 12:43:51 +0200 | neurocyte0 | (~neurocyte@user/neurocyte) |
2021-07-27 12:44:02 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 252 seconds) |
2021-07-27 12:44:17 +0200 | neurocyte0 | neurocyte |
2021-07-27 12:44:35 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) (Ping timeout: 265 seconds) |
2021-07-27 12:44:59 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) |
2021-07-27 12:45:52 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) |
2021-07-27 12:45:52 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer) |
2021-07-27 12:46:25 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-07-27 12:46:30 +0200 | jippiedoe | (~david@2a02-a44c-e14e-1-46af-5566-11c4-28b2.fixed6.kpn.net) (Ping timeout: 256 seconds) |
2021-07-27 12:48:20 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds) |
2021-07-27 12:48:50 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-07-27 12:49:22 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-07-27 12:49:52 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) |
2021-07-27 12:51:36 +0200 | dunkeln | (~dunkeln@94.129.69.87) (Ping timeout: 256 seconds) |
2021-07-27 12:53:54 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-07-27 12:54:17 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) (Ping timeout: 258 seconds) |
2021-07-27 12:54:30 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:63c6:890b:fddc:7714) |
2021-07-27 12:54:39 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-07-27 12:54:50 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-07-27 12:57:23 +0200 | <Arahael> | It's remarkable how quickly one gets used to using lenses. |
2021-07-27 12:59:05 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds) |
2021-07-27 12:59:18 +0200 | <Rembane> | And then gets unused to them again after not using them for a while. |
2021-07-27 13:00:02 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds) |
2021-07-27 13:00:32 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-07-27 13:01:58 +0200 | <Arahael> | Indeed. |
2021-07-27 13:02:24 +0200 | <Arahael> | I should re-learn the whole` Lens s t a b` thing again. |
2021-07-27 13:02:41 +0200 | <Arahael> | (But not today) |
2021-07-27 13:03:21 +0200 | euouae | (~euouae@user/euouae) (Quit: euouae) |
2021-07-27 13:04:08 +0200 | dunkeln | (~dunkeln@94.129.69.87) |
2021-07-27 13:04:48 +0200 | neurocyte | (~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat) |
2021-07-27 13:06:22 +0200 | neurocyte | (~neurocyte@46.243.81.131) |
2021-07-27 13:06:22 +0200 | neurocyte | (~neurocyte@46.243.81.131) (Changing host) |
2021-07-27 13:06:22 +0200 | neurocyte | (~neurocyte@user/neurocyte) |
2021-07-27 13:07:41 +0200 | chele | (~chele@user/chele) (Ping timeout: 255 seconds) |
2021-07-27 13:07:51 +0200 | chele | (~chele@user/chele) |
2021-07-27 13:09:45 +0200 | jippiedoe | (~david@2a02-a44c-e14e-1-b572-7a56-aa26-eb3.fixed6.kpn.net) |
2021-07-27 13:10:46 +0200 | <arkanoid> | would you suggesto to learn error handling via Control.Exception or prefer Data.Either where left is custom Error type |
2021-07-27 13:11:46 +0200 | <Rembane> | arkanoid: I would go for Data.Either as long as possible |
2021-07-27 13:12:37 +0200 | <Arahael> | arkanoid: I'd use Control.Exception for seriously exceptional cases. |
2021-07-27 13:13:53 +0200 | <arkanoid> | Arahael: like when the program should really crash but it may be a library so it's up to the caller to decide what to do? |
2021-07-27 13:13:54 +0200 | jippiedoe | (~david@2a02-a44c-e14e-1-b572-7a56-aa26-eb3.fixed6.kpn.net) (Ping timeout: 240 seconds) |
2021-07-27 13:14:08 +0200 | <arkanoid> | Rembane: thanks! |
2021-07-27 13:14:15 +0200 | <Arahael> | arkanoid: I think so. |
2021-07-27 13:15:04 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-07-27 13:15:38 +0200 | <Rembane> | arkanoid: np! |
2021-07-27 13:16:08 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-07-27 13:16:44 +0200 | <arkanoid> | is there anything else I should consider for this topic apart from Control.Exception, Data.Either and Data.Maybe and obviously Monad pattern? |
2021-07-27 13:19:47 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds) |
2021-07-27 13:24:06 +0200 | jippiedoe | (~david@2a02-a44c-e14e-1-bf41-1b3a-cc17-853c.fixed6.kpn.net) |
2021-07-27 13:25:36 +0200 | azeem | (~azeem@62.18.161.85) (Ping timeout: 256 seconds) |
2021-07-27 13:26:01 +0200 | azeem | (~azeem@62.18.161.85) |
2021-07-27 13:26:08 +0200 | acidjnk_new3 | (~acidjnk@p200300d0c72b950729faca9193881d78.dip0.t-ipconnect.de) |
2021-07-27 13:29:08 +0200 | tazca[m] | (~tazcamatr@2001:470:69fc:105::c809) |
2021-07-27 13:29:40 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) |
2021-07-27 13:30:17 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) |
2021-07-27 13:30:59 +0200 | <merijn> | Simple heuristic: Either for library interfaces, exceptions for within my own program |
2021-07-27 13:31:11 +0200 | <merijn> | i.e. exceptions across package boundaries should be opt-in |
2021-07-27 13:31:50 +0200 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2021-07-27 13:34:40 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) (Ping timeout: 256 seconds) |
2021-07-27 13:36:10 +0200 | tazca[m] | (~tazcamatr@2001:470:69fc:105::c809) () |
2021-07-27 13:36:16 +0200 | Guest67 | (~Guest67@bxk158.neoplus.adsl.tpnet.pl) |
2021-07-27 13:36:50 +0200 | dunkeln | (~dunkeln@94.129.69.87) (Ping timeout: 258 seconds) |
2021-07-27 13:38:14 +0200 | arjun | (~Srain@user/arjun) |
2021-07-27 13:42:57 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2021-07-27 13:45:00 +0200 | azeem | (~azeem@62.18.161.85) (Ping timeout: 265 seconds) |
2021-07-27 13:45:17 +0200 | azeem | (~azeem@62.18.161.85) |
2021-07-27 13:47:33 +0200 | <Arahael> | Hmm. With lenses, I want to do `aVar & aField .~ aValue`, except I *don't* want the field set if aValue is Nothing. What should I do? |
2021-07-27 13:47:55 +0200 | <Arahael> | (ie, aValue is a `Maybe a`, and I want it to set the 'a' value if it exists) |
2021-07-27 13:48:36 +0200 | raehik1 | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-07-27 13:48:52 +0200 | <Arahael> | merijn: That's fair - I remember getting surprised that wreq, as an example, didn't seem to work weirdly - turned out it was raising an exception. :) Using Either would have made that very explicit. (Though I think it was using Either, so I was quite confused) |
2021-07-27 13:50:44 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-07-27 13:51:21 +0200 | <Arahael> | I'm thinking of defining a new operator: .~? This sets the specified field to a if the RHS is "Just a", otherwise does nothing. |
2021-07-27 13:53:14 +0200 | Guest67 | (~Guest67@bxk158.neoplus.adsl.tpnet.pl) (Quit: Client closed) |
2021-07-27 13:55:38 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds) |
2021-07-27 13:57:10 +0200 | dunkeln | (~dunkeln@94.129.69.87) |
2021-07-27 13:57:13 +0200 | <Arahael> | Hmm, that was too easy. |
2021-07-27 13:57:24 +0200 | guest6474 | (~guest6474@79.184.16.172.ipv4.supernova.orange.pl) |
2021-07-27 13:57:29 +0200 | mastarija | (~mastarija@31.217.8.174) |
2021-07-27 13:57:51 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) |
2021-07-27 13:59:20 +0200 | guest6474 | (~guest6474@79.184.16.172.ipv4.supernova.orange.pl) (Remote host closed the connection) |
2021-07-27 14:02:23 +0200 | <jippiedoe> | Arahael: if it's not a common enough pattern to want a `.~?`, you could use `aVar & aField %~ (`fromMaybe` aValue)` instead |
2021-07-27 14:05:06 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 240 seconds) |
2021-07-27 14:05:23 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-07-27 14:05:25 +0200 | <Arahael> | jippiedoe: It's common enough, but that looks even easier! Except that replaces the value in either case. |
2021-07-27 14:06:14 +0200 | <Arahael> | jippiedoe: I went with `a .~? (Just b) = a .~ b` and `a .~? Nothing = id` |
2021-07-27 14:06:40 +0200 | <Arahael> | (Right? That `fromMaybe` isn't preserving the input, isn't it?) |
2021-07-27 14:06:41 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-07-27 14:06:47 +0200 | <jippiedoe> | What do you mean with 'it replaces the value in either case'? |
2021-07-27 14:06:58 +0200 | <Arahael> | jippiedoe: What does it do if aValue is Nothing? |
2021-07-27 14:07:23 +0200 | <jippiedoe> | fromMaybe d x = case x of {Nothing -> d;Just v -> v} |
2021-07-27 14:07:47 +0200 | <jippiedoe> | fromMaybe a Nothing = a |
2021-07-27 14:08:07 +0200 | anandprabhu | (~anandprab@94.202.243.198) |
2021-07-27 14:09:19 +0200 | <Arahael> | Oh, yeah. I was confused. |
2021-07-27 14:09:30 +0200 | <Arahael> | Thanks - the user-provided function provides the original value. |
2021-07-27 14:10:02 +0200 | <Arahael> | Hmm, which means it becomes explicitly set? |
2021-07-27 14:10:36 +0200 | Arahael | thinks it doesn't make a difference - the lens don't distinguish, he thinks. |
2021-07-27 14:10:59 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-07-27 14:12:00 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) (Ping timeout: 250 seconds) |
2021-07-27 14:13:05 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) |
2021-07-27 14:13:27 +0200 | anandprabhu | (~anandprab@94.202.243.198) (Ping timeout: 245 seconds) |
2021-07-27 14:15:33 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds) |
2021-07-27 14:19:47 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-07-27 14:23:46 +0200 | raehik1 | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
2021-07-27 14:25:01 +0200 | raehik1 | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-07-27 14:26:32 +0200 | raehik1 | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Client Quit) |
2021-07-27 14:29:35 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-07-27 14:32:33 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-07-27 14:32:50 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-07-27 14:32:58 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-07-27 14:33:35 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-07-27 14:33:43 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-07-27 14:34:39 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-07-27 14:39:42 +0200 | arjun | (~Srain@user/arjun) (Ping timeout: 258 seconds) |
2021-07-27 14:41:11 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
2021-07-27 14:41:43 +0200 | <tomsmeding> | Arahael: what about `aVar & aField %~ (aValue <|>)` |
2021-07-27 14:42:03 +0200 | <tomsmeding> | disclaimer: I have no idea about lenses, but with regards to Maybe, that should have the semantics that you describe I think? |
2021-07-27 14:42:24 +0200 | <tomsmeding> | ( (<|>) from Alternative in Control.Applicative) |
2021-07-27 14:42:35 +0200 | <Arahael> | tomsmeding: That's a variant of what jippiedoe suggested, I think. That works also, I think. |
2021-07-27 14:42:47 +0200 | <Arahael> | So I have three options now. :D And I've now learnt about %~ |
2021-07-27 14:43:06 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) (Ping timeout: 268 seconds) |
2021-07-27 14:43:45 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) |
2021-07-27 14:43:54 +0200 | texasmynsted_ | (~texasmyns@99.96.221.112) (Ping timeout: 240 seconds) |
2021-07-27 14:45:08 +0200 | gzj | (~GZJ0X@199.193.127.138.16clouds.com) |
2021-07-27 14:45:11 +0200 | <tomsmeding> | oh wait 'aField' is not a Maybe but just the value itself? Then yes, fromMaybe :p |
2021-07-27 14:45:28 +0200 | hendursaga | (~weechat@user/hendursaga) |
2021-07-27 14:45:47 +0200 | <jippiedoe> | Ah, I interpreted the field to be of type `a` that you want to replace if the replacement exists, whereas tomsmeding's suggestion works if the field is of type `Maybe a` |
2021-07-27 14:45:54 +0200 | <tomsmeding> | ^ |
2021-07-27 14:46:10 +0200 | <jippiedoe> | and while I was typing I didn't see you saw it too already :) |
2021-07-27 14:46:23 +0200 | tomsmeding | high-5's jippiedoe |
2021-07-27 14:48:16 +0200 | <Arahael> | Ah, interesting. |
2021-07-27 14:53:18 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-07-27 14:55:05 +0200 | azeem | (~azeem@62.18.161.85) (Ping timeout: 265 seconds) |
2021-07-27 14:55:17 +0200 | jolly | (~jolly@208.180.97.158) |
2021-07-27 14:57:59 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds) |
2021-07-27 14:58:19 +0200 | azeem | (~azeem@62.18.161.85) |
2021-07-27 14:58:34 +0200 | jneira | (~jneira@212.8.115.226) (Quit: Client closed) |
2021-07-27 15:00:24 +0200 | dunkeln | (~dunkeln@94.129.69.87) (Ping timeout: 265 seconds) |
2021-07-27 15:00:25 +0200 | argento | (~argent0@168-227-96-51.ptr.westnet.com.ar) |
2021-07-27 15:01:06 +0200 | alx741 | (~alx741@186.178.108.3) |
2021-07-27 15:02:14 +0200 | chris_ | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-07-27 15:02:39 +0200 | <xerox> | :t fmap . const |
2021-07-27 15:02:41 +0200 | <lambdabot> | Functor f => b -> f a -> f b |
2021-07-27 15:02:49 +0200 | <xerox> | I'd do it like that |
2021-07-27 15:03:14 +0200 | chris_ | (~chris@81.96.113.213) |
2021-07-27 15:03:28 +0200 | <Taneb> | :t (<$) |
2021-07-27 15:03:30 +0200 | <lambdabot> | Functor f => a -> f b -> f a |
2021-07-27 15:04:30 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-07-27 15:04:37 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-07-27 15:06:14 +0200 | gzj | (~GZJ0X@199.193.127.138.16clouds.com) (Remote host closed the connection) |
2021-07-27 15:06:32 +0200 | gzj | (~GZJ0X@199.193.127.138.16clouds.com) |
2021-07-27 15:07:12 +0200 | gzj | (~GZJ0X@199.193.127.138.16clouds.com) (Remote host closed the connection) |
2021-07-27 15:07:32 +0200 | gzj | (~GZJ0X@199.193.127.138.16clouds.com) |
2021-07-27 15:08:12 +0200 | gzj | (~GZJ0X@199.193.127.138.16clouds.com) (Read error: Connection reset by peer) |
2021-07-27 15:08:30 +0200 | gzj | (~GZJ0X@199.193.127.138.16clouds.com) |
2021-07-27 15:09:11 +0200 | gzj | (~GZJ0X@199.193.127.138.16clouds.com) (Remote host closed the connection) |
2021-07-27 15:09:31 +0200 | gzj | (~GZJ0X@199.193.127.138.16clouds.com) |
2021-07-27 15:11:13 +0200 | gzj | (~GZJ0X@199.193.127.138.16clouds.com) (Remote host closed the connection) |
2021-07-27 15:12:22 +0200 | Morgan | (~Morgan@host81-152-76-173.range81-152.btcentralplus.com) |
2021-07-27 15:13:15 +0200 | Morgan | (~Morgan@host81-152-76-173.range81-152.btcentralplus.com) (Client Quit) |
2021-07-27 15:13:49 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-07-27 15:13:49 +0200 | wei2912 | (~wei2912@112.199.250.21) (Quit: Lost terminal) |
2021-07-27 15:16:48 +0200 | adanwan_ | (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
2021-07-27 15:17:02 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) |
2021-07-27 15:17:54 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
2021-07-27 15:18:21 +0200 | jippiedoe | (~david@2a02-a44c-e14e-1-bf41-1b3a-cc17-853c.fixed6.kpn.net) (Ping timeout: 276 seconds) |
2021-07-27 15:18:46 +0200 | <arkanoid> | where I can find good examples of simple haskell programs that can show me a picture of IO, error handling and Monads in general? I keep finding snippets of different topics, but not real programs |
2021-07-27 15:19:27 +0200 | Morgan | (~Morgan@host81-152-76-173.range81-152.btcentralplus.com) |
2021-07-27 15:20:50 +0200 | <merijn> | shellcheck? pandoc? |
2021-07-27 15:20:58 +0200 | <merijn> | xmonad, I suppose? |
2021-07-27 15:22:20 +0200 | <tomsmeding> | not sure those count as "simple" :p |
2021-07-27 15:23:12 +0200 | Morgan | (~Morgan@host81-152-76-173.range81-152.btcentralplus.com) (Client Quit) |
2021-07-27 15:25:30 +0200 | <[exa]> | arkanoid: we can write some for you, if you have a topic |
2021-07-27 15:26:19 +0200 | <[exa]> | arkanoid: a deceiving problem in haskell is that "simple" usually means "oneliner" which people sometimes refuse to accept as a valid example program :D |
2021-07-27 15:29:05 +0200 | <arkanoid> | shellcheck and xmonad "simple" :D for simple I mean classic example of small game like tic tac toe (with input and output). Just random guessing. I prefer a good example of haskell code (yet doing IO) than a specific task |
2021-07-27 15:29:48 +0200 | <merijn> | tic-tac-toe sounds much harder than shellcheck, tbh |
2021-07-27 15:30:43 +0200 | <[exa]> | arkanoid: for tic-tac-toe, check out Brick library (or maybe Gloss) |
2021-07-27 15:30:57 +0200 | jippiedoe | (~david@77-171-152-62.fixed.kpn.net) |
2021-07-27 15:31:03 +0200 | <__monty__> | Error handling isn't very common in Haskell fwiw. So you're not likely to find it in short examples. IME |
2021-07-27 15:31:03 +0200 | <[exa]> | iirc Brick even has some simple game in demos, it might have been snake or something |
2021-07-27 15:31:21 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-07-27 15:35:45 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-07-27 15:37:37 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2021-07-27 15:37:56 +0200 | azeem | (~azeem@62.18.161.85) (Ping timeout: 252 seconds) |
2021-07-27 15:38:19 +0200 | azeem | (~azeem@62.18.161.85) |
2021-07-27 15:39:12 +0200 | yahb | (xsbot@user/mniip/bot/yahb) (Ping timeout: 252 seconds) |
2021-07-27 15:39:42 +0200 | mastarija | (~mastarija@31.217.8.174) (Ping timeout: 245 seconds) |
2021-07-27 15:40:28 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2021-07-27 15:41:40 +0200 | motherfsck | (~motherfsc@user/motherfsck) |
2021-07-27 15:44:17 +0200 | Morrow | (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 255 seconds) |
2021-07-27 15:44:29 +0200 | yahb | (xsbot@user/mniip/bot/yahb) |
2021-07-27 15:46:17 +0200 | arthurxavierx | (~arthurxav@201.17.157.69) |
2021-07-27 15:46:58 +0200 | kayprish | (~kayprish@cable-188-2-229-172.dynamic.sbb.rs) |
2021-07-27 15:49:23 +0200 | lambdap | (~lambdap@static.167.190.119.168.clients.your-server.de) (Quit: lambdap) |
2021-07-27 15:53:23 +0200 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2021-07-27 15:53:29 +0200 | kayprish | (~kayprish@cable-188-2-229-172.dynamic.sbb.rs) (Read error: Connection reset by peer) |
2021-07-27 15:54:06 +0200 | Guest67 | (~Guest67@bxk158.neoplus.adsl.tpnet.pl) |
2021-07-27 15:55:11 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) |
2021-07-27 15:55:21 +0200 | Guest67 | (~Guest67@bxk158.neoplus.adsl.tpnet.pl) (Client Quit) |
2021-07-27 15:58:25 +0200 | lambdap | (~lambdap@static.167.190.119.168.clients.your-server.de) |
2021-07-27 15:58:40 +0200 | jmorris | (uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
2021-07-27 15:58:41 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Read error: Connection reset by peer) |
2021-07-27 15:59:08 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
2021-07-27 16:03:06 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 272 seconds) |
2021-07-27 16:03:39 +0200 | shriekingnoise | (~shrieking@186.137.144.80) |
2021-07-27 16:05:46 +0200 | dunkeln | (~dunkeln@94.129.69.87) |
2021-07-27 16:10:37 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) |
2021-07-27 16:12:05 +0200 | amahl | (~amahl@84.251.202.64) |
2021-07-27 16:12:47 +0200 | jolly95 | (~jolly@208.180.97.158) |
2021-07-27 16:14:53 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) (Ping timeout: 255 seconds) |
2021-07-27 16:16:17 +0200 | jolly | (~jolly@208.180.97.158) (Ping timeout: 265 seconds) |
2021-07-27 16:17:35 +0200 | jolly95 | jolly |
2021-07-27 16:17:53 +0200 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
2021-07-27 16:18:18 +0200 | mastarija | (~mastarija@31.217.8.174) |
2021-07-27 16:19:22 +0200 | andreabedini[m] | (~andreabed@2001:470:69fc:105::c821) |
2021-07-27 16:20:37 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-07-27 16:20:45 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-07-27 16:21:20 +0200 | jneira_ | (~jneira_@28.red-80-28-169.staticip.rima-tde.net) |
2021-07-27 16:22:04 +0200 | arjun | (~Srain@user/arjun) |
2021-07-27 16:26:33 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-07-27 16:28:21 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2021-07-27 16:30:28 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-07-27 16:31:42 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Read error: Connection reset by peer) |
2021-07-27 16:31:55 +0200 | enoq | (~enoq@194-208-179-35.lampert.tv) |
2021-07-27 16:31:58 +0200 | chris_ | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-07-27 16:32:24 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
2021-07-27 16:33:18 +0200 | shapr | (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
2021-07-27 16:35:06 +0200 | <dsal> | > [Nothing, Just 3] & each . _Just .~ 1 -- Arahael |
2021-07-27 16:35:08 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds) |
2021-07-27 16:35:08 +0200 | <lambdabot> | [Nothing,Just 1] |
2021-07-27 16:35:26 +0200 | chris_ | (~chris@81.96.113.213) |
2021-07-27 16:36:12 +0200 | <dsal> | Oh wait, you're doing it the other way around? |
2021-07-27 16:38:21 +0200 | abarbu | (~user@c-66-31-23-28.hsd1.ma.comcast.net) |
2021-07-27 16:38:53 +0200 | acidjnk_new3 | (~acidjnk@p200300d0c72b950729faca9193881d78.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2021-07-27 16:39:58 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 256 seconds) |
2021-07-27 16:40:19 +0200 | abarbu | (~user@c-66-31-23-28.hsd1.ma.comcast.net) () |
2021-07-27 16:41:17 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
2021-07-27 16:41:19 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection) |
2021-07-27 16:41:35 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
2021-07-27 16:42:25 +0200 | Guest1981 | (~user@c-66-31-23-28.hsd1.ma.comcast.net) |
2021-07-27 16:43:24 +0200 | <Guest1981> | I have a ghci question. when I run "x :: Int; x = 1" then ":t x" I get "error: Variable not in scope: x" |
2021-07-27 16:44:05 +0200 | <Guest1981> | Shouldn't x be in scope? |
2021-07-27 16:44:59 +0200 | <Orbstheorem> | Works in my shell 🤔 |
2021-07-27 16:45:27 +0200 | <geekosaur> | works here too |
2021-07-27 16:45:58 +0200 | <Guest1981> | Everything I can see online says it should work, but it doesn't |
2021-07-27 16:46:40 +0200 | <Orbstheorem> | If you try to print the variable, does it not work either? |
2021-07-27 16:48:48 +0200 | <Guest1981> | <interactive>:105:7: error: Variable not in scope: x |
2021-07-27 16:49:56 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) |
2021-07-27 16:50:02 +0200 | <Orbstheorem> | That 105 is curious, how are you using ghci? |
2021-07-27 16:50:25 +0200 | <Guest1981> | Oh, that's just because I had run quite a few other commands before. |
2021-07-27 16:50:49 +0200 | <Orbstheorem> | have you tried in a fresh repl? |
2021-07-27 16:50:57 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-07-27 16:51:09 +0200 | <Orbstheorem> | Maybe you were in some scope when you originally bound it. |
2021-07-27 16:51:20 +0200 | <Guest1981> | Hah, so.. without -fobject-code this works. With -fobject-code it's never in scope |
2021-07-27 16:51:24 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2021-07-27 16:51:29 +0200 | <Guest1981> | In a fresh ghci |
2021-07-27 16:52:02 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-07-27 16:52:28 +0200 | <geekosaur> | I can reproduce that locally |
2021-07-27 16:52:38 +0200 | <geekosaur> | interesting |
2021-07-27 16:52:54 +0200 | <Guest1981> | Prelude> x :: Int; x = 1 |
2021-07-27 16:52:54 +0200 | <Guest1981> | Prelude> x |
2021-07-27 16:52:54 +0200 | <Guest1981> | 1 |
2021-07-27 16:52:54 +0200 | <Guest1981> | Prelude> :set -fobject-code |
2021-07-27 16:52:57 +0200 | <Guest1981> | Prelude> y :: Int; y = 1 |
2021-07-27 16:53:00 +0200 | <Guest1981> | Prelude> y |
2021-07-27 16:53:04 +0200 | <Guest1981> | <interactive>:5:1: error: Variable not in scope: y |
2021-07-27 16:53:10 +0200 | <Guest1981> | Is this intended behavior? |
2021-07-27 16:55:29 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds) |
2021-07-27 16:56:29 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
2021-07-27 16:56:33 +0200 | jippiedoe | (~david@77-171-152-62.fixed.kpn.net) (Ping timeout: 258 seconds) |
2021-07-27 16:58:20 +0200 | arjun | (~Srain@user/arjun) (Ping timeout: 265 seconds) |
2021-07-27 17:02:10 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:63c6:890b:fddc:7714) (Quit: WeeChat 2.8) |
2021-07-27 17:03:04 +0200 | azeem | (~azeem@62.18.161.85) (Ping timeout: 258 seconds) |
2021-07-27 17:03:09 +0200 | <merijn> | Yes, no, maybe |
2021-07-27 17:03:09 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2021-07-27 17:03:36 +0200 | azeem | (~azeem@62.18.161.85) |
2021-07-27 17:03:45 +0200 | <merijn> | ghci never really behaved like a normal source file, but has been incrementally hacked up over the years to act more like a source file |
2021-07-27 17:03:52 +0200 | <geekosaur> | I can see how it might be happening, and suspect it wouldn't be readily fixable |
2021-07-27 17:04:27 +0200 | <geekosaur> | -fobject-code is really meant to work with something preloaded and probably doesn'[t interact very well with, er, interaction |
2021-07-27 17:05:00 +0200 | LukeHoersten | (~LukeHoers@user/lukehoersten) |
2021-07-27 17:05:55 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-07-27 17:05:56 +0200 | <geekosaur> | and yes, ghci is a hyuge mess |
2021-07-27 17:06:41 +0200 | <merijn> | ghci is great for toying with stuff |
2021-07-27 17:07:11 +0200 | <merijn> | But don't expect reasonable behaviour on all inputs that happen to be syntactically valid at the file level |
2021-07-27 17:07:45 +0200 | drd | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) |
2021-07-27 17:08:02 +0200 | <merijn> | tbh, I'd mostly recommend only using it for evaluating expressions, not really anything resembling "interactive programming" like some people do in python's repl/notebooks |
2021-07-27 17:08:38 +0200 | slowButPresent | (~slowButPr@user/slowbutpresent) |
2021-07-27 17:09:09 +0200 | <Guest1981> | Is this behavior documented anywhere? |
2021-07-27 17:09:16 +0200 | <geekosaur> | doubt it |
2021-07-27 17:10:49 +0200 | <merijn> | I still consider the change to ghci to make it behave more like a top level file a mistake >.> |
2021-07-27 17:11:07 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-07-27 17:11:14 +0200 | spruit11_ | (~quassel@2a02:a467:ccd6:1:c892:977a:b4bf:318c) |
2021-07-27 17:11:52 +0200 | spruit11_ | (~quassel@2a02:a467:ccd6:1:c892:977a:b4bf:318c) (Client Quit) |
2021-07-27 17:12:10 +0200 | spruit11_ | (~quassel@2a02:a467:ccd6:1:c892:977a:b4bf:318c) |
2021-07-27 17:12:21 +0200 | mastarija | (~mastarija@31.217.8.174) (Ping timeout: 265 seconds) |
2021-07-27 17:12:50 +0200 | dunkeln | (~dunkeln@94.129.69.87) (Ping timeout: 265 seconds) |
2021-07-27 17:13:01 +0200 | <Guest1981> | Thanks. I'll file a bug. |
2021-07-27 17:13:09 +0200 | enoq | (~enoq@194-208-179-35.lampert.tv) (Quit: enoq) |
2021-07-27 17:14:40 +0200 | spruit11 | (~quassel@2a02:a467:ccd6:1:3536:e6ac:e02d:6c68) (Ping timeout: 272 seconds) |
2021-07-27 17:15:22 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
2021-07-27 17:15:30 +0200 | Null_A | (~null_a@2601:645:8700:2290:74e6:d8ab:910e:9608) |
2021-07-27 17:17:02 +0200 | pe200012_ | (~pe200012@113.105.10.33) (Ping timeout: 250 seconds) |
2021-07-27 17:17:40 +0200 | azeem | (~azeem@62.18.161.85) (Ping timeout: 265 seconds) |
2021-07-27 17:18:14 +0200 | azeem | (~azeem@5.168.230.43) |
2021-07-27 17:18:29 +0200 | <dexterfoo> | is there a list of all of the Haskell operators, so that I can choose one that isn't in use yet? |
2021-07-27 17:19:45 +0200 | <Hecate> | dexterfoo: hoogle |
2021-07-27 17:20:11 +0200 | <geekosaur> | I suspect that'd get you an argument. like, some people would count lens operators |
2021-07-27 17:20:17 +0200 | <Hecate> | dexterfoo: just realise that operators are just functions, they're usually overloadable |
2021-07-27 17:20:22 +0200 | <[exa]> | dexterfoo: good luck, really. :D |
2021-07-27 17:22:23 +0200 | <dexterfoo> | According to Hoogle (>>>>) is not used, so I will take it |
2021-07-27 17:23:17 +0200 | argento | (~argent0@168-227-96-51.ptr.westnet.com.ar) (Ping timeout: 255 seconds) |
2021-07-27 17:26:10 +0200 | <dsal> | It only has to not be taken in your project. |
2021-07-27 17:27:11 +0200 | geekosaur | used >.> — feel free |
2021-07-27 17:31:15 +0200 | jumper149 | (~jumper149@80.240.31.34) (Quit: WeeChat 3.2) |
2021-07-27 17:31:28 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-07-27 17:33:21 +0200 | <merijn> | Asking for "what operators aren't used yet" is like asking for "a number nobody has thought of yet" :p |
2021-07-27 17:35:21 +0200 | dunkeln | (~dunkeln@94.129.69.87) |
2021-07-27 17:35:32 +0200 | chele | (~chele@user/chele) (Remote host closed the connection) |
2021-07-27 17:36:12 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds) |
2021-07-27 17:36:31 +0200 | <davean> | merijn: no one has thought of most numbers yet |
2021-07-27 17:36:51 +0200 | <DigitalKiwi> | ur moms |
2021-07-27 17:38:22 +0200 | arjun | (~Srain@user/arjun) |
2021-07-27 17:38:29 +0200 | argento | (~argent0@168-227-96-51.ptr.westnet.com.ar) |
2021-07-27 17:38:48 +0200 | <Taneb> | davean: and most possible operators are still available for use |
2021-07-27 17:41:39 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-07-27 17:43:59 +0200 | truckasaurus | (sid457088@2001:67c:2f08:5::6:f980) (Ping timeout: 255 seconds) |
2021-07-27 17:44:16 +0200 | <zzz> | is something like `(take n &&& drop n) ls` optimized to avoid 2n operations? |
2021-07-27 17:44:57 +0200 | <xerox> | :t splitAt |
2021-07-27 17:44:58 +0200 | <lambdabot> | Int -> [a] -> ([a], [a]) |
2021-07-27 17:45:08 +0200 | <glguy> | zzz: I would expect not |
2021-07-27 17:45:39 +0200 | dajoer | (~david@user/gvx) (Quit: leaving) |
2021-07-27 17:45:49 +0200 | <zzz> | ok thanks |
2021-07-27 17:46:41 +0200 | truckasaurus | (sid457088@id-457088.brockwell.irccloud.com) |
2021-07-27 17:47:52 +0200 | zmt01 | (~zmt00@user/zmt00) |
2021-07-27 17:48:04 +0200 | jumper149 | (~jumper149@80.240.31.34) |
2021-07-27 17:48:14 +0200 | mcfilib | (sid302703@user/mcfilib) (Ping timeout: 250 seconds) |
2021-07-27 17:48:52 +0200 | <merijn> | davean: Sure |
2021-07-27 17:49:09 +0200 | <merijn> | davean: But the second you think of one, nothing stops anyone else :p |
2021-07-27 17:49:09 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) |
2021-07-27 17:49:30 +0200 | mcfilib | (sid302703@user/mcfilib) |
2021-07-27 17:49:57 +0200 | <monochrom> | "what functions names aren't used yet" is the perfect equivalent. |
2021-07-27 17:53:14 +0200 | peterhil | (~peterhil@mobile-access-b04815-181.dhcp.inet.fi) (Ping timeout: 252 seconds) |
2021-07-27 17:53:36 +0200 | Guest966 | (~Guest9@43.242.116.41) |
2021-07-27 17:53:50 +0200 | Morrow | (~Morrow@37.142.145.18) |
2021-07-27 17:54:29 +0200 | chris_ | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-07-27 17:54:52 +0200 | lbseale | (~lbseale@user/ep1ctetus) |
2021-07-27 17:55:03 +0200 | Null_A | (~null_a@2601:645:8700:2290:74e6:d8ab:910e:9608) (Remote host closed the connection) |
2021-07-27 17:55:38 +0200 | Null_A | (~null_a@2601:645:8700:2290:74e6:d8ab:910e:9608) |
2021-07-27 17:57:51 +0200 | comerijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-07-27 17:58:42 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-07-27 17:59:00 +0200 | Morrow | (~Morrow@37.142.145.18) (Ping timeout: 272 seconds) |
2021-07-27 17:59:22 +0200 | chris_ | (~chris@81.96.113.213) |
2021-07-27 17:59:46 +0200 | Null_A | (~null_a@2601:645:8700:2290:74e6:d8ab:910e:9608) (Ping timeout: 240 seconds) |
2021-07-27 17:59:56 +0200 | Morrow | (~Morrow@31.154.96.164) |
2021-07-27 18:00:12 +0200 | haskl | (~haskl@98.37.78.63) (Ping timeout: 265 seconds) |
2021-07-27 18:02:11 +0200 | chris__ | (~chris@81.96.113.213) |
2021-07-27 18:02:34 +0200 | chris_ | (~chris@81.96.113.213) (Read error: Connection reset by peer) |
2021-07-27 18:04:12 +0200 | haskl | (~haskl@98.37.78.63) |
2021-07-27 18:07:53 +0200 | Atum_ | (~IRC@user/atum/x-2392232) |
2021-07-27 18:08:15 +0200 | lbseale | (~lbseale@user/ep1ctetus) (Quit: Leaving) |
2021-07-27 18:09:38 +0200 | chris__ | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-07-27 18:10:04 +0200 | lbseale | (~lbseale@user/ep1ctetus) |
2021-07-27 18:13:08 +0200 | chris_ | (~chris@81.96.113.213) |
2021-07-27 18:13:13 +0200 | arjun | (~Srain@user/arjun) (Remote host closed the connection) |
2021-07-27 18:13:37 +0200 | gehmehgeh_ | (~user@user/gehmehgeh) |
2021-07-27 18:15:26 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Ping timeout: 244 seconds) |
2021-07-27 18:15:59 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-07-27 18:18:12 +0200 | spruit11_ | (~quassel@2a02:a467:ccd6:1:c892:977a:b4bf:318c) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2021-07-27 18:18:28 +0200 | spruit11 | (~quassel@2a02:a467:ccd6:1:c892:977a:b4bf:318c) |
2021-07-27 18:19:53 +0200 | Null_A | (~null_a@2601:645:8700:2290:5520:ed9a:24da:3d0c) |
2021-07-27 18:24:20 +0200 | comerijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
2021-07-27 18:24:56 +0200 | azeem | (~azeem@5.168.230.43) (Ping timeout: 255 seconds) |
2021-07-27 18:28:32 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
2021-07-27 18:28:46 +0200 | soft-warm | (~soft-warm@2600:8801:db01:8f0:4884:3488:98a1:1fd9) (Ping timeout: 246 seconds) |
2021-07-27 18:29:46 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-07-27 18:32:02 +0200 | LukeHoersten | (~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-07-27 18:32:28 +0200 | gehmehgeh_ | (~user@user/gehmehgeh) (Quit: Leaving) |
2021-07-27 18:35:40 +0200 | azeem | (~azeem@5.168.230.43) |
2021-07-27 18:36:46 +0200 | pavonia | (~user@user/siracusa) |
2021-07-27 18:36:59 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 258 seconds) |
2021-07-27 18:37:54 +0200 | Morrow | (~Morrow@31.154.96.164) (Ping timeout: 276 seconds) |
2021-07-27 18:42:10 +0200 | meinside_ | (uid24933@id-24933.brockwell.irccloud.com) (Quit: Connection closed for inactivity) |
2021-07-27 18:43:38 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2021-07-27 18:43:41 +0200 | econo | (uid147250@user/econo) |
2021-07-27 18:44:39 +0200 | peterhil | (~peterhil@mobile-access-b04815-181.dhcp.inet.fi) |
2021-07-27 18:45:10 +0200 | deejaytee | (~deejaytee@193.46-255-62.static.virginmediabusiness.co.uk) (Killed (zirconium.libera.chat (Nickname regained by services))) |
2021-07-27 18:45:14 +0200 | deejaytee | (~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net) |
2021-07-27 18:46:05 +0200 | azeem | (~azeem@5.168.230.43) (Ping timeout: 255 seconds) |
2021-07-27 18:46:06 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
2021-07-27 18:46:06 +0200 | allbery_b | (~geekosaur@xmonad/geekosaur) |
2021-07-27 18:46:09 +0200 | allbery_b | geekosaur |
2021-07-27 18:47:46 +0200 | azeem | (~azeem@176.200.192.84) |
2021-07-27 18:50:32 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) |
2021-07-27 18:51:26 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) (Ping timeout: 265 seconds) |
2021-07-27 18:52:01 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) |
2021-07-27 18:52:05 +0200 | azeem | (~azeem@176.200.192.84) (Ping timeout: 252 seconds) |
2021-07-27 18:52:33 +0200 | doyougnu | (~user@c-73-25-202-122.hsd1.or.comcast.net) |
2021-07-27 18:52:40 +0200 | azeem | (~azeem@176.200.192.84) |
2021-07-27 18:54:03 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-07-27 18:54:40 +0200 | aerona | (~aerona@2600:6c54:4600:f300:85b8:3678:dd3f:eeda) |
2021-07-27 18:54:42 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 268 seconds) |
2021-07-27 18:55:56 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) (Ping timeout: 252 seconds) |
2021-07-27 18:55:59 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2021-07-27 18:57:19 +0200 | zebrag | (~chris@user/zebrag) |
2021-07-27 18:59:04 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
2021-07-27 18:59:06 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-07-27 18:59:15 +0200 | pottsy | (~pottsy@2400:4050:b560:3700:3495:fb9e:8fab:95bf) (Ping timeout: 245 seconds) |
2021-07-27 18:59:25 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2021-07-27 19:01:50 +0200 | drd | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 255 seconds) |
2021-07-27 19:02:52 +0200 | Hanicef | (~gustaf@81-229-9-108-no92.tbcn.telia.com) |
2021-07-27 19:04:16 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) |
2021-07-27 19:08:59 +0200 | LukeHoersten | (~LukeHoers@user/lukehoersten) |
2021-07-27 19:12:15 +0200 | anandprabhu | (~anandprab@94.202.243.198) |
2021-07-27 19:12:59 +0200 | azeem | (~azeem@176.200.192.84) (Ping timeout: 252 seconds) |
2021-07-27 19:13:27 +0200 | anandprabhu | (~anandprab@94.202.243.198) (Client Quit) |
2021-07-27 19:13:44 +0200 | azeem | (~azeem@176.200.252.165) |
2021-07-27 19:15:33 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-07-27 19:16:17 +0200 | peterhil | (~peterhil@mobile-access-b04815-181.dhcp.inet.fi) (Ping timeout: 252 seconds) |
2021-07-27 19:18:59 +0200 | peterhil | (~peterhil@mobile-access-b04815-181.dhcp.inet.fi) |
2021-07-27 19:21:16 +0200 | rmoe | (~rmoe@c-71-236-207-44.hsd1.wa.comcast.net) |
2021-07-27 19:22:24 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) |
2021-07-27 19:24:31 +0200 | argento | (~argent0@168-227-96-51.ptr.westnet.com.ar) (Ping timeout: 258 seconds) |
2021-07-27 19:26:11 +0200 | michalz | (~michalz@185.246.204.58) (Remote host closed the connection) |
2021-07-27 19:26:36 +0200 | jiribenes | (~jiribenes@rosa.jiribenes.com) (Ping timeout: 250 seconds) |
2021-07-27 19:27:03 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) |
2021-07-27 19:28:09 +0200 | <lechner> | Hi, is there an elegant way to deal with several Maybe values in a row without increasing the indentation in the source code but while reporting errors properly (i.e no fromJust)? Thanks! |
2021-07-27 19:28:47 +0200 | <geekosaur> | use the Monad instance? |
2021-07-27 19:28:55 +0200 | <monochrom> | >>= |
2021-07-27 19:29:21 +0200 | <lechner> | i am so new. is there an example on the web? |
2021-07-27 19:31:25 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) (Ping timeout: 258 seconds) |
2021-07-27 19:32:45 +0200 | agua | (~agua@2804:14c:8793:8e2f:39e9:c5a8:c532:7498) |
2021-07-27 19:34:25 +0200 | dunkeln_ | (~dunkeln@94.129.69.87) |
2021-07-27 19:35:55 +0200 | Core8816 | (~agua@2804:18:4a:f76c:1:0:5e60:e39) |
2021-07-27 19:36:12 +0200 | azeem | (~azeem@176.200.252.165) (Ping timeout: 256 seconds) |
2021-07-27 19:36:12 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
2021-07-27 19:36:22 +0200 | pesada | (~agua@177.79.68.96) (Ping timeout: 245 seconds) |
2021-07-27 19:36:28 +0200 | azeem | (~azeem@176.201.0.90) |
2021-07-27 19:36:56 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
2021-07-27 19:39:02 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-07-27 19:39:20 +0200 | <sm> | lechner: write a do block, where each line extracts the next Just value with <-. If any of those fail, the whole block evaluates to Nothing |
2021-07-27 19:39:22 +0200 | agua | (~agua@2804:14c:8793:8e2f:39e9:c5a8:c532:7498) (Ping timeout: 240 seconds) |
2021-07-27 19:39:44 +0200 | LukeHoersten | (~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-07-27 19:39:57 +0200 | dunkeln_ | (~dunkeln@94.129.69.87) (Quit: leaving) |
2021-07-27 19:40:17 +0200 | <lechner> | That's longhand for this, right? "By definition, when the first argument to >>= is Nothing, it just returns Nothing while ignoring whatever function it is given." https://en.m.wikibooks.org/wiki/Haskell/Understanding_monads/Maybe |
2021-07-27 19:42:59 +0200 | <Cale> | do-notation is a shorthand syntax for a chain of uses of (>>=) |
2021-07-27 19:43:21 +0200 | <Cale> | @undo do { u <- x; v <- y; return (f u v) } |
2021-07-27 19:43:22 +0200 | <lambdabot> | x >>= \ u -> y >>= \ v -> return (f u v) |
2021-07-27 19:43:29 +0200 | chris_ | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-07-27 19:43:32 +0200 | argento | (~argent0@168-227-96-51.ptr.westnet.com.ar) |
2021-07-27 19:43:56 +0200 | <lechner> | thanks! i am making baby steps |
2021-07-27 19:44:02 +0200 | <Cale> | and so in the case of Maybe, you're allowed to have x and y be Maybe values there |
2021-07-27 19:44:16 +0200 | <Cale> | and then u and v will be the contents of the Just constructor in the case that they're both Just |
2021-07-27 19:44:51 +0200 | <Cale> | So it's a good way to unpack a bunch of Maybes and produce Nothing if any of them happens to be Nothing |
2021-07-27 19:45:46 +0200 | <Cale> | (the do-block as a whole will be a Maybe value in the case that x and y are) |
2021-07-27 19:46:48 +0200 | chris_ | (~chris@81.96.113.213) |
2021-07-27 19:47:14 +0200 | <Cale> | There are also a bunch of functions which work with any instance of Monad, that specialise to possibly-useful functions on Maybe |
2021-07-27 19:47:17 +0200 | <Cale> | :t sequence |
2021-07-27 19:47:18 +0200 | <lambdabot> | (Traversable t, Monad m) => t (m a) -> m (t a) |
2021-07-27 19:47:36 +0200 | <Cale> | (That one is even more general now...) |
2021-07-27 19:47:51 +0200 | <Cale> | Well, if you just think of it as (Monad m) => [m a] -> m [a] |
2021-07-27 19:47:55 +0200 | <Cale> | for Maybe, that becomes |
2021-07-27 19:48:01 +0200 | <Cale> | [Maybe a] -> Maybe [a] |
2021-07-27 19:48:20 +0200 | <lechner> | thanks! my code is slowly gaining style. haskell is amazing. i already found several potential bugs in my Perl code, which i am translating |
2021-07-27 19:48:40 +0200 | peterhil | (~peterhil@mobile-access-b04815-181.dhcp.inet.fi) (Ping timeout: 256 seconds) |
2021-07-27 19:48:46 +0200 | <Cale> | i.e. take a list of Maybe things, and see if they're all Just, if so, then you get Just of a list of the contents, if any was Nothing, you get Nothing |
2021-07-27 19:49:05 +0200 | <DigitalKiwi> | monochrom: https://twitter.com/krisajenkins/status/1420022268177027090?s=20 |
2021-07-27 19:50:02 +0200 | <lechner> | Cale: thanks! |
2021-07-27 19:51:36 +0200 | Hanicef | (~gustaf@81-229-9-108-no92.tbcn.telia.com) (Quit: leaving) |
2021-07-27 19:51:59 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-07-27 19:52:45 +0200 | <Cale> | DigitalKiwi: I don't know how deterministic twitter's "More Tweets" section is, so https://twitter.com/d6/status/1419885183793344512 was pretty funny |
2021-07-27 19:52:53 +0200 | DigitalKiwi | takes them to clout court |
2021-07-27 19:54:40 +0200 | azeem | (~azeem@176.201.0.90) (Read error: Connection reset by peer) |
2021-07-27 19:54:47 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) (Ping timeout: 252 seconds) |
2021-07-27 19:55:21 +0200 | hnOsmium0001 | (uid453710@id-453710.stonehaven.irccloud.com) |
2021-07-27 19:55:40 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) |
2021-07-27 19:55:42 +0200 | <DigitalKiwi> | Cale: i follow d6 and this is the first time i've seen it lol |
2021-07-27 19:56:42 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
2021-07-27 19:56:48 +0200 | mr-red | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) |
2021-07-27 19:57:11 +0200 | azeem | (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) |
2021-07-27 19:57:21 +0200 | <lechner> | Hi, how can a function that returns a "Maybe (IO ()) perform an IO task, please? |
2021-07-27 19:57:32 +0200 | LukeHoersten | (~LukeHoers@user/lukehoersten) |
2021-07-27 19:57:42 +0200 | jiribenes | (~jiribenes@rosa.jiribenes.com) |
2021-07-27 19:57:54 +0200 | <Cale> | So, it might give you an action you could run to perform some IO, and it might not |
2021-07-27 19:58:30 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 276 seconds) |
2021-07-27 19:58:32 +0200 | <Cale> | The most straightforward thing you should understand first is just to pattern match on it with case |
2021-07-27 19:58:48 +0200 | <Cale> | case theMaybeIO of |
2021-07-27 19:58:55 +0200 | <Cale> | Nothing -> ... do something else ... |
2021-07-27 19:59:05 +0200 | <Cale> | Just x -> x |
2021-07-27 19:59:22 +0200 | <Cale> | If you want to do nothing in the Nothing case, then you could write return () |
2021-07-27 19:59:33 +0200 | <kmein> | :t maybe (return ()) id |
2021-07-27 19:59:34 +0200 | <lambdabot> | Monad m => Maybe (m ()) -> m () |
2021-07-27 19:59:35 +0200 | <Cale> | (which is an action that does nothing) |
2021-07-27 19:59:44 +0200 | <kmein> | (for a one-liner) |
2021-07-27 19:59:53 +0200 | sedeki | (~textual@user/sedeki) |
2021-07-27 20:00:49 +0200 | <Cale> | Yeah, or in fact, that sequence function I mentioned earlier would also work because Maybe is Traversable |
2021-07-27 20:00:59 +0200 | <lechner> | that's exactly what i tried to avoid with the Maybe monad. i kind of came from there: https://dpaste.org/SL7E |
2021-07-27 20:01:01 +0200 | <Cale> | sequence :: Maybe (IO a) -> IO (Maybe a) |
2021-07-27 20:01:22 +0200 | dunkeln | (~dunkeln@94.129.69.87) (Ping timeout: 240 seconds) |
2021-07-27 20:01:34 +0200 | <Cale> | There's also a version called sequence_ which drops the result |
2021-07-27 20:01:36 +0200 | <Cale> | :t sequence_ |
2021-07-27 20:01:37 +0200 | <lambdabot> | (Foldable t, Monad m) => t (m a) -> m () |
2021-07-27 20:02:06 +0200 | <lechner> | it's probably hard to see in the diff, but i replaced the "case of"s with <- |
2021-07-27 20:02:14 +0200 | <Cale> | So, t = Maybe and m = IO will get you a thing that does nothing if the Maybe is Nothing, and executes the action if it's Just of some action |
2021-07-27 20:02:40 +0200 | <lechner> | that's what i need |
2021-07-27 20:03:56 +0200 | hughjfchen | (~hughjfche@vmi556545.contaboserver.net) (Ping timeout: 265 seconds) |
2021-07-27 20:04:17 +0200 | <Cale> | I honestly don't mind your original case expressions though (but I would usually avoid defining the scrutinee with let immediately prior) |
2021-07-27 20:04:34 +0200 | hughjfchen | (~hughjfche@vmi556545.contaboserver.net) |
2021-07-27 20:04:43 +0200 | <Cale> | However, it depends on how we expect the program to change over time |
2021-07-27 20:05:14 +0200 | <lechner> | it will change because i am learning |
2021-07-27 20:05:18 +0200 | <Cale> | If you end up wanting to handle the failure cases more nicely, you'll probably end up replacing the return () in the failure case with something else, and then there won't necessarily be a shorthand. |
2021-07-27 20:05:41 +0200 | <Cale> | (at least, not one which is more readable than a case expression would be) |
2021-07-27 20:06:19 +0200 | <lechner> | i don't actually need to handle them, I don't think, but I will hold onto the case expressions for now |
2021-07-27 20:06:32 +0200 | mastarija | (~mastarija@31.217.8.174) |
2021-07-27 20:06:39 +0200 | <lechner> | what did you mean with scrutinee plesae? |
2021-07-27 20:06:49 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) |
2021-07-27 20:07:09 +0200 | <lechner> | the "let"s that is |
2021-07-27 20:07:18 +0200 | chris_ | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-07-27 20:07:28 +0200 | <monochrom> | In "case foo x of ...", the scrutinee is "foo x". |
2021-07-27 20:07:54 +0200 | <monochrom> | The victim of pattern matching. |
2021-07-27 20:08:46 +0200 | <monochrom> | DigitalKiwi: Haha congrats |
2021-07-27 20:08:50 +0200 | <lechner> | yes, that was kind of pointless. i see it now |
2021-07-27 20:10:13 +0200 | <lechner> | monochrom Cale: so elegant. thank you! |
2021-07-27 20:10:21 +0200 | <DigitalKiwi> | <butterfly meme> is this a thunk? |
2021-07-27 20:10:37 +0200 | dunkeln | (~dunkeln@94.129.69.87) |
2021-07-27 20:10:53 +0200 | dunkeln | (~dunkeln@94.129.69.87) (Client Quit) |
2021-07-27 20:11:00 +0200 | <DigitalKiwi> | the previously unevalutaed lazy joke has been evaluated |
2021-07-27 20:11:29 +0200 | <monochrom> | :) |
2021-07-27 20:11:48 +0200 | <DigitalKiwi> | https://ircbrowse.tomsmeding.com/day/lchaskell/2021/07/26?id=112114#trid112114 for anyone lost about wtf we're talking about lol |
2021-07-27 20:12:11 +0200 | chris_ | (~chris@81.96.113.213) |
2021-07-27 20:16:26 +0200 | chris_ | (~chris@81.96.113.213) (Ping timeout: 250 seconds) |
2021-07-27 20:17:12 +0200 | zmt01 | (~zmt00@user/zmt00) (Quit: Gone.) |
2021-07-27 20:18:52 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 245 seconds) |
2021-07-27 20:20:17 +0200 | zmt00 | (~zmt00@user/zmt00) |
2021-07-27 20:22:10 +0200 | stefan-_ | (~cri@42dots.de) (Ping timeout: 240 seconds) |
2021-07-27 20:23:30 +0200 | xff0x | (~xff0x@2001:1a81:527c:b500:a365:4553:d50c:f6f5) (Ping timeout: 268 seconds) |
2021-07-27 20:23:47 +0200 | xff0x | (~xff0x@2001:1a81:527c:b500:2b8c:4e21:9ff9:e65e) |
2021-07-27 20:24:46 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection) |
2021-07-27 20:25:42 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2021-07-27 20:26:10 +0200 | stefan-_ | (~cri@42dots.de) |
2021-07-27 20:26:52 +0200 | sedeki | (~textual@user/sedeki) (Quit: Textual IRC Client: www.textualapp.com) |
2021-07-27 20:27:03 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2021-07-27 20:27:47 +0200 | mr-red | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-07-27 20:28:16 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) |
2021-07-27 20:29:48 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-07-27 20:29:55 +0200 | drd | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) |
2021-07-27 20:31:50 +0200 | mastarija | (~mastarija@31.217.8.174) (Quit: Leaving) |
2021-07-27 20:33:37 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-07-27 20:36:55 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) |
2021-07-27 20:39:27 +0200 | <lechner> | Hi, what's is the z0 in my function's "ZMQ z0 ()" return type, please? This is inside the ZMQ monad. https://hackage.haskell.org/package/zeromq4-haskell |
2021-07-27 20:40:30 +0200 | <Rembane> | lechner: Probably the rest of the monad transformer stack. |
2021-07-27 20:40:38 +0200 | <Rembane> | lechner: Do you have some example code? |
2021-07-27 20:41:07 +0200 | <geekosaur> | that said, when ghc appends a number to a type it usually means you forgot to connect something up, so it's inventing a new type |
2021-07-27 20:41:23 +0200 | <Rembane> | Yes, and also typed holes are great. |
2021-07-27 20:41:32 +0200 | <Cale> | The maintainer should really build and upload the documentation for that package separately |
2021-07-27 20:41:52 +0200 | <lechner> | why did it FTB? |
2021-07-27 20:42:07 +0200 | <Cale> | Probably the external library dependencies |
2021-07-27 20:42:28 +0200 | <lechner> | Rembane: https://dpaste.org/STjO#L87 |
2021-07-27 20:42:46 +0200 | <lechner> | geekosaur: I think i invented it! |
2021-07-27 20:42:51 +0200 | <Cale> | Apparently, ZMQ is like ST, and so the "z" parameter is actually meaningless, it's just there to prevent you from using ZMQ sockets created by one session with another. |
2021-07-27 20:43:17 +0200 | <lechner> | is see |
2021-07-27 20:43:24 +0200 | <Cale> | runZMQ :: MonadIO m => (forall z. ZMQ z a) -> m a -- in order to use this, any occurrence of the "z" parameter can't occur in "a" |
2021-07-27 20:44:30 +0200 | <Cale> | And so data structures which have a "z" in them can't be smuggled out in the result, (and even if you did somehow, e.g. by using an existential type, you still couldn't use them with another runZMQ, since there's effectively a new "z" each time. |
2021-07-27 20:46:53 +0200 | <lechner> | i tried _ instead of z0 but GHC did not like it, and referred me to PartialTypeSignatures which i did not adopt |
2021-07-27 20:47:17 +0200 | <Cale> | Yeah, if you want to use _'s in types, you have to turn on PartialTypeSignatures |
2021-07-27 20:47:22 +0200 | <DigitalKiwi> | lechner is ghc |
2021-07-27 20:47:46 +0200 | <Cale> | Any variable letter will do there, but I'd stick with the z that the library uses. |
2021-07-27 20:47:57 +0200 | <DigitalKiwi> | that's why ghc is so slow sometimes; it has to ask lechner to type infer! |
2021-07-27 20:48:04 +0200 | <lechner> | in the well-defined world of Haskell, how can i legally refer to a z0 that was never defined? |
2021-07-27 20:48:13 +0200 | <Cale> | Well, what are you trying to do? |
2021-07-27 20:48:37 +0200 | <lechner> | Just compile (TM) |
2021-07-27 20:48:54 +0200 | <Cale> | Usually you will want to leave the z polymorphic, so writing just z there will do |
2021-07-27 20:49:20 +0200 | <lechner> | okay |
2021-07-27 20:49:29 +0200 | <Cale> | (in fact, if it became not-polymorphic, that would mean that you could never use the action) |
2021-07-27 20:50:24 +0200 | <lechner> | i don't know what that means, but it sounds like something that could make me sleep poorly |
2021-07-27 20:50:34 +0200 | <Cale> | When you have a ZMQ action which returns something like a socket, you'll have to ensure the z's match, like ZMQ z (Socket z) |
2021-07-27 20:51:00 +0200 | <lechner> | i see |
2021-07-27 20:51:23 +0200 | <Cale> | It's as though each time you use runZMQ, it gets to invent its own z type |
2021-07-27 20:51:26 +0200 | <lechner> | what does the zero do then, please? |
2021-07-27 20:51:44 +0200 | <lechner> | it means nothing? |
2021-07-27 20:51:46 +0200 | <Cale> | and that prevents sockets and such from being created in one runZMQ and being used in another |
2021-07-27 20:51:52 +0200 | <lechner> | yeah |
2021-07-27 20:51:54 +0200 | <c_wraith> | z0 is just a name |
2021-07-27 20:51:58 +0200 | <lechner> | that makes sense |
2021-07-27 20:52:02 +0200 | <c_wraith> | It has no inherent meaning |
2021-07-27 20:52:13 +0200 | <monochrom> | Every name has no meaning, actually. |
2021-07-27 20:52:24 +0200 | <Cale> | Yeah, it's just an arbitrary variable, it doesn't really mean anything, but you can think of it as referring to the runZMQ session. |
2021-07-27 20:53:18 +0200 | <Cale> | There's some context that runZMQ sets up, and we don't want sockets and such that are created with one context being used by another |
2021-07-27 20:53:35 +0200 | <Cale> | and we're using a type system trick to prevent this |
2021-07-27 20:54:04 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2021-07-27 20:54:10 +0200 | <lechner> | does haskell know any other |
2021-07-27 20:54:55 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-07-27 20:54:59 +0200 | falafel | (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 258 seconds) |
2021-07-27 20:55:11 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-07-27 20:56:24 +0200 | LukeHoersten | (~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-07-27 20:58:11 +0200 | fef | (~thedawn@user/thedawn) (Ping timeout: 244 seconds) |
2021-07-27 20:59:47 +0200 | potato_dev | (~potato_to@elara.whatbox.ca) |
2021-07-27 21:00:22 +0200 | <monochrom> | Haskell doesn't want to be anthropomophized. |
2021-07-27 21:01:06 +0200 | <lechner> | you are right; it is our trick |
2021-07-27 21:02:56 +0200 | <c_wraith> | I don't think the joke works quite right with that wording. |
2021-07-27 21:04:22 +0200 | <lechner> | sorry, bad joke. trying to cope with a learning curve |
2021-07-27 21:04:22 +0200 | <c_wraith> | I meant monochrom's joke |
2021-07-27 21:04:48 +0200 | burnsidesLlama | (~burnsides@dhcp168-022.wadham.ox.ac.uk) |
2021-07-27 21:05:01 +0200 | <c_wraith> | It can be vacuously true, as opposed to wording like "Haskell hates being anthropomorphized" |
2021-07-27 21:05:44 +0200 | <monochrom> | Oh, that. |
2021-07-27 21:06:26 +0200 | <c_wraith> | English and logic have a very weird intersection :) |
2021-07-27 21:06:46 +0200 | <lechner> | they have one? |
2021-07-27 21:07:38 +0200 | jolly | (~jolly@208.180.97.158) (Ping timeout: 258 seconds) |
2021-07-27 21:07:57 +0200 | <monochrom> | That would be a Church vs Curry thing. "X doesn't want Y" can be "type error, not even wrong". |
2021-07-27 21:08:34 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 256 seconds) |
2021-07-27 21:08:48 +0200 | <c_wraith> | that is an option too. |
2021-07-27 21:09:46 +0200 | <DigitalKiwi> | I heard that parallel lines actually do meet, but they are very discrete. |
2021-07-27 21:10:00 +0200 | <monochrom> | :) |
2021-07-27 21:10:30 +0200 | Erutuon | (~Erutuon@user/erutuon) |
2021-07-27 21:20:59 +0200 | pgib | (~textual@173.38.117.81) |
2021-07-27 21:22:06 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-07-27 21:22:27 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2) |
2021-07-27 21:27:07 +0200 | <lechner> | Hi, a question about $ vs () please. Why does this work liftIO $ putStrLn $ "Response from collector: " <> Lazy.unpack (Lazy.fromStrict acknowledgement) but this doesn't liftIO $ putStrLn $ "Response from collector: " <> Lazy.unpack $ Lazy.fromStrict acknowledgement |
2021-07-27 21:27:58 +0200 | <monochrom> | Do you know the precedence level and associativity of $ ? Can you compare that with the precendence level of <> ? |
2021-07-27 21:28:10 +0200 | <monochrom> | I think it's high time you find out. |
2021-07-27 21:29:00 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-07-27 21:29:13 +0200 | <monochrom> | It doesn't scale if every time you have $ and the nth operator you cannot be independent for the nth time. |
2021-07-27 21:29:49 +0200 | jolly | (~jolly@208.180.97.158) |
2021-07-27 21:29:56 +0200 | <Cale> | lechner: $ is just a function defined as f $ x = f x, but it's defined to bind as weakly as possible to its arguments, while normal function application binds more tightly than any infix operator could |
2021-07-27 21:30:33 +0200 | <Cale> | (and also, it's specified to be right-associating, which I think is kind of a mistake, but it allows for that particular style of chaining) |
2021-07-27 21:30:44 +0200 | <lechner> | okay i thought about it the wrong way. it seemed like "the buck stops here from the right" |
2021-07-27 21:31:29 +0200 | <lechner> | actually, maybe that is still true |
2021-07-27 21:31:52 +0200 | <lechner> | it's really right vs left like monochrom said |
2021-07-27 21:31:53 +0200 | <Cale> | So, your second expression brackets like liftIO $ (putStrLn $ (("Response from collector: " <> Lazy.unpack) $ Lazy.fromStrict acknowledgement)) |
2021-07-27 21:32:05 +0200 | <Cale> | and you can see the problem there with the Lazy.unpack not getting an argument |
2021-07-27 21:32:57 +0200 | mr-red | (~drd@93-39-151-19.ip76.fastwebnet.it) |
2021-07-27 21:33:27 +0200 | <Cale> | Plain function application (whitespace) binds more tightly to its arguments than any infix operator possibly can. If you remember nothing else about how infix operators get parsed, that's probably the most important thing. |
2021-07-27 21:34:19 +0200 | <lechner> | that's the exact opposite of $ then |
2021-07-27 21:34:24 +0200 | <Cale> | right |
2021-07-27 21:34:35 +0200 | <lechner> | no pun intended |
2021-07-27 21:34:39 +0200 | <Cale> | Also, it's left-associating, so f x y z means ((f x) y) z |
2021-07-27 21:34:57 +0200 | <lechner> | yeah i get that. wow. TIL thanks! |
2021-07-27 21:35:07 +0200 | <Cale> | I do kind of wish that ($) associated to the left as well, since whenever you have f $ g $ h $ x you could always rewrite that as f . g . h $ x |
2021-07-27 21:35:17 +0200 | drd | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 255 seconds) |
2021-07-27 21:35:35 +0200 | <lechner> | i wondered about that |
2021-07-27 21:36:02 +0200 | <lechner> | i think i use too too mank $$'s and not enough point free |
2021-07-27 21:36:06 +0200 | <Cale> | But if it associated to the left instead, we could remove some more parens sometimes |
2021-07-27 21:36:16 +0200 | <monochrom> | I wouldn't say whitespace. map(+)[ 1 , 2 , 3 ] these whitespaces and these function applications are mutually exclusive. |
2021-07-27 21:36:35 +0200 | <Cale> | Yeah, that's fair, it doesn't have to be whitespace proper :) |
2021-07-27 21:36:41 +0200 | <Cale> | juxtaposition :) |
2021-07-27 21:36:44 +0200 | <lechner> | i got the point though |
2021-07-27 21:36:45 +0200 | <monochrom> | The correct model is juxtaposition of two expressions. |
2021-07-27 21:36:54 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) |
2021-07-27 21:37:10 +0200 | <lechner> | that's where logic and plain english drift apart |
2021-07-27 21:37:31 +0200 | <lechner> | why juxtaposition? |
2021-07-27 21:37:45 +0200 | <monochrom> | Because it is juxtaposition? |
2021-07-27 21:37:46 +0200 | <Cale> | If you start out by replacing all but the last $ with . where you can, it's a good syntactic trick for starting to think about composing functions instead |
2021-07-27 21:38:05 +0200 | berberman | (~berberman@user/berberman) (Ping timeout: 252 seconds) |
2021-07-27 21:38:15 +0200 | Guest4 | (~Guest4@210.18.130.156) |
2021-07-27 21:38:34 +0200 | <lechner> | for some reason that never works, at least not with lazy and strict ByteStrings |
2021-07-27 21:38:42 +0200 | <Cale> | hmm |
2021-07-27 21:38:49 +0200 | <lechner> | maybe with lazy alone |
2021-07-27 21:38:56 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-07-27 21:39:01 +0200 | <Cale> | The types shouldn't affect anything |
2021-07-27 21:39:06 +0200 | Guest4 | (~Guest4@210.18.130.156) (Client Quit) |
2021-07-27 21:39:24 +0200 | <Cale> | You do need to leave spaces around the composition dots though, and not put spaces around the ones which are module qualifiers |
2021-07-27 21:39:46 +0200 | <Cale> | I'm still a little bit salty that we went with "." for module qualification, given how important composition is. |
2021-07-27 21:40:05 +0200 | <Cale> | I get that it matches all the other languages in the world but still :) |
2021-07-27 21:40:08 +0200 | <lechner> | you would have preferred? |
2021-07-27 21:40:30 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) (Ping timeout: 250 seconds) |
2021-07-27 21:40:35 +0200 | <Cale> | I'm not sure, maybe | would have worked out. |
2021-07-27 21:40:41 +0200 | alx741 | (~alx741@186.178.108.3) (Ping timeout: 255 seconds) |
2021-07-27 21:40:44 +0200 | <lechner> | isn't the dot usally for records, like in PureScript? |
2021-07-27 21:40:55 +0200 | <Cale> | Well, that too |
2021-07-27 21:41:06 +0200 | <geekosaur> | ' might have worked if not for the stuff that took it later |
2021-07-27 21:41:13 +0200 | <Cale> | Yeah |
2021-07-27 21:41:15 +0200 | <lechner> | i would have liked | it's like a pipe |
2021-07-27 21:41:17 +0200 | <monochrom> | Would you prefer Control∘Monad∘State haha |
2021-07-27 21:41:17 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) |
2021-07-27 21:41:32 +0200 | <Cale> | I prefer things that I can easily type, to be sure |
2021-07-27 21:41:49 +0200 | <yushyin> | Control-Monad-State |
2021-07-27 21:41:57 +0200 | <Cale> | Otherwise, I probably would prefer using ∘ for composition |
2021-07-27 21:43:07 +0200 | <lechner> | Can I do anything about the $'s here? send catcher [] $ Lazy.toStrict $ Lzma.compress $ JSON.encode task |
2021-07-27 21:43:27 +0200 | epolanski | (uid312403@id-312403.brockwell.irccloud.com) (Quit: Connection closed for inactivity) |
2021-07-27 21:43:27 +0200 | <lechner> | does that operator have a name? |
2021-07-27 21:43:27 +0200 | <Cale> | You could rewrite that as send catcher [] . Lazy.toStrict . Lzma.compress $ JSON.encode task |
2021-07-27 21:43:42 +0200 | <Cale> | Which one? |
2021-07-27 21:43:46 +0200 | <lechner> | $ |
2021-07-27 21:44:16 +0200 | <Cale> | I think most people just say "dollar sign", but you could say "function application" |
2021-07-27 21:44:20 +0200 | <monochrom> | You know what, in Chinese, or at least Chinese writings in the early 20th century, we write Western people names by: (after transliterating to Chinese characters of similar sounds) FirstName·LastName |
2021-07-27 21:44:41 +0200 | <monochrom> | Perhaps that would also be the perfect scheme for hierarchical module names. |
2021-07-27 21:45:11 +0200 | <Clint> | transliterating them to hanzi? |
2021-07-27 21:45:18 +0200 | <monochrom> | Yes. |
2021-07-27 21:45:24 +0200 | Clint | nods. |
2021-07-27 21:45:45 +0200 | <Cale> | FirstName・LastName |
2021-07-27 21:45:53 +0200 | <lechner> | doesn't the last name come first? |
2021-07-27 21:46:05 +0200 | <monochrom> | No. |
2021-07-27 21:46:23 +0200 | <Cale> | I guess that's why the dot |
2021-07-27 21:46:42 +0200 | <lechner> | sorry, i got confused with my chinese name. yours is for transliteration |
2021-07-27 21:46:46 +0200 | <Cale> | Well, apart from the fact that it would be awkward to figure out where one name ends and the other begins |
2021-07-27 21:47:09 +0200 | <lechner> | it does not matter |
2021-07-27 21:47:24 +0200 | <lechner> | for one person |
2021-07-27 21:48:44 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) (Ping timeout: 250 seconds) |
2021-07-27 21:48:51 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-07-27 21:48:53 +0200 | <lechner> | is using too many $ must be a beginner's mistake |
2021-07-27 21:49:14 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) |
2021-07-27 21:49:44 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 252 seconds) |
2021-07-27 21:50:01 +0200 | <geekosaur> | it's often recommended not to use $ at all until you get used to haskell |
2021-07-27 21:50:42 +0200 | <lechner> | too many brackets. i wear glasses |
2021-07-27 21:51:55 +0200 | <lechner> | but i am not using a single . ! i was so excited about them. also, the pure parts of my programs are tiny. monad in. monad out. |
2021-07-27 21:52:19 +0200 | <yushyin> | the general opinion here seems to be that $ is overused and that it is better to use parentheses more often |
2021-07-27 21:52:52 +0200 | <Cale> | I dunno, there are places where you definitely want to use $ -- particularly if the argument is long enough that it's annoying to find the matching closing parens |
2021-07-27 21:52:53 +0200 | <monochrom> | The correct way to get rid of parenthesis is to defeat the point of Fortran and go back to 3-address instructions: let tmp1 = f x; tmp2 = g tmp1; tmp3 = h tmp2 in k tmp3 |
2021-07-27 21:53:24 +0200 | <Cale> | But I'll tend not to chain $'s myself, unless I'm trying to blend in with an existing code style |
2021-07-27 21:53:40 +0200 | <Cale> | I'll always use composition and then a single $ when I use it |
2021-07-27 21:53:57 +0200 | <monochrom> | and roll back 60 years of progress in languages and compilers. |
2021-07-27 21:54:28 +0200 | <Cale> | monochrom: Or RPN |
2021-07-27 21:54:44 +0200 | alx741 | (~alx741@181.196.69.4) |
2021-07-27 21:54:53 +0200 | <DigitalKiwi> | don't be silly everyone knows there's no $ in haskell! /s |
2021-07-27 21:55:07 +0200 | <Cale> | I wish I hadn't lost all my silly dc snippets |
2021-07-27 21:55:37 +0200 | <Cale> | I remember at one point working out how to do maps and folds over the stack in dc :) |
2021-07-27 21:55:44 +0200 | <yushyin> | pure $ whatever comes next -- is a common pattern for me |
2021-07-27 21:56:12 +0200 | <Cale> | I also never use pure unless it's important that my definition is Applicative polymorphic |
2021-07-27 21:56:29 +0200 | <lechner> | i actually understood that |
2021-07-27 21:56:32 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) (Ping timeout: 250 seconds) |
2021-07-27 21:56:35 +0200 | <lechner> | vs return |
2021-07-27 21:56:39 +0200 | <monochrom> | Backus and Knuth worked so hard to find algorithms that can parse (a+b)*c+d so that if you see that formula in math books you can just copy that and it's valid code. Now entitled millenials trash that and want to go back to 3-address instructions. |
2021-07-27 21:56:43 +0200 | <geekosaur> | showing your age :þ |
2021-07-27 21:56:43 +0200 | <Cale> | When I see "pure" in code, I take it as a sign that Applicative is being used in some nontrivial way, and if it's not, I'm mildly annoyed :) |
2021-07-27 21:57:15 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) |
2021-07-27 21:58:05 +0200 | <geekosaur> | bet you hate "monad of no return" |
2021-07-27 21:58:25 +0200 | <Cale> | I'm less concerned about that |
2021-07-27 21:58:33 +0200 | <lechner> | others have told me prefer "pure" |
2021-07-27 21:58:38 +0200 | <lechner> | to |
2021-07-27 21:59:00 +0200 | <Cale> | I *would* be opposed to return :: Applicative f => a -> f a though |
2021-07-27 22:00:01 +0200 | <Cale> | It just helps make typechecking in your head that much easier to have that little cue |
2021-07-27 22:00:16 +0200 | <monochrom> | I use pure when the context uses liftA2 or >>= etc so they are on the same page. |
2021-07-27 22:00:23 +0200 | <Cale> | Yeah, that's fair |
2021-07-27 22:00:36 +0200 | <Cale> | I might use pure in cases where I'm also using (<*>) immediately adjacent to it |
2021-07-27 22:00:36 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) |
2021-07-27 22:00:53 +0200 | <Rembane> | I always use pure, I blame Purescript. |
2021-07-27 22:01:17 +0200 | <Cale> | Like, maybe I know the thing is a monad, but I'm still using Applicative syntax to combine a bunch of stuff, in that case, pure seems okay. |
2021-07-27 22:01:18 +0200 | <DigitalKiwi> | Cale: lol so that tweet you sent earlier from d6 (who i follow on twitter) finally showed up in my feed...only after someone else had quoted tweeted it and d6 retweeted *that*... |
2021-07-27 22:01:25 +0200 | <Cale> | hah |
2021-07-27 22:01:28 +0200 | <geekosaur> | quite a few people say "just use pure" these days |
2021-07-27 22:01:45 +0200 | <yushyin> | i roll a dice before every use. even is pure, odd is return |
2021-07-27 22:01:46 +0200 | <Cale> | geekosaur: I'm aware, but I think it does lose something |
2021-07-27 22:01:55 +0200 | LukeHoersten | (~LukeHoers@user/lukehoersten) |
2021-07-27 22:02:02 +0200 | pschorf | (~user@208.127.190.222) |
2021-07-27 22:02:28 +0200 | <Cale> | Also, I'm of the mindset that "return" is also a pretty good name for what it is most of the time |
2021-07-27 22:02:30 +0200 | <maerwald> | I use `pure` |
2021-07-27 22:02:38 +0200 | Deide | (~Deide@217.155.19.23) |
2021-07-27 22:02:38 +0200 | Deide | (~Deide@217.155.19.23) (Changing host) |
2021-07-27 22:02:38 +0200 | Deide | (~Deide@user/deide) |
2021-07-27 22:02:50 +0200 | mr-red | (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 258 seconds) |
2021-07-27 22:02:58 +0200 | <Cale> | i.e. it makes an action which does nothing except to return the given value as its result |
2021-07-27 22:03:01 +0200 | <monochrom> | I prefer "impurify" >:) |
2021-07-27 22:03:14 +0200 | <Cale> | haha |
2021-07-27 22:04:08 +0200 | <monochrom> | class Monad m => Animate m where anthropomorphize :: a -> m a |
2021-07-27 22:04:21 +0200 | <Cale> | Of course, people who just came from imperative programming sometimes find "return" a bit jarring, because it doesn't have the control effects that they're used to. |
2021-07-27 22:05:07 +0200 | juhp | (~juhp@128.106.188.220) (Ping timeout: 245 seconds) |
2021-07-27 22:05:26 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) |
2021-07-27 22:05:28 +0200 | <Cale> | Imagine being used to having all your stuff implicitly wrapped in callCC |
2021-07-27 22:06:49 +0200 | juhp | (~juhp@128.106.188.220) |
2021-07-27 22:06:53 +0200 | chris_ | (~chris@81.96.113.213) |
2021-07-27 22:08:32 +0200 | <lechner> | return actually makes monads less scary. would it be fair to somehow compare monads to imperative function prototypes? |
2021-07-27 22:09:33 +0200 | <jiribenes> | it makes monads _look_ less scary, but its semantics confuse the heck out of imperative programmers |
2021-07-27 22:10:18 +0200 | <monochrom> | The difference between "I understand, meaning I feel so good" and "I understand, meaning I write correct code". |
2021-07-27 22:10:37 +0200 | <lechner> | does it have semantics |
2021-07-27 22:10:52 +0200 | <lechner> | it does nothing |
2021-07-27 22:10:57 +0200 | <monochrom> | A little bit of semantics from the monad laws. |
2021-07-27 22:11:06 +0200 | <geekosaur> | but tey expect semantics |
2021-07-27 22:11:13 +0200 | <monochrom> | Beyond that, it's up to actual instances. |
2021-07-27 22:11:20 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2021-07-27 22:11:37 +0200 | P1RATEZ | (piratez@user/p1ratez) |
2021-07-27 22:12:00 +0200 | <monochrom> | But do look at "return x >>= k = k x". This tells you a lot. For example, this tells you "not an exit". |
2021-07-27 22:12:34 +0200 | <jiribenes> | ^ this |
2021-07-27 22:13:04 +0200 | <monochrom> | I know of a monad tutorial (that even makes it to Haskell Weekly News) that gets this wrong. |
2021-07-27 22:13:18 +0200 | <monochrom> | Subsequently I shamed them in an exam question. |
2021-07-27 22:13:53 +0200 | <Cale> | haha, nice |
2021-07-27 22:15:07 +0200 | <Cale> | You also have (x >>= \v -> return v) = x, which is another way to say that return isn't doing a whole lot |
2021-07-27 22:15:38 +0200 | <Cale> | But yeah, the actual meaning of return (and (>>=)) varies based on which monad we're talking about |
2021-07-27 22:15:55 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-07-27 22:16:27 +0200 | <Cale> | So while there's a sort of "imperative-ish" feel to things, sometimes it'll subvert your expectations a bit. Monads can have backtracking, state can flow in the opposite direction from the rest of the computation, etc. |
2021-07-27 22:17:03 +0200 | <maerwald> | is that a good thing? |
2021-07-27 22:17:18 +0200 | <Cale> | Can be. |
2021-07-27 22:17:20 +0200 | <maerwald> | I'd argue it basically makes reasoning harder |
2021-07-27 22:17:38 +0200 | <maerwald> | about monadic combinators at least |
2021-07-27 22:17:51 +0200 | <Cale> | It's good because we get to define a bunch of functions generically that'll work in any monad, and then use them in every monad we define. |
2021-07-27 22:18:00 +0200 | <maerwald> | "work" how? |
2021-07-27 22:18:11 +0200 | <maerwald> | rather "somehow" |
2021-07-27 22:18:11 +0200 | <Cale> | and that saves us a bunch of trouble defining e.g. "forM" in every library we write |
2021-07-27 22:18:23 +0200 | <maerwald> | never understood this argument |
2021-07-27 22:18:24 +0200 | <dsal> | `return` is a bad name and often makes people think something is happening when something else is happening. |
2021-07-27 22:18:29 +0200 | <maerwald> | rust is doing fine without this |
2021-07-27 22:18:44 +0200 | <dsal> | I've had issues reading code that looked pretty weird and used return in a way where I had to make sure the author actually understood what was happening. |
2021-07-27 22:18:50 +0200 | <Cale> | The reason for the monad abstraction to exist is the same as the reason for any abstraction to exist |
2021-07-27 22:19:11 +0200 | <maerwald> | that's too vague for me :) |
2021-07-27 22:19:12 +0200 | <Cale> | We define a lot of things which happen to be monads, it's nice to avoid repeating ourselves when the pattern exists. |
2021-07-27 22:19:45 +0200 | <maerwald> | I'm just questioning that the whole expressivity monads give is actually a good idea to utilize |
2021-07-27 22:19:47 +0200 | chomwitt | (~chomwitt@athedsl-32041.home.otenet.gr) |
2021-07-27 22:19:57 +0200 | <maerwald> | at least on a general basis |
2021-07-27 22:20:10 +0200 | <maerwald> | especially when it breaks your intuition about combinators |
2021-07-27 22:20:16 +0200 | pschorf | (~user@208.127.190.222) (Remote host closed the connection) |
2021-07-27 22:20:17 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 255 seconds) |
2021-07-27 22:20:25 +0200 | <Cale> | Well, combinator libraries in general are a good idea. If your combinator library happens to define a monad, it's nice to recognise that. |
2021-07-27 22:20:30 +0200 | <maerwald> | that expands more generally to type classes |
2021-07-27 22:20:45 +0200 | <monochrom> | If you can bring your same argument against rings, fields, monoids, vector spaces, topologies... then perhaps it applies to monads too. |
2021-07-27 22:20:49 +0200 | Guest966 | (~Guest9@43.242.116.41) (Quit: Connection closed) |
2021-07-27 22:20:55 +0200 | <maerwald> | you refactor your stuff, luckily it still compiles... but the underlying instance does something entirely different |
2021-07-27 22:20:59 +0200 | <maerwald> | that's a lens moment |
2021-07-27 22:21:17 +0200 | <Cale> | Well, that's what the monad laws are for |
2021-07-27 22:21:24 +0200 | <monochrom> | It is both nice and useful to know that, for example, the binomial theorem works for all commutative rings, even though I will end up just using the real number ring anyway. |
2021-07-27 22:21:26 +0200 | <maerwald> | oh, it's not a law problem |
2021-07-27 22:21:29 +0200 | <Cale> | They tell you some refactorings it's okay to make |
2021-07-27 22:21:35 +0200 | <maerwald> | lenses broke my code in a lawful way |
2021-07-27 22:21:38 +0200 | Null_A | (~null_a@2601:645:8700:2290:5520:ed9a:24da:3d0c) (Remote host closed the connection) |
2021-07-27 22:21:40 +0200 | Obo | (~roberto@70.pool90-171-81.dynamic.orange.es) (Quit: WeeChat 2.8) |
2021-07-27 22:21:43 +0200 | <maerwald> | that didn't help |
2021-07-27 22:21:57 +0200 | <maerwald> | typeclasses can do that |
2021-07-27 22:22:14 +0200 | <Cale> | Well, it is important to know what you're doing, and I think using things which are overpowered relative to your needs is often a bad idea |
2021-07-27 22:22:46 +0200 | <dsal> | I look at it like applicative functors are a newer thing that monads also are, and since `return = pure` in (hopefully) all the cases, using the less confusing name is better. |
2021-07-27 22:22:48 +0200 | <maerwald> | they can cloud control flow and make behavior reasoning impossible... now you're just reasoning about abstractions and what you roughly think they do, instead of having the actual control flow in your head... most of the time this may work out |
2021-07-27 22:22:51 +0200 | <maerwald> | but sometimes not |
2021-07-27 22:22:58 +0200 | <Cale> | Lens has its places for good use, but I wouldn't recommend using it everywhere all the time. |
2021-07-27 22:22:59 +0200 | <dsal> | > let f x = do { a <- if odd x then return 3 else return 6; return 4 } in f 1 :: Maybe Int -- because people write code like this and end up confused. |
2021-07-27 22:23:01 +0200 | <lambdabot> | Just 4 |
2021-07-27 22:23:03 +0200 | jmtd | (jon@dow.land) |
2021-07-27 22:23:11 +0200 | robertm | (robertm@rojoma.com) (Ping timeout: 252 seconds) |
2021-07-27 22:23:44 +0200 | Jon | (jon@dow.land) (Ping timeout: 272 seconds) |
2021-07-27 22:23:44 +0200 | <Cale> | dsal: Well, I think that's just getting used to what the monad laws say about return |
2021-07-27 22:23:50 +0200 | mrmonday | (~robert@what.i.hope.is.not.a.tabernaevagant.es) (Ping timeout: 250 seconds) |
2021-07-27 22:24:05 +0200 | jmtd | Jon |
2021-07-27 22:24:07 +0200 | <maerwald> | generics take this a step further... idk how to understand my own generics code without writing it again from scratch |
2021-07-27 22:24:12 +0200 | mrmonday | (~robert@what.i.hope.is.not.a.tabernaevagant.es) |
2021-07-27 22:24:29 +0200 | <dsal> | It's generally people who are somewhat new to the language and who have a lot of things to get used to. Telling them `return` does something entirely different than anything they've ever experienced just makes the curve steeper. |
2021-07-27 22:24:37 +0200 | <Cale> | But also, it makes sense from the perspective that e.g. when you apply f to an odd number, return 3 is going to be the action which does nothing except to return 3 |
2021-07-27 22:24:41 +0200 | <maerwald> | so yeah... haskell has some nice properties wrt "reasoning", but it can break that easily |
2021-07-27 22:24:49 +0200 | <Cale> | and a is the result of executing that, so a will be 3 |
2021-07-27 22:25:13 +0200 | <Cale> | dsal: It's only confusing if you're used to having all your shit wrapped in callCC implicitly :D |
2021-07-27 22:25:27 +0200 | chomwitt | (~chomwitt@athedsl-32041.home.otenet.gr) (Remote host closed the connection) |
2021-07-27 22:25:32 +0200 | <maerwald> | whether you need to keep global variables in your head or odd class instance behavior, does it really matter? |
2021-07-27 22:25:44 +0200 | Null_A | (~null_a@2601:645:8700:2290:5520:ed9a:24da:3d0c) |
2021-07-27 22:26:05 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection) |
2021-07-27 22:26:13 +0200 | ukari | (~ukari@user/ukari) (Ping timeout: 268 seconds) |
2021-07-27 22:26:52 +0200 | <dsal> | Sure, but it confuses a lot of folks. `return` in a function doesn't cause the function to return and that surprises people. |
2021-07-27 22:26:56 +0200 | <dsal> | I can't remember the exact case I saw like this, but I had to confirm that they actually understood that the code would continue processing effects after the `return` because it was weird looking code and it wasn't clear whether they understood it. |
2021-07-27 22:26:58 +0200 | <maerwald> | we're almost there (talking about effects systems) |
2021-07-27 22:27:06 +0200 | <maerwald> | (and how they will save us all) |
2021-07-27 22:27:25 +0200 | <dsal> | It's kind of like using the word "peruse" in English. Its definition includes its antonym so you have to ask what people mean all the time and you might as well avoid using the word altogether so nobody's confused. |
2021-07-27 22:27:27 +0200 | <maerwald> | but Cale prefers transformers anyway :p |
2021-07-27 22:27:34 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Ping timeout: 244 seconds) |
2021-07-27 22:27:48 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2021-07-27 22:28:09 +0200 | <Cale> | dsal: I totally get that, but people who are trying to read Haskell as though it were e.g. Python, are going to be confused by much more than that anyway, and I think the name "return v" is a fine name for what action it denotes. |
2021-07-27 22:28:39 +0200 | <Cale> | Once you understand that nothing possibly could have the effect that they expected, then it's not confusing at all that return doesn't have that effect |
2021-07-27 22:29:13 +0200 | roboguy_ | (~roboguy_@2605:a601:ac0e:ae00:bc41:cf44:b56:1727) |
2021-07-27 22:29:35 +0200 | <Cale> | The reason it's forbidden is that one of the monad laws effectively says you can chop a segment out of any do-block and move it into a new definition without changing the meaning |
2021-07-27 22:29:56 +0200 | <Cale> | (that's what the associativity law basically means) |
2021-07-27 22:30:15 +0200 | <Cale> | and so, that includes stuff with returns in it |
2021-07-27 22:30:20 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
2021-07-27 22:30:44 +0200 | <dsal> | The idea of what `return` does is similar to the idea of what `fail` does, though. `fail` gets to return early, so I can just evaluate stuff until I `return` or `fail`. |
2021-07-27 22:30:44 +0200 | bwe_ | bwe |
2021-07-27 22:30:52 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Remote host closed the connection) |
2021-07-27 22:30:58 +0200 | <dsal> | Anyway, I find it confusing, but don't know why I'd actually *want* to use `return`. It's never made any code clearer for me. |
2021-07-27 22:31:03 +0200 | <Cale> | It's not though... |
2021-07-27 22:31:12 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 250 seconds) |
2021-07-27 22:31:17 +0200 | <Cale> | fail will cause the entire computation to fail, sure. |
2021-07-27 22:31:29 +0200 | <Cale> | But that's not the same as ending the present definition |
2021-07-27 22:31:32 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2021-07-27 22:31:43 +0200 | <Cale> | It extends arbitrarily far beyond that |
2021-07-27 22:31:48 +0200 | <dsal> | Why not, though? What's the difference between Left and Right here? |
2021-07-27 22:32:12 +0200 | <Cale> | Like, what you probably expect of your f from before is that 3 gets returned *from f* |
2021-07-27 22:32:33 +0200 | <Cale> | Not that 3 gets returned from the entire final action of which f 1 was only possibly a small part |
2021-07-27 22:32:33 +0200 | amk | (~amk@176.61.106.150) (Remote host closed the connection) |
2021-07-27 22:32:46 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) |
2021-07-27 22:32:46 +0200 | LukeHoersten | (~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-07-27 22:32:48 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
2021-07-27 22:32:48 +0200 | allbery_b | (~geekosaur@xmonad/geekosaur) |
2021-07-27 22:32:51 +0200 | allbery_b | geekosaur |
2021-07-27 22:33:29 +0200 | <Cale> | i.e. you expect something like f x = callCC $ \ret -> if odd x then ret 3 else ret 6; return 4 |
2021-07-27 22:33:45 +0200 | <dsal> | Yeah, I think that's what people often expect. |
2021-07-27 22:34:00 +0200 | amk | (~amk@176.61.106.150) |
2021-07-27 22:34:04 +0200 | <Cale> | But if return behaved like Left, that's not what would happen |
2021-07-27 22:34:12 +0200 | <dsal> | Nobody ever expects that with `pure` though. |
2021-07-27 22:34:25 +0200 | <Cale> | Because if we had something like do f 1; f 2 |
2021-07-27 22:34:38 +0200 | <Cale> | then we might not expect 3 to be returned |
2021-07-27 22:35:11 +0200 | <Cale> | The monad laws tell us that we're always allowed to inline the definition of f 1 |
2021-07-27 22:35:28 +0200 | <dsal> | Sure, I agree with that model. It's simply the word that's confusing. |
2021-07-27 22:35:33 +0200 | <dsal> | I don't even have a good mental model for what `return` should mean (other than just aliasing it to `pure` in my head). I have a mechanical rewrite so that I don't think of anything being returned because the concept doesn't make sense. |
2021-07-27 22:35:52 +0200 | <lechner> | dsal: in the two meanings of "peruse" I see a range of reading activities. it's the logical way to combine them |
2021-07-27 22:35:54 +0200 | <Cale> | It might be confusing for all of a few minutes until someone tells you what return means |
2021-07-27 22:36:06 +0200 | jushur | (~human@user/jushur) (Quit: ¯\_(ツ)_/¯) |
2021-07-27 22:36:27 +0200 | <Cale> | But like, that's also true of the entire rest of the programming language, so I don't see it as a really big deal |
2021-07-27 22:36:38 +0200 | <dsal> | lechner: peruse means you've seen something, but the original definition implies you studied it very carefully and the other meaning suggests you've only taken a cursory glance. |
2021-07-27 22:36:44 +0200 | <Cale> | You're going to be introduced to return at some point, and you might've thought it meant something a bit different before then |
2021-07-27 22:36:48 +0200 | chris_ | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-07-27 22:36:50 +0200 | alexfmpe[m] | (~alexfmpem@2001:470:69fc:105::38ba) |
2021-07-27 22:36:50 +0200 | robertm | (robertm@rojoma.com) |
2021-07-27 22:37:01 +0200 | <Cale> | But I've never seen anyone get *really* stuck on it |
2021-07-27 22:37:16 +0200 | <Cale> | once they're aware that "return v" is the no-op action that does nothing except return v |
2021-07-27 22:37:23 +0200 | <dsal> | Cale: I don't think I fundamentally disagree with you. `return` doesn't confuse me that much, but only because I don't think of it as a word and instead immediately alias it to `pure` and move on. |
2021-07-27 22:37:33 +0200 | <dsal> | But you suggest that it's important to *use* `return` and that part I don't understand. |
2021-07-27 22:37:50 +0200 | ukari | (~ukari@user/ukari) |
2021-07-27 22:38:31 +0200 | <Cale> | Well, the part about using return when appropriate is just that its type is a little more specific, and so the distinction of return vs. pure helps us know when we're really making use of a broader abstraction. |
2021-07-27 22:38:37 +0200 | <alexfmpe[m]> | I could have sworn I had seen an util for folding two lists at once but am unable to find it, anyone know what I'm talking about? |
2021-07-27 22:38:44 +0200 | <dsal> | But `return v` doesn't `return v` it just places a pure value inside the current Monad. i.e. `return = Just` or `return = Right` or whatever. It's an abstraction of a constructor, not any kind of flow control thing like the verb suggests. |
2021-07-27 22:38:44 +0200 | amk | (~amk@176.61.106.150) (Ping timeout: 255 seconds) |
2021-07-27 22:38:57 +0200 | <lechner> | dsal: it's a super old rhetorical device: one morning, one night---a day. it describes the range between the edge cases |
2021-07-27 22:38:59 +0200 | <Cale> | alexfmpe[m]: hmm... you mean like, folding through their zip? |
2021-07-27 22:39:12 +0200 | <Cale> | alexfmpe[m]: Or it's supposed to do something different if one of them ends early? |
2021-07-27 22:39:25 +0200 | amk | (~amk@176.61.106.150) |
2021-07-27 22:39:35 +0200 | <Cale> | dsal: Well, it does |
2021-07-27 22:39:50 +0200 | <Cale> | In the same way that when we have something like v <- x |
2021-07-27 22:39:55 +0200 | <alexfmpe[m]> | cale: more of the later, as in the merge step of mergesort |
2021-07-27 22:39:56 +0200 | <Cale> | The v is the value that x returned |
2021-07-27 22:40:02 +0200 | <Cale> | So when you write v <- return 3 |
2021-07-27 22:40:05 +0200 | <Cale> | then v is 3 |
2021-07-27 22:40:11 +0200 | <dsal> | :t zipWith bimap |
2021-07-27 22:40:13 +0200 | <lambdabot> | Bifunctor p => [a -> b] -> [c -> d] -> [p a c -> p b d] |
2021-07-27 22:40:30 +0200 | <alexfmpe[m]> | dsal: "abstraction of a constructor" isn't at all how I would put it, take ZipList or Cont for instance |
2021-07-27 22:40:55 +0200 | <maerwald> | dsal: I think `success` and `fail` would be reasonble shortcut names. `return` is more from the ASM days |
2021-07-27 22:41:18 +0200 | <Cale> | I think of "return v" as meaning "the action which, when executed, produces v as its result" |
2021-07-27 22:41:37 +0200 | <dsal> | Cale: I think I can at least parse that. |
2021-07-27 22:41:55 +0200 | <Cale> | So return v is the action which... returns v |
2021-07-27 22:42:10 +0200 | <Cale> | It doesn't mean "return from the caller immediately with v" |
2021-07-27 22:42:12 +0200 | <maerwald> | `return` means `return to the address on the top of the stack` |
2021-07-27 22:42:13 +0200 | <dsal> | I feel like it's a stretch, but I can at least accept it. :) |
2021-07-27 22:42:23 +0200 | <maerwald> | for anything else, the word doesn't make any sense |
2021-07-27 22:42:26 +0200 | neceve | (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 252 seconds) |
2021-07-27 22:42:32 +0200 | <Cale> | I think it's *less* of a stretch than the traditional sense of return in programming |
2021-07-27 22:42:52 +0200 | <dsal> | ...but why do you consider using `pure` for the same thing less desirable? |
2021-07-27 22:42:52 +0200 | <alexfmpe[m]> | I dunno, every intuition besides `pure` being identity-ish (which exactly what the laws require), seems more of a trap to me |
2021-07-27 22:43:17 +0200 | <maerwald> | Cale: "returning v" may make sense in rust, where you return ownership |
2021-07-27 22:43:30 +0200 | <dsal> | alexfmpe[m]: Sure, sure. I don't mind traps as long as I can get back out of them. |
2021-07-27 22:43:43 +0200 | <maerwald> | but in most languages you don't even have such a concept |
2021-07-27 22:43:47 +0200 | <alexfmpe[m]> | I meant traps as in actually getting in the way |
2021-07-27 22:43:48 +0200 | <maerwald> | no one owns anything |
2021-07-27 22:43:56 +0200 | <dsal> | alexfmpe[m]: Yeah, I get the meaning. |
2021-07-27 22:44:06 +0200 | <deejaytee> | I tend to use pure instead of return everywhere, since it prevents people unfamiliar with haskell for mistaking it for the return they know |
2021-07-27 22:44:25 +0200 | <alexfmpe[m]> | I've hated the normal formulation of applicative/monad ever since I saw the monoidal and join/fmap based laws |
2021-07-27 22:44:39 +0200 | <dsal> | My understanding of haskell is good enough that it's my go-to language for just about everything including just thinking of stuff. But if I ever have a completely intuitive understanding of all of it, I'll have to find something else. |
2021-07-27 22:44:40 +0200 | <deejaytee> | admittedly a pretty weird use - nobody ever really reads my code anyways |
2021-07-27 22:44:49 +0200 | chris_ | (~chris@81.96.113.213) |
2021-07-27 22:44:51 +0200 | <maerwald> | deejaytee: I know that feeling |
2021-07-27 22:44:54 +0200 | <alexfmpe[m]> | it's just...collapsing and mapping |
2021-07-27 22:45:04 +0200 | <alexfmpe[m]> | trying to treat it as anything else is just going to confuse me |
2021-07-27 22:46:16 +0200 | acidjnk_new3 | (~acidjnk@p200300d0c72b950729faca9193881d78.dip0.t-ipconnect.de) |
2021-07-27 22:46:45 +0200 | <Cale> | alexfmpe[m]: foldr2 b l r z (x:xs) [] = foldr l z (x:xs); foldr2 b l r z [] (y:ys) = foldr r z (y:ys); foldr2 b l r z (x:xs) (y:ys) = b l r (foldr2 b l r z xs ys) |
2021-07-27 22:46:48 +0200 | <Cale> | maybe? |
2021-07-27 22:47:12 +0200 | <Cale> | There's probably something more general still... |
2021-07-27 22:47:39 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-07-27 22:47:48 +0200 | <Cale> | Actually, maybe it's saner to factor out the uses of foldr at the ends |
2021-07-27 22:47:56 +0200 | <alexfmpe[m]> | oh hmm |
2021-07-27 22:47:58 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-07-27 22:48:00 +0200 | <alexfmpe[m]> | not quite like that |
2021-07-27 22:48:32 +0200 | <Cale> | (and I didn't handle the doubly empty case, I was going to generalise the (x:xs) pattern match...) |
2021-07-27 22:48:33 +0200 | <alexfmpe[m]> | I'm basically gate-ing one of the lists against the other |
2021-07-27 22:48:36 +0200 | <alexfmpe[m]> | like, whitelisting |
2021-07-27 22:48:48 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) (Ping timeout: 276 seconds) |
2021-07-27 22:49:05 +0200 | <Cale> | Ohh... like, say to compute the intersection of sorted lists? |
2021-07-27 22:49:12 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) |
2021-07-27 22:49:30 +0200 | <alexfmpe[m]> | welll, almost whitelisting, I'm checking that a subsequence of one list matches is included in the other |
2021-07-27 22:50:18 +0200 | <alexfmpe[m]> | I've done it manually, with normal pattern matching and recursion |
2021-07-27 22:50:53 +0200 | <Cale> | Is the order important? |
2021-07-27 22:51:14 +0200 | <Cale> | (Or could we pass to using e.g. Data.Set, which would be more efficient a lot of the time) |
2021-07-27 22:51:29 +0200 | <alexfmpe[m]> | I'm not 100%, as it's been a while but I think so |
2021-07-27 22:51:37 +0200 | <alexfmpe[m]> | otherwise, yeah, intersection |
2021-07-27 22:52:03 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection) |
2021-07-27 22:52:43 +0200 | <alexfmpe[m]> | oh, this might work https://hackage.haskell.org/package/base-4.15.0.0/docs/Data-List.html#v:intersect |
2021-07-27 22:53:22 +0200 | <alexfmpe[m]> | take the intersection and check it matches the original list I'm whitelisting against |
2021-07-27 22:53:44 +0200 | pschorf | (~user@c-73-77-28-188.hsd1.tx.comcast.net) |
2021-07-27 22:54:04 +0200 | <dsal> | :t fold . zipWith |
2021-07-27 22:54:05 +0200 | <lambdabot> | Foldable ((->) [a]) => (a -> b -> c) -> [b] -> [c] |
2021-07-27 22:54:09 +0200 | <Cale> | It could, but note that this thing only requires Eq, so there's no way it's anything cheaper than quadratic |
2021-07-27 22:54:30 +0200 | <alexfmpe[m]> | bah |
2021-07-27 22:54:45 +0200 | <alexfmpe[m]> | in my case I actually needed `intersectBy :: (a -> b -> Bool) -> [a] -> [b] -> [a]` or something |
2021-07-27 22:54:59 +0200 | <alexfmpe[m]> | but `intersectBy` is `a -> a -> Bool` for some reaosn |
2021-07-27 22:55:06 +0200 | <alexfmpe[m]> | and, yeah, quadratic |
2021-07-27 22:55:25 +0200 | <Cale> | I'm sure I've written this higher order function before... |
2021-07-27 22:55:28 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2021-07-27 22:55:42 +0200 | <Cale> | that applies a function to know whether to walk down one list or the other |
2021-07-27 22:55:51 +0200 | <Cale> | and produces results as it goes |
2021-07-27 22:55:53 +0200 | <dsal> | :t \f l1 -> fold . zipWith (\a b -> f a b) l1 |
2021-07-27 22:55:55 +0200 | <lambdabot> | Monoid c => (t1 -> t2 -> c) -> [t1] -> [t2] -> c |
2021-07-27 22:55:59 +0200 | <dsal> | Well that's kind of gross. |
2021-07-27 22:56:06 +0200 | <Cale> | It's different from folding over the zip |
2021-07-27 22:56:14 +0200 | <alexfmpe[m]> | well, this is assymetric, I always go down the whitelist one, and may or may not go down the whitelisted one depending on whether it matches |
2021-07-27 22:56:26 +0200 | <dsal> | Yeah, sorry, I'm not actually aware of the topic here. Just was wondering about that. |
2021-07-27 22:56:43 +0200 | <alexfmpe[m]> | I dunno, maybe I should fold the whitelist one, and have a pair as the accumulator |
2021-07-27 22:57:17 +0200 | <alexfmpe[m]> | `(already-whitelisted, check-whether-whitelisted) :: ([a], [a])` |
2021-07-27 22:58:01 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-07-27 23:00:50 +0200 | mr-red | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) |
2021-07-27 23:01:06 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 240 seconds) |
2021-07-27 23:03:22 +0200 | doyougnu | (~user@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection) |
2021-07-27 23:04:20 +0200 | amahl | (~amahl@84.251.202.64) (Remote host closed the connection) |
2021-07-27 23:06:06 +0200 | <dsal> | alexfmpe[m]: Is that just something like `[ a | a <- l1, b <- l2, f a b]` ? |
2021-07-27 23:06:57 +0200 | <dsal> | Oh, intersectBy is in Data.OldList with a definition similar to that. |
2021-07-27 23:07:18 +0200 | <alexfmpe[m]> | I don't think I can get away with intersection, since multiplicity matters here |
2021-07-27 23:07:49 +0200 | <alexfmpe[m]> | well, and order, otherwise some multiset intersection thing would work |
2021-07-27 23:10:00 +0200 | chomwitt | (~chomwitt@2a02:587:dc01:5c00:12c3:7bff:fe6d:d374) |
2021-07-27 23:10:10 +0200 | guest76 | (~guest76@2604:3d08:6f7e:cf00::2e50) |
2021-07-27 23:10:43 +0200 | roboguy__ | (~roboguy_@2605:a601:ac0e:ae00:3db6:b926:dbf2:890a) |
2021-07-27 23:11:02 +0200 | amk | (~amk@176.61.106.150) (Ping timeout: 252 seconds) |
2021-07-27 23:11:07 +0200 | guest76 | (~guest76@2604:3d08:6f7e:cf00::2e50) (Client Quit) |
2021-07-27 23:13:30 +0200 | roboguy_ | (~roboguy_@2605:a601:ac0e:ae00:bc41:cf44:b56:1727) (Ping timeout: 240 seconds) |
2021-07-27 23:13:38 +0200 | <Cale> | alexfmpe[m]: Here's a fun one: https://gist.github.com/cgibbard/b129fe412b74cca676ac2a2c941362ea |
2021-07-27 23:14:06 +0200 | nineonine | (~nineonine@50.216.62.2) |
2021-07-27 23:14:46 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection) |
2021-07-27 23:14:55 +0200 | roboguy__ | (~roboguy_@2605:a601:ac0e:ae00:3db6:b926:dbf2:890a) (Client Quit) |
2021-07-27 23:14:57 +0200 | <Cale> | Pretty close to the most general thing you can do with a pair of lists, lol |
2021-07-27 23:15:09 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
2021-07-27 23:16:09 +0200 | <alexfmpe[m]> | huh that looks like it works for my case |
2021-07-27 23:16:19 +0200 | <alexfmpe[m]> | though, Pick seems suspiciously like `These` |
2021-07-27 23:17:29 +0200 | <Cale> | yeah |
2021-07-27 23:17:42 +0200 | <alexfmpe[m]> | `these :: (a -> c) -> (b -> c) -> (a -> b -> c) -> These a b -> c` |
2021-07-27 23:18:12 +0200 | <Cale> | I probably should have just used These |
2021-07-27 23:18:20 +0200 | <Cale> | For some reason it slipped my mind |
2021-07-27 23:18:44 +0200 | bruceleewees | (~bruceleew@83.24.236.64.ipv4.supernova.orange.pl) |
2021-07-27 23:18:45 +0200 | <Cale> | Though this is kinda sorta dual to it |
2021-07-27 23:18:47 +0200 | jolly23 | (~jolly@208.180.97.158) |
2021-07-27 23:18:56 +0200 | <alexfmpe[m]> | it's backwards though? |
2021-07-27 23:18:57 +0200 | <alexfmpe[m]> | yeah |
2021-07-27 23:19:05 +0200 | <alexfmpe[m]> | more like `These a b -> (c -> c)` |
2021-07-27 23:19:32 +0200 | <Cale> | Yeah, you'd have something like (a -> b -> These a b) and (These a b -> c -> c) |
2021-07-27 23:20:35 +0200 | fendor | (~fendor@77.119.218.44.wireless.dyn.drei.com) (Remote host closed the connection) |
2021-07-27 23:20:35 +0200 | bruceleewees | (~bruceleew@83.24.236.64.ipv4.supernova.orange.pl) (Read error: Connection reset by peer) |
2021-07-27 23:21:17 +0200 | bruceleewees | (~bruceleew@83.24.236.64.ipv4.supernova.orange.pl) |
2021-07-27 23:22:11 +0200 | jolly | (~jolly@208.180.97.158) (Ping timeout: 258 seconds) |
2021-07-27 23:22:24 +0200 | drd | (~drd@93-39-151-19.ip76.fastwebnet.it) |
2021-07-27 23:23:26 +0200 | xff0x | (~xff0x@2001:1a81:527c:b500:2b8c:4e21:9ff9:e65e) (Ping timeout: 256 seconds) |
2021-07-27 23:23:26 +0200 | gentauro | (~gentauro@user/gentauro) (Read error: Connection reset by peer) |
2021-07-27 23:23:43 +0200 | Null_A | (~null_a@2601:645:8700:2290:5520:ed9a:24da:3d0c) (Remote host closed the connection) |
2021-07-27 23:23:48 +0200 | gentauro | (~gentauro@user/gentauro) |
2021-07-27 23:23:58 +0200 | xff0x | (~xff0x@2001:1a81:527c:b500:2843:4b18:8f2c:3a0f) |
2021-07-27 23:24:00 +0200 | mr-red | (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 256 seconds) |
2021-07-27 23:24:20 +0200 | jolly | (~jolly@208.180.97.158) |
2021-07-27 23:25:32 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-07-27 23:26:47 +0200 | jolly23 | (~jolly@208.180.97.158) (Ping timeout: 258 seconds) |
2021-07-27 23:28:59 +0200 | Null_A | (~null_a@2601:645:8700:2290:5520:ed9a:24da:3d0c) |
2021-07-27 23:30:56 +0200 | pbrisbin | (~patrick@174-083-170-200.res.spectrum.com) |
2021-07-27 23:32:12 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) (Ping timeout: 245 seconds) |
2021-07-27 23:32:14 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2021-07-27 23:32:28 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2021-07-27 23:32:43 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) |
2021-07-27 23:36:07 +0200 | <peutri> | what's the standard these days to parse a relaxng-constrained xml? |
2021-07-27 23:36:38 +0200 | <peutri> | i looked around for some sort of validate-parser combo, but it always return some form of generic xml structure |
2021-07-27 23:37:07 +0200 | amk | (~amk@176.61.106.150) |
2021-07-27 23:37:12 +0200 | curiousgay | (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 272 seconds) |
2021-07-27 23:37:14 +0200 | jumper149 | (~jumper149@80.240.31.34) (Quit: WeeChat 3.2) |
2021-07-27 23:37:58 +0200 | <peutri> | i was hoping for actual sum types, to (help) get a feeling I'm not forgetting branches in my cases |
2021-07-27 23:38:47 +0200 | Null_A | (~null_a@2601:645:8700:2290:5520:ed9a:24da:3d0c) (Remote host closed the connection) |
2021-07-27 23:39:30 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) (Ping timeout: 276 seconds) |
2021-07-27 23:40:31 +0200 | <dsal> | Huh, I've never really looked at these, but it's been brought up twice in the last couple of days. It's pretty neat. |
2021-07-27 23:40:38 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) |
2021-07-27 23:44:07 +0200 | sheepduck | (~sheepduck@user/sheepduck) |
2021-07-27 23:48:04 +0200 | agua | (~agua@2804:14c:8793:8e2f:24cc:893e:e794:aea7) |
2021-07-27 23:48:45 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-07-27 23:50:38 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) (Ping timeout: 256 seconds) |
2021-07-27 23:51:25 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) |
2021-07-27 23:51:31 +0200 | pesada | (~agua@2804:18:4a:f76c:1:0:5e60:e39) |
2021-07-27 23:52:05 +0200 | Core8816 | (~agua@2804:18:4a:f76c:1:0:5e60:e39) (Ping timeout: 255 seconds) |
2021-07-27 23:54:36 +0200 | agua | (~agua@2804:14c:8793:8e2f:24cc:893e:e794:aea7) (Ping timeout: 256 seconds) |
2021-07-27 23:56:39 +0200 | sheepduck | (~sheepduck@user/sheepduck) (Quit: Konversation terminated!) |
2021-07-27 23:57:16 +0200 | deejaytee | (~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net) (Quit: Leaving) |
2021-07-27 23:57:22 +0200 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 240 seconds) |
2021-07-27 23:58:21 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) (Ping timeout: 265 seconds) |
2021-07-27 23:59:02 +0200 | fossdd | (~fossdd@sourcehut/user/fossdd) |
2021-07-27 23:59:22 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-07-27 23:59:44 +0200 | Erutuon | (~Erutuon@user/erutuon) |