2022-02-16 00:00:06 +0100 | TonyStone | (~TonyStone@2603-7080-8607-c36a-3d94-4d23-dc7c-c228.res6.spectrum.com) |
2022-02-16 00:08:48 +0100 | CiaoSen | (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2022-02-16 00:09:05 +0100 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2022-02-16 00:13:48 +0100 | <jackdk> | zwro[m]: hello |
2022-02-16 00:17:36 +0100 | coot_ | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot_) |
2022-02-16 00:19:11 +0100 | chenqisu12 | (~chenqisu1@183.217.200.249) |
2022-02-16 00:19:51 +0100 | `2jt | (~jtomas@130.red-88-22-46.staticip.rima-tde.net) (Ping timeout: 272 seconds) |
2022-02-16 00:21:28 +0100 | FernandoChu[m] | (~ryunaqmat@2001:470:69fc:105::1:4dc0) (*.net *.split) |
2022-02-16 00:21:28 +0100 | acidjnk | (~acidjnk@p200300d0c7057500a04355ceabfe8d47.dip0.t-ipconnect.de) (*.net *.split) |
2022-02-16 00:21:28 +0100 | whatsupdoc | (uid509081@id-509081.hampstead.irccloud.com) (*.net *.split) |
2022-02-16 00:21:28 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (*.net *.split) |
2022-02-16 00:21:28 +0100 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (*.net *.split) |
2022-02-16 00:21:28 +0100 | econo | (uid147250@user/econo) (*.net *.split) |
2022-02-16 00:21:28 +0100 | polyphem | (~rod@2a02:810d:840:8754:448e:47ff:4575:7cfb) (*.net *.split) |
2022-02-16 00:21:28 +0100 | megeve | (sid523379@id-523379.hampstead.irccloud.com) (*.net *.split) |
2022-02-16 00:21:28 +0100 | foul_owl | (~kerry@207.244.125.36) (*.net *.split) |
2022-02-16 00:21:28 +0100 | myme | (~myme@2a01:799:d5a:cd00:9ae3:d451:a989:e1e9) (*.net *.split) |
2022-02-16 00:21:28 +0100 | img | (~img@user/img) (*.net *.split) |
2022-02-16 00:21:28 +0100 | kanin | (~kanin@112.41.64.39) (*.net *.split) |
2022-02-16 00:21:28 +0100 | edwtjo | (~edwtjo@user/edwtjo) (*.net *.split) |
2022-02-16 00:21:28 +0100 | hongminhee | (sid295@2a03:5180:f::127) (*.net *.split) |
2022-02-16 00:21:28 +0100 | bjs | (sid190364@user/bjs) (*.net *.split) |
2022-02-16 00:21:28 +0100 | cbarrett | (sid192934@2a03:5180:f:1::2:f1a6) (*.net *.split) |
2022-02-16 00:21:28 +0100 | Boarders_ | (sid425905@id-425905.lymington.irccloud.com) (*.net *.split) |
2022-02-16 00:21:28 +0100 | ellie | (~ellie@user/ellie) (*.net *.split) |
2022-02-16 00:21:28 +0100 | Putonlalla | (~sapekiis@it-cyan.it.jyu.fi) (*.net *.split) |
2022-02-16 00:21:28 +0100 | fryguybob | (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) (*.net *.split) |
2022-02-16 00:21:28 +0100 | Hafydd | (~Hafydd@user/hafydd) (*.net *.split) |
2022-02-16 00:21:28 +0100 | drewr | (~drew@user/drewr) (*.net *.split) |
2022-02-16 00:21:28 +0100 | tv | (~tv@user/tv) (*.net *.split) |
2022-02-16 00:21:28 +0100 | elkcl | (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (*.net *.split) |
2022-02-16 00:21:28 +0100 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) (*.net *.split) |
2022-02-16 00:21:28 +0100 | Flow | (~none@gentoo/developer/flow) (*.net *.split) |
2022-02-16 00:21:28 +0100 | echoreply | (~echoreply@2001:19f0:9002:1f3b:5400:ff:fe6f:8b8d) (*.net *.split) |
2022-02-16 00:21:28 +0100 | oats | (~thomas@user/oats) (*.net *.split) |
2022-02-16 00:21:28 +0100 | mixfix41 | (~sdenyninn@user/mixfix41) (*.net *.split) |
2022-02-16 00:21:28 +0100 | NiKaN | (sid385034@id-385034.helmsley.irccloud.com) (*.net *.split) |
2022-02-16 00:21:28 +0100 | tinwood | (~tinwood@canonical/tinwood) (*.net *.split) |
2022-02-16 00:21:29 +0100 | Pent | (sid313808@lymington.irccloud.com) (*.net *.split) |
2022-02-16 00:21:29 +0100 | finsternis | (~X@23.226.237.192) (*.net *.split) |
2022-02-16 00:21:29 +0100 | dexterfoo | (~dexter@li655-253.members.linode.com) (*.net *.split) |
2022-02-16 00:21:29 +0100 | fluxit | (~fluxit@techsmix.net) (*.net *.split) |
2022-02-16 00:21:29 +0100 | lambdabot | (~lambdabot@haskell/bot/lambdabot) (*.net *.split) |
2022-02-16 00:21:29 +0100 | heath | (~heath@user/heath) (*.net *.split) |
2022-02-16 00:21:29 +0100 | lambdap | (~lambdap@static.167.190.119.168.clients.your-server.de) (*.net *.split) |
2022-02-16 00:21:29 +0100 | nurupo | (~nurupo.ga@user/nurupo) (*.net *.split) |
2022-02-16 00:21:29 +0100 | noctuks | (7vrDyCK6LH@user/noctux) (*.net *.split) |
2022-02-16 00:21:29 +0100 | cjay | (cjay@nerdbox.nerd2nerd.org) (*.net *.split) |
2022-02-16 00:21:29 +0100 | notabled1 | (~notabledu@ares.dbalan.in) (*.net *.split) |
2022-02-16 00:21:29 +0100 | sshine | (~simon@hubris.eta.solutions) (*.net *.split) |
2022-02-16 00:21:29 +0100 | blades | (~blades@204.48.29.163) (*.net *.split) |
2022-02-16 00:21:29 +0100 | kosmikus | (~kosmikus@nullzig.kosmikus.org) (*.net *.split) |
2022-02-16 00:21:29 +0100 | Trattue | (~Trattue@152.70.182.158) (*.net *.split) |
2022-02-16 00:21:50 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-16 00:21:53 +0100 | nurupo | (~nurupo.ga@user/nurupo) |
2022-02-16 00:21:57 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-16 00:22:00 +0100 | gurkenglas | (~gurkengla@dslb-188-096-121-068.188.096.pools.vodafone-ip.de) (Ping timeout: 252 seconds) |
2022-02-16 00:22:10 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-16 00:22:18 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-16 00:22:27 +0100 | img | (~img@user/img) |
2022-02-16 00:22:33 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-16 00:22:36 +0100 | Pickchea | (~private@user/pickchea) (Ping timeout: 240 seconds) |
2022-02-16 00:22:40 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-16 00:23:44 +0100 | Shiranai | (~Shiranai@190.237.13.59) |
2022-02-16 00:23:47 +0100 | FernandoChu[m] | (~ryunaqmat@2001:470:69fc:105::1:4dc0) |
2022-02-16 00:23:47 +0100 | acidjnk | (~acidjnk@p200300d0c7057500a04355ceabfe8d47.dip0.t-ipconnect.de) |
2022-02-16 00:23:47 +0100 | whatsupdoc | (uid509081@id-509081.hampstead.irccloud.com) |
2022-02-16 00:23:47 +0100 | fluxit | (~fluxit@techsmix.net) |
2022-02-16 00:23:47 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2022-02-16 00:23:47 +0100 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) |
2022-02-16 00:23:47 +0100 | econo | (uid147250@user/econo) |
2022-02-16 00:23:47 +0100 | polyphem | (~rod@2a02:810d:840:8754:448e:47ff:4575:7cfb) |
2022-02-16 00:23:47 +0100 | megeve | (sid523379@id-523379.hampstead.irccloud.com) |
2022-02-16 00:23:47 +0100 | foul_owl | (~kerry@207.244.125.36) |
2022-02-16 00:23:47 +0100 | myme | (~myme@2a01:799:d5a:cd00:9ae3:d451:a989:e1e9) |
2022-02-16 00:23:47 +0100 | kanin | (~kanin@112.41.64.39) |
2022-02-16 00:23:47 +0100 | edwtjo | (~edwtjo@user/edwtjo) |
2022-02-16 00:23:47 +0100 | bjs | (sid190364@user/bjs) |
2022-02-16 00:23:47 +0100 | hongminhee | (sid295@2a03:5180:f::127) |
2022-02-16 00:23:47 +0100 | cbarrett | (sid192934@2a03:5180:f:1::2:f1a6) |
2022-02-16 00:23:47 +0100 | Boarders_ | (sid425905@id-425905.lymington.irccloud.com) |
2022-02-16 00:23:47 +0100 | ellie | (~ellie@user/ellie) |
2022-02-16 00:23:47 +0100 | Putonlalla | (~sapekiis@it-cyan.it.jyu.fi) |
2022-02-16 00:23:47 +0100 | fryguybob | (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) |
2022-02-16 00:23:47 +0100 | drewr | (~drew@user/drewr) |
2022-02-16 00:23:47 +0100 | Hafydd | (~Hafydd@user/hafydd) |
2022-02-16 00:23:47 +0100 | tv | (~tv@user/tv) |
2022-02-16 00:23:47 +0100 | elkcl | (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) |
2022-02-16 00:23:47 +0100 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) |
2022-02-16 00:23:47 +0100 | Flow | (~none@gentoo/developer/flow) |
2022-02-16 00:23:47 +0100 | echoreply | (~echoreply@2001:19f0:9002:1f3b:5400:ff:fe6f:8b8d) |
2022-02-16 00:23:47 +0100 | oats | (~thomas@user/oats) |
2022-02-16 00:23:47 +0100 | mixfix41 | (~sdenyninn@user/mixfix41) |
2022-02-16 00:23:47 +0100 | NiKaN | (sid385034@id-385034.helmsley.irccloud.com) |
2022-02-16 00:23:47 +0100 | tinwood | (~tinwood@canonical/tinwood) |
2022-02-16 00:23:47 +0100 | Pent | (sid313808@lymington.irccloud.com) |
2022-02-16 00:23:47 +0100 | finsternis | (~X@23.226.237.192) |
2022-02-16 00:23:47 +0100 | dexterfoo | (~dexter@li655-253.members.linode.com) |
2022-02-16 00:23:47 +0100 | lambdabot | (~lambdabot@haskell/bot/lambdabot) |
2022-02-16 00:23:47 +0100 | heath | (~heath@user/heath) |
2022-02-16 00:23:47 +0100 | lambdap | (~lambdap@static.167.190.119.168.clients.your-server.de) |
2022-02-16 00:23:47 +0100 | noctuks | (7vrDyCK6LH@user/noctux) |
2022-02-16 00:23:47 +0100 | notabled1 | (~notabledu@ares.dbalan.in) |
2022-02-16 00:23:47 +0100 | cjay | (cjay@nerdbox.nerd2nerd.org) |
2022-02-16 00:23:47 +0100 | sshine | (~simon@hubris.eta.solutions) |
2022-02-16 00:23:47 +0100 | blades | (~blades@204.48.29.163) |
2022-02-16 00:23:47 +0100 | kosmikus | (~kosmikus@nullzig.kosmikus.org) |
2022-02-16 00:23:47 +0100 | Trattue | (~Trattue@152.70.182.158) |
2022-02-16 00:23:47 +0100 | mixfix41 | (~sdenyninn@user/mixfix41) (Max SendQ exceeded) |
2022-02-16 00:23:47 +0100 | finsternis | (~X@23.226.237.192) (Max SendQ exceeded) |
2022-02-16 00:24:21 +0100 | finsternis | (~X@23.226.237.192) |
2022-02-16 00:25:24 +0100 | <FernandoChu[m]> | <zwro[m]> "test" <- hello x2 |
2022-02-16 00:26:57 +0100 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) (Ping timeout: 250 seconds) |
2022-02-16 00:27:23 +0100 | NiKaN | (sid385034@id-385034.helmsley.irccloud.com) (Ping timeout: 250 seconds) |
2022-02-16 00:27:27 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 272 seconds) |
2022-02-16 00:27:50 +0100 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) |
2022-02-16 00:28:37 +0100 | burnsidesLlama | (~burnsides@dhcp168-031.wadham.ox.ac.uk) |
2022-02-16 00:29:31 +0100 | NiKaN | (sid385034@id-385034.helmsley.irccloud.com) |
2022-02-16 00:31:04 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-02-16 00:33:00 +0100 | burnsidesLlama | (~burnsides@dhcp168-031.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
2022-02-16 00:38:55 +0100 | chenqisu12 | (~chenqisu1@183.217.200.249) (Read error: Connection reset by peer) |
2022-02-16 00:39:34 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Remote host closed the connection) |
2022-02-16 00:39:49 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) |
2022-02-16 00:40:26 +0100 | zeenk | (~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5) (Quit: Konversation terminated!) |
2022-02-16 00:44:08 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-98.elisa-laajakaista.fi) (Quit: Leaving.) |
2022-02-16 00:44:54 +0100 | burnsidesLlama | (~burnsides@dhcp168-031.wadham.ox.ac.uk) |
2022-02-16 00:45:00 +0100 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 240 seconds) |
2022-02-16 00:46:12 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 252 seconds) |
2022-02-16 00:47:00 +0100 | <dibblego> | koala_man: catMaybes = mapMaybe id |
2022-02-16 00:47:10 +0100 | <dibblego> | oh wait no Map, nothing nothing |
2022-02-16 00:47:16 +0100 | <koala_man> | dibblego!! |
2022-02-16 00:47:25 +0100 | <dibblego> | koala_man!! I'm about to head out |
2022-02-16 00:48:05 +0100 | <koala_man> | dibblego: I have some knot tying I can't finish that you may have some thoughts on later |
2022-02-16 00:48:08 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-02-16 00:48:12 +0100 | <dibblego> | ok, about an hour |
2022-02-16 00:48:16 +0100 | <koala_man> | \o/ |
2022-02-16 00:52:09 +0100 | cynomys | (~cynomys@user/cynomys) (Ping timeout: 272 seconds) |
2022-02-16 00:58:12 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-02-16 00:58:54 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2022-02-16 01:01:07 +0100 | meinside | (uid24933@id-24933.helmsley.irccloud.com) |
2022-02-16 01:10:27 +0100 | wombat875 | (~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) |
2022-02-16 01:11:13 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Remote host closed the connection) |
2022-02-16 01:12:26 +0100 | lbseale_ | (~ep1ctetus@user/ep1ctetus) |
2022-02-16 01:12:55 +0100 | ft | (~ft@shell.chaostreff-dortmund.de) (Ping timeout: 256 seconds) |
2022-02-16 01:15:25 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) |
2022-02-16 01:15:29 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 250 seconds) |
2022-02-16 01:15:30 +0100 | max22- | (~maxime@2a01cb0883359800f7b27aee14b4b0ce.ipv6.abo.wanadoo.fr) (Remote host closed the connection) |
2022-02-16 01:15:37 +0100 | <EvanR> | is there a name or blog post for this concept: an abstract data type which supports querying/summarizing/reading but also editing. And internally it has two interchangable forms which are more efficient for repeated reading or repeated editing respectively |
2022-02-16 01:15:47 +0100 | cynomys | (~cynomys@user/cynomys) |
2022-02-16 01:16:13 +0100 | lbseale | (~ep1ctetus@user/ep1ctetus) (Ping timeout: 272 seconds) |
2022-02-16 01:17:29 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-02-16 01:17:34 +0100 | <EvanR> | and maybe policies for when to make the transformation one way or another |
2022-02-16 01:17:35 +0100 | alp | (~alp@user/alp) |
2022-02-16 01:19:47 +0100 | kmein | (~weechat@user/kmein) (Quit: ciao kakao) |
2022-02-16 01:20:25 +0100 | shapr | (~user@pool-173-73-44-186.washdc.fios.verizon.net) (Remote host closed the connection) |
2022-02-16 01:20:38 +0100 | shapr | (~user@pool-173-73-44-186.washdc.fios.verizon.net) |
2022-02-16 01:21:33 +0100 | acidjnk | (~acidjnk@p200300d0c7057500a04355ceabfe8d47.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
2022-02-16 01:21:52 +0100 | kmein | (~weechat@user/kmein) |
2022-02-16 01:27:25 +0100 | Null_A | (~null_a@c-98-210-133-39.hsd1.ca.comcast.net) |
2022-02-16 01:28:00 +0100 | xff0x | (~xff0x@2001:1a81:53dd:d400:b969:14d4:3062:a4) (Ping timeout: 252 seconds) |
2022-02-16 01:28:59 +0100 | xff0x | (~xff0x@2001:1a81:53dd:d400:cfc4:5e91:8963:f0f2) |
2022-02-16 01:31:19 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2022-02-16 01:32:24 +0100 | Null_A | (~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Ping timeout: 252 seconds) |
2022-02-16 01:33:11 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2022-02-16 01:35:13 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2022-02-16 01:35:20 +0100 | <Inst[m]> | monochrom: is the Church-Turing hypothesis proven? |
2022-02-16 01:35:45 +0100 | <Inst[m]> | in which case, ProfSimms is just reiterating something rather trivial |
2022-02-16 01:36:06 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2022-02-16 01:40:28 +0100 | <monochrom> | EvanR: Does a relational database count? It may be a little bit weak on having two forms, but declaring primary keys and/or secondary keys and/or foreign keys may count as that, because the b-tree structure is built based on which fields you declare as keys. |
2022-02-16 01:40:57 +0100 | <EvanR> | yeah a database is great example of 1 form at a tmie |
2022-02-16 01:41:27 +0100 | cynomys | (~cynomys@user/cynomys) (Quit: Lost terminal) |
2022-02-16 01:41:48 +0100 | <EvanR> | do you want to read a lot or query a lot, both. (Ok, they have some configuration options to make one or the other faster, but you set this option once to inform the form) |
2022-02-16 01:42:14 +0100 | <monochrom> | On the other extreme, perfect hashing is a hash table so optimized for lookups that it bans editing altogether. |
2022-02-16 01:43:09 +0100 | <EvanR> | s/read/edit/ |
2022-02-16 01:44:20 +0100 | <monochrom> | I do not know of things that let you flip a switch and causes "OK now rebuild for optimal read-only". |
2022-02-16 01:44:47 +0100 | <EvanR> | it doesn't need to be the size of a database |
2022-02-16 01:45:41 +0100 | <EvanR> | ok maybe this is a subproblem of just have forms that make some queries cheaper to do than others, since in pure functional an edit is like a kind of read |
2022-02-16 01:45:59 +0100 | <EvanR> | which has as an example the complex number in rectangular form or polar form |
2022-02-16 01:47:09 +0100 | <EvanR> | you could use rectangular form everywhere like we do, and "just" convert to polar any time the radius or angle is requested |
2022-02-16 01:47:38 +0100 | <monochrom> | Even within read-only, optimal-for-lookup and optimal-for-folds may already be in conflict. |
2022-02-16 01:47:59 +0100 | <EvanR> | that's basically what I just said |
2022-02-16 01:48:04 +0100 | <monochrom> | Ah OK. |
2022-02-16 01:48:15 +0100 | <EvanR> | lookup and fold being two examples of queries |
2022-02-16 01:48:23 +0100 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
2022-02-16 01:48:40 +0100 | <EvanR> | and substitution, getting an updated picture, a third example |
2022-02-16 01:49:14 +0100 | <EvanR> | the standard method is to use something that's generally ok at everything |
2022-02-16 01:49:59 +0100 | <monochrom> | Yeah it's hard to predict what your users want to do in the far future. :) |
2022-02-16 01:50:31 +0100 | <EvanR> | what if instead of a history of the future, you had a (possibly evolving) probability model for what they will want next |
2022-02-16 01:51:18 +0100 | <EvanR> | and when |
2022-02-16 01:51:58 +0100 | <EvanR> | I guess then it's a combination of too complicated and not worth it |
2022-02-16 01:52:01 +0100 | <monochrom> | OK you can have that model based on the past. A keyword may be "adaptive data structures". |
2022-02-16 01:53:03 +0100 | <EvanR> | i can imagine a smart engineer saying, no, why don't we just use actual knowledge of what we will actually do instead |
2022-02-16 01:53:34 +0100 | <monochrom> | Don't worry about worth. There are always crazy computer scientists who think up crazy solutions. :) |
2022-02-16 01:54:43 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:c5cf:b717:584d:5dd3) (Remote host closed the connection) |
2022-02-16 01:55:50 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-02-16 01:55:50 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-02-16 01:55:50 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-02-16 02:00:04 +0100 | lbseale_ | (~ep1ctetus@user/ep1ctetus) (Quit: Leaving) |
2022-02-16 02:00:36 +0100 | jgeerds_ | (~jgeerds@55d4b9df.access.ecotel.net) (Read error: Connection reset by peer) |
2022-02-16 02:00:59 +0100 | jgeerds_ | (~jgeerds@55d4b9df.access.ecotel.net) |
2022-02-16 02:01:08 +0100 | ft | (~ft@shell.chaostreff-dortmund.de) |
2022-02-16 02:02:11 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) |
2022-02-16 02:04:13 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4) |
2022-02-16 02:04:14 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:edbf:f48a:9927:9718) |
2022-02-16 02:05:07 +0100 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) |
2022-02-16 02:06:23 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:edbf:f48a:9927:9718) (Client Quit) |
2022-02-16 02:06:36 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 240 seconds) |
2022-02-16 02:10:30 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2022-02-16 02:13:06 +0100 | jgeerds_ | (~jgeerds@55d4b9df.access.ecotel.net) (Ping timeout: 252 seconds) |
2022-02-16 02:16:37 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2022-02-16 02:20:05 +0100 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-02-16 02:31:27 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 256 seconds) |
2022-02-16 02:32:34 +0100 | img | (~img@user/img) |
2022-02-16 02:33:01 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2022-02-16 02:35:02 +0100 | chenqisu1 | (~chenqisu1@183.217.200.249) |
2022-02-16 02:36:13 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) |
2022-02-16 02:37:24 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-16 02:38:17 +0100 | Cajun | (~Cajun@user/cajun) |
2022-02-16 02:38:57 +0100 | <Inst[m]> | fuck, what's the hanzi for Lai |
2022-02-16 02:38:58 +0100 | <Inst[m]> | monochrom |
2022-02-16 02:39:15 +0100 | <Inst[m]> | should be addressing you as Lai 老师 |
2022-02-16 02:40:36 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 240 seconds) |
2022-02-16 02:42:21 +0100 | <Inst[m]> | 巴黎的黎 |
2022-02-16 02:42:28 +0100 | <Inst[m]> | 黎老师 |
2022-02-16 02:42:46 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4) |
2022-02-16 02:43:16 +0100 | <Inst[m]> | was wondering, right now, my working definition of Haskell is "clusterfuck", i.e, it's ostensibly a "pure, functional programming language" where the language extensions and lib mean it technically has everything. Except Or-Patterns. |
2022-02-16 02:43:49 +0100 | <Inst[m]> | i'm sure someone implemented objects via STRef / IORef somewhere in Hackage |
2022-02-16 02:46:05 +0100 | <Inst[m]> | and yeah, OHaskell is a thing, so's Timber |
2022-02-16 02:46:33 +0100 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) (Remote host closed the connection) |
2022-02-16 02:50:04 +0100 | Merfont | (~Kaiepi@156.34.47.253) |
2022-02-16 02:50:10 +0100 | Kaipi | (~Kaiepi@156.34.47.253) (Remote host closed the connection) |
2022-02-16 02:54:31 +0100 | dsrt^ | (~dsrt@50.235.176.163) |
2022-02-16 02:55:00 +0100 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 240 seconds) |
2022-02-16 03:00:12 +0100 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) |
2022-02-16 03:00:16 +0100 | vysn | (~vysn@user/vysn) |
2022-02-16 03:04:48 +0100 | alp | (~alp@user/alp) (Ping timeout: 252 seconds) |
2022-02-16 03:08:38 +0100 | <Axman6> | :t M.fromList . mapMaybe traverse |
2022-02-16 03:08:39 +0100 | <lambdabot> | error: |
2022-02-16 03:08:39 +0100 | <lambdabot> | • Couldn't match type ‘t0 a -> f (t0 b)’ with ‘Maybe (k, a1)’ |
2022-02-16 03:08:39 +0100 | <lambdabot> | Expected type: (a -> f b) -> Maybe (k, a1) |
2022-02-16 03:08:50 +0100 | <Axman6> | :t M.fromList . mapMaybe sequence |
2022-02-16 03:08:51 +0100 | <lambdabot> | Ord k => [(k, Maybe a)] -> M.Map k a |
2022-02-16 03:09:07 +0100 | <Axman6> | :t M.fromList . mapMaybe sequence . M.toList |
2022-02-16 03:09:07 +0100 | <lambdabot> | Ord k => M.Map k (Maybe a) -> M.Map k a |
2022-02-16 03:09:08 +0100 | jinsun__ | (~jinsun@user/jinsun) |
2022-02-16 03:09:36 +0100 | <Axman6> | :t M.fromAscList . mapMaybe sequence . M.toList -- koala_man (sorry, it's been churning away in the back of my mind) |
2022-02-16 03:09:37 +0100 | <lambdabot> | Eq k => M.Map k (Maybe a) -> M.Map k a |
2022-02-16 03:09:57 +0100 | emf | (~emf@2620:10d:c090:400::5:d01b) (Ping timeout: 240 seconds) |
2022-02-16 03:11:45 +0100 | <Axman6> | :t M.traverseMaybeWithKey (\_k v -> Identity v) |
2022-02-16 03:11:46 +0100 | <lambdabot> | M.Map k (Maybe b) -> Identity (M.Map k b) |
2022-02-16 03:11:57 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 252 seconds) |
2022-02-16 03:11:57 +0100 | jinsun | (~jinsun@user/jinsun) (Ping timeout: 252 seconds) |
2022-02-16 03:12:20 +0100 | <Axman6> | that might be better, since it can reuse the structure of the tree |
2022-02-16 03:13:08 +0100 | <Axman6> | > M.traverseMaybeWithKey (\_k v -> [Just v, Nothing]) (M.fromList $ zip [1,2,3] "abc") |
2022-02-16 03:13:09 +0100 | <lambdabot> | [fromList [(1,'a'),(2,'b'),(3,'c')],fromList [(1,'a'),(2,'b')],fromList [(1,... |
2022-02-16 03:13:56 +0100 | <Axman6> | oh, there's also just mapMaybe id |
2022-02-16 03:14:28 +0100 | <Axman6> | :t M.mapMaybe id -- which.. is what dibblego already said and then retracted |
2022-02-16 03:14:29 +0100 | <lambdabot> | M.Map k (Maybe b) -> M.Map k b |
2022-02-16 03:14:47 +0100 | x_kuru | (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
2022-02-16 03:16:19 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-02-16 03:19:06 +0100 | <jackdk> | Axman6/koala_man : https://hackage.haskell.org/package/witherable-0.4.2/docs/Witherable.html#t:Filterable |
2022-02-16 03:20:17 +0100 | xff0x | (~xff0x@2001:1a81:53dd:d400:cfc4:5e91:8963:f0f2) (Ping timeout: 250 seconds) |
2022-02-16 03:21:11 +0100 | xff0x | (~xff0x@2001:1a81:53dd:d400:1a83:e659:64aa:a931) |
2022-02-16 03:22:18 +0100 | alp | (~alp@user/alp) |
2022-02-16 03:23:15 +0100 | <shapr> | Is there a table for postgresql-simple that has "suggested postgresql column type for defined ToField instances" ? |
2022-02-16 03:29:33 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 252 seconds) |
2022-02-16 03:33:58 +0100 | gaff | (~gaff@49.207.202.143) |
2022-02-16 03:45:56 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds) |
2022-02-16 03:50:54 +0100 | a6a45081-2b83 | (~aditya@2601:249:4380:4f10::fe26) |
2022-02-16 03:51:06 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:edbf:f48a:9927:9718) |
2022-02-16 03:54:31 +0100 | xff0x | (~xff0x@2001:1a81:53dd:d400:1a83:e659:64aa:a931) (Ping timeout: 250 seconds) |
2022-02-16 03:55:00 +0100 | a6a45081-2b83 | (~aditya@2601:249:4380:4f10::fe26) (Ping timeout: 240 seconds) |
2022-02-16 03:55:02 +0100 | f33f046c-a02e | (~aditya@2601:249:4300:1296:88ec:cc73:84d4:1507) |
2022-02-16 03:56:23 +0100 | xff0x | (~xff0x@2001:1a81:5217:d600:a1de:a304:ac28:4386) |
2022-02-16 03:57:19 +0100 | zaquest | (~notzaques@5.130.79.72) (Remote host closed the connection) |
2022-02-16 03:57:56 +0100 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 240 seconds) |
2022-02-16 03:58:42 +0100 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) |
2022-02-16 04:11:00 +0100 | gaff | (~gaff@49.207.202.143) (Ping timeout: 272 seconds) |
2022-02-16 04:11:08 +0100 | c209e6dc-4d76-47 | (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) |
2022-02-16 04:14:13 +0100 | c209e6dc-4d76-47 | (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) (Client Quit) |
2022-02-16 04:14:32 +0100 | c209e6dc-4d76-47 | (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) |
2022-02-16 04:14:35 +0100 | c209e6dc-4d76-47 | (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) (Client Quit) |
2022-02-16 04:14:54 +0100 | c209e6dc-4d76-47 | (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) |
2022-02-16 04:15:05 +0100 | zaquest | (~notzaques@5.130.79.72) |
2022-02-16 04:16:16 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-02-16 04:17:05 +0100 | f33f046c-a02e | (~aditya@2601:249:4300:1296:88ec:cc73:84d4:1507) (Remote host closed the connection) |
2022-02-16 04:17:24 +0100 | alp | (~alp@user/alp) (Ping timeout: 252 seconds) |
2022-02-16 04:23:29 +0100 | gaff | (~gaff@49.207.202.143) |
2022-02-16 04:27:51 +0100 | emf | (~emf@2620:10d:c090:400::5:6a6c) |
2022-02-16 04:29:30 +0100 | td_ | (~td@94.134.91.25) (Ping timeout: 252 seconds) |
2022-02-16 04:31:33 +0100 | td_ | (~td@muedsl-82-207-238-242.citykom.de) |
2022-02-16 04:44:55 +0100 | Unicorn_Princess | (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection) |
2022-02-16 04:45:22 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-16 04:46:25 +0100 | c209e6dc-4d76-47 | (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) (Quit: Konversation terminated!) |
2022-02-16 04:47:15 +0100 | emf | (~emf@2620:10d:c090:400::5:6a6c) (Quit: emf) |
2022-02-16 04:48:36 +0100 | gaff | (~gaff@49.207.202.143) (Ping timeout: 240 seconds) |
2022-02-16 04:52:18 +0100 | c209e6dc-4d76-47 | (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) |
2022-02-16 04:54:21 +0100 | mzan | (~quassel@mail.asterisell.com) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2022-02-16 04:56:01 +0100 | deadmarshal | (~deadmarsh@95.38.0.168) |
2022-02-16 05:00:51 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
2022-02-16 05:02:31 +0100 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
2022-02-16 05:02:31 +0100 | azimut_ | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2022-02-16 05:02:46 +0100 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) |
2022-02-16 05:02:50 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-02-16 05:06:58 +0100 | c209e6dc-4d76-47 | (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) (Quit: Konversation terminated!) |
2022-02-16 05:09:55 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 272 seconds) |
2022-02-16 05:10:38 +0100 | c209e6dc-4d76-47 | (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) |
2022-02-16 05:12:12 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-02-16 05:15:53 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-16 05:16:15 +0100 | ralu | (~ralu@static.211.245.203.116.clients.your-server.de) (Ping timeout: 272 seconds) |
2022-02-16 05:16:47 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-02-16 05:20:40 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 272 seconds) |
2022-02-16 05:24:42 +0100 | c209e6dc-4d76-47 | (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) (Remote host closed the connection) |
2022-02-16 05:29:19 +0100 | mbuf | (~Shakthi@122.162.72.100) |
2022-02-16 05:30:12 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-02-16 05:33:19 +0100 | deadmarshal_ | (~deadmarsh@95.38.231.90) |
2022-02-16 05:33:48 +0100 | deadmarshal | (~deadmarsh@95.38.0.168) (Ping timeout: 240 seconds) |
2022-02-16 05:36:13 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-02-16 05:36:13 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-02-16 05:36:13 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-02-16 05:36:26 +0100 | texasmynsted | (~texasmyns@99.96.221.112) |
2022-02-16 05:37:48 +0100 | cyphase | (~cyphase@user/cyphase) (Ping timeout: 240 seconds) |
2022-02-16 05:39:48 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds) |
2022-02-16 05:40:36 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-02-16 05:42:14 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-02-16 05:43:06 +0100 | cyphase_eviltwin | (~cyphase@user/cyphase) |
2022-02-16 05:44:09 +0100 | burnside_ | (~burnsides@client-8-91.eduroam.oxuni.org.uk) |
2022-02-16 05:44:10 +0100 | burnsidesLlama | (~burnsides@dhcp168-031.wadham.ox.ac.uk) (Remote host closed the connection) |
2022-02-16 05:45:00 +0100 | waleee | (~waleee@h-98-128-229-110.NA.cust.bahnhof.se) (Ping timeout: 240 seconds) |
2022-02-16 05:47:39 +0100 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2022-02-16 05:47:48 +0100 | notzmv | (~zmv@user/notzmv) |
2022-02-16 05:48:12 +0100 | burnside_ | (~burnsides@client-8-91.eduroam.oxuni.org.uk) (Ping timeout: 240 seconds) |
2022-02-16 05:48:33 +0100 | deadmarshal_ | (~deadmarsh@95.38.231.90) (Ping timeout: 272 seconds) |
2022-02-16 05:50:10 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-16 05:50:17 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-16 05:51:17 +0100 | capo_greco | (~textual@60-241-161-167.static.tpgi.com.au) |
2022-02-16 05:59:09 +0100 | yauhsien_ | (~yauhsien@61-231-32-166.dynamic-ip.hinet.net) |
2022-02-16 05:59:10 +0100 | yauhsien_ | (~yauhsien@61-231-32-166.dynamic-ip.hinet.net) (Read error: Connection reset by peer) |
2022-02-16 06:00:02 +0100 | yauhsien_ | (~yauhsien@61-231-32-166.dynamic-ip.hinet.net) |
2022-02-16 06:00:10 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) |
2022-02-16 06:02:27 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-02-16 06:04:36 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 240 seconds) |
2022-02-16 06:04:39 +0100 | yauhsien_ | (~yauhsien@61-231-32-166.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
2022-02-16 06:07:15 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2022-02-16 06:08:09 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-02-16 06:09:00 +0100 | mvk | (~mvk@2607:fea8:5cdc:bf00::99e7) (Ping timeout: 240 seconds) |
2022-02-16 06:09:05 +0100 | modnar | (~modnar@shell.sonic.net) (Quit: No Ping reply in 180 seconds.) |
2022-02-16 06:10:18 +0100 | modnar | (~modnar@shell.sonic.net) |
2022-02-16 06:13:01 +0100 | yauhsien | (~Yau-Hsien@61-231-32-166.dynamic-ip.hinet.net) (Quit: Leaving) |
2022-02-16 06:13:41 +0100 | gaff | (~gaff@49.207.201.232) |
2022-02-16 06:22:15 +0100 | capo_greco | (~textual@60-241-161-167.static.tpgi.com.au) (Ping timeout: 252 seconds) |
2022-02-16 06:32:32 +0100 | deadmarshal | (~deadmarsh@95.38.231.90) |
2022-02-16 06:42:12 +0100 | yauhsien | (~yauhsien@61-231-32-166.dynamic-ip.hinet.net) |
2022-02-16 06:44:19 +0100 | yuvi | (~uv125@192.54.96.185) |
2022-02-16 06:47:26 +0100 | yauhsien | (~yauhsien@61-231-32-166.dynamic-ip.hinet.net) (Ping timeout: 272 seconds) |
2022-02-16 06:48:34 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-16 06:51:28 +0100 | gaff | (~gaff@49.207.201.232) (Quit: Bye ...) |
2022-02-16 06:52:36 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
2022-02-16 06:58:49 +0100 | yuvi | (~uv125@192.54.96.185) (Quit: WeeChat 2.8) |
2022-02-16 07:00:37 +0100 | ralu | (~ralu@static.211.245.203.116.clients.your-server.de) |
2022-02-16 07:05:25 +0100 | _ht | (~quassel@231-169-21-31.ftth.glasoperator.nl) |
2022-02-16 07:06:34 +0100 | bliminse | (~bliminse@host86-158-241-239.range86-158.btcentralplus.com) (Quit: leaving) |
2022-02-16 07:08:28 +0100 | Sgeo_ | (~Sgeo@user/sgeo) |
2022-02-16 07:09:36 +0100 | pavonia | (~user@user/siracusa) (Read error: Connection reset by peer) |
2022-02-16 07:09:48 +0100 | forell | (~forell@user/forell) (Ping timeout: 240 seconds) |
2022-02-16 07:09:52 +0100 | pavonia | (~user@user/siracusa) |
2022-02-16 07:09:58 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-02-16 07:10:05 +0100 | forell | (~forell@user/forell) |
2022-02-16 07:14:06 +0100 | <ProfSimm> | Why do we need map and filter when we have fold |
2022-02-16 07:14:27 +0100 | <Inst[m]> | more specific |
2022-02-16 07:14:35 +0100 | <Inst[m]> | haskell has the particular quality wherein there's like 20 different ways to do things |
2022-02-16 07:14:43 +0100 | foul_owl | (~kerry@207.244.125.36) (Ping timeout: 250 seconds) |
2022-02-16 07:14:45 +0100 | <Inst[m]> | map, sometimes you want to preserve a structure |
2022-02-16 07:14:48 +0100 | <Inst[m]> | map is just a specific form of fmap |
2022-02-16 07:15:10 +0100 | <Inst[m]> | also, fold can generate performance issues |
2022-02-16 07:15:24 +0100 | <Inst[m]> | also |
2022-02-16 07:15:38 +0100 | <Inst[m]> | the point of map / filter is to make it so that readers can understand your code, i.e, see what you're aiming to do |
2022-02-16 07:15:53 +0100 | <Inst[m]> | fold, you often end up with weird lambdas the reader doesn't understand |
2022-02-16 07:16:11 +0100 | <Inst[m]> | hence why there's like 20 different ways to do things, choose the best combination of readability, concision, and performance |
2022-02-16 07:16:35 +0100 | <ProfSimm> | all you say makes sense. |
2022-02-16 07:16:40 +0100 | <ProfSimm> | Which is why I don't accept it. |
2022-02-16 07:16:46 +0100 | <ProfSimm> | Gotta dig deeper :D |
2022-02-16 07:16:50 +0100 | <Inst[m]> | ProfSimm: I met you on ##programing |
2022-02-16 07:16:55 +0100 | <Inst[m]> | just now joining the Haskell club? |
2022-02-16 07:17:03 +0100 | <Inst[m]> | also, in general |
2022-02-16 07:17:06 +0100 | <Inst[m]> | Haskellers are fucking insane |
2022-02-16 07:17:23 +0100 | <Inst[m]> | there's like 5 different ways to do a conditional in Haskell |
2022-02-16 07:17:27 +0100 | <ProfSimm> | Inst[m]: let's say the more I think about programming from first principles, the more things start looking like Haskell and I'm being in a bit of denial right now |
2022-02-16 07:17:28 +0100 | <Inst[m]> | within the prelude |
2022-02-16 07:17:42 +0100 | <Inst[m]> | once you add libraries and language extensions |
2022-02-16 07:17:46 +0100 | <Inst[m]> | there's probably like 10 different ways to do a conditional |
2022-02-16 07:18:02 +0100 | <Inst[m]> | Haskell does not provide a unified style |
2022-02-16 07:18:33 +0100 | <Inst[m]> | IMO it's an exceptionally good language for a beginner to struggle with the theory underlying programming languages because there's so many fucking different ways to do things and you have to think about how each way is "valid" or useful |
2022-02-16 07:18:59 +0100 | <Inst[m]> | which is why i like it, but my ABC girlfriend needs me to help her with her Chinese, so I have to put Haskell aside for a bit |
2022-02-16 07:19:13 +0100 | <ProfSimm> | Inst[m]: that thing that keeps me up at night is what's the most miminal core through which everything else can be represented as libraries |
2022-02-16 07:19:27 +0100 | <ProfSimm> | Inst[m]: the problem with fold is that it's not paralellizable for ex. |
2022-02-16 07:19:38 +0100 | <Inst[m]> | try {-# LANGUAGE NoImplicitPrelude #-} |
2022-02-16 07:19:42 +0100 | <ProfSimm> | So while you can implement map via it, it sucks |
2022-02-16 07:20:32 +0100 | <Inst[m]> | 黎老师,她是我的林黛玉。 |
2022-02-16 07:21:35 +0100 | <Inst[m]> | ProfSimm: what's your background? |
2022-02-16 07:21:35 +0100 | <Inst[m]> | You seem to be an experienced programmer, possibly teaching comp sci at uni. |
2022-02-16 07:21:38 +0100 | <Inst[m]> | I'm a Haskell-as-First-Language twit |
2022-02-16 07:22:03 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2022-02-16 07:22:18 +0100 | <ario> | you learned haskell as your first language? |
2022-02-16 07:22:24 +0100 | <ario> | that's hardcore! |
2022-02-16 07:22:50 +0100 | <dsal> | It's probably easier to learn haskell as a first language than a third language. |
2022-02-16 07:22:55 +0100 | <ario> | hah |
2022-02-16 07:23:07 +0100 | <ario> | paradigm shift, i get that |
2022-02-16 07:23:15 +0100 | <ario> | i had such a hard time with prolog |
2022-02-16 07:23:32 +0100 | <dsal> | I've never built anything slightly useful in prolog. |
2022-02-16 07:23:48 +0100 | <dsal> | ProfSimm: Are you sure you can't parallelize a fold? |
2022-02-16 07:24:12 +0100 | <ario> | i built an interpreter |
2022-02-16 07:24:27 +0100 | <ario> | this was for some theoretical college course |
2022-02-16 07:24:59 +0100 | <ario> | took me two weeks of bashing my head against it lol |
2022-02-16 07:25:39 +0100 | <Yehoshua> | dsal: Since in a fold, each step uses the output from the previous step, that makes sense. |
2022-02-16 07:26:04 +0100 | <dsal> | :t fold |
2022-02-16 07:26:05 +0100 | <lambdabot> | (Foldable t, Monoid m) => t m -> m |
2022-02-16 07:26:28 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
2022-02-16 07:26:29 +0100 | <Yehoshua> | :t foldl |
2022-02-16 07:26:30 +0100 | <lambdabot> | Foldable t => (b -> a -> b) -> b -> t a -> b |
2022-02-16 07:27:41 +0100 | <dibblego> | folds can be parallelised |
2022-02-16 07:28:30 +0100 | slowButPresent | (~slowButPr@user/slowbutpresent) (Quit: leaving) |
2022-02-16 07:28:39 +0100 | <Yehoshua> | For only monoid, it seems some |
2022-02-16 07:28:42 +0100 | <Yehoshua> | s/some/so./ |
2022-02-16 07:29:05 +0100 | <Yehoshua> | (since a(bc) = (ab)c) |
2022-02-16 07:30:17 +0100 | <Yehoshua> | However, a foldl/foldr can use the accumulator in such a way as to disallow that. |
2022-02-16 07:30:50 +0100 | <Inst[m]> | <ario> "you learned haskell as your..." <- working on it |
2022-02-16 07:30:54 +0100 | <Inst[m]> | need to finish a few textbooks first |
2022-02-16 07:31:10 +0100 | <Inst[m]> | I think Haskell is an excellent first language and should be taught as such |
2022-02-16 07:31:25 +0100 | <ProfSimm> | Inst[m]: I've been programming since i was a kid, but I'm teaching nobody at uni. Honestly my work is mostly traditional OOP and data processing pipelines. |
2022-02-16 07:31:44 +0100 | <dsal> | To ProfSimm's question, there are different things you'd do with data structures. Sometimes you want a structure-preserving transformation of values within it, so fmap is right. Sometimes you want a catamorphism (or to reuse various Foldable functions like `sum` and `length`). Sometimes you want an effectful transformation like traverse. When you think about what you want done vs. how it's done, it gets easier. |
2022-02-16 07:31:45 +0100 | <Inst[m]> | oh, research professor |
2022-02-16 07:31:48 +0100 | <Inst[m]> | congrats :) |
2022-02-16 07:32:01 +0100 | <dsal> | For a good read: https://maartenfokkinga.github.io/utwente/mmf91m.pdf |
2022-02-16 07:32:33 +0100 | <Inst[m]> | profSimm: TBH, we're focusing on the same goal |
2022-02-16 07:32:39 +0100 | <Inst[m]> | I'd like to know what a minimal Haskell teaching course looks like |
2022-02-16 07:32:54 +0100 | <Inst[m]> | someone mentioned before that Haskell Report core is actually shorter than Python specification |
2022-02-16 07:33:10 +0100 | <Inst[m]> | and scanr is often not mentioned, no one knew what until was, etc |
2022-02-16 07:33:17 +0100 | <Inst[m]> | i'd like to know what the hell a combinator is |
2022-02-16 07:33:52 +0100 | <dsal> | Do you want a minimal Haskell teaching course (of which there are many) or a course that covers every function that anyone's written? |
2022-02-16 07:35:24 +0100 | turlando | (~turlando@user/turlando) (Ping timeout: 252 seconds) |
2022-02-16 07:36:57 +0100 | <Inst[m]> | what's a minimal haskell teaching course, then? |
2022-02-16 07:37:59 +0100 | <dsal> | Any one of the introductory courses is fairly minimal. |
2022-02-16 07:39:49 +0100 | <dsal> | You might be assuming that your ideal minimal set is an accepted definition of minimal. If it includes `scanr` it is definitely not minimal by any definition. You could build scanr when you need it if you didn't know it existed from the base language. |
2022-02-16 07:40:02 +0100 | <dsal> | @src scanr |
2022-02-16 07:40:02 +0100 | <lambdabot> | scanr _ q0 [] = [q0] |
2022-02-16 07:40:02 +0100 | <lambdabot> | scanr f q0 (x:xs) = f x q : qs |
2022-02-16 07:40:02 +0100 | <lambdabot> | where qs@(q:_) = scanr f q0 xs |
2022-02-16 07:43:20 +0100 | _ht | (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection) |
2022-02-16 07:45:48 +0100 | vysn | (~vysn@user/vysn) (Ping timeout: 240 seconds) |
2022-02-16 07:45:49 +0100 | Pickchea | (~private@user/pickchea) |
2022-02-16 07:45:52 +0100 | foul_owl | (~kerry@23.105.36.232) |
2022-02-16 07:47:16 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds) |
2022-02-16 07:48:58 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-02-16 07:57:27 +0100 | coot | (~coot@213.134.190.95) |
2022-02-16 08:09:35 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) (Remote host closed the connection) |
2022-02-16 08:11:31 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-02-16 08:11:32 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-02-16 08:11:32 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-02-16 08:16:45 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 272 seconds) |
2022-02-16 08:18:01 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-02-16 08:18:24 +0100 | Vajb | (~Vajb@2001:999:274:c862:3b86:e1e1:5bff:355e) |
2022-02-16 08:18:52 +0100 | Natch | (~natch@c-4db8e255.014-297-73746f25.bbcust.telenor.se) (Ping timeout: 250 seconds) |
2022-02-16 08:19:18 +0100 | ubert1 | (~Thunderbi@p200300ecdf0994b46944f41320f0055f.dip0.t-ipconnect.de) |
2022-02-16 08:19:18 +0100 | Vajb | (~Vajb@2001:999:274:c862:3b86:e1e1:5bff:355e) (Read error: Connection reset by peer) |
2022-02-16 08:19:45 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2022-02-16 08:23:27 +0100 | Natch | (~natch@c-4db8e255.014-297-73746f25.bbcust.telenor.se) |
2022-02-16 08:27:07 +0100 | fef | (~thedawn@user/thedawn) |
2022-02-16 08:28:57 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Ping timeout: 256 seconds) |
2022-02-16 08:29:40 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2022-02-16 08:33:03 +0100 | yauhsien | (~yauhsien@61-231-32-166.dynamic-ip.hinet.net) |
2022-02-16 08:36:13 +0100 | alp | (~alp@user/alp) |
2022-02-16 08:37:04 +0100 | alp | (~alp@user/alp) (Remote host closed the connection) |
2022-02-16 08:37:25 +0100 | alp | (~alp@user/alp) |
2022-02-16 08:37:27 +0100 | yauhsien | (~yauhsien@61-231-32-166.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
2022-02-16 08:38:18 +0100 | Pickchea | (~private@user/pickchea) (Quit: Leaving) |
2022-02-16 08:38:34 +0100 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) |
2022-02-16 08:41:57 +0100 | alp | (~alp@user/alp) (Ping timeout: 252 seconds) |
2022-02-16 08:42:47 +0100 | acidjnk | (~acidjnk@pd9e0b668.dip0.t-ipconnect.de) |
2022-02-16 08:43:21 +0100 | Natch | (~natch@c-4db8e255.014-297-73746f25.bbcust.telenor.se) (Ping timeout: 272 seconds) |
2022-02-16 08:44:09 +0100 | rusrushal13 | (~rusrushal@103.85.18.34) |
2022-02-16 08:46:25 +0100 | Natch | (~natch@c-4db8e255.014-297-73746f25.bbcust.telenor.se) |
2022-02-16 08:47:47 +0100 | mzan | (~quassel@mail.asterisell.com) |
2022-02-16 08:48:32 +0100 | turlando | (~turlando@93-42-250-112.ip89.fastwebnet.it) |
2022-02-16 08:48:32 +0100 | turlando | (~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host) |
2022-02-16 08:48:32 +0100 | turlando | (~turlando@user/turlando) |
2022-02-16 08:50:03 +0100 | <Inst[m]> | i'd disagree, it's hard to tell what should be included and what shouldn't be included, some courses spend a lot of time teaching list manipulation, others skip monads, etc |
2022-02-16 08:50:06 +0100 | <Inst[m]> | but i'm not sober and i'm going to bed |
2022-02-16 08:51:45 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2022-02-16 08:58:35 +0100 | Ariakenom | (~Ariakenom@h-82-196-111-63.NA.cust.bahnhof.se) |
2022-02-16 08:58:46 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:5b51:ad88:49b8:7439) |
2022-02-16 08:59:39 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) |
2022-02-16 09:01:18 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection) |
2022-02-16 09:01:38 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) |
2022-02-16 09:01:45 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:edbf:f48a:9927:9718) (Quit: Leaving) |
2022-02-16 09:02:15 +0100 | yauhsien | (~Yau-Hsien@61-231-32-166.dynamic-ip.hinet.net) |
2022-02-16 09:04:00 +0100 | shriekingnoise | (~shrieking@201.231.16.156) (Quit: Quit) |
2022-02-16 09:05:39 +0100 | lagash | (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in) |
2022-02-16 09:06:06 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Ping timeout: 256 seconds) |
2022-02-16 09:06:25 +0100 | whatsupdoc | (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2022-02-16 09:07:05 +0100 | lagash | (lagash@lagash.shelltalk.net) |
2022-02-16 09:08:23 +0100 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
2022-02-16 09:12:11 +0100 | alp | (~alp@user/alp) |
2022-02-16 09:12:11 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer) |
2022-02-16 09:12:43 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) |
2022-02-16 09:15:18 +0100 | zeenk | (~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5) |
2022-02-16 09:16:05 +0100 | fendor | (~fendor@77.119.209.21.wireless.dyn.drei.com) |
2022-02-16 09:20:03 +0100 | cfricke | (~cfricke@user/cfricke) |
2022-02-16 09:21:10 +0100 | cynomys | (~cynomys@user/cynomys) |
2022-02-16 09:25:17 +0100 | Sgeo_ | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-02-16 09:27:18 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-02-16 09:27:18 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-02-16 09:27:18 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-02-16 09:27:22 +0100 | chele | (~chele@user/chele) |
2022-02-16 09:28:09 +0100 | rusrushal13 | (~rusrushal@103.85.18.34) (Quit: Client closed) |
2022-02-16 09:30:15 +0100 | razetime | (~quassel@49.207.198.36) |
2022-02-16 09:30:55 +0100 | razetime | (~quassel@49.207.198.36) (Client Quit) |
2022-02-16 09:32:45 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 272 seconds) |
2022-02-16 09:33:57 +0100 | dyeplexer | (~dyeplexer@user/dyeplexer) |
2022-02-16 09:35:43 +0100 | merijn | (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) |
2022-02-16 09:38:49 +0100 | max22- | (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) |
2022-02-16 09:39:48 +0100 | cynomys | (~cynomys@user/cynomys) (Ping timeout: 240 seconds) |
2022-02-16 09:40:41 +0100 | rembo10 | (~rembo10@remulis.com) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-02-16 09:41:27 +0100 | mzan | (~quassel@mail.asterisell.com) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2022-02-16 09:41:34 +0100 | rembo10 | (~rembo10@remulis.com) |
2022-02-16 09:41:52 +0100 | cynomys | (~cynomys@user/cynomys) |
2022-02-16 09:44:03 +0100 | Cajun | (~Cajun@user/cajun) (Ping timeout: 256 seconds) |
2022-02-16 09:45:05 +0100 | mzan | (~quassel@mail.asterisell.com) |
2022-02-16 09:45:25 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer) |
2022-02-16 09:46:22 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) |
2022-02-16 09:48:36 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2022-02-16 09:52:36 +0100 | deadmarshal | (~deadmarsh@95.38.231.90) (Ping timeout: 240 seconds) |
2022-02-16 09:55:24 +0100 | cynomys | (~cynomys@user/cynomys) (Ping timeout: 240 seconds) |
2022-02-16 09:55:25 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer) |
2022-02-16 09:56:13 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) |
2022-02-16 09:58:03 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-02-16 09:58:03 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-02-16 09:58:03 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-02-16 09:58:24 +0100 | zer0bitz | (~zer0bitz@2001:2003:f74d:b800:c9dd:301:29f7:88f5) |
2022-02-16 10:00:23 +0100 | michalz | (~michalz@185.246.204.89) |
2022-02-16 10:00:23 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer) |
2022-02-16 10:00:35 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) |
2022-02-16 10:02:17 +0100 | AlexZenon | (~alzenon@178.34.150.24) |
2022-02-16 10:02:37 +0100 | Alex_test | (~al_test@178.34.150.24) |
2022-02-16 10:03:01 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-02-16 10:05:42 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) |
2022-02-16 10:08:37 +0100 | cynomys | (~cynomys@user/cynomys) |
2022-02-16 10:11:29 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
2022-02-16 10:16:37 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer) |
2022-02-16 10:17:17 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) |
2022-02-16 10:19:25 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer) |
2022-02-16 10:20:05 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) |
2022-02-16 10:20:19 +0100 | Flonk | (~Flonk@vps-zap441517-1.zap-srv.com) |
2022-02-16 10:22:26 +0100 | turlando | (~turlando@user/turlando) (Quit: turlando) |
2022-02-16 10:22:41 +0100 | turlando | (~turlando@93-42-250-112.ip89.fastwebnet.it) |
2022-02-16 10:22:41 +0100 | turlando | (~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host) |
2022-02-16 10:22:41 +0100 | turlando | (~turlando@user/turlando) |
2022-02-16 10:23:44 +0100 | turlando | (~turlando@user/turlando) (Client Quit) |
2022-02-16 10:24:13 +0100 | turlando | (~turlando@user/turlando) |
2022-02-16 10:25:29 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
2022-02-16 10:27:03 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer) |
2022-02-16 10:27:10 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) |
2022-02-16 10:28:12 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 240 seconds) |
2022-02-16 10:28:50 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-02-16 10:28:50 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-02-16 10:28:50 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-02-16 10:31:34 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-02-16 10:33:24 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-02-16 10:33:25 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer) |
2022-02-16 10:34:32 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) |
2022-02-16 10:35:48 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) |
2022-02-16 10:35:56 +0100 | `2jt | (~jtomas@130.red-88-22-46.staticip.rima-tde.net) |
2022-02-16 10:37:27 +0100 | deadmarshal | (~deadmarsh@95.38.231.90) |
2022-02-16 10:37:47 +0100 | rusrushal13 | (~rusrushal@103.85.18.34) |
2022-02-16 10:38:00 +0100 | MajorBiscuit | (~MajorBisc@wlan-145-94-218-48.wlan.tudelft.nl) |
2022-02-16 10:40:57 +0100 | AlexNoo | (~AlexNoo@178.34.150.24) |
2022-02-16 10:41:37 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection) |
2022-02-16 10:50:15 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-16 10:51:38 +0100 | <joel135> | :t scanr |
2022-02-16 10:51:39 +0100 | <lambdabot> | (a -> b -> b) -> b -> [a] -> [b] |
2022-02-16 10:52:57 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) |
2022-02-16 10:53:24 +0100 | <joel135> | so it's like fold with a history, didn't know about that |
2022-02-16 10:54:48 +0100 | <tomsmeding> | :t \f z -> foldr (\x (y:r) -> f x y : y : r) [z] |
2022-02-16 10:54:49 +0100 | <lambdabot> | Foldable t1 => (t2 -> a -> a) -> a -> t1 t2 -> [a] |
2022-02-16 10:55:02 +0100 | <tomsmeding> | % :t +d \f z -> foldr (\x (y:r) -> f x y : y : r) [z] |
2022-02-16 10:55:03 +0100 | <yahb> | tomsmeding: (t -> a -> a) -> a -> [t] -> [a] |
2022-02-16 10:55:05 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 272 seconds) |
2022-02-16 10:58:13 +0100 | vysn | (~vysn@user/vysn) |
2022-02-16 10:58:44 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection) |
2022-02-16 10:59:03 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) |
2022-02-16 11:03:18 +0100 | acidjnk | (~acidjnk@pd9e0b668.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
2022-02-16 11:04:47 +0100 | jackson99 | (~bc8147f2@cerf.good1.com) |
2022-02-16 11:04:51 +0100 | <jackson99> | hi |
2022-02-16 11:05:12 +0100 | ystael | (~ystael@user/ystael) (Ping timeout: 272 seconds) |
2022-02-16 11:05:13 +0100 | <jackson99> | > Just 10 <|> undefined |
2022-02-16 11:05:14 +0100 | <lambdabot> | Just 10 |
2022-02-16 11:05:31 +0100 | <jackson99> | this is done lazily. but this isn't. why? |
2022-02-16 11:05:43 +0100 | <jackson99> | liftA2 (<|>) action1 action2 |
2022-02-16 11:06:28 +0100 | ystael | (~ystael@user/ystael) |
2022-02-16 11:07:42 +0100 | __monty__ | (~toonn@user/toonn) |
2022-02-16 11:09:17 +0100 | <jackson99> | is this reasonable? it seems to work |
2022-02-16 11:09:27 +0100 | <jackson99> | iftA2 (<|>) action1 (unsafeInterleaveIO action2) |
2022-02-16 11:12:11 +0100 | Akiva | (~Akiva@user/Akiva) (Ping timeout: 272 seconds) |
2022-02-16 11:12:17 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2022-02-16 11:12:17 +0100 | <lortabac> | jackson99: can you give a little more context please? |
2022-02-16 11:12:37 +0100 | <jackson99> | if action1 returns Nothing, and only then, I want to run action2 |
2022-02-16 11:12:55 +0100 | <jackson99> | action1 :: IO (Maybe a) action2 :: IO (Maybe a) |
2022-02-16 11:12:59 +0100 | <merijn> | jackson99: Those are two very different things, though |
2022-02-16 11:13:08 +0100 | <jackson99> | what two things? |
2022-02-16 11:13:25 +0100 | <merijn> | liftA2 (<|>) and <|> |
2022-02-16 11:13:36 +0100 | <merijn> | jackson99: You say "one is lazy, the other isn't" <- disagree |
2022-02-16 11:13:58 +0100 | <merijn> | tbh, it sounds like you want MaybeT |
2022-02-16 11:13:59 +0100 | <jackson99> | action2 is performed regardless of what action1 returns. so it isn't lazy enough |
2022-02-16 11:14:20 +0100 | <merijn> | jackson99: because liftA2 is the applicative of IO and IO is *always* sequenced |
2022-02-16 11:14:36 +0100 | <merijn> | anyway, what you want is "MaybeT IO" |
2022-02-16 11:14:52 +0100 | <jackson99> | is this a good use of unsafeInterleaveIO? |
2022-02-16 11:15:01 +0100 | <Ariakenom> | and to be clear this is entirely unrelated to laziness |
2022-02-16 11:15:13 +0100 | <Ariakenom> | jackson99 no |
2022-02-16 11:15:22 +0100 | <merijn> | jackson99: not really, because MaybeT is the right one and not unsafe |
2022-02-16 11:15:24 +0100 | <jackson99> | why? I did some testing and it works as expected |
2022-02-16 11:16:04 +0100 | <merijn> | jackson99: That's because anything unsafeX isn't required to be nicely predictable and you cannot generalise behaviour from one example to another |
2022-02-16 11:16:25 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:49da:9bbf:6c0f:9f3d) (Remote host closed the connection) |
2022-02-16 11:16:28 +0100 | <merijn> | jackson99: "it seems to work as expected" is what unsafeX always does, right before it stabs you in the back and ruins your code :p |
2022-02-16 11:16:50 +0100 | <jackson99> | isn't unsafeInterleaveIO used by lazy IO in haskell base? |
2022-02-16 11:17:17 +0100 | <jackdk> | there's a reason that for any nontrivial lazy IO, people reach for streaming libraries |
2022-02-16 11:17:18 +0100 | <merijn> | lazy IO is 1) highly questionable and 2) there's only like, 3 or 4 functions using lazy IO in base |
2022-02-16 11:17:27 +0100 | <Ariakenom> | "IO (Maybe a)" does not express "if action1 returns Nothing, and only then, I want to run action2". but "MaybeT IO" does. |
2022-02-16 11:19:00 +0100 | <jackson99> | I don't want streaming. action1 and 2 perform some system C calls. action1 is faster, but may not always work. so if it worked, I don't want to call action2. I'm curious if, and how, could unsafeInterleaveIO fail in here |
2022-02-16 11:19:49 +0100 | <Ariakenom> | ex: if you want to run the action but won't look at the result |
2022-02-16 11:20:14 +0100 | yauhsien_ | (~yauhsien@61-231-32-166.dynamic-ip.hinet.net) |
2022-02-16 11:20:28 +0100 | mc47 | (~mc47@xmonad/TheMC47) |
2022-02-16 11:20:38 +0100 | <Ariakenom> | you want to be explicit about what IO you run. not leave it to what values you look at |
2022-02-16 11:21:39 +0100 | yauhsien_ | (~yauhsien@61-231-32-166.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-02-16 11:22:54 +0100 | <jackson99> | so action2 may not run if I don't look at the value |
2022-02-16 11:23:00 +0100 | <jackson99> | that's actually a reasonable behavior for this |
2022-02-16 11:23:16 +0100 | <Ariakenom> | probably not. you'd want it to be consistent for action1 |
2022-02-16 11:23:40 +0100 | yauhsien_ | (~yauhsien@61-231-32-166.dynamic-ip.hinet.net) |
2022-02-16 11:23:44 +0100 | <Ariakenom> | (I mean that action1 also doesnt run if you dont look at the result) |
2022-02-16 11:23:46 +0100 | <jackson99> | if I don't inspect the value, there's no reason to run more expensive action. I'm only calling it for the value |
2022-02-16 11:24:22 +0100 | <jackson99> | that's fine too :) |
2022-02-16 11:24:31 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2022-02-16 11:25:04 +0100 | <jackson99> | hmm, I did x <- f in ghci, I did not inspect x, but both actions were ran |
2022-02-16 11:25:36 +0100 | <jackson99> | nevermind, I also called some functions that forced evaluation. so action1 is ran, but action2 isn't, until I inspect value |
2022-02-16 11:26:11 +0100 | <jackson99> | but that is completely fine for what I'm doing. I'll still look at MaybeT just out of curiosity |
2022-02-16 11:26:24 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:d5cb:a199:c5f8:d68d) |
2022-02-16 11:27:00 +0100 | foul_owl | (~kerry@23.105.36.232) (Ping timeout: 240 seconds) |
2022-02-16 11:27:09 +0100 | <Ariakenom> | what action are you doing? |
2022-02-16 11:28:12 +0100 | yauhsien_ | (~yauhsien@61-231-32-166.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
2022-02-16 11:28:36 +0100 | <jackson99> | I am searching for a window using FindWindow and EnumWindows winapi functions. EnumWindows is about 200 times slower, and I'm polling for the value in a loop with 20 or so ms delay. not a big deal, but it does mean CPU usage is a couple of % instead of 0% |
2022-02-16 11:28:53 +0100 | mmhat | (~mmh@55d4ce8c.access.ecotel.net) |
2022-02-16 11:29:08 +0100 | mmhat | (~mmh@55d4ce8c.access.ecotel.net) (Client Quit) |
2022-02-16 11:30:36 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:d5cb:a199:c5f8:d68d) (Ping timeout: 240 seconds) |
2022-02-16 11:31:16 +0100 | fef | (~thedawn@user/thedawn) (Ping timeout: 240 seconds) |
2022-02-16 11:32:25 +0100 | <Ariakenom> | so the result changes depending on when you run it. so leaving it up to when you evaluate a value is a ... muddy way to do it |
2022-02-16 11:33:02 +0100 | <jackson99> | hmm, that is true |
2022-02-16 11:35:29 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:e573:86f9:f0cd:7c1f) |
2022-02-16 11:37:39 +0100 | ishutin | (~ishutin@193-110-63-21.cable-modem.hdsnet.hu) (Ping timeout: 256 seconds) |
2022-02-16 11:39:06 +0100 | ishutin | (~ishutin@92-249-150-129.static.digikabel.hu) |
2022-02-16 11:39:48 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:e573:86f9:f0cd:7c1f) (Ping timeout: 240 seconds) |
2022-02-16 11:43:17 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection) |
2022-02-16 11:43:36 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) |
2022-02-16 11:44:57 +0100 | foul_owl | (~kerry@23.82.193.104) |
2022-02-16 11:48:10 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Ping timeout: 256 seconds) |
2022-02-16 11:53:28 +0100 | rusrushal13 | (~rusrushal@103.85.18.34) (Quit: Client closed) |
2022-02-16 11:55:00 +0100 | merijn | (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
2022-02-16 11:57:03 +0100 | merijn | (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) |
2022-02-16 12:02:13 +0100 | merijn | (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds) |
2022-02-16 12:02:59 +0100 | merijn | (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) |
2022-02-16 12:05:15 +0100 | <jackdk> | are there thread-safety concerns with those winapi functions? I wonder if the stuff in Control.Concurrent.Async could help here |
2022-02-16 12:07:24 +0100 | merijn | (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
2022-02-16 12:07:59 +0100 | merijn | (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) |
2022-02-16 12:12:22 +0100 | xff0x | (~xff0x@2001:1a81:5217:d600:a1de:a304:ac28:4386) (Quit: xff0x) |
2022-02-16 12:13:37 +0100 | merijn | (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds) |
2022-02-16 12:14:17 +0100 | unyu | (~pyon@user/pyon) (Ping timeout: 240 seconds) |
2022-02-16 12:14:27 +0100 | <jackson99> | my program is single threaded, it just blocks, searches for windows, and then hides them if necessary. so I have no thread-safety concerns. but I think those functions are thread safe |
2022-02-16 12:17:16 +0100 | fendor_ | (~fendor@91.141.40.92.wireless.dyn.drei.com) |
2022-02-16 12:19:47 +0100 | fendor | (~fendor@77.119.209.21.wireless.dyn.drei.com) (Ping timeout: 250 seconds) |
2022-02-16 12:21:32 +0100 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2022-02-16 12:23:11 +0100 | <jackson99> | Async would allow me to run functions concurrently, but I don't think that would decrease CPU usage? if anything, it would increase it |
2022-02-16 12:28:33 +0100 | xff0x | (~xff0x@2001:1a81:5217:d600:8ce0:743c:22b0:b5ff) |
2022-02-16 12:38:11 +0100 | Shiranai | (~Shiranai@190.237.13.59) (Quit: Connection closed) |
2022-02-16 12:38:16 +0100 | unyu | (~pyon@user/pyon) |
2022-02-16 12:39:00 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 252 seconds) |
2022-02-16 12:40:16 +0100 | CiaoSen | (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-02-16 12:40:50 +0100 | merijn | (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) |
2022-02-16 12:41:38 +0100 | jakalx | (~jakalx@base.jakalx.net) () |
2022-02-16 12:48:28 +0100 | acidjnk | (~acidjnk@p200300d0c7057599445f812649320e47.dip0.t-ipconnect.de) |
2022-02-16 12:51:24 +0100 | deadmarshal | (~deadmarsh@95.38.231.90) (Ping timeout: 240 seconds) |
2022-02-16 12:52:40 +0100 | romesrf | (~romes@44.190.189.46.rev.vodafone.pt) |
2022-02-16 12:53:05 +0100 | <romesrf> | hey everyone |
2022-02-16 12:54:08 +0100 | <romesrf> | what's your preferred way to write fmap (fmap f) x |
2022-02-16 12:54:31 +0100 | <byorgey> | I often write (fmap . fmap) f x |
2022-02-16 12:55:20 +0100 | <romesrf> | AH nice |
2022-02-16 12:55:21 +0100 | <byorgey> | inspired by http://conal.net/blog/posts/semantic-editor-combinators |
2022-02-16 12:55:31 +0100 | sprout_ | (~quassel@2a02:a467:ccd6:1:3933:29:5fe1:cb6b) |
2022-02-16 12:55:49 +0100 | <romesrf> | i'm convinced :) |
2022-02-16 12:56:13 +0100 | <byorgey> | it generalizes nicely to things like (fmap . first . fmap) f x etc. |
2022-02-16 12:56:48 +0100 | <jackson99> | I sometimes do fmap f <$> x |
2022-02-16 12:57:26 +0100 | <jackson99> | nevermind, that does something different |
2022-02-16 12:57:35 +0100 | <byorgey> | no, that's the same |
2022-02-16 12:57:46 +0100 | <jackson99> | yeah it is :P |
2022-02-16 12:59:16 +0100 | <byorgey> | I sometimes write that too. I think it depends on whether I'm mapping over something I'm thinking of as a nested data structure (in which case I would do (fmap . fmap)) or if it's like a functorial result from some kind of monadic action |
2022-02-16 12:59:19 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:511a:5eb2:c96:106b) (Ping timeout: 256 seconds) |
2022-02-16 12:59:37 +0100 | <byorgey> | like if x :: IO [String] I would probably write fmap read <$> x instead of (fmap . fmap) read x |
2022-02-16 13:00:08 +0100 | <romesrf> | byorgey: i like the idiom in the post, nice :) |
2022-02-16 13:00:36 +0100 | <romesrf> | and I agree, I also change syntax depending on the easiest way to visualize what i'm doing |
2022-02-16 13:00:40 +0100 | ph88 | (~ph88@ip5f5af71f.dynamic.kabel-deutschland.de) |
2022-02-16 13:09:22 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) |
2022-02-16 13:11:01 +0100 | <dminuoso> | % :t getCompose . fmap (+1) . Compose |
2022-02-16 13:11:01 +0100 | <yahb> | dminuoso: (Functor f, Functor g, Num a) => f (g a) -> f (g a) |
2022-02-16 13:11:02 +0100 | dextaa_ | (~dextaa@user/dextaa) |
2022-02-16 13:11:29 +0100 | <dminuoso> | Depending on the surrounding context, this can be quite nice as well |
2022-02-16 13:13:05 +0100 | acidjnk | (~acidjnk@p200300d0c7057599445f812649320e47.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
2022-02-16 13:13:11 +0100 | neurocyte0917090 | (~neurocyte@IP-185117069029.dynamic.medianet-world.de) |
2022-02-16 13:13:11 +0100 | neurocyte0917090 | (~neurocyte@IP-185117069029.dynamic.medianet-world.de) (Changing host) |
2022-02-16 13:13:11 +0100 | neurocyte0917090 | (~neurocyte@user/neurocyte) |
2022-02-16 13:13:14 +0100 | <dminuoso> | In a pinch I generally write `fmap f <$> x` though |
2022-02-16 13:14:57 +0100 | rookie101 | (~rookie@165.232.121.13) (Quit: WeeChat 1.9.1) |
2022-02-16 13:18:20 +0100 | <jackdk> | a number of prelude replacements provide `(<<$>>)`, which I like enough to sometimes define locally |
2022-02-16 13:18:51 +0100 | neurocyte0917090 | (~neurocyte@user/neurocyte) (Ping timeout: 272 seconds) |
2022-02-16 13:19:07 +0100 | acidjnk | (~acidjnk@dynamic-046-114-170-094.46.114.pool.telefonica.de) |
2022-02-16 13:19:12 +0100 | <dminuoso> | In one of my projects I locally defined `fmap1`, `fmap2`, `fmap3`, which is very similar I guess |
2022-02-16 13:19:54 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-02-16 13:21:22 +0100 | dhil | (~dhil@cpc103052-sgyl39-2-0-cust260.18-2.cable.virginm.net) |
2022-02-16 13:21:24 +0100 | <hpc> | do like what base does with tuples and define (<<<<<<<<<<<<<<<<<<<<$>>>>>>>>>>>>>>>>>>>>) all the way up to 63 |
2022-02-16 13:21:35 +0100 | <hpc> | see what ghc's upper limit on identifier length is |
2022-02-16 13:23:42 +0100 | deadmarshal | (~deadmarsh@95.38.231.90) |
2022-02-16 13:24:07 +0100 | <dminuoso> | Was the memory corruption bug causing that artificial limit on tuple sizes ever found? |
2022-02-16 13:24:49 +0100 | <dminuoso> | Recall some dark story about how the limit was the result of experimentation, but the underying bug was a mystery |
2022-02-16 13:24:50 +0100 | <merijn> | No idea |
2022-02-16 13:24:56 +0100 | PaulTheNeko | (~u0_a287@public-gprs522838.centertel.pl) |
2022-02-16 13:25:56 +0100 | acidjnk | (~acidjnk@dynamic-046-114-170-094.46.114.pool.telefonica.de) (Read error: Connection reset by peer) |
2022-02-16 13:25:58 +0100 | bliminse | (~bliminse@host86-158-241-239.range86-158.btcentralplus.com) |
2022-02-16 13:26:10 +0100 | acidjnk | (~acidjnk@dynamic-046-114-170-094.46.114.pool.telefonica.de) |
2022-02-16 13:27:21 +0100 | dextaa_ | (~dextaa@user/dextaa) (Remote host closed the connection) |
2022-02-16 13:36:18 +0100 | jgeerds_ | (~jgeerds@55d4b9df.access.ecotel.net) |
2022-02-16 13:37:00 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:e573:86f9:f0cd:7c1f) |
2022-02-16 13:37:50 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 272 seconds) |
2022-02-16 13:38:12 +0100 | cynomys | (~cynomys@user/cynomys) (Ping timeout: 240 seconds) |
2022-02-16 13:41:24 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:e573:86f9:f0cd:7c1f) (Ping timeout: 240 seconds) |
2022-02-16 13:42:13 +0100 | Unicorn_Princess | (~Unicorn_P@93-103-228-248.dynamic.t-2.net) |
2022-02-16 13:42:25 +0100 | jgeerds_ | (~jgeerds@55d4b9df.access.ecotel.net) (Read error: Connection reset by peer) |
2022-02-16 13:43:47 +0100 | jgeerds_ | (~jgeerds@55d4b9df.access.ecotel.net) |
2022-02-16 13:44:33 +0100 | capo_greco | (~textual@60-241-161-167.static.tpgi.com.au) |
2022-02-16 13:45:53 +0100 | neurocyte0917090 | (~neurocyte@IP-185117069029.dynamic.medianet-world.de) |
2022-02-16 13:45:53 +0100 | neurocyte0917090 | (~neurocyte@IP-185117069029.dynamic.medianet-world.de) (Changing host) |
2022-02-16 13:45:53 +0100 | neurocyte0917090 | (~neurocyte@user/neurocyte) |
2022-02-16 13:46:16 +0100 | nunggu_ | (~q@user/nunggu) (Ping timeout: 240 seconds) |
2022-02-16 13:48:52 +0100 | <romesrf> | cool stuff! |
2022-02-16 13:49:01 +0100 | <AndreasK> | dminuoso: In recent times (since I started working on GHC) no one tried to increase the limit. Until someone reworks GHC to allow infinite tuples the current limit seems reasonable so there was little motivation. |
2022-02-16 13:49:59 +0100 | nunggu_ | (~q@user/nunggu) |
2022-02-16 13:52:00 +0100 | <ProfSimm> | Can the whole Haskell runtime tail recurse on itself. |
2022-02-16 13:52:55 +0100 | <merijn> | ProfSimm: Not sure what that means, tbh :) |
2022-02-16 13:53:20 +0100 | <geekosaur> | pretty sure the ghc runtime only does jumps |
2022-02-16 13:53:46 +0100 | <geekosaur> | so depending on howyou thinkof it,either nothing or everything is a tail recursion |
2022-02-16 13:53:49 +0100 | <AndreasK> | It's jumps all the way down, to the bottom of the stack. |
2022-02-16 13:55:38 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) (Remote host closed the connection) |
2022-02-16 13:55:52 +0100 | <zzz> | ProfSimm: do you mean `main = do { whatever; main }` ?? |
2022-02-16 14:07:05 +0100 | PaulTheNeko | (~u0_a287@public-gprs522838.centertel.pl) (Read error: Connection reset by peer) |
2022-02-16 14:07:25 +0100 | PaulTheNeko | (~u0_a287@apn-31-0-26-69.dynamic.gprs.plus.pl) |
2022-02-16 14:07:57 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2022-02-16 14:12:02 +0100 | PaulTheNeko | (~u0_a287@apn-31-0-26-69.dynamic.gprs.plus.pl) (Ping timeout: 272 seconds) |
2022-02-16 14:12:38 +0100 | PaulTheNeko | (~u0_a287@apn-31-0-26-69.dynamic.gprs.plus.pl) |
2022-02-16 14:12:43 +0100 | PaulTheNeko | (~u0_a287@apn-31-0-26-69.dynamic.gprs.plus.pl) (Client Quit) |
2022-02-16 14:13:53 +0100 | dextaa_ | (~dextaa@user/dextaa) |
2022-02-16 14:14:35 +0100 | Merfont | (~Kaiepi@156.34.47.253) (Remote host closed the connection) |
2022-02-16 14:14:59 +0100 | Merfont | (~Kaiepi@156.34.47.253) |
2022-02-16 14:17:48 +0100 | xff0x | (~xff0x@2001:1a81:5217:d600:8ce0:743c:22b0:b5ff) (Ping timeout: 240 seconds) |
2022-02-16 14:18:44 +0100 | xff0x | (~xff0x@2001:1a81:5217:d600:567:b7a:e54:e078) |
2022-02-16 14:21:43 +0100 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) |
2022-02-16 14:24:19 +0100 | acidjnk | (~acidjnk@dynamic-046-114-170-094.46.114.pool.telefonica.de) (Read error: Connection reset by peer) |
2022-02-16 14:24:39 +0100 | acidjnk | (~acidjnk@p200300d0c71d3b97a07e6bc3219efcf6.dip0.t-ipconnect.de) |
2022-02-16 14:29:25 +0100 | to_gl | (~to_gl@193.164.24.245) |
2022-02-16 14:29:33 +0100 | to_gl | (~to_gl@193.164.24.245) () |
2022-02-16 14:31:38 +0100 | Merfont | (~Kaiepi@156.34.47.253) (Remote host closed the connection) |
2022-02-16 14:31:58 +0100 | Merfont | (~Kaiepi@156.34.47.253) |
2022-02-16 14:34:31 +0100 | cynomys | (~cynomys@user/cynomys) |
2022-02-16 14:34:54 +0100 | andreabedini | (~andreabed@8s8kj680jt94n45xrsj1.ip6.superloop.com) |
2022-02-16 14:35:56 +0100 | thyriaen | (~thyriaen@simnet-nat-pool-185-130-54-167.stargrpns.pp.ua) |
2022-02-16 14:40:58 +0100 | <ephemient> | https://ro-che.info/articles/2017-01-10-nested-loop-space-leak :( |
2022-02-16 14:42:56 +0100 | slowButPresent | (~slowButPr@user/slowbutpresent) |
2022-02-16 14:43:51 +0100 | jlamothe | (~jlamothe@198.251.61.229) (Ping timeout: 252 seconds) |
2022-02-16 14:45:23 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) |
2022-02-16 14:49:47 +0100 | <jackson99> | how would this be done with TypeApplications? isNumber s = isJust (readMaybe s :: Maybe Int) |
2022-02-16 14:50:12 +0100 | cynomys | (~cynomys@user/cynomys) (Ping timeout: 240 seconds) |
2022-02-16 14:50:18 +0100 | <jackson99> | I thought something like this would work, but I am getting errors: isNumber = isJust . readMaybe @ Maybe Int |
2022-02-16 14:50:34 +0100 | <Ariakenom> | % :t readMaybe |
2022-02-16 14:50:34 +0100 | <yahb> | Ariakenom: ; <interactive>:1:1: error: Variable not in scope: readMaybe |
2022-02-16 14:50:49 +0100 | <geekosaur> | % import Text.Read |
2022-02-16 14:50:49 +0100 | <yahb> | geekosaur: |
2022-02-16 14:51:04 +0100 | <geekosaur> | % isNumber s = isJust (readMaybe @Int s) |
2022-02-16 14:51:04 +0100 | <yahb> | geekosaur: |
2022-02-16 14:51:12 +0100 | <Ariakenom> | % :t readMaybe |
2022-02-16 14:51:13 +0100 | <yahb> | Ariakenom: Read a => String -> Maybe a |
2022-02-16 14:51:24 +0100 | CiaoSen | (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-02-16 14:51:31 +0100 | <jackson99> | % isNumber = isJust . readMaybe @Int |
2022-02-16 14:51:31 +0100 | <yahb> | jackson99: |
2022-02-16 14:51:37 +0100 | <jackson99> | nice |
2022-02-16 14:51:39 +0100 | <lortabac> | jackson99: you have to look at the type variables |
2022-02-16 14:51:58 +0100 | <lortabac> | in this case the first (and only) variable is 'a' |
2022-02-16 14:51:58 +0100 | <jackson99> | yeah I get it now. it needs a, not Maybe a |
2022-02-16 14:52:07 +0100 | <romesrf> | :) |
2022-02-16 14:52:11 +0100 | <geekosaur> | the Maybe is fixed so it doesn'tget reflected in a typevariable. the a is obviously a typevariable, so go fir that |
2022-02-16 14:52:27 +0100 | rusrushal13 | (~rusrushal@103.85.18.34) |
2022-02-16 14:52:46 +0100 | <lortabac> | you can skip variables with @_ |
2022-02-16 14:52:46 +0100 | <ephemient> | also if you really did want Read (Maybe Int), you need to parenthesize it, as in readMaybe @(Maybe Int) |
2022-02-16 14:53:03 +0100 | <Ariakenom> | how to see the type variables? |
2022-02-16 14:53:22 +0100 | <geekosaur> | use :t |
2022-02-16 14:53:37 +0100 | <Ariakenom> | I did but yahb didnt show me |
2022-02-16 14:53:47 +0100 | <geekosaur> | > :t readMaybe |
2022-02-16 14:53:49 +0100 | <lambdabot> | <hint>:1:1: error: parse error on input ‘:’ |
2022-02-16 14:53:57 +0100 | <geekosaur> | wrong bot :( |
2022-02-16 14:54:01 +0100 | <geekosaur> | % :t readMaybe |
2022-02-16 14:54:02 +0100 | <yahb> | geekosaur: Read a => String -> Maybe a |
2022-02-16 14:54:21 +0100 | <Ariakenom> | I think it needs some extension to always show type variables |
2022-02-16 14:54:22 +0100 | <geekosaur> | there's only one typevariable, so it's obviously the one TypeApplications will apply to |
2022-02-16 14:54:37 +0100 | <Clint> | :t readMaybe |
2022-02-16 14:54:38 +0100 | <lambdabot> | error: Variable not in scope: readMaybe |
2022-02-16 14:54:40 +0100 | <geekosaur> | % :set -fprint-explicit-foralls |
2022-02-16 14:54:40 +0100 | <yahb> | geekosaur: |
2022-02-16 14:54:43 +0100 | <geekosaur> | % :t readMaybe |
2022-02-16 14:54:43 +0100 | <yahb> | geekosaur: forall {a}. Read a => String -> Maybe a |
2022-02-16 14:54:49 +0100 | <Ariakenom> | yes but I want to show it anyway |
2022-02-16 14:54:51 +0100 | <Ariakenom> | yay |
2022-02-16 14:54:53 +0100 | merijn | mumbles something about "TypeApplications considered harmful" |
2022-02-16 14:56:27 +0100 | alt-romes | (~romes@44.190.189.46.rev.vodafone.pt) |
2022-02-16 14:56:30 +0100 | vysn | (~vysn@user/vysn) (Ping timeout: 252 seconds) |
2022-02-16 14:58:33 +0100 | capo_greco | (~textual@60-241-161-167.static.tpgi.com.au) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
2022-02-16 14:59:15 +0100 | romesrf | (~romes@44.190.189.46.rev.vodafone.pt) (Ping timeout: 252 seconds) |
2022-02-16 15:00:53 +0100 | jlamothe | (~jlamothe@198.251.61.229) |
2022-02-16 15:01:24 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 240 seconds) |
2022-02-16 15:04:58 +0100 | aehu6ce8 | (~aehu6ce8@31.187.110.131) |
2022-02-16 15:05:32 +0100 | <kuribas> | merijn: we should be able to pass types to functions like in idris :) |
2022-02-16 15:06:17 +0100 | <kuribas> | in idris you can pass implicit types by name. |
2022-02-16 15:06:39 +0100 | <geekosaur> | next ghc version |
2022-02-16 15:06:43 +0100 | <kuribas> | Which would solve the problems that haskell TypeApplications have, since they are positional. |
2022-02-16 15:06:58 +0100 | <geekosaur> | forall t -> … |
2022-02-16 15:07:07 +0100 | <merijn> | kuribas: positional *and* implicitly ordered |
2022-02-16 15:07:16 +0100 | <kuribas> | yeah, that's pretty bad. |
2022-02-16 15:07:34 +0100 | <alt-romes> | is there a name for: data Ex m a = Ex (m a), instance Functor f => (Ex f) where fmap f (Ex x) = Ex $ fmap f x, and then I'd like to have something that has signatures (f a -> g a) -> (Ex f a) -> (Ex g a) |
2022-02-16 15:07:49 +0100 | <jackson99> | implicitly ordered? |
2022-02-16 15:07:51 +0100 | <alt-romes> | it looks like the type is just lifted to Ex but |
2022-02-16 15:08:03 +0100 | <alt-romes> | not really ahaha |
2022-02-16 15:08:56 +0100 | <alt-romes> | so Ex is an instance of functor where I can alter `a` of Ex m a, and is an instance of ____ where i can alter `m` of Ex m a |
2022-02-16 15:09:05 +0100 | wonko | (~wjc@user/wonko) |
2022-02-16 15:11:49 +0100 | xff0x | (~xff0x@2001:1a81:5217:d600:567:b7a:e54:e078) (Ping timeout: 250 seconds) |
2022-02-16 15:12:12 +0100 | andreabedini | (~andreabed@8s8kj680jt94n45xrsj1.ip6.superloop.com) (Quit: WeeChat 3.3) |
2022-02-16 15:12:16 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-02-16 15:12:22 +0100 | yauhsien_ | (~yauhsien@61-231-32-166.dynamic-ip.hinet.net) |
2022-02-16 15:13:40 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-02-16 15:14:28 +0100 | <Ariakenom> | you can implicitly order them. but you can also explicitly order them |
2022-02-16 15:15:45 +0100 | Everything | (~Everythin@37.115.210.35) |
2022-02-16 15:16:16 +0100 | xff0x | (~xff0x@2001:1a81:5217:d600:567:b7a:e54:e078) |
2022-02-16 15:16:18 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2022-02-16 15:16:46 +0100 | <kuribas> | Ariakenom: which doesn't help if you didn't wrote the function you need to apply. |
2022-02-16 15:17:10 +0100 | <Ariakenom> | it does not |
2022-02-16 15:17:16 +0100 | yauhsien_ | (~yauhsien@61-231-32-166.dynamic-ip.hinet.net) (Ping timeout: 272 seconds) |
2022-02-16 15:18:10 +0100 | <Ariakenom> | I agree that ::-typing is better than @-typing |
2022-02-16 15:18:38 +0100 | AlexNoo_ | (~AlexNoo@94.233.240.208) |
2022-02-16 15:18:51 +0100 | wonko | (~wjc@user/wonko) (Remote host closed the connection) |
2022-02-16 15:19:42 +0100 | wonko | (~wjc@user/wonko) |
2022-02-16 15:19:55 +0100 | <dminuoso> | alt-romes: Such a transformation is called a natural transformation. |
2022-02-16 15:21:05 +0100 | AlexZenon | (~alzenon@178.34.150.24) (Ping timeout: 272 seconds) |
2022-02-16 15:21:37 +0100 | <dminuoso> | Or rather, `forall a. f a -> g a` is called a natural transformation |
2022-02-16 15:21:43 +0100 | Alex_test | (~al_test@178.34.150.24) (Ping timeout: 272 seconds) |
2022-02-16 15:21:51 +0100 | <dminuoso> | And the process of `(f a -> g a) -> (Ex f a) -> (Ex g a)` is usually called `hoisting` or `lifting` |
2022-02-16 15:22:20 +0100 | AlexNoo | (~AlexNoo@178.34.150.24) (Ping timeout: 272 seconds) |
2022-02-16 15:22:52 +0100 | wonko | (~wjc@user/wonko) (Remote host closed the connection) |
2022-02-16 15:23:00 +0100 | cfricke | (~cfricke@user/cfricke) (Ping timeout: 240 seconds) |
2022-02-16 15:23:10 +0100 | wonko | (~wjc@user/wonko) |
2022-02-16 15:23:30 +0100 | xkuru | (~xkuru@user/xkuru) |
2022-02-16 15:23:48 +0100 | <dminuoso> | Since `Ex f a ~~~ f a`, that function `(f a -> g a) -> (Ex f a) -> (Ex g a)` is isomorphic to `(f a -> g a) -> f a -> g a` |
2022-02-16 15:23:53 +0100 | wonko | (~wjc@user/wonko) (Remote host closed the connection) |
2022-02-16 15:24:04 +0100 | <dminuoso> | So it's just something isomorphic to `id` |
2022-02-16 15:24:30 +0100 | Alex_test | (~al_test@94.233.240.208) |
2022-02-16 15:24:36 +0100 | Alex_test | (~al_test@94.233.240.208) (Client Quit) |
2022-02-16 15:24:43 +0100 | wonko | (~wjc@user/wonko) |
2022-02-16 15:25:07 +0100 | Everything | (~Everythin@37.115.210.35) () |
2022-02-16 15:25:25 +0100 | <alt-romes> | dminuoso: interesting, but what if I had Ex s m a = Ex (s -> m a) |
2022-02-16 15:25:31 +0100 | AlexZenon | (~alzenon@94.233.240.208) |
2022-02-16 15:25:31 +0100 | Alex_test | (~al_test@94.233.240.208) |
2022-02-16 15:25:34 +0100 | slack1256 | (~slack1256@191.125.99.202) |
2022-02-16 15:25:51 +0100 | AlexZenon_2 | (~alzenon@94.233.240.208) |
2022-02-16 15:25:59 +0100 | <alt-romes> | should I settle for a hoistEx = ... |
2022-02-16 15:26:18 +0100 | <dminuoso> | alt-romes: And what type signature would you be looking for with that type? |
2022-02-16 15:26:23 +0100 | <alt-romes> | or is Ex a Hoistable ahaha |
2022-02-16 15:26:45 +0100 | AlexZenon_2 | (~alzenon@94.233.240.208) (Client Quit) |
2022-02-16 15:27:08 +0100 | <alt-romes> | instance ___ Ex s where ____ :: (m a -> n a) -> Ex s m a -> Ex s n a |
2022-02-16 15:27:46 +0100 | AlexNoo_ | AlexNoo |
2022-02-16 15:27:51 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3) |
2022-02-16 15:28:48 +0100 | <alt-romes> | dminuoso: i'm doing things and I like abstractions, and was looking for a cool new shiny one |
2022-02-16 15:29:26 +0100 | <alt-romes> | this seemed like the kind of thing that might fit some theory |
2022-02-16 15:29:38 +0100 | <dminuoso> | So to make this "shiny" and more confusion, you can introduce `type f ~> g = forall a. f a -> g a` |
2022-02-16 15:29:50 +0100 | <alt-romes> | right, the Natural Transformation |
2022-02-16 15:29:57 +0100 | max22- | (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Ping timeout: 272 seconds) |
2022-02-16 15:30:01 +0100 | <dminuoso> | Right, but that changes your types slightly since we're moving a forall quantification in there |
2022-02-16 15:30:03 +0100 | jgeerds_ | (~jgeerds@55d4b9df.access.ecotel.net) (Ping timeout: 252 seconds) |
2022-02-16 15:30:03 +0100 | <dminuoso> | So you have |
2022-02-16 15:30:16 +0100 | <alt-romes> | :: (forall a. m a -> n a) -> ... |
2022-02-16 15:30:25 +0100 | <dminuoso> | (m ~> n) -> Ex s m ~> Ex s n |
2022-02-16 15:30:29 +0100 | <alt-romes> | oh! |
2022-02-16 15:30:45 +0100 | <dminuoso> | Is that what you're after? |
2022-02-16 15:30:49 +0100 | <alt-romes> | yes! |
2022-02-16 15:31:20 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-02-16 15:31:39 +0100 | <dminuoso> | But yeah, I think the terms `hoist`, `lift` or `heave` come to mind. |
2022-02-16 15:31:58 +0100 | <alt-romes> | thank you |
2022-02-16 15:35:50 +0100 | zmt01 | (~zmt00@user/zmt00) |
2022-02-16 15:35:50 +0100 | alt-romes | (~romes@44.190.189.46.rev.vodafone.pt) (Quit: WeeChat 3.4) |
2022-02-16 15:36:10 +0100 | romesrf | (~romes@44.190.189.46.rev.vodafone.pt) |
2022-02-16 15:37:00 +0100 | meinside | (uid24933@id-24933.helmsley.irccloud.com) (Ping timeout: 240 seconds) |
2022-02-16 15:37:24 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:5b51:ad88:49b8:7439) (Ping timeout: 240 seconds) |
2022-02-16 15:37:40 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:5b51:ad88:49b8:7439) |
2022-02-16 15:37:45 +0100 | gaff | (~gaff@49.207.229.178) |
2022-02-16 15:37:48 +0100 | Raito_Bezarius | (~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 240 seconds) |
2022-02-16 15:38:12 +0100 | unyu | (~pyon@user/pyon) (Ping timeout: 240 seconds) |
2022-02-16 15:38:12 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Ping timeout: 240 seconds) |
2022-02-16 15:38:12 +0100 | TonyStone | (~TonyStone@2603-7080-8607-c36a-3d94-4d23-dc7c-c228.res6.spectrum.com) (Ping timeout: 240 seconds) |
2022-02-16 15:38:12 +0100 | lottaquestions | (~nick@2607:fa49:5041:a200:b555:2e8f:fe4f:2e3d) (Ping timeout: 240 seconds) |
2022-02-16 15:38:12 +0100 | emergence | (emergence@2607:5300:60:5910:dcad:beff:feef:5bc) (Ping timeout: 240 seconds) |
2022-02-16 15:38:12 +0100 | Unhammer | (~Unhammer@user/unhammer) (Ping timeout: 240 seconds) |
2022-02-16 15:38:16 +0100 | Pickchea | (~private@user/pickchea) |
2022-02-16 15:38:28 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:e573:86f9:f0cd:7c1f) |
2022-02-16 15:38:29 +0100 | lottaquestions | (~nick@2607:fa49:5041:a200:c52d:7d43:3699:c92e) |
2022-02-16 15:38:32 +0100 | Unhammer | (~Unhammer@user/unhammer) |
2022-02-16 15:38:36 +0100 | zmt00 | (~zmt00@user/zmt00) (Ping timeout: 240 seconds) |
2022-02-16 15:39:58 +0100 | meinside | (uid24933@id-24933.helmsley.irccloud.com) |
2022-02-16 15:40:29 +0100 | unyu | (~pyon@user/pyon) |
2022-02-16 15:41:44 +0100 | shriekingnoise | (~shrieking@201.231.16.156) |
2022-02-16 15:42:07 +0100 | <romesrf> | made a `hoistBot` and am happy about it |
2022-02-16 15:42:35 +0100 | <gaff> | this quickcheck code "gives up" if one of the functions f1 or f2 return `Nothing`: forAll (arbitrary :: Gen String) $ \x -> do; x1 :: String <- f1 x :: Maybe String; x2 :: String <- f2 x :: Maybe String; return $ x1 === x2. any idea why? |
2022-02-16 15:42:41 +0100 | <janus> | romesrf: what does it do? |
2022-02-16 15:43:01 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:e573:86f9:f0cd:7c1f) (Ping timeout: 250 seconds) |
2022-02-16 15:43:19 +0100 | emergence | (emergence@2607:5300:60:5910:dcad:beff:feef:5bc) |
2022-02-16 15:44:17 +0100 | <slack1256> | gaff: Can you paste on pastebin? |
2022-02-16 15:44:24 +0100 | <gaff> | ok |
2022-02-16 15:44:25 +0100 | <janus> | gaff: shouldn't the do block be in the Gen monad? looks like it is in Maybe? |
2022-02-16 15:44:34 +0100 | <geekosaur> | isn't that expected fro,m the Maybe monad? |
2022-02-16 15:44:39 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2022-02-16 15:44:45 +0100 | <romesrf> | janus: oh just what we were discussing previously, i have a Bot m s i o = Bot (i -> s -> m o) and hoistBot :: (forall a. f a -> g a) -> Bot f s i o -> Bot g s i o |
2022-02-16 15:45:08 +0100 | <gaff> | janus: Testable (Maybe Bool) works |
2022-02-16 15:45:38 +0100 | <gaff> | geekosaur: why does it "give up" instead of just failing? |
2022-02-16 15:45:56 +0100 | <geekosaur> | it *is* failing. but "giving up" is the definition of `fail` in Maybe |
2022-02-16 15:46:07 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) |
2022-02-16 15:46:13 +0100 | <geekosaur> | @src Maybe fail |
2022-02-16 15:46:13 +0100 | <lambdabot> | fail _ = Nothing |
2022-02-16 15:46:40 +0100 | <geekosaur> | so the whole do block produces Nothing at that point instead of continuing |
2022-02-16 15:46:47 +0100 | <gaff> | yes, but quickcheck seems to give up generating test cases |
2022-02-16 15:47:06 +0100 | <gaff> | soh i see |
2022-02-16 15:48:03 +0100 | chenqisu1 | (~chenqisu1@183.217.200.249) (Remote host closed the connection) |
2022-02-16 15:48:15 +0100 | <gaff> | geekosaur: i thought quickcheck "gave up" when it can not find enough test cases that staisy some condition when you use `===>` |
2022-02-16 15:49:01 +0100 | <gaff> | which is why i am surprised to see it here in this code which does not use implication |
2022-02-16 15:49:01 +0100 | <geekosaur> | in this case you're short-circuiting it because you inadvertently put it "under" Maybe |
2022-02-16 15:49:10 +0100 | <gaff> | ah i see |
2022-02-16 15:49:33 +0100 | <gaff> | thank you |
2022-02-16 15:49:40 +0100 | <dminuoso> | romesrf: For reference, in servant you have: hoistServer :: HasServer api '[] => Proxy api -> (forall x . m x -> n x) -> ServerT api m -> ServerT api n |
2022-02-16 15:49:56 +0100 | <dminuoso> | Which is quite similar to what you're doing |
2022-02-16 15:50:00 +0100 | <romesrf> | dminuoso: yeah, ironicaly i was using it too hahaha |
2022-02-16 15:50:37 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 240 seconds) |
2022-02-16 15:50:48 +0100 | TonyStone | (~TonyStone@2603-7080-8607-c36a-4424-fc06-167e-bc32.res6.spectrum.com) |
2022-02-16 15:51:46 +0100 | <gaff> | geekosaur: so this code i have pasted is just fine ... i just have to interpret quickcheck "gave up" as a fail. |
2022-02-16 15:52:10 +0100 | Raito_Bezarius | (~Raito@wireguard/tunneler/raito-bezarius) |
2022-02-16 15:52:12 +0100 | <dminuoso> | romesrf: The quantification is very useful by the way, because it ensures whatever you're passing to it is an actual natural transformation (this results from a free theorem) |
2022-02-16 15:52:16 +0100 | Guest|20 | (~Guest|20@dynamic-185-082-205-148.glattnet.ch) |
2022-02-16 15:52:18 +0100 | <geekosaur> | or rearrange the types so that only that particular test "gives up" |
2022-02-16 15:52:25 +0100 | <romesrf> | :) |
2022-02-16 15:52:30 +0100 | <dminuoso> | Otherwise the argument can do funky stuff |
2022-02-16 15:52:34 +0100 | <geekosaur> | or even that oit just treats Nothing as a normal value |
2022-02-16 15:52:40 +0100 | <romesrf> | dminuoso: I've actually just run against it |
2022-02-16 15:52:41 +0100 | Guest|20 | (~Guest|20@dynamic-185-082-205-148.glattnet.ch) (Client Quit) |
2022-02-16 15:52:56 +0100 | <romesrf> | and was wondering what would be the name for the same thing without quantification |
2022-02-16 15:53:05 +0100 | <romesrf> | because it would also be useful |
2022-02-16 15:53:25 +0100 | <gaff> | rearrange the types? |
2022-02-16 15:53:36 +0100 | <dminuoso> | Without it it would be just some elaborate form of ($) |
2022-02-16 15:53:49 +0100 | <romesrf> | ic :) |
2022-02-16 15:53:58 +0100 | <dminuoso> | Or well, I guess that's already the case mmm |
2022-02-16 15:54:21 +0100 | <dminuoso> | romesrf: The key difference is that you can infer less knowledge from what its use does. |
2022-02-16 15:54:46 +0100 | <romesrf> | right, but without the natural transformation i can't call it hoist :) |
2022-02-16 15:54:51 +0100 | <dminuoso> | So `hoistServer` by interface guarantees that the argument only modifies the monad, but not the result |
2022-02-16 15:54:52 +0100 | <romesrf> | naming things is hard ™ |
2022-02-16 15:54:54 +0100 | <dminuoso> | It cant because its universally quantified |
2022-02-16 15:55:09 +0100 | <romesrf> | right, and that's pretty cool |
2022-02-16 15:55:19 +0100 | <dminuoso> | When you see its use, you immediately know about what this can do, what it cant. |
2022-02-16 15:56:11 +0100 | <dminuoso> | If you lack the quantification, then its just some "unwrapping/wrapping/rewrapping" thing that can do anything |
2022-02-16 15:56:12 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-02-16 15:56:44 +0100 | <dminuoso> | You could think of it as equivalent as just handing someone the constructor to pattern match, mess with its internals, and rebuild |
2022-02-16 15:56:50 +0100 | asdfsfdasdfw | (~asdfsfdas@12.182.213.210) |
2022-02-16 15:56:55 +0100 | <romesrf> | yea, that seems like it |
2022-02-16 15:57:14 +0100 | asdfsfdasdfw | (~asdfsfdas@12.182.213.210) () |
2022-02-16 15:57:19 +0100 | dextaa_ | (~dextaa@user/dextaa) (Remote host closed the connection) |
2022-02-16 15:58:52 +0100 | Merfont | (~Kaiepi@156.34.47.253) (Remote host closed the connection) |
2022-02-16 15:58:59 +0100 | Kaipi | (~Kaiepi@156.34.47.253) |
2022-02-16 16:01:26 +0100 | gaff | (~gaff@49.207.229.178) () |
2022-02-16 16:01:37 +0100 | Pickchea | (~private@user/pickchea) (Ping timeout: 272 seconds) |
2022-02-16 16:02:24 +0100 | dextaa_ | (~dextaa@user/dextaa) |
2022-02-16 16:07:21 +0100 | o-90 | (~o-90@gateway/tor-sasl/o-90) |
2022-02-16 16:08:00 +0100 | wonko | (~wjc@user/wonko) (Ping timeout: 252 seconds) |
2022-02-16 16:09:25 +0100 | <slack1256> | Is there a package with a data structure for "buffer with at most 10 (or n) elements"? |
2022-02-16 16:09:42 +0100 | <slack1256> | I know I could do this with n-tuples. Yet I want the wrapping/cycling semantics. |
2022-02-16 16:10:30 +0100 | <dminuoso> | slack1256: Does it need to be generic over an arbitrary data type? |
2022-02-16 16:11:07 +0100 | <dminuoso> | Or is an effective restriction on say Storable or Unbox reasonable? |
2022-02-16 16:12:45 +0100 | <pavonia> | https://hackage.haskell.org/package/ring-buffers has different types |
2022-02-16 16:13:21 +0100 | <dminuoso> | Ah that's neat |
2022-02-16 16:15:54 +0100 | max22- | (~maxime@2a01cb0883359800c7c4fab2785758f5.ipv6.abo.wanadoo.fr) |
2022-02-16 16:16:54 +0100 | waleee | (~waleee@h-98-128-229-110.NA.cust.bahnhof.se) |
2022-02-16 16:19:07 +0100 | vektor | (~vektor@IP-094046083008.dynamic.medianet-world.de) |
2022-02-16 16:19:13 +0100 | <geekosaur> | there's also a modified Chan somewhere |
2022-02-16 16:19:56 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) |
2022-02-16 16:21:07 +0100 | <geekosaur> | @hackage stm-chans |
2022-02-16 16:21:07 +0100 | <lambdabot> | https://hackage.haskell.org/package/stm-chans |
2022-02-16 16:23:54 +0100 | <slack1256> | dminuoso: If it holds ~Ints~ then I am good. Yet pavonia posted "ring-buffers" which seems to do what I want. |
2022-02-16 16:24:04 +0100 | <slack1256> | Thanks guys! |
2022-02-16 16:24:37 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 240 seconds) |
2022-02-16 16:25:56 +0100 | o-90 | (~o-90@gateway/tor-sasl/o-90) (Ping timeout: 240 seconds) |
2022-02-16 16:28:17 +0100 | Guest|7 | (~Guest|7@31.134.188.207) |
2022-02-16 16:28:25 +0100 | Guest|7 | (~Guest|7@31.134.188.207) (Client Quit) |
2022-02-16 16:29:25 +0100 | <slack1256> | What packages do you guys use for "auth/secret management" on google cloud? There is a bunch on hackage at different stages of development. |
2022-02-16 16:32:45 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-02-16 16:32:45 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-02-16 16:32:45 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-02-16 16:34:52 +0100 | <slack1256> | Oh base package "gogol" has it. nvm! |
2022-02-16 16:36:00 +0100 | thyriaen | (~thyriaen@simnet-nat-pool-185-130-54-167.stargrpns.pp.ua) (Quit: Leaving) |
2022-02-16 16:37:24 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-02-16 16:40:06 +0100 | CiaoSen | (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-02-16 16:40:13 +0100 | rusrushal13 | (~rusrushal@103.85.18.34) (Quit: Client closed) |
2022-02-16 16:42:22 +0100 | kritzefitz | (~kritzefit@debian/kritzefitz) (Remote host closed the connection) |
2022-02-16 16:42:57 +0100 | aehu6ce8 | (~aehu6ce8@31.187.110.131) (Quit: aehu6ce8) |
2022-02-16 16:45:10 +0100 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2022-02-16 16:45:51 +0100 | neurocyte0917090 | (~neurocyte@user/neurocyte) (Ping timeout: 250 seconds) |
2022-02-16 16:45:53 +0100 | kritzefitz_ | (~kritzefit@debian/kritzefitz) |
2022-02-16 16:46:36 +0100 | k`` | (~user@152.1.137.158) |
2022-02-16 16:47:41 +0100 | <k``> | As a rule of thumb, should handwritten `Ord` instances be strict to match derived instances? Or should they be as lazy as possible in the second parameter? |
2022-02-16 16:53:48 +0100 | kritzefitz_ | kritzefitz |
2022-02-16 16:53:56 +0100 | <merijn> | I don't think there's any real rules/expectations |
2022-02-16 16:55:08 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) |
2022-02-16 16:55:20 +0100 | zebrag | (~chris@user/zebrag) |
2022-02-16 16:55:26 +0100 | Pickchea | (~private@user/pickchea) |
2022-02-16 16:55:44 +0100 | <geekosaur> | but as it's hard to compare two values without forcing both, I don't see what "as lazy as possible" can get you |
2022-02-16 16:56:18 +0100 | <geekosaur> | suppose you could force only part of it in some cases |
2022-02-16 16:57:44 +0100 | lbseale | (~ep1ctetus@user/ep1ctetus) |
2022-02-16 16:57:55 +0100 | <k``> | Or for enumerations you can always check whether the first argument is `minBound` (or `maxBound`, depending on the comparison). `compare` is always going to be at least partially strict in any not trivial type. |
2022-02-16 16:58:19 +0100 | <vektor> | Anyone familiar with works along the line of stephen diehl's Write You A Haskell? It covers many things I'm interested in, but leaves some questions open for me. |
2022-02-16 16:58:45 +0100 | <[exa]> | vektor: likely. don't ask to ask. :] |
2022-02-16 16:59:11 +0100 | <geekosaur> | sounded to me like they were asking *for* other such works |
2022-02-16 16:59:22 +0100 | <vektor> | Indeed. I don't think that was a meta question. |
2022-02-16 16:59:48 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 240 seconds) |
2022-02-16 16:59:55 +0100 | <[exa]> | ah ok, I thought you have something specific in mind |
2022-02-16 17:00:00 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:39f9:90f7:922:e73b) |
2022-02-16 17:01:11 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:5b51:ad88:49b8:7439) (Quit: WeeChat 2.8) |
2022-02-16 17:01:45 +0100 | neurocyte0917090 | (~neurocyte@IP-185117069029.dynamic.medianet-world.de) |
2022-02-16 17:01:45 +0100 | neurocyte0917090 | (~neurocyte@IP-185117069029.dynamic.medianet-world.de) (Changing host) |
2022-02-16 17:01:45 +0100 | neurocyte0917090 | (~neurocyte@user/neurocyte) |
2022-02-16 17:01:48 +0100 | <maerwald> | k``: the caller can force the values themselves before passing them to compare, but they can't "add laziness" |
2022-02-16 17:01:51 +0100 | <vektor> | Yesno. I'd like to have another look at the topic of WYAH from another perspective generally. The thing that's currently bugging me specifically is quite deep in the woods of HM inference, but I'm not sure picking up a book on that topic will do me much good. |
2022-02-16 17:02:53 +0100 | <maerwald> | you can basically just provide a `compareStrict` function |
2022-02-16 17:03:27 +0100 | <[exa]> | vektor: HM-style inference is a quite general topic, TypingHaskellInHaskell is a pretty good reading material, and there's SPJ's youtube video from zurihac with an explanation of what is _actually_ happening there nowadays |
2022-02-16 17:05:07 +0100 | <vektor> | Ohhh, that sounds promising. I'm sure they're not going to answer my research question for me, but will hopefully get me closer. Thanks! |
2022-02-16 17:05:12 +0100 | Sgeo | (~Sgeo@user/sgeo) |
2022-02-16 17:05:18 +0100 | <[exa]> | vektor: perhaps try defining "deep in the woods" |
2022-02-16 17:06:09 +0100 | <geekosaur> | that might be difficult if they're still kinda weak on H-M |
2022-02-16 17:06:48 +0100 | dextaa_ | (~dextaa@user/dextaa) (Quit: The Lounge - https://thelounge.chat) |
2022-02-16 17:06:57 +0100 | <geekosaur> | but unless you know Prolog THIH is probably the place to start |
2022-02-16 17:07:04 +0100 | <[exa]> | honestly I wasn't able to fully grasp the wiki page on H-M before actually crunching through THIH |
2022-02-16 17:07:43 +0100 | <k``> | maerwald: In this case I can either compare both parameters strictly and cheaply, or perform two comparisons to possibly short-circuit on the 1st parameter. I'm wondering whether the ability to short-circuit is worth baking in for the tiny added cost, or if the expectation is that comparisons will be strict and nothing that use `Ord` will benefit. |
2022-02-16 17:07:59 +0100 | <[exa]> | true about Prolog though. :] |
2022-02-16 17:08:12 +0100 | <vektor> | Well, if you must know: I've got me a language that is quite a bit like haskell superficially, but with way different semantics. Those semantics are only really valid in some cases. The boundary of that validity looks an awful lot like typing rules to me. The thing I'm not sure about is whether what Stephen Diehl describes as "Milner’s |
2022-02-16 17:08:13 +0100 | <vektor> | observation was that since the typing rules map uniquely onto syntax, we can in effect run the |
2022-02-16 17:08:13 +0100 | <vektor> | typing rules “backwards”" - whether that assumption of HM holds for my semantics. |
2022-02-16 17:08:28 +0100 | <vektor> | I know a few bits about prolog, how can that help? |
2022-02-16 17:08:45 +0100 | <geekosaur> | because H-M is something like 10 lines of Prolog |
2022-02-16 17:08:53 +0100 | <vektor> | Oh wow. Hit me. |
2022-02-16 17:08:54 +0100 | <geekosaur> | concise and elegant |
2022-02-16 17:09:24 +0100 | <[exa]> | and with some care, you can run it in reverse there too. :] |
2022-02-16 17:10:15 +0100 | coot | (~coot@213.134.190.95) (Quit: coot) |
2022-02-16 17:10:15 +0100 | <geekosaur> | https://wiki.haskell.org/BayHac2014/Prolog see also https://www.youtube.com/playlist?list=PLrsRTzxpFRaxw8-ioimlFmgJsOLf9kJmB |
2022-02-16 17:10:23 +0100 | <merijn> | vektor: Has someone already made the obligatory TaPL comment? |
2022-02-16 17:10:58 +0100 | <geekosaur> | waitr that's Haskell. the YT one should have the Prolog version |
2022-02-16 17:11:02 +0100 | <vektor> | merijn Nope, what's that? |
2022-02-16 17:13:34 +0100 | <merijn> | @where tapl |
2022-02-16 17:13:34 +0100 | <lambdabot> | "Types and Programming Languages" by Benjamin C. Pierce in 2002-02-01 at <https://www.cis.upenn.edu/~bcpierce/tapl/> |
2022-02-16 17:13:53 +0100 | <merijn> | vektor: The de facto standard book on type theory and how to implement your own stuff |
2022-02-16 17:14:16 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) |
2022-02-16 17:14:21 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) (Remote host closed the connection) |
2022-02-16 17:14:28 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) |
2022-02-16 17:14:35 +0100 | <merijn> | I would consider it a mandatory read if you are trying to implement any form of type system that isn't absolutely trivial |
2022-02-16 17:14:44 +0100 | <vektor> | Ohhh, I actually stumbled upon that myself. Sadly the Uni library doesn't have it, it seems. |
2022-02-16 17:14:50 +0100 | <merijn> | (maybe not the whole book, but certainly, like, the first half) |
2022-02-16 17:14:51 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) (Remote host closed the connection) |
2022-02-16 17:15:30 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) |
2022-02-16 17:16:01 +0100 | <vektor> | Dang. Considering this whole type system is more of a side show, I'll have to see if I can dedicate as much time to it as you imply is required. |
2022-02-16 17:16:22 +0100 | gaff | (~gaff@49.207.229.178) |
2022-02-16 17:18:25 +0100 | <merijn> | The amount of time depends on how fancy you wanna be |
2022-02-16 17:18:35 +0100 | <merijn> | And how much you already know/understand |
2022-02-16 17:18:46 +0100 | <merijn> | The first chapters you can just breeze through in a weekend |
2022-02-16 17:20:08 +0100 | <vektor> | Not at all fancy. It's a research project. I understand, well, more or less a haskell user's understanding + some WYAH. I don't need much polymorphism or recursive types or stuff like that though, so that should help. |
2022-02-16 17:20:10 +0100 | <[exa]> | vektor: one nice exercise with random new type systems&languages is to see whether you can prove some "good" properties about them, such as existence of principial types, decidability of inference and type inhabitation problems, some kind of soundness, etc. |
2022-02-16 17:20:34 +0100 | <merijn> | vektor: Recursive types is where it gets really hairy, yeah |
2022-02-16 17:20:45 +0100 | <merijn> | the bits before that are fairly easy |
2022-02-16 17:21:49 +0100 | <vektor> | @[e |
2022-02-16 17:21:49 +0100 | <lambdabot> | Maybe you meant: wn v rc pl let id do bf @ ? . |
2022-02-16 17:22:00 +0100 | <vektor> | oops |
2022-02-16 17:22:52 +0100 | <vektor> | [exa] , I see. Honestly, I'm not even sure how to ask these questions right now, let alone answer them. I suppose if I want to do this, I'll have to read some more. :D |
2022-02-16 17:24:01 +0100 | <vektor> | For anyone interested who's just reading, the zurihac video is unlisted: https://www.youtube.com/watch?v=x3evzO8O9e8 |
2022-02-16 17:27:15 +0100 | bahamas | (~lucian@84.232.140.52) |
2022-02-16 17:27:48 +0100 | merijn | (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
2022-02-16 17:28:27 +0100 | <k``> | Seems like a decent argument for making comparisons strict is so that `maxBound >= overflowError` is not `True`. |
2022-02-16 17:28:30 +0100 | mbuf | (~Shakthi@122.162.72.100) (Quit: Leaving) |
2022-02-16 17:29:52 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:39f9:90f7:922:e73b) (Remote host closed the connection) |
2022-02-16 17:30:46 +0100 | lbseale | (~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer) |
2022-02-16 17:32:59 +0100 | CiaoSen | (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Quit: CiaoSen) |
2022-02-16 17:34:07 +0100 | wonko | (~wjc@user/wonko) |
2022-02-16 17:36:03 +0100 | CiaoSen | (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-02-16 17:37:36 +0100 | alMalsamo | (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds) |
2022-02-16 17:39:56 +0100 | alMalsamo | (~alMalsamo@gateway/tor-sasl/almalsamo) |
2022-02-16 17:40:04 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-02-16 17:44:12 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
2022-02-16 17:47:53 +0100 | <vektor> | [exa], looking at SPJ's talk for 15 minutes, he explains principal types and uniqueness of substitutions. I think this might be a challenge for my semantics. |
2022-02-16 17:50:11 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-16 17:51:00 +0100 | lavaman | (~lavaman@98.38.249.169) (Read error: Connection reset by peer) |
2022-02-16 17:51:00 +0100 | awschnap | (~lavaman@98.38.249.169) |
2022-02-16 17:51:14 +0100 | zincy_ | (~zincy@host86-160-236-152.range86-160.btcentralplus.com) |
2022-02-16 17:51:26 +0100 | <jackson99> | should I be using Network.HTTP.Conduit for downloading html files? and can it automatically follow redirects? |
2022-02-16 17:52:11 +0100 | zincy_ | (~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Remote host closed the connection) |
2022-02-16 17:52:55 +0100 | <janus> | jackson99: you could use curl/wget like ghcup: https://github.com/haskell/ghcup-hs/blob/c2a8d39fb423be7ed998f9169c57db87fa1e1cf8/lib/GHCup/Downlo… |
2022-02-16 17:53:17 +0100 | <janus> | then you won't be depending on foundation/memory/cryptonite |
2022-02-16 17:53:56 +0100 | <maerwald> | jackson99: those libraries depend on haskell-tls, which is a non-audited crypto implementation in a garbage collected language |
2022-02-16 17:53:57 +0100 | awschnap | (~lavaman@98.38.249.169) (Read error: Connection reset by peer) |
2022-02-16 17:54:06 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-16 17:54:10 +0100 | <jackson99> | by fundation you mean Haskell Foundation? why is it problematic to depend on their libraries? |
2022-02-16 17:54:31 +0100 | <maerwald> | no, foundation is a library |
2022-02-16 17:55:51 +0100 | <janus> | jackson99: https://github.com/haskell-foundation |
2022-02-16 17:56:24 +0100 | <maerwald> | there is https://hackage.haskell.org/package/http-client-openssl but no http-conduit that depends on it... you could write one though |
2022-02-16 17:56:55 +0100 | acidjnk | (~acidjnk@p200300d0c71d3b97a07e6bc3219efcf6.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
2022-02-16 17:57:08 +0100 | gdown | (~gavin@h69-11-150-165.kndrid.broadband.dynamic.tds.net) |
2022-02-16 17:57:34 +0100 | <maerwald> | if you don't need very precise error handling, shelling out to curl is the gold standard (cabal does that too) |
2022-02-16 17:57:51 +0100 | <maerwald> | and works with esoteric proxy configurations |
2022-02-16 17:58:18 +0100 | <jackson99> | hmm ok. I didn't know Network.HTTP.Conduit was considered problematic. I'm still not sure why that is the case |
2022-02-16 17:59:15 +0100 | <jackson99> | I don't care about cryptography, I am just scraping a website :P |
2022-02-16 17:59:41 +0100 | <maerwald> | then you can use whatever you want I guess |
2022-02-16 17:59:44 +0100 | <jackson99> | FWIW simpleHttp is supposed to follow 10 redirects, but for some reason, that isn't working |
2022-02-16 17:59:44 +0100 | <vektor> | jackson99, I believe it boils down to "don't roll your own crypto"-ish. Basically, the guys who built that library built their own crypto. Don't depend on that crypto to do anything sensible, because no one's checked. |
2022-02-16 17:59:54 +0100 | <vektor> | But for scraping, that should be fine. |
2022-02-16 18:00:34 +0100 | <vektor> | @maerwald - I believe that's basically what you meant, right? |
2022-02-16 18:00:34 +0100 | <lambdabot> | Unknown command, try @list |
2022-02-16 18:00:45 +0100 | <maerwald> | yeah |
2022-02-16 18:01:04 +0100 | <maerwald> | and that no one knows whether Haskell is even a good language for crypto |
2022-02-16 18:02:04 +0100 | <vektor> | I've found it quite useful for some light cryptoanalysis. ;) I haven't done any cryptography in it though, and I can understand the doubts. |
2022-02-16 18:02:04 +0100 | yauhsien_ | (~yauhsien@61-231-32-166.dynamic-ip.hinet.net) |
2022-02-16 18:02:44 +0100 | Null_A | (~null_a@c-98-210-133-39.hsd1.ca.comcast.net) |
2022-02-16 18:06:01 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-16 18:06:16 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-16 18:06:24 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-16 18:06:39 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-16 18:06:46 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-16 18:07:01 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-16 18:07:09 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-16 18:07:21 +0100 | yauhsien_ | (~yauhsien@61-231-32-166.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
2022-02-16 18:07:23 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-16 18:07:30 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-16 18:07:40 +0100 | ChanServ | +o litharge |
2022-02-16 18:07:41 +0100 | litharge | +b *!*@98.38.249.169 |
2022-02-16 18:07:51 +0100 | litharge | -o litharge |
2022-02-16 18:09:05 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection) |
2022-02-16 18:12:29 +0100 | cosimone | (~user@93-47-229-224.ip115.fastwebnet.it) |
2022-02-16 18:12:51 +0100 | Pickchea | (~private@user/pickchea) (Ping timeout: 252 seconds) |
2022-02-16 18:19:43 +0100 | Akiva | (~Akiva@user/Akiva) |
2022-02-16 18:21:36 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds) |
2022-02-16 18:22:12 +0100 | wonko | (~wjc@user/wonko) (Ping timeout: 252 seconds) |
2022-02-16 18:22:36 +0100 | Alex_test | (~al_test@94.233.240.208) (Ping timeout: 240 seconds) |
2022-02-16 18:22:49 +0100 | perohig | (~user@85.255.234.173) |
2022-02-16 18:22:50 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) (Remote host closed the connection) |
2022-02-16 18:23:00 +0100 | AlexNoo | (~AlexNoo@94.233.240.208) (Ping timeout: 240 seconds) |
2022-02-16 18:23:17 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) |
2022-02-16 18:23:21 +0100 | AlexZenon | (~alzenon@94.233.240.208) (Ping timeout: 250 seconds) |
2022-02-16 18:24:15 +0100 | perohig | (~user@85.255.234.173) (Remote host closed the connection) |
2022-02-16 18:27:24 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
2022-02-16 18:27:45 +0100 | <dminuoso> | 17:59:54 vektor | But for scraping, that should be fine. |
2022-02-16 18:28:21 +0100 | <dminuoso> | That depends entirely. The direction of dataflow is usually irrelevant, it's a matter of attack scenarios you conceive. |
2022-02-16 18:29:27 +0100 | <dminuoso> | In the sense of, do you worry about a) a third party breaking confidentialy of the dataflow, or b) breaking integrity (say manipulating values to either let you process incorrect data, or worse, inject intentionally malformed data to attack your client side components) |
2022-02-16 18:29:44 +0100 | <vektor> | Of course. Hence "should". There's some scenarios you could imagine. Generally, the scraped data might be malicious, but when scraping you usually don't trust the data you gather that much anyway; you treat it as data. Don't run javascript you scraped off stackoverflow. |
2022-02-16 18:29:47 +0100 | cosimone | (~user@93-47-229-224.ip115.fastwebnet.it) (Quit: i really have to scratch my right butt cheek this time, sorry) |
2022-02-16 18:31:11 +0100 | <dminuoso> | For most TLS needs at least you can get by with just nginx at least. Say if you want to use `http-client-tls`, instead you can just use `http-client` against a locally running nginx offloading TLS to openssl or libressl. |
2022-02-16 18:32:22 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:e573:86f9:f0cd:7c1f) |
2022-02-16 18:32:27 +0100 | <dminuoso> | All our API authentication is offloaded onto `libsodium` which is just a thin FFI binding. For most needs I think there's simple and adequate solutions. |
2022-02-16 18:34:19 +0100 | <dminuoso> | I find it a bit bizarre that this package in particular has so few users. |
2022-02-16 18:35:05 +0100 | <dminuoso> | How do other folks verify credentials in public interfaces? Do they just do naive string comparisons? Rely on cryptonite? I dont know |
2022-02-16 18:35:24 +0100 | bahamas | (~lucian@84.232.140.52) (Ping timeout: 240 seconds) |
2022-02-16 18:36:30 +0100 | alp | (~alp@user/alp) (Ping timeout: 252 seconds) |
2022-02-16 18:36:56 +0100 | zincy_ | (~zincy@host86-160-236-152.range86-160.btcentralplus.com) |
2022-02-16 18:37:41 +0100 | ChanServ | +o litharge |
2022-02-16 18:37:42 +0100 | litharge | -bo *!*@98.38.249.169 litharge |
2022-02-16 18:38:29 +0100 | alp | (~alp@user/alp) |
2022-02-16 18:38:44 +0100 | merijn | (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) |
2022-02-16 18:38:55 +0100 | Null_A | (~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Remote host closed the connection) |
2022-02-16 18:40:42 +0100 | <janus> | dminuoso: we use happstack: https://hackage.haskell.org/package/happstack-server-7.7.1.2/docs/src/Happstack.Server.Auth.html#b… |
2022-02-16 18:42:03 +0100 | <janus> | looks like it just uses naive string comparison :O |
2022-02-16 18:42:43 +0100 | yauhsien_ | (~yauhsien@61-231-32-166.dynamic-ip.hinet.net) |
2022-02-16 18:42:53 +0100 | AlexZenon | (~alzenon@94.233.240.208) |
2022-02-16 18:43:43 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-02-16 18:43:43 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-02-16 18:43:43 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-02-16 18:45:15 +0100 | <dminuoso> | Uh yeah.. |
2022-02-16 18:45:17 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2022-02-16 18:46:23 +0100 | <janus> | hackage uses md5 for hashing passwords, too :) |
2022-02-16 18:46:35 +0100 | gdown | (~gavin@h69-11-150-165.kndrid.broadband.dynamic.tds.net) (Remote host closed the connection) |
2022-02-16 18:47:33 +0100 | yauhsien_ | (~yauhsien@61-231-32-166.dynamic-ip.hinet.net) (Ping timeout: 272 seconds) |
2022-02-16 18:48:38 +0100 | <shapr> | Anyone using Haskell at work? I'm trying to popularize #haskell-in-depth as roughly #haskell-at-work |
2022-02-16 18:48:49 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 272 seconds) |
2022-02-16 18:48:50 +0100 | cosimone | (~user@93-47-229-224.ip115.fastwebnet.it) |
2022-02-16 18:48:51 +0100 | <dminuoso> | hackage is just dry-aged. people pay top dollar for this if its edible. |
2022-02-16 18:48:53 +0100 | <dsal> | I'm using Haskell at Work™ |
2022-02-16 18:49:03 +0100 | cosimone | (~user@93-47-229-224.ip115.fastwebnet.it) (Remote host closed the connection) |
2022-02-16 18:49:03 +0100 | <dminuoso> | shapr: Yes, we use haskell at work too. |
2022-02-16 18:49:20 +0100 | <dminuoso> | A fair chunk of our ISP core services run on it now. :) |
2022-02-16 18:49:24 +0100 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection) |
2022-02-16 18:49:34 +0100 | <dsal> | Lazy routers |
2022-02-16 18:49:40 +0100 | <shapr> | I've been asking about postgresql-simple and postgresql-query and etc in #haskell-in-depth |
2022-02-16 18:49:46 +0100 | cosimone | (~user@93-47-229-224.ip115.fastwebnet.it) |
2022-02-16 18:49:47 +0100 | <shapr> | general every day production stuff |
2022-02-16 18:49:53 +0100 | <dsal> | I didn't know about this. |
2022-02-16 18:49:59 +0100 | <shapr> | COME ON OVER! |
2022-02-16 18:49:59 +0100 | <vektor> | Does "I get paid to do the research I do, and I decided to write my code in haskell" count? |
2022-02-16 18:50:16 +0100 | <shapr> | vektor: if you have questions like "how do I talk to this db?" then yes |
2022-02-16 18:50:18 +0100 | <dsal> | I like postgresql-simple. Got to understand it pretty well at the last thing. New places uses persistent which I don't like very much, but don't dislike enough to fight about. |
2022-02-16 18:50:53 +0100 | <shapr> | I have srs complaints about persistent |
2022-02-16 18:50:55 +0100 | <vektor> | Oh F no. I had to work with DBs in python once and hated every second. I'm not touching a DB in haskell. :D |
2022-02-16 18:51:08 +0100 | <sm> | seems not the best name shapr... people go plenty deep here also |
2022-02-16 18:51:18 +0100 | <shapr> | sm: what would you suggest? |
2022-02-16 18:51:22 +0100 | <dminuoso> | vektor: I find it's quite comfortable with postgresql-simple |
2022-02-16 18:51:38 +0100 | <dsal> | shapr: we have the maintainer, so at least when something goes wrong, there's motivation to fix it. :) |
2022-02-16 18:51:43 +0100 | <dminuoso> | You just have to accept that SQL is a really nice, referentially transparent, pure language that is really well suited to its specific domain |
2022-02-16 18:51:59 +0100 | <shapr> | dsal: oh good! |
2022-02-16 18:52:31 +0100 | <dsal> | If I figure out a SQL query, I have to figure out how to write it in esqueleto so it compiles. This is one of those things where I think the *idea* makes sense, but I'd rather write tests. |
2022-02-16 18:54:16 +0100 | cosimone | (~user@93-47-229-224.ip115.fastwebnet.it) (Remote host closed the connection) |
2022-02-16 18:54:31 +0100 | <sm> | also there's a book with that title. What about, hmm.. #haskell-production, #haskell-at-work, #haskell-practical, #haskell-real-world... ? Though I'm not sure how you'd distinguish it enough from here |
2022-02-16 18:54:33 +0100 | <shapr> | We have the squeal author at work, I like squeal very much, but the packages I work on are using postgresql-simple and postgresql-query |
2022-02-16 18:54:33 +0100 | <dminuoso> | dsal: I recently proposed an idea that we should perhaps solve at a hackathon |
2022-02-16 18:54:40 +0100 | <dsal> | The terrible place I was working with terrible people wanted to use persistent and I decided against it because I could do better without out. They really liked the migrations as almost the most important part, but the docs said not to use them in production. Place I'm at now uses persistent but has never used the migrations because that's just an insane idea. |
2022-02-16 18:54:48 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) |
2022-02-16 18:55:02 +0100 | <dminuoso> | If we had an TH-time SQL parser that decodes into a relational algebra and fits it back into say opaleye or esqueleto, you could have the benefits of both worlds... |
2022-02-16 18:55:05 +0100 | <dminuoso> | Or so I hope at least |
2022-02-16 18:55:24 +0100 | <dminuoso> | That could be the missing link |
2022-02-16 18:55:49 +0100 | <dsal> | That's kind of similar to that one postgres lib that compiles queries in TH (or QQ) right? |
2022-02-16 18:55:51 +0100 | <dminuoso> | I dont think people really crave for esqueleto for the obscure type trickeries or absurd combinators - they just care for type system guarantees that everythign works out |
2022-02-16 18:56:22 +0100 | <dsal> | Right, it makes sense. I'm going to eventually have to understand it, I fear. |
2022-02-16 18:56:43 +0100 | <dsal> | I don't really have a desire to learn a language that is exactly the same as another language, but with different words. |
2022-02-16 18:57:02 +0100 | shapr | (~user@pool-173-73-44-186.washdc.fios.verizon.net) (Read error: Connection reset by peer) |
2022-02-16 18:57:45 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) |
2022-02-16 18:58:11 +0100 | <dminuoso> | dsal: Ive not heard of that library, which one are you thinking of? |
2022-02-16 18:58:20 +0100 | shapr | (~user@pool-173-73-44-186.washdc.fios.verizon.net) |
2022-02-16 18:58:50 +0100 | <dsal> | https://hackage.haskell.org/package/postgresql-typed |
2022-02-16 18:59:22 +0100 | <dsal> | It's a neat idea, until you need a postgres server running with the current schema in order for compilation to succeed. |
2022-02-16 18:59:24 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 240 seconds) |
2022-02-16 19:01:42 +0100 | <dminuoso> | Ah it talks to the database at compile time? |
2022-02-16 19:01:48 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
2022-02-16 19:01:55 +0100 | <dsal> | Yeah. It's a neat idea, for sure. |
2022-02-16 19:01:57 +0100 | <dminuoso> | No I'd be fine with it using schema information, that's a compromise I'd be willing to make. |
2022-02-16 19:02:02 +0100 | vicfred | (~vicfred@user/vicfred) |
2022-02-16 19:02:04 +0100 | <dminuoso> | But perhaps that library can be repurposed to that end |
2022-02-16 19:02:15 +0100 | <dminuoso> | Thanks! Ill bookmark this |
2022-02-16 19:02:29 +0100 | <dminuoso> | Ah but I have a theory how this works |
2022-02-16 19:02:46 +0100 | <dminuoso> | Im guessing it doesnt just get the schema, but rather interrogate postgresql about the resulting types of that query |
2022-02-16 19:03:20 +0100 | <dsal> | Yeah, that's what it implies in the docs. So it can verify if a value of a type that's passed in matches what can be coerced in the DB. |
2022-02-16 19:03:35 +0100 | <dminuoso> | The coercion rules are an interesting topic |
2022-02-16 19:04:15 +0100 | <dminuoso> | So if we did the type inference ourselves, we not only have to mimic all coercion rules that occur in the database, but there's some design decisions how that would work out with the Haskell type system |
2022-02-16 19:04:46 +0100 | vicfred_ | (~vicfred@user/vicfred) |
2022-02-16 19:05:18 +0100 | alx741 | (~alx741@181.199.42.143) |
2022-02-16 19:07:35 +0100 | vicfred | (~vicfred@user/vicfred) (Ping timeout: 256 seconds) |
2022-02-16 19:07:53 +0100 | merijn | (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
2022-02-16 19:09:05 +0100 | vicfred_ | (~vicfred@user/vicfred) (Client Quit) |
2022-02-16 19:09:33 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) |
2022-02-16 19:09:49 +0100 | alx741 | (~alx741@181.199.42.143) (Read error: Connection reset by peer) |
2022-02-16 19:11:32 +0100 | zeenk | (~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5) (Quit: Konversation terminated!) |
2022-02-16 19:14:27 +0100 | waleee | (~waleee@h-98-128-229-110.NA.cust.bahnhof.se) (Ping timeout: 252 seconds) |
2022-02-16 19:15:34 +0100 | econo | (uid147250@user/econo) |
2022-02-16 19:18:35 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:e573:86f9:f0cd:7c1f) (Remote host closed the connection) |
2022-02-16 19:24:32 +0100 | chele | (~chele@user/chele) (Remote host closed the connection) |
2022-02-16 19:26:48 +0100 | alx741 | (~alx741@157.100.197.240) |
2022-02-16 19:27:43 +0100 | cfricke | (~cfricke@user/cfricke) |
2022-02-16 19:29:51 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 252 seconds) |
2022-02-16 19:30:37 +0100 | alx741 | (~alx741@157.100.197.240) (Read error: Connection reset by peer) |
2022-02-16 19:34:56 +0100 | waleee | (~waleee@h-98-128-229-110.NA.cust.bahnhof.se) |
2022-02-16 19:35:03 +0100 | gaff | (~gaff@49.207.229.178) (Remote host closed the connection) |
2022-02-16 19:37:25 +0100 | cosimone | (~user@93-47-229-224.ip115.fastwebnet.it) |
2022-02-16 19:38:46 +0100 | vysn | (~vysn@user/vysn) |
2022-02-16 19:39:49 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:e573:86f9:f0cd:7c1f) |
2022-02-16 19:41:47 +0100 | simendsjo | (~user@84.211.91.241) |
2022-02-16 19:43:00 +0100 | cfricke | (~cfricke@user/cfricke) (Ping timeout: 240 seconds) |
2022-02-16 19:45:49 +0100 | zaquest | (~notzaques@5.130.79.72) (Read error: Connection reset by peer) |
2022-02-16 19:46:15 +0100 | zaquest | (~notzaques@5.130.79.72) |
2022-02-16 19:48:25 +0100 | alx741 | (~alx741@157.100.197.240) |
2022-02-16 19:48:39 +0100 | <slack1256> | On haskell-stack, the stack.yml can specify git repository. By default it downloads the whole repo, where something like `git clone --depth 1` sufice. Any way to instruct it to do that? |
2022-02-16 19:48:42 +0100 | _ht | (~quassel@231-169-21-31.ftth.glasoperator.nl) |
2022-02-16 19:50:05 +0100 | <sm> | don't know slack1256, but the manual will say |
2022-02-16 19:50:42 +0100 | bahamas | (~lucian@84.232.140.52) |
2022-02-16 19:51:44 +0100 | <slack1256> | Searched the manual, did not find it. |
2022-02-16 19:52:11 +0100 | CiaoSen | (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
2022-02-16 19:53:38 +0100 | <dminuoso> | janus: https://github.com/Happstack/happstack-server/pull/73 |
2022-02-16 19:53:49 +0100 | <dminuoso> | Weird that Im fixing software I dont even use, but this just gives me allergies. |
2022-02-16 19:54:13 +0100 | MajorBiscuit | (~MajorBisc@wlan-145-94-218-48.wlan.tudelft.nl) (Ping timeout: 240 seconds) |
2022-02-16 19:54:41 +0100 | alx741 | (~alx741@157.100.197.240) (Read error: Connection reset by peer) |
2022-02-16 19:56:19 +0100 | dyeplexer | (~dyeplexer@user/dyeplexer) (Ping timeout: 256 seconds) |
2022-02-16 19:56:31 +0100 | <sm> | slack1256: not supported, then |
2022-02-16 19:57:22 +0100 | <slack1256> | ;_; ok |
2022-02-16 19:57:55 +0100 | simendsjo | (~user@84.211.91.241) (Remote host closed the connection) |
2022-02-16 19:58:32 +0100 | <janus> | dminuoso: you do use it though, because hackage uses happstack ;) |
2022-02-16 19:58:43 +0100 | gaff | (~gaff@49.207.229.178) |
2022-02-16 19:58:52 +0100 | <janus> | dminuoso: thanks for the PR! let's see what stepcut says. but it may take a while |
2022-02-16 19:59:04 +0100 | <dminuoso> | Dont care, I've done my duty. :P |
2022-02-16 20:00:36 +0100 | Alex_test | (~al_test@94.233.240.208) |
2022-02-16 20:02:50 +0100 | doyougnu | (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) |
2022-02-16 20:03:36 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 240 seconds) |
2022-02-16 20:03:54 +0100 | cosimone | (~user@93-47-229-224.ip115.fastwebnet.it) (Remote host closed the connection) |
2022-02-16 20:03:59 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-16 20:04:39 +0100 | simendsjo | (~user@84.211.91.241) |
2022-02-16 20:04:53 +0100 | <EvanR> | fire and forget pull request |
2022-02-16 20:05:05 +0100 | <EvanR> | the best |
2022-02-16 20:05:32 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) |
2022-02-16 20:09:27 +0100 | max22- | (~maxime@2a01cb0883359800c7c4fab2785758f5.ipv6.abo.wanadoo.fr) (Ping timeout: 252 seconds) |
2022-02-16 20:10:00 +0100 | cynomys | (~cynomys@user/cynomys) |
2022-02-16 20:10:36 +0100 | deadmarshal | (~deadmarsh@95.38.231.90) (Ping timeout: 240 seconds) |
2022-02-16 20:12:59 +0100 | alx741 | (~alx741@157.100.197.240) |
2022-02-16 20:14:57 +0100 | finsternis | (~X@23.226.237.192) (Ping timeout: 252 seconds) |
2022-02-16 20:15:53 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-16 20:15:54 +0100 | emf | (~emf@c-73-97-137-43.hsd1.wa.comcast.net) |
2022-02-16 20:16:09 +0100 | gaff | (~gaff@49.207.229.178) (Ping timeout: 256 seconds) |
2022-02-16 20:17:31 +0100 | notzmv | (~zmv@user/notzmv) |
2022-02-16 20:18:19 +0100 | Pickchea | (~private@user/pickchea) |
2022-02-16 20:19:04 +0100 | alx741 | (~alx741@157.100.197.240) (Read error: Connection reset by peer) |
2022-02-16 20:27:54 +0100 | cosimone | (~user@93-47-229-224.ip115.fastwebnet.it) |
2022-02-16 20:29:28 +0100 | c209e6dc-4d76-47 | (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) |
2022-02-16 20:29:48 +0100 | vysn | (~vysn@user/vysn) (Ping timeout: 240 seconds) |
2022-02-16 20:30:07 +0100 | c209e6dc-4d76-47 | (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) (Client Quit) |
2022-02-16 20:30:42 +0100 | c209e6dc-4d76-47 | (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) |
2022-02-16 20:30:43 +0100 | romesrf | (~romes@44.190.189.46.rev.vodafone.pt) (Quit: WeeChat 3.4) |
2022-02-16 20:30:59 +0100 | yauhsien_ | (~yauhsien@61-231-32-166.dynamic-ip.hinet.net) |
2022-02-16 20:32:43 +0100 | c209e6dc-4d76-47 | (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) (Client Quit) |
2022-02-16 20:33:19 +0100 | c209e6dc-4d76-47 | (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) |
2022-02-16 20:33:34 +0100 | c209e6dc-4d76-47 | (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) (Client Quit) |
2022-02-16 20:34:09 +0100 | c209e6dc-4d76-47 | (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) |
2022-02-16 20:35:24 +0100 | yauhsien_ | (~yauhsien@61-231-32-166.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
2022-02-16 20:41:30 +0100 | <sm> | dminuoso++ |
2022-02-16 20:41:35 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 250 seconds) |
2022-02-16 20:41:44 +0100 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2022-02-16 20:42:39 +0100 | <geekosaur> | slack1256, one reason it might not be supported is it complicates things if you decide to pin it to a different commit later |
2022-02-16 20:44:28 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-02-16 20:44:28 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-02-16 20:44:28 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-02-16 20:44:29 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2022-02-16 20:44:32 +0100 | Lord_of_Life_ | Lord_of_Life |
2022-02-16 20:46:25 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-16 20:47:33 +0100 | pgib | (~textual@173.38.117.90) |
2022-02-16 20:48:17 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
2022-02-16 20:48:40 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2022-02-16 20:48:59 +0100 | max22- | (~maxime@2a01cb088335980088882a515c4c342d.ipv6.abo.wanadoo.fr) |
2022-02-16 20:49:36 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
2022-02-16 20:51:03 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 272 seconds) |
2022-02-16 20:54:41 +0100 | emf | (~emf@c-73-97-137-43.hsd1.wa.comcast.net) (Quit: emf) |
2022-02-16 20:55:15 +0100 | coot | (~coot@213.134.190.95) |
2022-02-16 20:56:23 +0100 | slack1256 | (~slack1256@191.125.99.202) (Ping timeout: 256 seconds) |
2022-02-16 20:56:50 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) |
2022-02-16 20:59:00 +0100 | bahamas | (~lucian@84.232.140.52) (Ping timeout: 240 seconds) |
2022-02-16 21:02:43 +0100 | _ht | (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection) |
2022-02-16 21:02:50 +0100 | zincy_ | (~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Remote host closed the connection) |
2022-02-16 21:05:01 +0100 | juhp | (~juhp@128.106.188.82) (Ping timeout: 240 seconds) |
2022-02-16 21:06:47 +0100 | juhp | (~juhp@128.106.188.82) |
2022-02-16 21:07:58 +0100 | pavonia | (~user@user/siracusa) |
2022-02-16 21:08:07 +0100 | sander | (~sander@user/sander) (Quit: So long! :)) |
2022-02-16 21:15:43 +0100 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) |
2022-02-16 21:16:23 +0100 | <EvanR> | pattern1, stack up a bunch of commands in a list (backwards), later reverse the list. pattern 2, stack up a bunch of DList appends, later flatten this to get a forward list. It's said 2nd one is more efficient, but is it really night and day? |
2022-02-16 21:16:31 +0100 | <EvanR> | having trouble seeing the quantum jump in performance |
2022-02-16 21:17:34 +0100 | <EvanR> | or is it a constant factor improvement |
2022-02-16 21:17:35 +0100 | dextaa_ | (~dextaa@user/dextaa) |
2022-02-16 21:18:21 +0100 | <EvanR> | how is the final application of DList not like reverse |
2022-02-16 21:18:48 +0100 | <monochrom> | Certainly the only difference is a constant factor. But I don't know why either one is faster. |
2022-02-16 21:19:08 +0100 | <maerwald> | why do I always understand 'filter' such that `filter (not . predicate)`? |
2022-02-16 21:19:10 +0100 | <geekosaur> | seems to me like they should be equivalent; it's trying to build the list "right side around" that would be slower than either, because it has to traverse the list each time |
2022-02-16 21:19:36 +0100 | <EvanR> | yeah that's bad |
2022-02-16 21:19:48 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Ping timeout: 240 seconds) |
2022-02-16 21:20:08 +0100 | <monochrom> | It could also be super-sensitive to what the compiler does. Even though we only have one compiler. :) |
2022-02-16 21:20:27 +0100 | <geekosaur> | my thought is it depends on how you use the list afterward |
2022-02-16 21:20:51 +0100 | <EvanR> | so DList is really better when you have a mixture of associativities, not when it's just a bunch of appends |
2022-02-16 21:22:11 +0100 | <EvanR> | or no one knows xD |
2022-02-16 21:22:33 +0100 | <EvanR> | maerwald, me too |
2022-02-16 21:22:35 +0100 | <monochrom> | It can be easily tested. But that still doesn't answer why. :) |
2022-02-16 21:23:49 +0100 | <maerwald> | EvanR: pretty annoying, because boolean bugs are nasty anyway... I could never trust myself to get this one right :D |
2022-02-16 21:24:03 +0100 | <monochrom> | Unless you just accept either "GHC super-optimizes list node allocation" or "GHC super-optimizes function composition" depending on the benchmark results. |
2022-02-16 21:24:40 +0100 | <EvanR> | GHC, optimize my code from O(n) to O(1) |
2022-02-16 21:25:08 +0100 | <geekosaur> | you joke. list fusion is more or less that |
2022-02-16 21:25:11 +0100 | machinedgod | (~machinedg@24.105.81.50) (Remote host closed the connection) |
2022-02-16 21:25:19 +0100 | <geekosaur> | of course list fusion can itself be black magic |
2022-02-16 21:26:54 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2022-02-16 21:27:07 +0100 | <EvanR> | maerwald, burn upon your brain the rewrite rule "filter" => "keep" |
2022-02-16 21:27:17 +0100 | <EvanR> | through all history |
2022-02-16 21:27:24 +0100 | <monochrom> | I basically did that. |
2022-02-16 21:27:36 +0100 | <monochrom> | I have long given up on "meaningful names". |
2022-02-16 21:28:24 +0100 | <monochrom> | My philosophy on names is mnemonics and hamming distance. |
2022-02-16 21:28:27 +0100 | AlexNoo | (~AlexNoo@94.233.240.208) |
2022-02-16 21:28:33 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-16 21:28:54 +0100 | <monochrom> | Mnemonics implies that insider jokes are OK. Yes. |
2022-02-16 21:28:57 +0100 | <EvanR> | since all math is made out of sets of nameless atoms, makes sense |
2022-02-16 21:29:13 +0100 | <maerwald> | EvanR: maybe it's a sign of negative thinking :p ...we don't keep stuff, we throw it away |
2022-02-16 21:29:32 +0100 | <monochrom> | Negative thinking is valuable too. :) |
2022-02-16 21:29:36 +0100 | <maerwald> | coding = deleting code |
2022-02-16 21:29:44 +0100 | <geekosaur> | just name everything f, g', h''' |
2022-02-16 21:29:48 +0100 | <monochrom> | filter your code >:) |
2022-02-16 21:30:00 +0100 | <xerox> | decoding = let in code |
2022-02-16 21:30:02 +0100 | <EvanR> | just juggling zillions of sets of • here |
2022-02-16 21:30:05 +0100 | <monochrom> | Ah that is why I added the hamming distance part. :) |
2022-02-16 21:30:55 +0100 | <EvanR> | when you start coding, you don't have a blank file, you have the set of all programs, and you do minus to narrow it down |
2022-02-16 21:31:15 +0100 | <EvanR> | which is why it usually doesn't work |
2022-02-16 21:31:44 +0100 | whatsupdoc | (uid509081@id-509081.hampstead.irccloud.com) |
2022-02-16 21:32:03 +0100 | <monochrom> | Is that Schrödiger's cat programming? :) |
2022-02-16 21:32:19 +0100 | ubert1 | (~Thunderbi@p200300ecdf0994b46944f41320f0055f.dip0.t-ipconnect.de) (Remote host closed the connection) |
2022-02-16 21:33:02 +0100 | <EvanR> | no... that would be limited to all programs whose norm is 1 |
2022-02-16 21:33:23 +0100 | <EvanR> | which I guess might be better |
2022-02-16 21:33:23 +0100 | machinedgod | (~machinedg@24.105.81.50) (Remote host closed the connection) |
2022-02-16 21:33:32 +0100 | <EvanR> | linear logic for all of you |
2022-02-16 21:34:20 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2022-02-16 21:35:38 +0100 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2022-02-16 21:36:59 +0100 | <monochrom> | Every program can be renormalized to have norm 1. This is known as the Church-Feynman thesis. |
2022-02-16 21:37:17 +0100 | <monochrom> | Step 1. Read the code very carefully. |
2022-02-16 21:37:23 +0100 | <monochrom> | Step 2. Think very hard. |
2022-02-16 21:37:43 +0100 | <monochrom> | Step 3. Write down "the norm is 1". |
2022-02-16 21:37:44 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) |
2022-02-16 21:37:57 +0100 | deadmarshal | (~deadmarsh@95.38.231.90) |
2022-02-16 21:38:12 +0100 | `2jt | (~jtomas@130.red-88-22-46.staticip.rima-tde.net) (Ping timeout: 240 seconds) |
2022-02-16 21:38:33 +0100 | alp | (~alp@user/alp) (Ping timeout: 252 seconds) |
2022-02-16 21:42:42 +0100 | acidjnk | (~acidjnk@p200300d0c7212778fd46ee7c5cdf4a6b.dip0.t-ipconnect.de) |
2022-02-16 21:42:59 +0100 | deadmarshal | (~deadmarsh@95.38.231.90) (Ping timeout: 272 seconds) |
2022-02-16 21:43:34 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-02-16 21:47:02 +0100 | sander | (~sander@user/sander) |
2022-02-16 21:47:49 +0100 | zincy_ | (~zincy@host86-160-236-152.range86-160.btcentralplus.com) |
2022-02-16 21:48:39 +0100 | finsternis | (~X@23.226.237.192) |
2022-02-16 21:48:49 +0100 | romesrf | (~romes@44.190.189.46.rev.vodafone.pt) |
2022-02-16 21:49:57 +0100 | wombat875 | (~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Ping timeout: 272 seconds) |
2022-02-16 21:50:35 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 272 seconds) |
2022-02-16 21:52:49 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-02-16 21:54:41 +0100 | zincy_ | (~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Remote host closed the connection) |
2022-02-16 21:57:03 +0100 | <jle`> | hm, am i missing a thing that's simpler than liftA2 + sequence? |
2022-02-16 21:57:20 +0100 | <jle`> | (a -> b -> m c) -> f a -> f b -> m (f c) |
2022-02-16 21:58:19 +0100 | emf | (~emf@2620:10d:c090:400::5:dcea) |
2022-02-16 21:58:32 +0100 | <[exa]> | zipWithM ? |
2022-02-16 21:58:54 +0100 | <monochrom> | I think liftA2+sequence is right. traverse is liftA1+sequence. :) |
2022-02-16 21:59:11 +0100 | <[exa]> | also called `traverse2` in util |
2022-02-16 22:00:58 +0100 | <[exa]> | other than that, I'd say liftA2 + sequence is probably the way to go, at least until traverse2 gets to base :] |
2022-02-16 22:01:02 +0100 | vektor | (~vektor@IP-094046083008.dynamic.medianet-world.de) (Quit: Client closed) |
2022-02-16 22:01:26 +0100 | AlexNoo | (~AlexNoo@94.233.240.208) (Quit: Leaving) |
2022-02-16 22:02:18 +0100 | AlexNoo | (~AlexNoo@94.233.240.208) |
2022-02-16 22:04:48 +0100 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4) |
2022-02-16 22:05:58 +0100 | <jle`> | thanks :) |
2022-02-16 22:06:22 +0100 | <jle`> | i guess it happens non-often enough to not warrant having a name |
2022-02-16 22:07:43 +0100 | <EvanR> | Data.Aviary.Birds would disagree |
2022-02-16 22:08:00 +0100 | <[exa]> | O_o |
2022-02-16 22:10:27 +0100 | <jackson99> | is this expected behavior? it seems like a bug to me, or at least a very peculiar behavior |
2022-02-16 22:10:46 +0100 | <jackson99> | scrapHtmlWith (texts "span") "<body><span><span>test</span></span>" |
2022-02-16 22:10:53 +0100 | <jackson99> | Just ["test","test"] |
2022-02-16 22:11:14 +0100 | <jackson99> | this is scalpel package |
2022-02-16 22:11:44 +0100 | <EvanR> | you gotta ask where there are "really" two spans there or not |
2022-02-16 22:11:50 +0100 | <EvanR> | whether |
2022-02-16 22:12:04 +0100 | <jackson99> | there are. it took me a while to figure out what was going on |
2022-02-16 22:12:29 +0100 | <juri_> | hmm. is there a good way to have HSpec+QuickCheck generate lists for me of a given length? I've tried generating them in the 'Gen' monad in my property test, but when a test is falsified, hspec doesn't display the Gen'd list. |
2022-02-16 22:13:09 +0100 | <[exa]> | jackson99: sounds like it is documented ("possibly nested" note here: https://hackage.haskell.org/package/scalpel-0.6.1/docs/Text-HTML-Scalpel.html#v:htmls ) |
2022-02-16 22:14:05 +0100 | ub | (~Thunderbi@193.32.127.226) |
2022-02-16 22:15:24 +0100 | ubert | (~Thunderbi@p548c8cd6.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2022-02-16 22:15:24 +0100 | ub | ubert |
2022-02-16 22:15:40 +0100 | zeenk | (~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5) |
2022-02-16 22:16:06 +0100 | acidjnk_new | (~acidjnk@p200300d0c721277849d4c4c73f702833.dip0.t-ipconnect.de) |
2022-02-16 22:17:10 +0100 | doyougnu | (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Ping timeout: 272 seconds) |
2022-02-16 22:17:55 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-02-16 22:19:09 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-02-16 22:19:10 +0100 | <EvanR> | iinm blaze uses something like DList to generate output. It's called blaze so it must be fast (ignoring the previous discussion of meaningless names) |
2022-02-16 22:19:31 +0100 | acidjnk | (~acidjnk@p200300d0c7212778fd46ee7c5cdf4a6b.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
2022-02-16 22:20:03 +0100 | Guest82 | (~Guest82@h-5-150-236-164.A980.priv.bahnhof.se) |
2022-02-16 22:20:07 +0100 | <jackson99> | I don't mind the nested behavior if elements are different, for example I like that it would get text from <span..><b>text</b></span>. but if the same element is nested multiple times, it does not seem useful to repeat same string multiple times |
2022-02-16 22:20:33 +0100 | <jackson99> | not sure how to handle this. plain nub doesn't work, strings are different |
2022-02-16 22:20:39 +0100 | <[exa]> | juri_: if you really need to generate lists of precise size, you might need to pass the size in the type parameter for Arbitrary. Other than that, you could generate non-empty lists of random size and use `take n $ repeat theList` as the value to be tested |
2022-02-16 22:20:51 +0100 | <jackson99> | recursively get into span element by element, and get text (not texts)? |
2022-02-16 22:24:38 +0100 | <[exa]> | juri_: re displaying, it normally uses the Show instance, right? |
2022-02-16 22:25:23 +0100 | <juri_> | [exa]: i think it uses show, but it only tries to display the arguments to the property test, not the results of using generators in the test. |
2022-02-16 22:30:53 +0100 | <[exa]> | hm, would you have a code sample? |
2022-02-16 22:31:07 +0100 | ub | (~Thunderbi@86.107.21.10) |
2022-02-16 22:31:48 +0100 | ubert | (~Thunderbi@193.32.127.226) (Ping timeout: 240 seconds) |
2022-02-16 22:31:49 +0100 | ub | ubert |
2022-02-16 22:32:05 +0100 | <juri_> | https://github.com/Haskell-Things/HSlice/pull/61/files#diff-8bac62059346f8dc8b7487fd7cccc3d877486e… |
2022-02-16 22:33:00 +0100 | <juri_> | radians and dists in that function are generated. if that function is falsified, it will only display the two arguments, centerX and centerY. |
2022-02-16 22:33:44 +0100 | w1n5t0n | (~w1n5t0n@cpc83645-brig20-2-0-cust528.3-3.cable.virginm.net) |
2022-02-16 22:33:51 +0100 | <[exa]> | uuuh what line in that diff? |
2022-02-16 22:34:39 +0100 | <juri_> | 641? |
2022-02-16 22:35:03 +0100 | <[exa]> | none such there, you sure it's the right link? |
2022-02-16 22:35:05 +0100 | <w1n5t0n> | Hey all, is it possible to compile a stack project so that it can be loaded on GHCi (not Stack GHCi) on other computers running the same OS? |
2022-02-16 22:35:24 +0100 | <w1n5t0n> | I'm running a workshop on live coding music using a Haskell library, but I don't want to put participants through the process of having to build it on their machines |
2022-02-16 22:35:27 +0100 | <juri_> | generally any of the prop_ functions that are actually using the Gen monad show what i'm talking about tho. radians and dists are not shown, but the arguments to the function are. |
2022-02-16 22:35:56 +0100 | <w1n5t0n> | The library has to be loaded in a GHCi session, which is what we'll be using for the workshop |
2022-02-16 22:36:04 +0100 | fendor_ | (~fendor@91.141.40.92.wireless.dyn.drei.com) (Remote host closed the connection) |
2022-02-16 22:36:05 +0100 | <juri_> | [exa]: it's a large diff. github breaks stuff. *sigh* |
2022-02-16 22:36:09 +0100 | <[exa]> | :( |
2022-02-16 22:36:40 +0100 | <[exa]> | juri_: link a file in a tree if you can, that's less breaky |
2022-02-16 22:38:59 +0100 | <[exa]> | w1n5t0n: if everything fails you may try packing it up in a docker |
2022-02-16 22:40:09 +0100 | <juri_> | https://github.com/Haskell-Things/HSlice/pull/61/commits/6a315af1568d15ff4b2829f97af2e6e0f602cfa8#… |
2022-02-16 22:40:25 +0100 | <w1n5t0n> | [exa] yeah I thought of that, but I'd like to avoid it if possible because it may complicate things with the realtime audio aspect of it |
2022-02-16 22:40:27 +0100 | <juri_> | hmm. at what point do github links get long enough to be spam... ;) |
2022-02-16 22:40:46 +0100 | mikoto-chan | (~mikoto-ch@213.177.151.239) |
2022-02-16 22:40:49 +0100 | <w1n5t0n> | To begin with I was just wondering if it's possible to take a bunch of .hi and .o files that have been compiled and load them to a GHCi session |
2022-02-16 22:43:13 +0100 | <[exa]> | juri_: uuh yes I see the problem. perhaps `label` could help to get the info out? https://hackage.haskell.org/package/QuickCheck-2.14.2/docs/Test-QuickCheck.html#v:label |
2022-02-16 22:44:45 +0100 | <geekosaur> | w1n5t0n, stack generally wants to keep tight control of those and in particular any libraries it needs will be hidden inside of stack |
2022-02-16 22:46:14 +0100 | <w1n5t0n> | geekosaur I get that stack keeps everything under wraps behind the scenes, but after running `stack build` I can locate and extract the .hi and .o files that were built. Assuming that they were built for the right OS/architecture, shouldn't they be loadable by a bare instance of GHCi? |
2022-02-16 22:46:21 +0100 | <juri_> | [exa]: but isn't this for reporting for successful cases? i just want things to show when i have a fail. |
2022-02-16 22:46:35 +0100 | <[exa]> | w1n5t0n: hm. perhaps "podman" (less isolation than docker) or the "singularity" containers would do? |
2022-02-16 22:46:54 +0100 | <geekosaur> | w1n5t0n, again, only if they don't have any dependencies |
2022-02-16 22:47:03 +0100 | <sm> | w1n5t0n: I think you'd be fighting the tools and it wouldn't be worth it. stack's raison d'etre is to ensure things like stack ghci are repeatable |
2022-02-16 22:47:13 +0100 | <juri_> | [exa]: maybe counterexample is more correct? |
2022-02-16 22:47:18 +0100 | <jackson99> | I am going insane trying to parse this. ^_^ |
2022-02-16 22:47:30 +0100 | <geekosaur> | well, you could dig those out too but you'd have to re-package them to use them and build your own package database so ghc can find them |
2022-02-16 22:47:45 +0100 | <geekosaur> | major pain and almost certainly not worth it |
2022-02-16 22:48:28 +0100 | <w1n5t0n> | Yes I see what you mean, in my particular case there's also a dependency on an external C library so that would complicate things even more |
2022-02-16 22:48:37 +0100 | <w1n5t0n> | Ugh this is turning out to be a bigger problem than I thought it would |
2022-02-16 22:48:40 +0100 | alp | (~alp@user/alp) |
2022-02-16 22:48:42 +0100 | <jackson99> | scrapHtmlWith (texts "span") "<span class= \"one-click-content css-nnyc96 e1q3nk1v1\"><span class= \"luna-label italic\">Slang</span>.</span> <span class= \"one-click-content css-nnyc96 e1q3nk1v1\">to complain; gripe: <span class=\"luna-example italic\">They complained about the service, then about the bill.</span></span>" |
2022-02-16 22:48:44 +0100 | <jackson99> | Just ["Slang.","to complain; gripe: They complained about the service, then about the bill.","They complained about the service, then about the bill.","Slang"] |
2022-02-16 22:49:31 +0100 | ubert | (~Thunderbi@86.107.21.10) (Quit: ubert) |
2022-02-16 22:49:38 +0100 | <w1n5t0n> | It's also tricky asking people to install Docker because, at least if they're on Windows, they may have to tinker with BIOS settings |
2022-02-16 22:49:45 +0100 | <sm> | w1n5t0n: would having them run in a cloud-based image be an option ? there are some tools like that |
2022-02-16 22:50:30 +0100 | <[exa]> | juri_: you can attach label only if it comes out false, right? |
2022-02-16 22:51:25 +0100 | <w1n5t0n> | sm the way the system works is that 1) emacs sends some code to GHCi as a string -> 2) GHCi runs that code and uses it to write some .wav files to disk -> 3) it then sends a message through UDP to another local process (SuperCollider) with the path of those files -> 4) it waits for a UDP response |
2022-02-16 22:52:06 +0100 | <sm> | cool but kind of the nightmare scenario for a just-works deployment to new users :) |
2022-02-16 22:52:14 +0100 | <w1n5t0n> | Exactly :( |
2022-02-16 22:52:25 +0100 | <sm> | I think a cloud image could work, it will require some fancy setup on your part though |
2022-02-16 22:52:38 +0100 | <sm> | there's something built in to vs code, but I'm not familiar |
2022-02-16 22:53:05 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:e573:86f9:f0cd:7c1f) (Remote host closed the connection) |
2022-02-16 22:53:06 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-02-16 22:53:06 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-02-16 22:53:06 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-02-16 22:53:17 +0100 | <w1n5t0n> | How could it work if the files that GHCi produces need to be availably locally and at minimum delay? |
2022-02-16 22:53:22 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) (Remote host closed the connection) |
2022-02-16 22:53:31 +0100 | <w1n5t0n> | i.e. downloading them every time wouldn't be an option |
2022-02-16 22:53:50 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) |
2022-02-16 22:54:00 +0100 | <sm> | hmm.. indeed you'd need the cloud image to send sound output to local machine somehow, which is an added wrinkle |
2022-02-16 22:54:26 +0100 | <sm> | I bet it's doable, but not simple |
2022-02-16 22:54:43 +0100 | <sm> | what can you assume about users' expertise / machines ? |
2022-02-16 22:54:48 +0100 | <w1n5t0n> | Would it be realistic to prepare a folder for each major OS that contains a GHCi binary, all the dependencies required, and a little boot script to set everything up and point GHCi to the right locations? |
2022-02-16 22:55:27 +0100 | <[exa]> | how long does it take for stack to build the thing? |
2022-02-16 22:55:49 +0100 | <w1n5t0n> | I need to assume they're complete beginners and may be running any of Windows, Mac, Linux |
2022-02-16 22:55:53 +0100 | <sm> | yes, I think that might be the best option. Perhaps prepared for each platform with github CI |
2022-02-16 22:56:04 +0100 | <w1n5t0n> | Not too long, but downloading everything required takes quite a while |
2022-02-16 22:56:31 +0100 | <sm> | or.. docker. Doesn't it work on windows yet ? |
2022-02-16 22:56:32 +0100 | <w1n5t0n> | And if I have 10+ people downloading it at the same time on the same wifi connection I can only assume it will take much longer |
2022-02-16 22:56:53 +0100 | <[exa]> | sm: the last time I checked, docker on windows just spawned linux VM in the background |
2022-02-16 22:57:10 +0100 | <w1n5t0n> | Docker may work but I think it'll take some significant setting up as well |
2022-02-16 22:57:16 +0100 | <davean> | w1n5t0n: Realtime streaming is low latency. |
2022-02-16 22:57:23 +0100 | <sm> | multipass is much more lightweight, might be an alternative (installs ubuntu vms, easy to use) |
2022-02-16 22:57:46 +0100 | <[exa]> | +1 ^ |
2022-02-16 22:57:52 +0100 | <juri_> | [exa]: hmm. no idea how no do that. i'm now working with Property, but Expectation. |
2022-02-16 22:58:21 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 272 seconds) |
2022-02-16 22:58:59 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) (Ping timeout: 272 seconds) |
2022-02-16 22:59:43 +0100 | <w1n5t0n> | davean unfortunately not low enough for my purposes, there's a tight loop where every half a second or so a few tens of wav files need to be ready and loaded |
2022-02-16 22:59:52 +0100 | Flonk | (~Flonk@vps-zap441517-1.zap-srv.com) (Quit: Ping timeout (120 seconds)) |
2022-02-16 23:00:04 +0100 | <w1n5t0n> | I.e. it's not a case of streaming one audio file and playing it out the speakers |
2022-02-16 23:00:14 +0100 | Flonk | (~Flonk@vps-zap441517-1.zap-srv.com) |
2022-02-16 23:00:23 +0100 | <w1n5t0n> | sm thanks for the suggestion, looking at it now |
2022-02-16 23:00:33 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:fd00:8e82:1c4b:4222) |
2022-02-16 23:00:34 +0100 | <davean> | Half a second is far longer than streaming |
2022-02-16 23:00:41 +0100 | <davean> | w1n5t0n: theres a reason you can stream FPS games |
2022-02-16 23:01:02 +0100 | <davean> | Streaming latency is often < 60ms |
2022-02-16 23:01:26 +0100 | <sm> | I think you want some kind of standard vm you can rely on, otherwise you'll be debugging weird failures on half the machines at the start of every class |
2022-02-16 23:01:38 +0100 | <sm> | vm/image |
2022-02-16 23:02:00 +0100 | <davean> | Why produce waves instead of feed it directly into the audio out buffer? |
2022-02-16 23:02:32 +0100 | <w1n5t0n> | davean this particular case is a bit more complex than video games, the resulting wavs don't hold audio that's meant to be played out the speakers but instead control signals that are meant to be indexed by SuperCollider's own synth engine |
2022-02-16 23:02:33 +0100 | <jackson99> | sorry for flooding the channel earlier. here's the issue I am having on paste. I am thinking about filtering every element that is subset of some other element, but that isn't ideal, and could give me incorrect string for some other html. hopefully there's a way to handle this in Scalpel. https://paste.tomsmeding.com/1vCO1ZjN |
2022-02-16 23:02:59 +0100 | <davean> | w1n5t0n: Ok, but it still produces an audio stream out |
2022-02-16 23:03:20 +0100 | <davean> | And unlike video games, its open loop, not closed |
2022-02-16 23:03:23 +0100 | <davean> | so I think its a LOT simpler |
2022-02-16 23:03:31 +0100 | <w1n5t0n> | SuperCollider does, yes, so in theory I could stream that output |
2022-02-16 23:03:48 +0100 | mikoto-chan | (~mikoto-ch@213.177.151.239) (Ping timeout: 240 seconds) |
2022-02-16 23:04:02 +0100 | <w1n5t0n> | Unfortunately I don't personally know how to set any of that up in time for the workshop which is in 3 days |
2022-02-16 23:04:26 +0100 | <[exa]> | juri_: I guess you'd need to make a labeled version of the (-/>) |
2022-02-16 23:04:36 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:fd00:8e82:1c4b:4222) (Ping timeout: 240 seconds) |
2022-02-16 23:04:53 +0100 | <sm> | ha, 3 days you say |
2022-02-16 23:05:01 +0100 | acidjnk_new | (~acidjnk@p200300d0c721277849d4c4c73f702833.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
2022-02-16 23:05:03 +0100 | <[exa]> | like, manually check the equality, label if false, finally run the `shouldNotBe` |
2022-02-16 23:05:40 +0100 | <[exa]> | w1n5t0n: ask everyone to install vmware or virtualbox or something and throw around a small ubuntu VM, that must work :D |
2022-02-16 23:06:55 +0100 | <monochrom> | Yikes, that's kinda last resort, it's much more stuff to download and much longer installation time... |
2022-02-16 23:06:56 +0100 | <w1n5t0n> | sm it seems that multipass needs to use VirtualBox on Windows 10 Home edition, in that case how is it different than using just VirtualBox straight? |
2022-02-16 23:07:16 +0100 | <w1n5t0n> | I could distribute the image around on a USB drive, hopefully that may speed things up |
2022-02-16 23:07:29 +0100 | <sm> | w1n5t0n: under the hood I have no idea, but the main thing it's an easy and standard install page for all three platforms |
2022-02-16 23:07:50 +0100 | <w1n5t0n> | My initial thinking was to get everyone to boot of a live USB running some Ubuntu or something, but I found out that macbooks don't allow that apparently |
2022-02-16 23:08:54 +0100 | acidjnk | (~acidjnk@p200300d0c724284749d4c4c73f702833.dip0.t-ipconnect.de) |
2022-02-16 23:09:28 +0100 | <sm> | if they all install that, you can be pretty sure to get them all running the same ubuntu environment. Now you can (quickest) write a standard bash setup script that will run in that, or (harder, saves build time for them) find out how to make and publish a custom image they can pull |
2022-02-16 23:10:18 +0100 | <sm> | with the 3 day deadline, I'd pursue the bash script first |
2022-02-16 23:11:11 +0100 | <w1n5t0n> | Yes that's probably what I'll do, my only concern is that I've heard it can be tricky to get realtime audio to work well inside VirtualBox VMs when on a Linux host |
2022-02-16 23:11:43 +0100 | <w1n5t0n> | So if that's a problem I might need to have them install and run SuperCollider locally and then get the VM to talk to that |
2022-02-16 23:12:04 +0100 | <sm> | yes, try it on your own machine, set up your app in the vm, make sure it plays sound. My experience with multipass makes me think it might just work |
2022-02-16 23:12:55 +0100 | <w1n5t0n> | It just finished installing so I'll try it now, thanks! |
2022-02-16 23:13:00 +0100 | <sm> | (I'm on a mac) |
2022-02-16 23:13:08 +0100 | <sm> | let us know how it goes |
2022-02-16 23:16:46 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Remote host closed the connection) |
2022-02-16 23:16:51 +0100 | acidjnk_new | (~acidjnk@pd9e0bb2f.dip0.t-ipconnect.de) |
2022-02-16 23:17:09 +0100 | acidjnk | (~acidjnk@p200300d0c724284749d4c4c73f702833.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
2022-02-16 23:17:58 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) |
2022-02-16 23:19:13 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:fd00:8e82:1c4b:4222) |
2022-02-16 23:24:14 +0100 | Null_A | (~null_a@2601:645:8700:2290:890f:d3a0:aab0:f3f) |
2022-02-16 23:24:28 +0100 | Null_A | (~null_a@2601:645:8700:2290:890f:d3a0:aab0:f3f) (Remote host closed the connection) |
2022-02-16 23:24:43 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) |
2022-02-16 23:25:25 +0100 | wolfshappen | (~waff@irc.furworks.de) (Ping timeout: 256 seconds) |
2022-02-16 23:29:27 +0100 | Guest82 | (~Guest82@h-5-150-236-164.A980.priv.bahnhof.se) (Quit: Client closed) |
2022-02-16 23:29:35 +0100 | <juri_> | [exa]: yuck, that means i'd need to use different ones in different situations. :/ |
2022-02-16 23:30:39 +0100 | BrokenClutch | (~pioneer@2804:d41:c291:0:6129:66a9:49aa:83e7) |
2022-02-16 23:30:52 +0100 | <BrokenClutch> | I remembered my password!!!!! |
2022-02-16 23:31:03 +0100 | <juri_> | Oh no! |
2022-02-16 23:31:24 +0100 | w1n5t0n | (~w1n5t0n@cpc83645-brig20-2-0-cust528.3-3.cable.virginm.net) (Ping timeout: 256 seconds) |
2022-02-16 23:31:27 +0100 | <BrokenClutch> | me back to ask dumb questions :D |
2022-02-16 23:33:42 +0100 | <monochrom> | You should write down your password and hide it in a framed photo. |
2022-02-16 23:34:36 +0100 | <monochrom> | (That was a plot device in a TV show I just watched. The person hid an important signed contract there decades ago, then forgot that it was hid there.) |
2022-02-16 23:34:46 +0100 | <monochrom> | err, was hidden! Damn English. |
2022-02-16 23:35:29 +0100 | <davean> | Why would you hide a signed contract? That seems weird. |
2022-02-16 23:36:11 +0100 | <davean> | contrived really |
2022-02-16 23:36:58 +0100 | <monochrom> | Haha I don't know. And the person didn't think in terms of hiding, he was actually thinking "this is a prominent place! I will never forget! It's the family portrait, right? RIGHT?" |
2022-02-16 23:37:49 +0100 | cosimone | (~user@93-47-229-224.ip115.fastwebnet.it) (Remote host closed the connection) |
2022-02-16 23:38:51 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
2022-02-16 23:41:40 +0100 | <texasmynsted> | There are many options... "https://github.com/psibi/shell-conduit" looks like what I am looking for but it says it is _experimental_. . . |
2022-02-16 23:42:22 +0100 | vicfred | (~vicfred@user/vicfred) |
2022-02-16 23:42:27 +0100 | <texasmynsted> | I want to replace some of my shell scripts with Haskell. I would like to take advantage of streams. I see things like Streamly... |
2022-02-16 23:43:46 +0100 | <texasmynsted> | What would you recommend? Shell conduit? Streamly and just find a way to work with the shell from it? |
2022-02-16 23:44:14 +0100 | k8yun | (~k8yun@user/k8yun) |
2022-02-16 23:44:37 +0100 | <texasmynsted> | Streamly has an example that seems to work with the shell -> https://github.com/composewell/streamly-examples/blob/master/examples/CoreUtils.hs |
2022-02-16 23:48:17 +0100 | emf | (~emf@2620:10d:c090:400::5:dcea) (Ping timeout: 240 seconds) |
2022-02-16 23:48:44 +0100 | <sm> | texasmynsted: I'm quite fond of the Cmd system that's part of Shake. You have to build Shake to use it, but then you also have a dependency engine available for your scripts. |
2022-02-16 23:49:23 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2022-02-16 23:49:47 +0100 | <sm> | there's nothing as usable as https://github.com/CZ-NIC/pz AFAIK (someone should try to clone that I think) |
2022-02-16 23:53:56 +0100 | <texasmynsted> | I like shake for making build systems |
2022-02-16 23:54:18 +0100 | Ariakenom | (~Ariakenom@h-82-196-111-63.NA.cust.bahnhof.se) (Read error: Connection reset by peer) |
2022-02-16 23:54:27 +0100 | <davean> | I dislike making build systems |
2022-02-16 23:54:32 +0100 | <texasmynsted> | right. |
2022-02-16 23:54:56 +0100 | <texasmynsted> | I did not consider using shake to make _shell script_ replacements |
2022-02-16 23:54:58 +0100 | emf | (~emf@c-73-97-137-43.hsd1.wa.comcast.net) |
2022-02-16 23:55:11 +0100 | <EvanR> | build systems to build the build systems to ... |
2022-02-16 23:55:21 +0100 | michalz | (~michalz@185.246.204.89) (Remote host closed the connection) |
2022-02-16 23:55:23 +0100 | <texasmynsted> | python in bash? No thank you. |
2022-02-16 23:55:54 +0100 | <monochrom> | Do you prefer making build systems? >:) |
2022-02-16 23:56:08 +0100 | <monochrom> | Err sorry! building make systems! |
2022-02-16 23:56:26 +0100 | w1n5t0n | (~w1n5t0n@cpc83645-brig20-2-0-cust528.3-3.cable.virginm.net) |
2022-02-16 23:56:31 +0100 | thyriaen | (~thyriaen@simnet-nat-pool-185-130-54-167.stargrpns.pp.ua) |
2022-02-16 23:57:23 +0100 | <texasmynsted> | I find in most cases existing build systems work find and are understandable by others. |
2022-02-16 23:57:33 +0100 | <texasmynsted> | s/find/fine/ |
2022-02-16 23:57:50 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2022-02-16 23:59:02 +0100 | Null_A | (~null_a@2601:645:8700:2290:a4fb:481a:7fa9:b909) (Remote host closed the connection) |
2022-02-16 23:59:32 +0100 | <juri_> | [exa]: well, i figgured out how to do what i needed, but it's ugly. I defined a newtype ListOfThree, and gave it an arbitrary instance of fmap ListOfThree $ vector 3 |
2022-02-16 23:59:43 +0100 | <juri_> | [exa]: now i want to throw up a little. |
2022-02-16 23:59:53 +0100 | <maerwald> | texasmynsted: yes, I also think using less powerful build systems is generally better |
2022-02-16 23:59:59 +0100 | thyriaen | (~thyriaen@simnet-nat-pool-185-130-54-167.stargrpns.pp.ua) (Client Quit) |