2021-10-20 00:00:02 +0200 | burnsidesLlama | (~burnsides@dhcp168-039.wadham.ox.ac.uk) |
2021-10-20 00:00:40 +0200 | Midjak | (~Midjak@82-65-111-221.subs.proxad.net) (Quit: This computer has gone to sleep) |
2021-10-20 00:00:45 +0200 | jess | (~jess@libera/staff/jess) (Quit: Lost terminal) |
2021-10-20 00:00:51 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 00:01:10 +0200 | jess | (~jess@libera/staff/jess) |
2021-10-20 00:02:00 +0200 | max22- | (~maxime@2a01cb0883359800342ef13833bd6f3b.ipv6.abo.wanadoo.fr) (Quit: Leaving) |
2021-10-20 00:04:34 +0200 | burnsidesLlama | (~burnsides@dhcp168-039.wadham.ox.ac.uk) (Ping timeout: 260 seconds) |
2021-10-20 00:07:02 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-10-20 00:07:44 +0200 | aln448 | (~aln448@2a00:23c7:3480:b700:fdb9:39e2:1024:88b1) (Quit: Client closed) |
2021-10-20 00:08:09 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection) |
2021-10-20 00:11:00 +0200 | ph88 | (~ph88@2a02:8109:9e00:7e5c::3d56) |
2021-10-20 00:11:57 +0200 | meltedbrain_y2k | (~tekserf@94.73.36.197) (Read error: Connection reset by peer) |
2021-10-20 00:13:56 +0200 | <janus> | mcbride is still active: https://github.com/pigworker |
2021-10-20 00:17:03 +0200 | k60 | (~k60@broadband-95-84-168-218.ip.moscow.rt.ru) (Quit: k60) |
2021-10-20 00:17:07 +0200 | <shapr> | What's the status of GHC on M1 macs? Does anyone know if it's fully supported? |
2021-10-20 00:17:40 +0200 | <shapr> | Is there anything more recent than https://www.haskell.org/ghc/blog/20210309-apple-m1-story.html ? |
2021-10-20 00:17:40 +0200 | <geekosaur> | via llvm only in 8.10.7, to be fully supported in 9.2.1 |
2021-10-20 00:17:41 +0200 | <dsal> | shapr: I was able to build most of my projects. |
2021-10-20 00:17:49 +0200 | <shapr> | dsal: most? |
2021-10-20 00:17:57 +0200 | <shapr> | We have a 500kloc codebase, most worries me |
2021-10-20 00:18:10 +0200 | <dsal> | The latest stack LTS has an older `network` library. I didn't go through and redo them all. |
2021-10-20 00:18:18 +0200 | <dsal> | But my gopro project has all the deps and that one worked. |
2021-10-20 00:18:30 +0200 | <dsal> | /Users/dustin/.local/bin/gopro: Mach-O 64-bit executable arm64 |
2021-10-20 00:19:33 +0200 | <dsal> | `network` was the only thing I tripped up on, and it was already fixed. |
2021-10-20 00:19:39 +0200 | <dsal> | Also, there are a bunch of annoying warnings while stuff builds. |
2021-10-20 00:20:38 +0200 | <dsal> | I just found out I can replace my mac with one that's about the same size, but with 10 cores and 64GB of RAM… |
2021-10-20 00:23:13 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2021-10-20 00:24:49 +0200 | <shapr> | dsal: thanks for the info |
2021-10-20 00:25:28 +0200 | <dsal> | I switched my nix over two days ago to try that, so it's fresh on my mind. :) |
2021-10-20 00:26:26 +0200 | <dsal> | I switched it back, though. It's a little annoying to override `network` just for that. |
2021-10-20 00:28:19 +0200 | <shapr> | dsal: are you using ghc 8.10.7 ? or ghc 9? |
2021-10-20 00:31:35 +0200 | Megant | (megant@user/megant) |
2021-10-20 00:33:31 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) |
2021-10-20 00:33:48 +0200 | Midjak | (~Midjak@82-65-111-221.subs.proxad.net) |
2021-10-20 00:34:05 +0200 | Null_A | (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) (Remote host closed the connection) |
2021-10-20 00:34:19 +0200 | Midjak | (~Midjak@82-65-111-221.subs.proxad.net) (Read error: Connection reset by peer) |
2021-10-20 00:34:39 +0200 | <dsal> | I just ran stack LTS-18.13 |
2021-10-20 00:35:33 +0200 | <dsal> | LTS 18.13 for ghc-8.10.7 |
2021-10-20 00:35:44 +0200 | <dsal> | I may have tried a nightly. I'll do that real quick and see what happens. |
2021-10-20 00:36:38 +0200 | <dsal> | It's downloading 9.0.1… Nothing can go wrong now. |
2021-10-20 00:39:22 +0200 | slack1256 | (~slack1256@45.4.2.52) |
2021-10-20 00:40:00 +0200 | theproffesor | (~theproffe@user/theproffesor) (Ping timeout: 268 seconds) |
2021-10-20 00:42:47 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 00:42:51 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3) |
2021-10-20 00:46:34 +0200 | slack1256 | (~slack1256@45.4.2.52) (Ping timeout: 260 seconds) |
2021-10-20 00:47:47 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
2021-10-20 00:48:20 +0200 | vicfred | (~vicfred@user/vicfred) |
2021-10-20 00:49:18 +0200 | brainfreeze | (~brainfree@2a03:1b20:4:f011::20d) |
2021-10-20 00:51:23 +0200 | ArtVandelayer | (~ArtVandel@ip174-68-147-20.lv.lv.cox.net) (Ping timeout: 264 seconds) |
2021-10-20 00:52:04 +0200 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2021-10-20 00:54:14 +0200 | voldial | (~user@195.179.201.175) (Changing host) |
2021-10-20 00:54:14 +0200 | voldial | (~user@user/voldial) |
2021-10-20 00:57:56 +0200 | tomsmeding | (~tomsmedin@tomsmeding.com) (Ping timeout: 265 seconds) |
2021-10-20 00:58:37 +0200 | beaky | (~beaky@198.211.118.219) (Ping timeout: 252 seconds) |
2021-10-20 00:59:00 +0200 | sprout | (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds) |
2021-10-20 00:59:14 +0200 | quintasan | (~quassel@quintasan.pl) (Ping timeout: 265 seconds) |
2021-10-20 00:59:23 +0200 | Dykam | (Dykam@dykam.nl) (Ping timeout: 265 seconds) |
2021-10-20 00:59:31 +0200 | synthmeat | (~synthmeat@user/synthmeat) (Ping timeout: 268 seconds) |
2021-10-20 00:59:34 +0200 | voldial | (~user@user/voldial) (WeeChat 1.6) |
2021-10-20 01:00:35 +0200 | dsrt^ | (~dsrt@68.101.53.15) |
2021-10-20 01:02:42 +0200 | <shapr> | dsal: is it still downloading? |
2021-10-20 01:04:08 +0200 | sprout | (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
2021-10-20 01:04:30 +0200 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2021-10-20 01:09:04 +0200 | sprout | (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds) |
2021-10-20 01:09:37 +0200 | alzgh | (~alzgh@user/alzgh) (Remote host closed the connection) |
2021-10-20 01:09:57 +0200 | alzgh | (~alzgh@user/alzgh) |
2021-10-20 01:10:02 +0200 | <Cajun> | so im looking into a small project of changing a program from a pretty unorganized mtl stack (abusing a lot of state changing stuff) to some effect system and im wondering which library is the library of choice? fused-effects, polysemy, and freer-simple all look like good options |
2021-10-20 01:11:08 +0200 | <Cajun> | s/?/. |
2021-10-20 01:13:30 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-10-20 01:18:27 +0200 | <oak-> | I think polysemy had some problems with performance in the past (if that is a concern), but I'm not sure if it is already fixed. I think in the past it needed some GHC-patch |
2021-10-20 01:19:05 +0200 | elmoloko | (~Adium@2600:6c64:4a7f:faa6:2863:d742:7416:5b9e) (Quit: Leaving.) |
2021-10-20 01:19:57 +0200 | <ph88> | I have a function [b] -> (Maybe a, [b]) what helper function can i use to keep my function running on [b] (using the output again as input) until i find Nothing and then returning ([Just a], [b]). I don't think i can use a normal foldl' here because the input is determined from the output of previous call |
2021-10-20 01:21:07 +0200 | <geekosaur> | unfoldr? |
2021-10-20 01:23:10 +0200 | sprout | (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
2021-10-20 01:23:49 +0200 | <Cajun> | well what inspired the project was this (https://reasonablypolymorphic.com/blog/porting-to-polysemy/index.html) post, and it seems like a very interesting system. i have no performance concerns (as long as it can still work at ~13fps in a console window, not a high bar) |
2021-10-20 01:27:25 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.) |
2021-10-20 01:27:41 +0200 | synthmeat | (~synthmeat@user/synthmeat) |
2021-10-20 01:27:45 +0200 | sprout | (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds) |
2021-10-20 01:27:54 +0200 | tomsmeding | (~tomsmedin@tomsmeding.com) |
2021-10-20 01:28:29 +0200 | quintasan | (~quassel@quintasan.pl) |
2021-10-20 01:28:41 +0200 | <ph88> | geekosaur, that function looks pretty neat thanks |
2021-10-20 01:36:47 +0200 | hexology | (~hexology@user/hexology) |
2021-10-20 01:39:14 +0200 | sprout | (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
2021-10-20 01:42:01 +0200 | ArtVandelayer | (~ArtVandel@ip174-68-147-20.lv.lv.cox.net) |
2021-10-20 01:42:10 +0200 | beaky | (~beaky@2a03:b0c0:0:1010::1e:a001) |
2021-10-20 01:43:43 +0200 | sprout | (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds) |
2021-10-20 01:43:58 +0200 | sprout | (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
2021-10-20 01:44:13 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-10-20 01:47:16 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer) |
2021-10-20 01:48:49 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-10-20 01:49:01 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 265 seconds) |
2021-10-20 01:49:37 +0200 | pragma- | (~chaos@user/pragmatic-chaos) |
2021-10-20 01:49:41 +0200 | sprout | (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 245 seconds) |
2021-10-20 01:50:06 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
2021-10-20 01:52:29 +0200 | sprout | (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
2021-10-20 01:52:42 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) (Quit: Lost terminal) |
2021-10-20 01:53:10 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) |
2021-10-20 01:54:06 +0200 | pragma- | (~chaos@user/pragmatic-chaos) (Client Quit) |
2021-10-20 01:54:38 +0200 | <dsal> | shapr: oops. it broke because of libs. Got a call. Gonna try again. |
2021-10-20 01:55:35 +0200 | pragma- | (~chaos@user/pragmatic-chaos) |
2021-10-20 01:55:51 +0200 | <dsal> | Oh yes. I remember now. |
2021-10-20 01:55:59 +0200 | <shapr> | dsal: oh? |
2021-10-20 01:56:43 +0200 | <dsal> | Pages of this sort of thing: https://usercontent.irccloud-cdn.com/file/sZpPstHP/errs.png |
2021-10-20 01:56:52 +0200 | ystael | (~ystael@user/ystael) (Ping timeout: 252 seconds) |
2021-10-20 01:58:02 +0200 | sprout | (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds) |
2021-10-20 01:58:31 +0200 | ystael | (~ystael@user/ystael) |
2021-10-20 01:59:39 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 265 seconds) |
2021-10-20 02:01:26 +0200 | <shapr> | dsal: sounds like ghc 9 is not ready on M1 mac? |
2021-10-20 02:01:41 +0200 | <dsal> | Yeah, didn't go well in my attempt. |
2021-10-20 02:02:14 +0200 | <shapr> | so, ghc 8.10.7 on M1 mac, as long as you're using a newer version of networking if stack is involved |
2021-10-20 02:02:36 +0200 | <shapr> | but not yet ghc 9 on M1 mac |
2021-10-20 02:05:40 +0200 | <dsal> | Yeah, I've not had any problem with 8.10.7 |
2021-10-20 02:06:12 +0200 | <dsal> | Other than https://github.com/haskell/network/pull/510 |
2021-10-20 02:07:14 +0200 | unit73e | (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 258 seconds) |
2021-10-20 02:08:25 +0200 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving) |
2021-10-20 02:10:13 +0200 | <geekosaur> | my u7nderstanding is 9.0.1 if it has any support at all is badly broken, and you need a newer 9.2 than the existing prerelease to get a working one |
2021-10-20 02:10:38 +0200 | <geekosaur> | 8.10.7 aside from libs that need updates works, but goes via llvm instead of native code |
2021-10-20 02:11:02 +0200 | <shapr> | geekosaur: thanks for the info |
2021-10-20 02:11:36 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-10-20 02:11:36 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-10-20 02:11:36 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-10-20 02:11:41 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2021-10-20 02:12:06 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
2021-10-20 02:12:35 +0200 | <geekosaur> | they had a lot of trouble getting the new sized stuff working, since apple's aarch64 abi requires things be passed as their actual sizes and not "rounded up" to a word like standard aarch64 or indeed most other abis |
2021-10-20 02:12:42 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-10-20 02:12:59 +0200 | myShoggoth | (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 264 seconds) |
2021-10-20 02:13:35 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 264 seconds) |
2021-10-20 02:13:41 +0200 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2021-10-20 02:14:17 +0200 | myShoggoth | (~myShoggot@97-120-70-214.ptld.qwest.net) |
2021-10-20 02:14:59 +0200 | Lord_of_Life_ | Lord_of_Life |
2021-10-20 02:15:38 +0200 | emf | (~emf@2620:10d:c090:400::5:c0de) (Quit: emf) |
2021-10-20 02:16:14 +0200 | <dsal> | Oh weird. |
2021-10-20 02:23:20 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 258 seconds) |
2021-10-20 02:23:31 +0200 | alx741 | (~alx741@186.178.109.50) (Quit: alx741) |
2021-10-20 02:24:00 +0200 | MQ-17J | (~MQ-17J@8.21.10.23) |
2021-10-20 02:24:11 +0200 | sprout | (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
2021-10-20 02:25:13 +0200 | alx741 | (~alx741@186.178.109.50) |
2021-10-20 02:25:43 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-10-20 02:28:49 +0200 | sprout | (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds) |
2021-10-20 02:30:10 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 260 seconds) |
2021-10-20 02:30:59 +0200 | MQ-17J | (~MQ-17J@8.21.10.23) (Ping timeout: 264 seconds) |
2021-10-20 02:33:54 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
2021-10-20 02:33:59 +0200 | myShoggoth | (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 264 seconds) |
2021-10-20 02:40:39 +0200 | fluffyballoon | (~user@131.93.208.196) |
2021-10-20 02:44:09 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 02:47:55 +0200 | theproffesor | (~theproffe@2601:282:847f:8010::be7d) |
2021-10-20 02:47:55 +0200 | theproffesor | (~theproffe@2601:282:847f:8010::be7d) (Changing host) |
2021-10-20 02:47:55 +0200 | theproffesor | (~theproffe@user/theproffesor) |
2021-10-20 02:49:25 +0200 | kupi | (uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2021-10-20 02:53:47 +0200 | ArtVandelayer | (~ArtVandel@ip174-68-147-20.lv.lv.cox.net) (Ping timeout: 265 seconds) |
2021-10-20 03:06:16 +0200 | acidjnk_new | (~acidjnk@pd9e0b933.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
2021-10-20 03:06:50 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 265 seconds) |
2021-10-20 03:06:55 +0200 | alzgh | (~alzgh@user/alzgh) (Remote host closed the connection) |
2021-10-20 03:08:44 +0200 | alzgh | (~alzgh@user/alzgh) |
2021-10-20 03:09:51 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
2021-10-20 03:10:06 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 258 seconds) |
2021-10-20 03:10:53 +0200 | Guest372 | (~xxx@47.245.54.240) (Remote host closed the connection) |
2021-10-20 03:11:54 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2021-10-20 03:11:59 +0200 | Guest372 | (~xxx@47.245.54.240) |
2021-10-20 03:12:57 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-10-20 03:13:01 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2021-10-20 03:13:06 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2021-10-20 03:14:11 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 264 seconds) |
2021-10-20 03:14:28 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
2021-10-20 03:14:57 +0200 | alzgh | (~alzgh@user/alzgh) (Remote host closed the connection) |
2021-10-20 03:17:46 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
2021-10-20 03:21:30 +0200 | segfaultfizzbuzz | (~segfaultf@135-180-0-138.static.sonic.net) (Ping timeout: 260 seconds) |
2021-10-20 03:22:26 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 260 seconds) |
2021-10-20 03:22:43 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
2021-10-20 03:23:04 +0200 | k60 | (~k60@broadband-95-84-168-218.ip.moscow.rt.ru) |
2021-10-20 03:26:32 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-10-20 03:26:32 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-10-20 03:26:32 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-10-20 03:27:12 +0200 | mmhat | (~mmh@55d45bcb.access.ecotel.net) (Quit: WeeChat 3.3) |
2021-10-20 03:28:13 +0200 | peterhil | (~peterhil@dsl-hkibng32-54fb56-2.dhcp.inet.fi) |
2021-10-20 03:28:14 +0200 | gentauro | (~gentauro@user/gentauro) (Read error: Connection reset by peer) |
2021-10-20 03:28:33 +0200 | gentauro | (~gentauro@user/gentauro) |
2021-10-20 03:30:50 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
2021-10-20 03:30:56 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 245 seconds) |
2021-10-20 03:31:13 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
2021-10-20 03:35:09 +0200 | Cajun | (~Cajun@user/cajun) (Quit: Client closed) |
2021-10-20 03:37:37 +0200 | jespada | (~jespada@2803:9800:9842:7a62:5d33:6404:2aef:9813) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-10-20 03:38:34 +0200 | slack1256 | (~slack1256@45.4.2.52) |
2021-10-20 03:45:53 +0200 | Hima | (~Hima_Bind@49.204.226.177) |
2021-10-20 03:50:34 +0200 | _xor | (~xor@72.49.199.147) (Read error: Connection reset by peer) |
2021-10-20 03:52:23 +0200 | _xor | (~xor@72.49.199.147) |
2021-10-20 03:52:37 +0200 | <Hima> | hi there! I am quiet new here, please let me know if do something against code of conduct, I just want to know if anyone know how can i join #haskell-gsoc channel which is on freenode? I think it's no more on freenode. |
2021-10-20 03:53:21 +0200 | <Axman6> | if it's anywhere, it should be here on libera - have you tried joining #freenode-gsoc? |
2021-10-20 03:53:30 +0200 | <Axman6> | uh, #haskell-gsoc |
2021-10-20 03:53:37 +0200 | <Hima> | no i will join rn |
2021-10-20 03:53:46 +0200 | <Hima> | oh yes i did |
2021-10-20 03:53:57 +0200 | <Axman6> | looks like it's not a thing |
2021-10-20 03:54:05 +0200 | <Hima> | there's no one, and i am the op so i think it's no more the official room |
2021-10-20 03:54:21 +0200 | <Axman6> | yeah it was created by you joining it (I did the same thing) |
2021-10-20 03:54:41 +0200 | xff0x | (~xff0x@2001:1a81:5338:8400:382c:44d1:e85b:95f9) (Ping timeout: 245 seconds) |
2021-10-20 03:55:19 +0200 | <Hima> | haha, but they mentioned to join "There is also a relatively active IRC channel called #haskell-gsoc on freenode where you can ask for help." |
2021-10-20 03:55:37 +0200 | <Axman6> | that was in the before times |
2021-10-20 03:55:52 +0200 | <Hima> | by the way is this Haskell's official server? |
2021-10-20 03:56:09 +0200 | <Hima> | yes, axman6 got it. |
2021-10-20 03:56:20 +0200 | <Axman6> | well, it's where the freenode channel moved, so I guess so... |
2021-10-20 03:56:37 +0200 | xff0x | (~xff0x@2001:1a81:5213:b200:9d6e:5b31:ca1b:5892) |
2021-10-20 03:56:48 +0200 | <Axman6> | I don't know who deems something official |
2021-10-20 03:57:02 +0200 | <Hima> | okay |
2021-10-20 03:57:23 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 264 seconds) |
2021-10-20 04:03:25 +0200 | myShoggoth | (~myShoggot@97-120-85-195.ptld.qwest.net) |
2021-10-20 04:05:03 +0200 | Hima | (~Hima_Bind@49.204.226.177) () |
2021-10-20 04:11:41 +0200 | burnsidesLlama | (~burnsides@dhcp168-039.wadham.ox.ac.uk) |
2021-10-20 04:12:12 +0200 | fluffyballoon | (~user@131.93.208.196) (Ping timeout: 258 seconds) |
2021-10-20 04:12:37 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
2021-10-20 04:17:02 +0200 | burnsidesLlama | (~burnsides@dhcp168-039.wadham.ox.ac.uk) (Ping timeout: 260 seconds) |
2021-10-20 04:17:30 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 260 seconds) |
2021-10-20 04:20:30 +0200 | k60 | (~k60@broadband-95-84-168-218.ip.moscow.rt.ru) (Quit: k60) |
2021-10-20 04:20:38 +0200 | slack1256 | (~slack1256@45.4.2.52) (Ping timeout: 258 seconds) |
2021-10-20 04:20:46 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
2021-10-20 04:27:33 +0200 | myShoggoth | (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 265 seconds) |
2021-10-20 04:35:21 +0200 | <sm> | yes, it's the official IRC channel. there's also a matrix channel, slack channels, etc. |
2021-10-20 04:36:03 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds) |
2021-10-20 04:37:33 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-10-20 04:43:01 +0200 | td_ | (~td@muedsl-82-207-238-089.citykom.de) (Ping timeout: 265 seconds) |
2021-10-20 04:43:05 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2021-10-20 04:43:58 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-10-20 04:44:24 +0200 | td_ | (~td@94.134.91.144) |
2021-10-20 04:45:58 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 260 seconds) |
2021-10-20 04:47:54 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2021-10-20 04:50:03 +0200 | <DigitalKiwi> | in my (github sponsors (1/10x dev gimmick)) contract it says i get 10k/mo for being in the channel but they haven't paid :( been here >10 years so back pay should be substantial if they do! |
2021-10-20 04:50:29 +0200 | <DigitalKiwi> | https://github.com/sponsors/Kiwi/ |
2021-10-20 04:51:51 +0200 | <DigitalKiwi> | in haskell foundation slack too should be living large any day now! |
2021-10-20 04:52:10 +0200 | myShoggoth | (~myShoggot@97-120-85-195.ptld.qwest.net) |
2021-10-20 04:58:03 +0200 | trillp | (~trillp@69.233.98.238) |
2021-10-20 04:58:58 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 258 seconds) |
2021-10-20 05:02:31 +0200 | sprout | (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
2021-10-20 05:03:40 +0200 | lbseale | (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer) |
2021-10-20 05:05:25 +0200 | ArtVandelayer | (~ArtVandel@ip174-68-147-20.lv.lv.cox.net) |
2021-10-20 05:07:24 +0200 | sprout | (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds) |
2021-10-20 05:07:50 +0200 | alx741 | (~alx741@186.178.109.50) (Quit: alx741) |
2021-10-20 05:10:50 +0200 | pragma- | (~chaos@user/pragmatic-chaos) (Bye!) |
2021-10-20 05:13:32 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer) |
2021-10-20 05:13:46 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-10-20 05:14:14 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 05:18:21 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
2021-10-20 05:18:23 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 264 seconds) |
2021-10-20 05:19:10 +0200 | sprout | (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
2021-10-20 05:23:43 +0200 | sprout | (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds) |
2021-10-20 05:27:32 +0200 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2021-10-20 05:33:07 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
2021-10-20 05:35:30 +0200 | falafel | (~falafel@2603-8000-d800-688c-c469-52c4-b20d-779e.res6.spectrum.com) |
2021-10-20 05:36:42 +0200 | stengah | (~stengah@user/stengah) |
2021-10-20 05:39:13 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds) |
2021-10-20 05:48:58 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-10-20 05:54:23 +0200 | myShoggoth | (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 264 seconds) |
2021-10-20 06:03:22 +0200 | sprout | (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
2021-10-20 06:08:01 +0200 | sprout | (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 245 seconds) |
2021-10-20 06:14:33 +0200 | unit73e | (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) |
2021-10-20 06:14:43 +0200 | monochrom | (trebla@216.138.220.146) (Quit: NO CARRIER) |
2021-10-20 06:15:05 +0200 | <conjunctive> | Hi, does anyone have an example on how to parse a 32-bit float in BE from a ByteString with Attoparsec? |
2021-10-20 06:17:11 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-10-20 06:17:11 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-10-20 06:17:11 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-10-20 06:17:52 +0200 | <pavonia> | Workaround: Parse 4 bytes and feed the result to the appropriate Data.Binary.Get function |
2021-10-20 06:18:56 +0200 | fawful | (~guy@c-76-104-217-93.hsd1.wa.comcast.net) (Quit: WeeChat 3.2) |
2021-10-20 06:19:11 +0200 | <pavonia> | conjunctive: Or even better, use https://hackage.haskell.org/package/attoparsec-binary-0.2/docs/Data-Attoparsec-Binary.html |
2021-10-20 06:23:58 +0200 | boxscape_ | (~boxscape_@p54a3581e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2021-10-20 06:24:58 +0200 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) |
2021-10-20 06:26:43 +0200 | <conjunctive> | Hmm I don't see any float-specific functions in attoparsec-binary. I know there's a way to use scientific and convert to a float afterwards, but was hoping to find something more direct. |
2021-10-20 06:26:56 +0200 | [Kalisto] | (~nico@user/kalisto/x-8968079) (Ping timeout: 265 seconds) |
2021-10-20 06:27:19 +0200 | mbuf | (~Shakthi@122.178.207.237) |
2021-10-20 06:29:32 +0200 | monochrom | (trebla@216.138.220.146) |
2021-10-20 06:30:59 +0200 | falafel | (~falafel@2603-8000-d800-688c-c469-52c4-b20d-779e.res6.spectrum.com) (Ping timeout: 264 seconds) |
2021-10-20 06:33:14 +0200 | [Kalisto] | (~nico@user/kalisto/x-8968079) |
2021-10-20 06:33:25 +0200 | coot | (~coot@37.30.48.91.nat.umts.dynamic.t-mobile.pl) |
2021-10-20 06:38:19 +0200 | falafel | (~falafel@2603-8000-d800-688c-c469-52c4-b20d-779e.res6.spectrum.com) |
2021-10-20 06:38:54 +0200 | sprout | (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
2021-10-20 06:39:58 +0200 | trillp | (~trillp@69.233.98.238) () |
2021-10-20 06:44:01 +0200 | sprout | (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 252 seconds) |
2021-10-20 06:45:45 +0200 | <pavonia> | Oh floats, sorry |
2021-10-20 06:46:39 +0200 | <conjunctive> | no worries! appreciate the suggestion :) |
2021-10-20 06:47:37 +0200 | <pavonia> | Looks like Data.Binary just does a casting from Int to Float internally with the read bytes: https://hackage.haskell.org/package/binary-0.10.0.0/docs/src/Data.Binary.FloatCast.html#wordToFloat |
2021-10-20 06:47:56 +0200 | <pavonia> | So it should be easy to adapt this for attoparsec |
2021-10-20 06:54:23 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 264 seconds) |
2021-10-20 07:00:33 +0200 | <dsal> | Man. Amazonka changed a lot. |
2021-10-20 07:00:43 +0200 | <dsal> | The changelog doesn't do it justice. |
2021-10-20 07:03:16 +0200 | NataSa23F | (~KELEBEK@188.119.58.106) |
2021-10-20 07:05:05 +0200 | unit73e | (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 258 seconds) |
2021-10-20 07:08:38 +0200 | aa | (~douglasco@200.146.85.128.static.gvt.net.br) |
2021-10-20 07:08:53 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Quit: ChaiTRex) |
2021-10-20 07:09:25 +0200 | NataSa23F | (~KELEBEK@188.119.58.106) (K-Lined) |
2021-10-20 07:10:40 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2021-10-20 07:11:08 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-10-20 07:11:08 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-10-20 07:11:08 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-10-20 07:11:34 +0200 | sprout | (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
2021-10-20 07:12:23 +0200 | douglascorrea_io | (~douglasco@200.146.85.128.static.gvt.net.br) (Ping timeout: 264 seconds) |
2021-10-20 07:14:17 +0200 | jlamothe | (~jlamothe@198.251.61.229) (Ping timeout: 258 seconds) |
2021-10-20 07:15:46 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
2021-10-20 07:15:49 +0200 | sprout | (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) (Ping timeout: 258 seconds) |
2021-10-20 07:17:35 +0200 | [Kalisto]_ | (~nico@user/kalisto/x-8968079) |
2021-10-20 07:17:38 +0200 | [Kalisto] | (~nico@user/kalisto/x-8968079) (Ping timeout: 260 seconds) |
2021-10-20 07:17:55 +0200 | Hecate | is the proud parent of a newborn library https://github.com/Kleidukos/display/ |
2021-10-20 07:22:19 +0200 | Moyst_ | (~moyst@user/moyst) |
2021-10-20 07:24:10 +0200 | peterhil | (~peterhil@dsl-hkibng32-54fb56-2.dhcp.inet.fi) (Ping timeout: 260 seconds) |
2021-10-20 07:24:43 +0200 | Moyst | (~moyst@user/moyst) (Ping timeout: 252 seconds) |
2021-10-20 07:24:43 +0200 | <awpr> | nice, that sounds like the perfect complement to `portray` |
2021-10-20 07:25:10 +0200 | <awpr> | user-facing, pretty, and not Haskell syntax, vs. developer-facing, pretty, and Haskell syntax |
2021-10-20 07:32:12 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-10-20 07:32:12 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-10-20 07:32:12 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-10-20 07:36:54 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 258 seconds) |
2021-10-20 07:37:50 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2021-10-20 07:38:10 +0200 | remexre | (~nathan@user/remexre) (Quit: WeeChat 3.1) |
2021-10-20 07:38:19 +0200 | remexre | (~nathan@207-153-38-50.fttp.usinternet.com) |
2021-10-20 07:39:06 +0200 | remexre | (~nathan@207-153-38-50.fttp.usinternet.com) (Client Quit) |
2021-10-20 07:39:23 +0200 | remexre | (~remexre@user/remexre) |
2021-10-20 07:40:34 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 07:43:02 +0200 | Cajun | (~Cajun@user/cajun) |
2021-10-20 07:45:10 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-10-20 07:49:17 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-10-20 07:54:02 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 260 seconds) |
2021-10-20 07:55:48 +0200 | mei | (~mei@user/mei) |
2021-10-20 08:00:52 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
2021-10-20 08:01:20 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2021-10-20 08:02:40 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2021-10-20 08:09:58 +0200 | fendor | (~fendor@91.141.32.154.wireless.dyn.drei.com) |
2021-10-20 08:13:17 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 08:13:37 +0200 | slowButPresent | (~slowButPr@user/slowbutpresent) (Quit: leaving) |
2021-10-20 08:18:06 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-10-20 08:21:46 +0200 | falafel | (~falafel@2603-8000-d800-688c-c469-52c4-b20d-779e.res6.spectrum.com) (Ping timeout: 245 seconds) |
2021-10-20 08:22:40 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2021-10-20 08:25:13 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2021-10-20 08:26:28 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2021-10-20 08:28:58 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Quit: ZNC - https://znc.in) |
2021-10-20 08:29:13 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2021-10-20 08:32:19 +0200 | michalz | (~michalz@185.246.204.93) |
2021-10-20 08:36:27 +0200 | max22- | (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) |
2021-10-20 08:43:54 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:8daf:444e:9c84:5148) |
2021-10-20 08:47:22 +0200 | rkrishnan | (~user@2402:e280:215c:2cd:d6b1:e062:567:7a9c) |
2021-10-20 08:49:39 +0200 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) |
2021-10-20 08:51:46 +0200 | jonathanx | (~jonathan@dyn-8-sc.cdg.chalmers.se) (Ping timeout: 245 seconds) |
2021-10-20 08:52:45 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2021-10-20 08:57:20 +0200 | ircbrowse_tom | (~ircbrowse@2a01:4f8:1c1c:9319::1) (ZNC 1.7.5+deb4 - https://znc.in) |
2021-10-20 08:57:34 +0200 | ircbrowse_tom_ | (~ircbrowse@static.162.49.55.162.clients.your-server.de) |
2021-10-20 08:57:36 +0200 | Server | +Cnt |
2021-10-20 08:57:56 +0200 | amir_ | (sid22336@user/amir) |
2021-10-20 08:58:02 +0200 | ikex1 | (ash@user/ikex) |
2021-10-20 08:58:06 +0200 | davl | (~davl@207.154.228.18) |
2021-10-20 08:58:20 +0200 | amir_ | Guest6318 |
2021-10-20 08:58:22 +0200 | mei | (~mei@user/mei) (Read error: Connection reset by peer) |
2021-10-20 08:58:30 +0200 | codolio | (~dolio@130.44.130.54) |
2021-10-20 08:59:02 +0200 | mei | (~mei@user/mei) |
2021-10-20 08:59:15 +0200 | jonathanx | (~jonathan@178.174.176.109) |
2021-10-20 08:59:34 +0200 | piele_ | (~piele@tbonesteak.creativeserver.net) |
2021-10-20 09:00:10 +0200 | platz_ | (~platz@40.122.118.113) |
2021-10-20 09:00:12 +0200 | Tordek_ | (tordek@triton.blinkenshell.org) |
2021-10-20 09:00:17 +0200 | opqdonut_ | (opqdonut@pseudo.fixme.fi) |
2021-10-20 09:00:22 +0200 | some02_ | (~cat@h-98-128-128-173.A351.priv.bahnhof.se) |
2021-10-20 09:00:34 +0200 | ski_ | (~ski@remote12.chalmers.se) |
2021-10-20 09:00:39 +0200 | Rembane_ | (~Rembane@li346-36.members.linode.com) |
2021-10-20 09:00:42 +0200 | nckx_ | (~nckx@tobias.gr) |
2021-10-20 09:01:07 +0200 | urdh_ | (~urdh@user/urdh) |
2021-10-20 09:03:05 +0200 | sm[i]_ | (~user@li229-222.members.linode.com) |
2021-10-20 09:05:19 +0200 | acowley_ | (~acowley@c-68-83-22-43.hsd1.nj.comcast.net) |
2021-10-20 09:07:59 +0200 | brainfreeze | (~brainfree@2a03:1b20:4:f011::20d) (Quit: Leaving) |
2021-10-20 09:09:03 +0200 | coot | (~coot@37.30.48.91.nat.umts.dynamic.t-mobile.pl) (Read error: Connection reset by peer) |
2021-10-20 09:09:50 +0200 | ikex | (~ash@user/ikex) (Ping timeout: 260 seconds) |
2021-10-20 09:09:50 +0200 | Franciman | (~Franciman@mx1.fracta.dev) (Ping timeout: 260 seconds) |
2021-10-20 09:09:50 +0200 | davl_ | (~davl@207.154.228.18) (Ping timeout: 260 seconds) |
2021-10-20 09:09:50 +0200 | ircbrowse_tom | (~ircbrowse@2a01:4f8:1c1c:9319::1) (Ping timeout: 260 seconds) |
2021-10-20 09:09:50 +0200 | kosmikus[m] | (~andresloe@2001:470:69fc:105::95d) (Ping timeout: 260 seconds) |
2021-10-20 09:09:50 +0200 | monadfritz[m] | (~ahdytmatr@2001:470:69fc:105::e1f1) (Ping timeout: 260 seconds) |
2021-10-20 09:09:50 +0200 | stoicswe[m] | (~deadlette@2001:470:69fc:105::d277) (Ping timeout: 260 seconds) |
2021-10-20 09:09:50 +0200 | ikex1 | ikex |
2021-10-20 09:09:50 +0200 | Orbstheorem | (~orbstheor@2001:470:69fc:105::a56) (Ping timeout: 260 seconds) |
2021-10-20 09:09:50 +0200 | kevin[m]1 | (~pnotequal@2001:470:69fc:105::a54) (Ping timeout: 260 seconds) |
2021-10-20 09:09:50 +0200 | schuelermine[m] | (~schuelerm@user/schuelermine) (Ping timeout: 260 seconds) |
2021-10-20 09:09:50 +0200 | carmysilna | (~brightly-@2001:470:69fc:105::2190) (Ping timeout: 260 seconds) |
2021-10-20 09:09:50 +0200 | dolio | (~dolio@130.44.130.54) (Ping timeout: 260 seconds) |
2021-10-20 09:09:50 +0200 | amir | (sid22336@user/amir) (Ping timeout: 260 seconds) |
2021-10-20 09:09:50 +0200 | jonrh | (sid5185@ilkley.irccloud.com) (Ping timeout: 260 seconds) |
2021-10-20 09:09:51 +0200 | opqdonut | (opqdonut@pseudo.fixme.fi) (Ping timeout: 260 seconds) |
2021-10-20 09:09:51 +0200 | Tordek | (tordek@triton.blinkenshell.org) (Ping timeout: 260 seconds) |
2021-10-20 09:09:51 +0200 | some02 | (~cat@h-98-128-128-173.A351.priv.bahnhof.se) (Ping timeout: 260 seconds) |
2021-10-20 09:09:51 +0200 | deni | (~deni@mail.denibertovic.com) (Ping timeout: 260 seconds) |
2021-10-20 09:09:51 +0200 | Unhammer | (~Unhammer@user/unhammer) (Ping timeout: 260 seconds) |
2021-10-20 09:09:51 +0200 | platz | (~platz@user/platz) (Ping timeout: 260 seconds) |
2021-10-20 09:09:51 +0200 | nckx | (~nckx@tobias.gr) (Ping timeout: 260 seconds) |
2021-10-20 09:09:51 +0200 | ski | (~ski@remote12.chalmers.se) (Ping timeout: 260 seconds) |
2021-10-20 09:09:51 +0200 | acowley | (~acowley@c-68-83-22-43.hsd1.nj.comcast.net) (Ping timeout: 260 seconds) |
2021-10-20 09:09:51 +0200 | oak- | (~oakuniver@2001:470:69fc:105::fcd) (Ping timeout: 260 seconds) |
2021-10-20 09:09:51 +0200 | ixlun | (~ixlun@2001:470:69fc:105::41b3) (Ping timeout: 260 seconds) |
2021-10-20 09:09:51 +0200 | moats | (~oats@user/oats) (Ping timeout: 260 seconds) |
2021-10-20 09:09:51 +0200 | dextaa | (~DV@user/dextaa) (Ping timeout: 260 seconds) |
2021-10-20 09:09:51 +0200 | piele | (~piele@tbonesteak.creativeserver.net) (Ping timeout: 260 seconds) |
2021-10-20 09:09:51 +0200 | superbil | (~superbil@1-34-176-171.hinet-ip.hinet.net) (Ping timeout: 260 seconds) |
2021-10-20 09:09:51 +0200 | urdh | (~urdh@user/urdh) (Ping timeout: 260 seconds) |
2021-10-20 09:09:51 +0200 | sm[i] | (~user@plaintextaccounting/sm) (Ping timeout: 260 seconds) |
2021-10-20 09:09:51 +0200 | Rembane | (~Rembane@li346-36.members.linode.com) (Ping timeout: 260 seconds) |
2021-10-20 09:09:51 +0200 | niko | (~niko@libera/staff/niko) (Ping timeout: 615 seconds) |
2021-10-20 09:09:51 +0200 | Guest6318 | amir |
2021-10-20 09:09:51 +0200 | jonrh_ | jonrh |
2021-10-20 09:09:51 +0200 | dextaa3 | dextaa |
2021-10-20 09:09:51 +0200 | nckx_ | nckx |
2021-10-20 09:09:51 +0200 | urdh_ | urdh |
2021-10-20 09:10:17 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2021-10-20 09:10:21 +0200 | Franciman | (~Franciman@mx1.fracta.dev) |
2021-10-20 09:10:42 +0200 | ArctVaulMarsHMPJ | (~pjetcetal@2.95.44.252) |
2021-10-20 09:10:50 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-10-20 09:10:52 +0200 | ArctVaulMarsHMPJ | (~pjetcetal@2.95.44.252) (Read error: Connection reset by peer) |
2021-10-20 09:11:38 +0200 | deni | (~deni@mail.denibertovic.com) |
2021-10-20 09:11:45 +0200 | niko | (~niko@libera/staff/niko) |
2021-10-20 09:11:48 +0200 | stoicswe[m] | (~deadlette@2001:470:69fc:105::d277) |
2021-10-20 09:11:59 +0200 | Unhammer | (~Unhammer@user/unhammer) |
2021-10-20 09:12:02 +0200 | deni | Guest9608 |
2021-10-20 09:12:03 +0200 | ubert | (~Thunderbi@91.141.37.135.wireless.dyn.drei.com) |
2021-10-20 09:12:21 +0200 | stengah | (~stengah@user/stengah) (Ping timeout: 258 seconds) |
2021-10-20 09:12:43 +0200 | superbil | (~superbil@1-34-176-171.hinet-ip.hinet.net) |
2021-10-20 09:13:28 +0200 | schuelermine[m] | (~schuelerm@user/schuelermine) |
2021-10-20 09:13:32 +0200 | Orbstheorem | (~orbstheor@2001:470:69fc:105::a56) |
2021-10-20 09:13:52 +0200 | kevin[m]1 | (~pnotequal@2001:470:69fc:105::a54) |
2021-10-20 09:14:20 +0200 | coot | (~coot@37.30.48.91.nat.umts.dynamic.t-mobile.pl) |
2021-10-20 09:14:21 +0200 | monadfritz[m] | (~ahdytmatr@2001:470:69fc:105::e1f1) |
2021-10-20 09:15:02 +0200 | ubert1 | (~Thunderbi@91.141.37.135.wireless.dyn.drei.com) |
2021-10-20 09:15:50 +0200 | kosmikus[m] | (~andresloe@2001:470:69fc:105::95d) |
2021-10-20 09:15:54 +0200 | carmysilna | (~brightly-@2001:470:69fc:105::2190) |
2021-10-20 09:16:42 +0200 | moats | (~oats@user/oats) |
2021-10-20 09:17:03 +0200 | oak- | (~oakuniver@2001:470:69fc:105::fcd) |
2021-10-20 09:18:03 +0200 | burnsidesLlama | (~burnsides@dhcp168-039.wadham.ox.ac.uk) |
2021-10-20 09:18:11 +0200 | ixlun | (~ixlun@2001:470:69fc:105::41b3) |
2021-10-20 09:22:58 +0200 | ArctVaulMarsHMPJ | (~pjetcetal@2.95.44.252) |
2021-10-20 09:23:28 +0200 | ArctVaulMarsHMPJ | (~pjetcetal@2.95.44.252) (Remote host closed the connection) |
2021-10-20 09:24:19 +0200 | chele | (~chele@user/chele) |
2021-10-20 09:26:49 +0200 | sprout | (~quassel@2a02:a467:ccd6:1:75c6:cb1e:9970:92ae) |
2021-10-20 09:30:29 +0200 | <DigitalKiwi> | Hecate: can you write kommissar with it |
2021-10-20 09:32:40 +0200 | o1lo01ol1o | (~o1lo01ol1@2001:8a0:6d7a:df01:d1f9:60a1:52fb:92f3) (Ping timeout: 258 seconds) |
2021-10-20 09:33:31 +0200 | natechan | (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds) |
2021-10-20 09:36:22 +0200 | o1lo01ol1o | (~o1lo01ol1@2001:8a0:6d7a:df01:d1f9:60a1:52fb:92f3) |
2021-10-20 09:37:55 +0200 | vicfred | (~vicfred@user/vicfred) (Quit: Leaving) |
2021-10-20 09:39:03 +0200 | cfricke | (~cfricke@user/cfricke) |
2021-10-20 09:41:29 +0200 | o1lo01ol1o | (~o1lo01ol1@2001:8a0:6d7a:df01:d1f9:60a1:52fb:92f3) (Ping timeout: 258 seconds) |
2021-10-20 09:42:59 +0200 | renzhi | (~xp@2607:fa49:6500:b100::6e7f) (Ping timeout: 264 seconds) |
2021-10-20 09:43:40 +0200 | cfricke | (~cfricke@user/cfricke) (Ping timeout: 260 seconds) |
2021-10-20 09:46:09 +0200 | <dminuoso> | Axman6: So what do you want to know about our SDN compiler? |
2021-10-20 09:47:36 +0200 | <dminuoso> | It's nothing fancy. Very broadly you configure some edge port to be in some L3 or L2 domain in our DCIM/IPAM tool (netbox), and our haskell program takes the entire description, turns it into intermediate representations, does some graph things, validates certain properties, turns into vendor agnostic specification, which are turned into vendor specific configurations. |
2021-10-20 09:47:49 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 09:47:59 +0200 | <dminuoso> | All under the assumption that we have a semantic underlay |
2021-10-20 09:48:30 +0200 | <dminuoso> | And then we throw that into the entirety of our core network, run `ifreload -a`, and then go on with our coffee. |
2021-10-20 09:55:05 +0200 | phma_ | (~phma@host-67-44-209-75.hnremote.net) |
2021-10-20 09:56:30 +0200 | o1lo01ol1o | (~o1lo01ol1@2001:8a0:6d7a:df01:d1f9:60a1:52fb:92f3) |
2021-10-20 09:57:15 +0200 | absence | (torgeihe@hildring.pvv.ntnu.no) (Quit: Changing server) |
2021-10-20 09:57:35 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Remote host closed the connection) |
2021-10-20 09:57:46 +0200 | cfricke | (~cfricke@user/cfricke) |
2021-10-20 09:58:10 +0200 | absence | (torgeihe@hildring.pvv.ntnu.no) |
2021-10-20 09:58:21 +0200 | absence | (torgeihe@hildring.pvv.ntnu.no) (Client Quit) |
2021-10-20 09:58:44 +0200 | phma | (~phma@host-67-44-209-75.hnremote.net) (Ping timeout: 258 seconds) |
2021-10-20 10:06:00 +0200 | jlamothe | (~jlamothe@198.251.61.229) |
2021-10-20 10:06:50 +0200 | fef | (~thedawn@user/thedawn) |
2021-10-20 10:09:17 +0200 | hendursa1 | (~weechat@user/hendursaga) |
2021-10-20 10:12:45 +0200 | hendursaga | (~weechat@user/hendursaga) (Ping timeout: 276 seconds) |
2021-10-20 10:17:29 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-10-20 10:17:30 +0200 | burnsidesLlama | (~burnsides@dhcp168-039.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-10-20 10:17:54 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-10-20 10:23:21 +0200 | <Franciman> | do you know of any wiki written in haskell? |
2021-10-20 10:24:30 +0200 | kayprish | (~kayprish@46.240.130.158) |
2021-10-20 10:26:16 +0200 | acidjnk_new | (~acidjnk@p200300d0c703cb955960125781424a48.dip0.t-ipconnect.de) |
2021-10-20 10:26:56 +0200 | shriekingnoise | (~shrieking@186.137.144.80) (Quit: Quit) |
2021-10-20 10:28:52 +0200 | enoq | (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) |
2021-10-20 10:34:03 +0200 | mei | (~mei@user/mei) (Read error: Connection reset by peer) |
2021-10-20 10:35:10 +0200 | hnOsmium0001 | (uid453710@id-453710.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2021-10-20 10:38:17 +0200 | Teacup | (~teacup@user/teacup) (Ping timeout: 265 seconds) |
2021-10-20 10:38:46 +0200 | coot | (~coot@37.30.48.91.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 260 seconds) |
2021-10-20 10:40:17 +0200 | <dhouthoo> | Franciman: gitit |
2021-10-20 10:40:38 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-10-20 10:41:02 +0200 | <Franciman> | dhouthoo: https://en.wikipedia.org/wiki/Gitit_(software) <- ? |
2021-10-20 10:41:43 +0200 | <dhouthoo> | yes |
2021-10-20 10:41:51 +0200 | <Franciman> | thanks |
2021-10-20 10:42:01 +0200 | <Franciman> | I freaking love the image of the dog with the freesbie |
2021-10-20 10:42:04 +0200 | <Franciman> | T.T |
2021-10-20 10:42:21 +0200 | kuribas | (~user@ptr-25vy0i7zawtky0bq46n.18120a2.ip6.access.telenet.be) |
2021-10-20 10:43:02 +0200 | <kuribas> | isn't there a point where you abolish the combinatory cleverness, and just write something slightly verbose, but easy to write? |
2021-10-20 10:43:25 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 10:44:06 +0200 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2021-10-20 10:44:33 +0200 | Teacup | (~teacup@user/teacup) |
2021-10-20 10:45:51 +0200 | __monty__ | (~toonn@user/toonn) |
2021-10-20 10:49:02 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-10-20 10:58:01 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) |
2021-10-20 11:00:32 +0200 | burnsidesLlama | (~burnsides@dhcp168-039.wadham.ox.ac.uk) |
2021-10-20 11:00:34 +0200 | zaquest | (~notzaques@5.128.210.178) (Remote host closed the connection) |
2021-10-20 11:02:31 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Ping timeout: 252 seconds) |
2021-10-20 11:02:39 +0200 | zaquest | (~notzaques@5.128.210.178) |
2021-10-20 11:05:11 +0200 | <kuribas> | concise code can be elegant, but for production I sometimes just want it to work. |
2021-10-20 11:05:21 +0200 | <kuribas> | Even if there is a potentially much more clever solution. |
2021-10-20 11:06:50 +0200 | phma | (~phma@host-67-44-209-75.hnremote.net) |
2021-10-20 11:10:02 +0200 | acidjnk_new | (~acidjnk@p200300d0c703cb955960125781424a48.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
2021-10-20 11:10:02 +0200 | phma_ | (~phma@host-67-44-209-75.hnremote.net) (Ping timeout: 260 seconds) |
2021-10-20 11:16:00 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 11:16:24 +0200 | acidjnk_new | (~acidjnk@p200300d0c703cb955960125781424a48.dip0.t-ipconnect.de) |
2021-10-20 11:20:46 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
2021-10-20 11:20:48 +0200 | o1lo01ol1o | (~o1lo01ol1@2001:8a0:6d7a:df01:d1f9:60a1:52fb:92f3) (Remote host closed the connection) |
2021-10-20 11:21:24 +0200 | o1lo01ol1o | (~o1lo01ol1@2001:8a0:6d7a:df01:d1f9:60a1:52fb:92f3) |
2021-10-20 11:21:36 +0200 | stengah | (~stengah@user/stengah) |
2021-10-20 11:25:56 +0200 | o1lo01ol1o | (~o1lo01ol1@2001:8a0:6d7a:df01:d1f9:60a1:52fb:92f3) (Ping timeout: 245 seconds) |
2021-10-20 11:26:28 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2021-10-20 11:26:52 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2021-10-20 11:28:32 +0200 | o1lo01ol1o | (~o1lo01ol1@2001:8a0:6d7a:df01:d1f9:60a1:52fb:92f3) |
2021-10-20 11:31:55 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 11:32:12 +0200 | o1lo01ol1o | (~o1lo01ol1@2001:8a0:6d7a:df01:d1f9:60a1:52fb:92f3) (Remote host closed the connection) |
2021-10-20 11:35:04 +0200 | some02_ | (~cat@h-98-128-128-173.A351.priv.bahnhof.se) () |
2021-10-20 11:36:50 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-10-20 11:39:43 +0200 | <Inst> | Can I ask a question about Haskell? |
2021-10-20 11:39:52 +0200 | <Inst> | How good is the Haskell library support? |
2021-10-20 11:44:28 +0200 | sudden | (~cat@user/sudden) |
2021-10-20 11:44:40 +0200 | <kuribas> | Do you mean if there are many libraries? |
2021-10-20 11:51:09 +0200 | <Inst> | I want to use Haskell as a general purpose language, i.e, do most of my programming in Haskell |
2021-10-20 11:51:33 +0200 | <yushyin> | https://github.com/Gabriel439/post-rfc/blob/main/sotu.md maybe this helps |
2021-10-20 11:51:34 +0200 | <Inst> | it'd have to beat C++ and Python / Javascript for general purpose programming, i.e, C++ gets picked up |
2021-10-20 11:51:52 +0200 | <Inst> | for performance, Javascript for web development |
2021-10-20 11:52:00 +0200 | <Inst> | Thanks |
2021-10-20 11:52:05 +0200 | <kuribas> | Inst: why would it? |
2021-10-20 11:52:39 +0200 | <Inst> | I just want to have a use case for Haskell |
2021-10-20 11:52:40 +0200 | <maerwald> | beating C++ and python ecosystem isn't what Haskell can offer |
2021-10-20 11:52:55 +0200 | <kuribas> | Inst: you use haskell because you want good performance and robustness. |
2021-10-20 11:53:38 +0200 | <kuribas> | Inst: neither C++ or Python give you robustness, and Python is only performant if you use C library bindings. |
2021-10-20 11:54:00 +0200 | <maerwald> | python can satisfy high-performance applications |
2021-10-20 11:54:21 +0200 | <maerwald> | kuribas: well, same goes for haskell |
2021-10-20 11:54:45 +0200 | <Inst> | I want to reasonably do most of my code in Haskell |
2021-10-20 11:54:52 +0200 | <maerwald> | e.g. I just switched from yaml (where the core is C) to HsYAML (pure haskell) and the performance got 10 times worse |
2021-10-20 11:55:00 +0200 | <Inst> | erm, be justified if I opt to be primarily a Haskell programmer |
2021-10-20 11:55:15 +0200 | <troydm> | trying to write a stack.yml file for an existing haskell project and I'm having trouble compiling it with issues like |
2021-10-20 11:55:26 +0200 | <troydm> | Cabal-simple_mPHDZzAJ_3.2.1.0_ghc-8.10.7: The program 'c2hs' version >=0.15 is |
2021-10-20 11:55:40 +0200 | <kuribas> | Inst: if it's for hobby, then haskell could be all you need. |
2021-10-20 11:55:45 +0200 | <troydm> | isn't c2hs part of ghc distribution in Haskell and should be added to PATH? |
2021-10-20 11:56:00 +0200 | <Inst> | kuribas: that's sort of the argument I'm making and getting lots of pushback on |
2021-10-20 11:56:14 +0200 | <Inst> | that Haskell is an ideal hobbyist / non-professional language |
2021-10-20 11:56:37 +0200 | <kuribas> | Inst: it's not ideal IMO. Python is better for hobbyists. |
2021-10-20 11:56:59 +0200 | <Inst> | except Python doesn't produce robust code except with extensive testing? |
2021-10-20 11:57:16 +0200 | <kuribas> | Which is usually not a priority for hobbyists. |
2021-10-20 11:57:40 +0200 | <maerwald> | troydm: no it isn't |
2021-10-20 11:57:49 +0200 | <Inst> | should it be a priority? |
2021-10-20 11:58:08 +0200 | <maerwald> | troydm: hsc2hs is |
2021-10-20 11:58:20 +0200 | <lortabac> | if it's a hobby, you can do whatever you want |
2021-10-20 11:58:21 +0200 | <troydm> | ./snapshots/x86_64-linux-tinfo6/a9e764900658a3a32616042d51034aed40b88e23187d2aa53933d7c0f2be2a09/8.10.7/bin/c2hs |
2021-10-20 11:58:29 +0200 | <troydm> | it's from .stack dir |
2021-10-20 11:58:31 +0200 | <kuribas> | Inst: by definition of "hobbyist", there isn't. You do what you want as long as you enjoy it. |
2021-10-20 11:58:33 +0200 | <lortabac> | just use whatever language you feel like using |
2021-10-20 11:58:37 +0200 | <troydm> | so program itself is installed |
2021-10-20 11:58:45 +0200 | <maerwald> | troydm: so? |
2021-10-20 11:58:55 +0200 | <lortabac> | I do all my hobby projects in Prolog, just because I can |
2021-10-20 11:59:01 +0200 | <maerwald> | c2hs is not part of ghc distribution |
2021-10-20 11:59:16 +0200 | <maerwald> | what stack does is something orthogonal |
2021-10-20 11:59:20 +0200 | <Inst> | also, a question |
2021-10-20 11:59:29 +0200 | <Inst> | how much faster is Haskell to develop in |
2021-10-20 11:59:33 +0200 | <Inst> | compared to other languages? |
2021-10-20 11:59:42 +0200 | <maerwald> | Inst: usually slower in the beginning |
2021-10-20 11:59:56 +0200 | <kuribas> | Inst: I'd say faster when you experienced, slower when you start out. |
2021-10-20 11:59:57 +0200 | <troydm> | maerwald: okey so how do I make it so it would be dependency and added to PATH during compilation? |
2021-10-20 12:00:10 +0200 | <maerwald> | troydm: add it to build-depends in your cabal file |
2021-10-20 12:00:32 +0200 | <maerwald> | https://cabal.readthedocs.io/en/latest/cabal-package.html?highlight=build-tool#pkg-field-build-too… |
2021-10-20 12:00:34 +0200 | <kuribas> | Inst: also, it's only faster if you count testing and quality assurance. Often people get out programs quickly, which then are full of bugs. |
2021-10-20 12:00:58 +0200 | <Inst> | put another way, say a manager has the brainpower needed to get good at haskell |
2021-10-20 12:01:14 +0200 | <maerwald> | when all I do is *prototype*, then I don't have a difference of number in bugs, no matter wheter I use Haskell, python or rust |
2021-10-20 12:01:33 +0200 | <maerwald> | when I maintain a project for a longer period of time, then that number becomes different across languages |
2021-10-20 12:01:34 +0200 | <Inst> | does haskell have a use-case, i.e, if s/he wants the IT department to recycle his or her code |
2021-10-20 12:01:46 +0200 | <Inst> | it's less likely to be garbage that has to be completely reimplemented? |
2021-10-20 12:01:52 +0200 | <troydm> | what's the difference between hsc2hs and c2hs? |
2021-10-20 12:02:22 +0200 | <troydm> | I see that hsc2hs is listed as build-tools |
2021-10-20 12:02:35 +0200 | <troydm> | so it seems like it should actually work, but it's not |
2021-10-20 12:02:37 +0200 | <maerwald> | Inst: I don't understand the question |
2021-10-20 12:02:49 +0200 | <kuribas> | Inst: it forces you to think about program structure and state, so yes :) |
2021-10-20 12:02:55 +0200 | <yushyin> | troydm: http://blog.ezyang.com/2010/06/the-haskell-preprocessor-hierarchy/ |
2021-10-20 12:03:19 +0200 | <kuribas> | Inst: as in, you either produce something that is well structured, or you give up in tears. |
2021-10-20 12:03:22 +0200 | <Inst> | maerwald: let's say someone is a hobbyist programmer, but they're working for a small organization that doesn't have development resources out the wazoo |
2021-10-20 12:03:28 +0200 | <maerwald> | Haskell doesn't solve your engineering problems if you have poor engineers |
2021-10-20 12:03:31 +0200 | <troydm> | yushyin: okey, this suddenly gotten weirdly complicated |
2021-10-20 12:03:51 +0200 | <kuribas> | maerwald: haskell doesn't solve any engineering problem. |
2021-10-20 12:04:04 +0200 | <kuribas> | It just provide tools and means to abstract your engineering problem. |
2021-10-20 12:04:16 +0200 | <kuribas> | It assumes you have solved the problem already. |
2021-10-20 12:04:30 +0200 | <maerwald> | invest in good engineers, then let them worry about language choice |
2021-10-20 12:04:45 +0200 | <kuribas> | With the abstractions you can structure it in a nice way that makes the business logic more clear. |
2021-10-20 12:05:07 +0200 | <Inst> | they end up producing the initial code for a project before IT takes over |
2021-10-20 12:05:36 +0200 | <maerwald> | Inst: write the code in the simplest possible language if non-programmers or devops have to take it over |
2021-10-20 12:05:37 +0200 | <yushyin> | troydm: It is not complicated, but gives a good overview. It is not a long read. |
2021-10-20 12:05:43 +0200 | <Inst> | i see |
2021-10-20 12:06:07 +0200 | Guest2920 | (~Guest29@net-93-151-133-175.cust.dsl.teletu.it) |
2021-10-20 12:06:07 +0200 | <Inst> | yeah, the problem with this use case is assuming the It department knows Haskell and can evaluate whether the code can be reused or if it has to be junked |
2021-10-20 12:06:20 +0200 | <Inst> | more likely it'll be junked because the IT department doesn't know Haskell and can't properly evaluate it |
2021-10-20 12:07:02 +0200 | <maerwald> | then it's a bad choice |
2021-10-20 12:10:13 +0200 | <troydm> | yushyin: thx, I think i've got it without reading entire article, but I'll read it later anyway when I'll have time |
2021-10-20 12:10:42 +0200 | <kuribas> | Inst: haskell is a hard sell unless several people are in on it. |
2021-10-20 12:11:34 +0200 | <maerwald> | if you introduce Haskell to a company you better stay there for a year at least... everything else is irresponsible, imo |
2021-10-20 12:12:06 +0200 | <maerwald> | not something you experiment and let others pick up |
2021-10-20 12:12:52 +0200 | <maerwald> | I did that with coconut once (a python dialect) and I'm confident they still hate me |
2021-10-20 12:13:51 +0200 | <maerwald> | well, that was because someone before me did that with me... rewrote something in Scala and then let the new joiner pick up the pieces |
2021-10-20 12:14:03 +0200 | <maerwald> | so I kept the tradition |
2021-10-20 12:14:11 +0200 | <kuribas> | maerwald: I am allowed to write haskell now "because it makes me happy". |
2021-10-20 12:14:25 +0200 | <kuribas> | maerwal: I'll probably need to rewrite it once it's done. |
2021-10-20 12:14:38 +0200 | <kuribas> | But fine be me :) |
2021-10-20 12:15:07 +0200 | <Inst> | well, thanks for entertaining the troll (me) |
2021-10-20 12:15:08 +0200 | Inst | sighs |
2021-10-20 12:15:16 +0200 | <kuribas> | I am just wondering how I can rewrite my nice batching effect in clojure. |
2021-10-20 12:15:19 +0200 | <maerwald> | when I'm working for someone, I don't write code for myself, so my first thought when doing anything is: "who comes after me?" |
2021-10-20 12:15:25 +0200 | <kuribas> | Inst: that didn't sound like trolling. |
2021-10-20 12:15:30 +0200 | <Inst> | the only good thing i can say is that the haskell materials i've been exposed to right now |
2021-10-20 12:15:42 +0200 | <Inst> | seem better written than the equivalent C++ material |
2021-10-20 12:16:13 +0200 | <maerwald> | and even in open source, I'm starting to shift away from writing code for myself, because that usually means I'm the only one maintaining anything |
2021-10-20 12:16:13 +0200 | <kuribas> | it's not such a great idea to introduce haskell in a company, unless the majority is enthousiastic. |
2021-10-20 12:16:50 +0200 | <kuribas> | Much better would be to teach them how to write clean java/JS/whatever. |
2021-10-20 12:17:00 +0200 | <kuribas> | Using the principles learned from haskell. |
2021-10-20 12:17:04 +0200 | <yushyin> | golang |
2021-10-20 12:18:29 +0200 | <maerwald> | Yeah, you can do great functional code in TypeScript |
2021-10-20 12:19:05 +0200 | dut | (~dut@user/dut) |
2021-10-20 12:19:18 +0200 | <Inst> | my shtick, kuribas, is trying to convince people that |
2021-10-20 12:19:22 +0200 | <Inst> | we should replace Python with Haskell |
2021-10-20 12:19:27 +0200 | <Inst> | for hobbyists |
2021-10-20 12:19:39 +0200 | <maerwald> | why convince anyone? |
2021-10-20 12:19:45 +0200 | <Inst> | to grow the Haskell community |
2021-10-20 12:20:18 +0200 | <maerwald> | Inst: does your employer pay you for that? |
2021-10-20 12:20:52 +0200 | <LiaoTao> | Inst, I don't think it's that easy to make Haskell appealing to the lowest common denominator of programmers |
2021-10-20 12:21:02 +0200 | <LiaoTao> | Purely because of terminology, category theory and historical reasons |
2021-10-20 12:21:19 +0200 | dut | (~dut@user/dut) (Read error: Connection reset by peer) |
2021-10-20 12:21:42 +0200 | dut | (~dut@user/dut) |
2021-10-20 12:21:52 +0200 | burnsidesLlama | (~burnsides@dhcp168-039.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-10-20 12:22:13 +0200 | dut | (~dut@user/dut) (Client Quit) |
2021-10-20 12:23:19 +0200 | <kuribas> | Inst: we don't need to grow the Haskell community. |
2021-10-20 12:26:07 +0200 | ArctVaulMarsHMPJ | (~pjetcetal@2.95.44.252) |
2021-10-20 12:26:16 +0200 | ArctVaulMarsHMPJ | (~pjetcetal@2.95.44.252) (Remote host closed the connection) |
2021-10-20 12:27:07 +0200 | k60 | (~k60@broadband-95-84-168-218.ip.moscow.rt.ru) |
2021-10-20 12:29:08 +0200 | <Inst> | That's to say, the language is academic, its target audience is to provide a unified language for computer science researchers, and that people like me are unnecessary? |
2021-10-20 12:29:46 +0200 | <Inst> | That it's nice that Target and Goldmach Sachs (iirc) have Haskell-based applications running on their business platforms, but they're strictly unnecessary? |
2021-10-20 12:34:51 +0200 | Guest13 | (~Guest13@cust190-dsl55.idnet.net) |
2021-10-20 12:35:59 +0200 | acidjnk_new3 | (~acidjnk@p200300d0c703cb959894c42690fc4f0f.dip0.t-ipconnect.de) |
2021-10-20 12:36:08 +0200 | <kuribas> | Inst: no language is necessary, you can just use assembly for everything if you want. |
2021-10-20 12:36:09 +0200 | <Inst> | LiaoTao: well, I meet LCD requirements because I'm currently a non-programmer and I don't know cat theory nor do I have the intellectual apparatus needed to know category theory at this time |
2021-10-20 12:36:20 +0200 | <dminuoso> | Say I have some `f :: IO (Maybe T)`, and inside of that I hold some `Maybe S` in my hand. How can I elegantly lift/apply some `S -> IO T` to that? |
2021-10-20 12:36:38 +0200 | CiaoSen | (~Jura@p200300c95730dd002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2021-10-20 12:36:43 +0200 | <dminuoso> | Is there some kind of lift1 for MaybeT? |
2021-10-20 12:39:21 +0200 | acidjnk_new | (~acidjnk@p200300d0c703cb955960125781424a48.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
2021-10-20 12:42:07 +0200 | <Inst> | LiaoTao: not necessarily LCD, but perhaps non-programmers. I am telling people I know to go learn Haskell, even people with no prior programming background, on the belief that it has a valid hobbyist use case. |
2021-10-20 12:42:19 +0200 | <dminuoso> | I mean I can do something like `runMaybeT $ do { r <- MaybeT foo; lift (g r) }` |
2021-10-20 12:42:29 +0200 | <dminuoso> | Perhaps that's really what I want mmm |
2021-10-20 12:44:52 +0200 | peterhil | (~peterhil@dsl-hkibng32-54fb56-2.dhcp.inet.fi) |
2021-10-20 12:47:34 +0200 | stengah | (~stengah@user/stengah) (Ping timeout: 260 seconds) |
2021-10-20 12:47:53 +0200 | <maerwald> | starting to learn and use a language for ego reasons (growing, reinformecent that you can take challenges etc) is great... but having that influence decisions in industry is a controversial thing |
2021-10-20 12:48:28 +0200 | rond_ | (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) |
2021-10-20 12:48:33 +0200 | kayprish | (~kayprish@46.240.130.158) (Read error: Connection reset by peer) |
2021-10-20 12:49:13 +0200 | mmhat | (~mmh@55d4469f.access.ecotel.net) |
2021-10-20 12:49:32 +0200 | enoq | (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq) |
2021-10-20 12:50:46 +0200 | <maerwald> | and learning is absolutely about ego |
2021-10-20 12:50:55 +0200 | <maerwald> | no negative connotation there |
2021-10-20 12:52:15 +0200 | <kuribas> | Inst: you cannot do everything, you need to pick your own hobbies. |
2021-10-20 12:52:41 +0200 | <kuribas> | Inst: would you like someone telling you that you absolutely need to learn gardening? |
2021-10-20 12:52:56 +0200 | <maerwald> | only if you live in the UK |
2021-10-20 12:53:12 +0200 | <Inst> | w/e, i'm effectively trolling right now, back to my textbooks. I'm a bit disappointed, but if this is how the Haskell community thinks, it's noted. |
2021-10-20 12:53:42 +0200 | <kuribas> | Inst: I am not "the haskell community" :) |
2021-10-20 12:54:05 +0200 | <maerwald> | Inst: the Haskell Foundation wants to broaden Haskell adoption in industry |
2021-10-20 12:54:11 +0200 | <maerwald> | it sounds like that aligns with your goals |
2021-10-20 12:54:26 +0200 | <Inst> | I'm more interested in broadening Haskell adoption overall, not necessarily in industry |
2021-10-20 12:54:31 +0200 | <maerwald> | I'm still alienated by that goal, but it's a fair game |
2021-10-20 12:54:31 +0200 | <kuribas> | But to think that you need to convert everyone to use something, in order to enjoy it yourself, is not very productive. |
2021-10-20 12:54:32 +0200 | burnsidesLlama | (~burnsides@dhcp168-039.wadham.ox.ac.uk) |
2021-10-20 12:54:34 +0200 | <Franciman> | my goal is to have a programming language strongly focused on wikis |
2021-10-20 12:54:42 +0200 | <Franciman> | that's what my language is going to do |
2021-10-20 12:54:47 +0200 | <Franciman> | be in symbiosis with the wiki |
2021-10-20 12:54:49 +0200 | <Inst> | kuribas: how familiar are you with the concept of ecosystem? |
2021-10-20 12:55:07 +0200 | <Franciman> | Inst: imho no language today has a good wiki |
2021-10-20 12:55:10 +0200 | <kuribas> | Inst: as in biological? |
2021-10-20 12:55:14 +0200 | <Franciman> | and it is not integrated in the language |
2021-10-20 12:55:18 +0200 | <Franciman> | my language is doing it |
2021-10-20 12:55:22 +0200 | <Inst> | more like social and economic |
2021-10-20 12:55:33 +0200 | <Franciman> | is it broadening? |
2021-10-20 12:55:41 +0200 | <Inst> | i guess you guys are more oriented toward the quality of the ecosystem, i.e, the people who hang around are like-minded, civil, and highly educated |
2021-10-20 12:55:52 +0200 | <Inst> | trying to broaden the ecosystem perhaps sounds like "Success at All Costs" |
2021-10-20 12:56:18 +0200 | <Franciman> | no the HF is going in that road you like |
2021-10-20 12:56:20 +0200 | <Franciman> | don't worry |
2021-10-20 12:56:29 +0200 | <Franciman> | have you read their mission and vision? |
2021-10-20 12:56:34 +0200 | <Franciman> | I find many common words |
2021-10-20 12:56:45 +0200 | <Franciman> | w-wait i find the suitable links for you to read |
2021-10-20 12:56:46 +0200 | <kuribas> | I am only interested in "broadening the ecosystem" as far as that improve the quality of the tooling. |
2021-10-20 12:57:23 +0200 | <Inst> | An independent, non-profit organization dedicated to broadening the adoption of Haskell, by supporting its ecosystem of tools, libraries, education, and research. |
2021-10-20 12:57:29 +0200 | <Franciman> | Inst: https://haskell.foundation/vision/ |
2021-10-20 12:57:33 +0200 | <Inst> | i'm already on their site |
2021-10-20 12:57:37 +0200 | <Franciman> | oh nice |
2021-10-20 12:57:45 +0200 | <maerwald> | Franciman: well, better than no Haskell Foundation |
2021-10-20 12:57:57 +0200 | <Franciman> | ? |
2021-10-20 12:58:25 +0200 | <maerwald> | I mean... although I don't completely agree with that vision, I think it's fair that they follow that. |
2021-10-20 12:58:34 +0200 | stengah | (~stengah@user/stengah) |
2021-10-20 12:58:34 +0200 | <Franciman> | ah not judging that no |
2021-10-20 12:58:37 +0200 | <maerwald> | there will be positive side effects |
2021-10-20 12:58:42 +0200 | <Franciman> | I just said that Inst could be satisfied |
2021-10-20 12:58:45 +0200 | <Franciman> | by the HF |
2021-10-20 12:59:05 +0200 | burnsidesLlama | (~burnsides@dhcp168-039.wadham.ox.ac.uk) (Ping timeout: 260 seconds) |
2021-10-20 12:59:08 +0200 | <Inst> | there will also be negative ones, i.e, kiddies running around with bad manners, more bad code entering the ecosystem, etc |
2021-10-20 12:59:49 +0200 | <maerwald> | not sure... current industry that uses Haskell isn't that bad |
2021-10-20 13:00:09 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) |
2021-10-20 13:00:14 +0200 | <maerwald> | but I'm not holding my breath for them to fix our problems |
2021-10-20 13:00:42 +0200 | alx741 | (~alx741@186.178.109.50) |
2021-10-20 13:00:43 +0200 | <Franciman> | what haskell is not fixing is that it is not becoming a wiki based language. But we can't blame anyone for that |
2021-10-20 13:00:52 +0200 | <Franciman> | I just write my wiki based language and see how it goes |
2021-10-20 13:01:27 +0200 | <kuribas> | Inst: scala is an example of what happens if you try to make a language that is both popular and cutting edge: a big mess. |
2021-10-20 13:01:31 +0200 | <Franciman> | it can't make everyone happy |
2021-10-20 13:01:37 +0200 | <kuribas> | Not that haskell isn't a big mess :) |
2021-10-20 13:01:50 +0200 | <Inst> | kuribas: I just don't see why being popular has to be against being cutting edge. |
2021-10-20 13:02:09 +0200 | <kuribas> | Inst: just look at scala |
2021-10-20 13:02:09 +0200 | <Inst> | If someone wants to compromise "Avoid Success at All Costs", they can just fork the language. |
2021-10-20 13:02:17 +0200 | <maerwald> | kuribas: with DH and linear types... it'll become a big mess soon. But there will always be a subset of maintainers that keep being sane and use it sparingly. |
2021-10-20 13:02:18 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2021-10-20 13:02:28 +0200 | <Inst> | The language and its philosophy is fine as is; the language designers do not need to design the language to appeal to the masses. |
2021-10-20 13:02:31 +0200 | <Franciman> | one difficult matter is that being cutting edge could mean less stability |
2021-10-20 13:02:40 +0200 | <Franciman> | while mainstream means you want realiability as a company |
2021-10-20 13:02:53 +0200 | <Inst> | I'm just saying expanding the ecosystem can be done without having to cut corners; the effort being made is in evangelization and education, as opposed to dumbing down Haskell. |
2021-10-20 13:03:06 +0200 | <Inst> | Or making it ugly, for that matter. |
2021-10-20 13:03:15 +0200 | <kuribas> | But haskell is messy because it is getting old, and accumulating features it wasn't designed for (dependent types). |
2021-10-20 13:03:20 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2021-10-20 13:03:39 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-10-20 13:03:44 +0200 | <kuribas> | Inst: trying to make haskell by telling people they have to use it is not very productive. |
2021-10-20 13:03:57 +0200 | <Inst> | I don't think it's "forcing" people to use it. |
2021-10-20 13:04:11 +0200 | <Inst> | Just telling them Haskell is interesting, it's cool, and I tihnk you're smart enough to learn it, is what I have more in mind. |
2021-10-20 13:04:15 +0200 | <Franciman> | Inst: sorry I didn't quite understand what you mean |
2021-10-20 13:04:33 +0200 | <Franciman> | you mean broadening haskell usage, right? |
2021-10-20 13:04:34 +0200 | <maerwald> | using haskell in industry isn't that much better than any other language, because it's widely known amongst managers that you can "iterate quickly" on Haskell codebases |
2021-10-20 13:04:35 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Ping timeout: 264 seconds) |
2021-10-20 13:04:37 +0200 | <maerwald> | so the pressure is real |
2021-10-20 13:04:59 +0200 | <Franciman> | also haskell can be very solid on some things, and super brittle on others |
2021-10-20 13:05:02 +0200 | <Franciman> | if you are not experienced |
2021-10-20 13:05:04 +0200 | <Inst> | I see. |
2021-10-20 13:05:05 +0200 | <Franciman> | you can fall so easily |
2021-10-20 13:05:08 +0200 | <Franciman> | lol |
2021-10-20 13:05:15 +0200 | <Inst> | I just got confused a bit by the hype etc surrounding Haskell |
2021-10-20 13:05:17 +0200 | <Franciman> | but that is getting very much better now |
2021-10-20 13:05:17 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2021-10-20 13:05:24 +0200 | <Franciman> | it is getting better |
2021-10-20 13:05:29 +0200 | <Franciman> | the ecosystem is getting much better |
2021-10-20 13:05:29 +0200 | jespada | (~jespada@2803:9800:9842:7a62:5d33:6404:2aef:9813) |
2021-10-20 13:05:42 +0200 | <Franciman> | we even have a language server implementation |
2021-10-20 13:05:52 +0200 | <Franciman> | there are plenty of great libraries |
2021-10-20 13:05:56 +0200 | <Franciman> | for doing webserver etc |
2021-10-20 13:06:23 +0200 | <Inst> | If, say, a firm decides to mandate haskell development (and haskell isn't optimal for all use cases), that's up to them, based on their use-case, Haskell's propensities, and the capabilities of their existing staff. |
2021-10-20 13:06:49 +0200 | <Inst> | I'm not saying force everyone to use haskell, unless there's an existing business case for having multi-language programmers work in haskell as opposed to other languages |
2021-10-20 13:06:59 +0200 | dsrt^ | (~dsrt@68.101.53.15) (Ping timeout: 264 seconds) |
2021-10-20 13:08:20 +0200 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2021-10-20 13:08:21 +0200 | <maerwald> | Good Haskellers are rather expensive. There are a couple interesting startups that do Haskell, but the real space lies in fintech, where they have enough bucks for the star engineers and let them do their thing. |
2021-10-20 13:08:48 +0200 | <maerwald> | And some companies absolutely pick haskell for both a) marketing and b) access to smart engineers. |
2021-10-20 13:09:58 +0200 | <maerwald> | If you're a green startup in sweden with european wages... you'll maybe get a few students before they leave for the big bucks. |
2021-10-20 13:10:23 +0200 | <maerwald> | something to consider when you wanna introduce haskell to your company :p |
2021-10-20 13:11:30 +0200 | <Inst> | I have an idea for a start-up based around wearables, i.e, intersection of technology and fashion. |
2021-10-20 13:11:40 +0200 | <Inst> | It's probably at least a few years before I can implement |
2021-10-20 13:11:59 +0200 | <maerwald> | I want to write a dating app in Haskell. It's gonna be great. |
2021-10-20 13:12:06 +0200 | AlexNoo_ | (~AlexNoo@178.34.160.45) |
2021-10-20 13:12:19 +0200 | <Inst> | You're mocking me? |
2021-10-20 13:12:42 +0200 | <Inst> | I don't see a particular use case for Haskell in such an environment, though, since it'd more likely be based around an Android ecosystem. |
2021-10-20 13:12:49 +0200 | <maerwald> | I mean... I had the idea when I was drunk, but with some funding I might actually do it :p |
2021-10-20 13:12:55 +0200 | Guest|41 | (~Guest|41@31-187-0-247.dynamic.upc.ie) |
2021-10-20 13:13:07 +0200 | <Inst> | On the other hand, knowing Haskell might be good as a way to attract good developers. |
2021-10-20 13:13:08 +0200 | <maerwald> | until I burned through the cash |
2021-10-20 13:13:09 +0200 | <Franciman> | maerwald: a dating app for haskellers? |
2021-10-20 13:13:31 +0200 | <Franciman> | a wiki can do it better |
2021-10-20 13:13:38 +0200 | <Franciman> | collaborating to a wiki gets the best dates out |
2021-10-20 13:13:47 +0200 | <maerwald> | Franciman: nah, an FRP based frontend that's snappy and reliable |
2021-10-20 13:14:31 +0200 | Alex_test | (~al_test@94.233.240.148) (Ping timeout: 252 seconds) |
2021-10-20 13:14:34 +0200 | <Inst> | maerwald: I'd be orienting the firm in China |
2021-10-20 13:14:35 +0200 | <maerwald> | I've also been thinking for a long time about the "misclick" problem... how can a UI minimize misclicks |
2021-10-20 13:14:49 +0200 | <maerwald> | reducing animations sure, but there's more |
2021-10-20 13:14:52 +0200 | <Inst> | whatever happened to radial menus? |
2021-10-20 13:15:00 +0200 | stengah | (~stengah@user/stengah) (Ping timeout: 258 seconds) |
2021-10-20 13:15:03 +0200 | kupi | (uid212005@id-212005.hampstead.irccloud.com) |
2021-10-20 13:15:04 +0200 | AlexZenon | (~alzenon@94.233.240.148) (Ping timeout: 252 seconds) |
2021-10-20 13:15:27 +0200 | <Inst> | maerwald: you can probably remove misclicks via a click + mouse gesture combo |
2021-10-20 13:15:34 +0200 | AlexNoo | (~AlexNoo@94.233.240.148) (Ping timeout: 252 seconds) |
2021-10-20 13:16:02 +0200 | alzgh | (~alzgh@user/alzgh) |
2021-10-20 13:16:07 +0200 | <LiaoTao> | That sounds like a surefire way to make everyone hate your UI |
2021-10-20 13:16:52 +0200 | <Inst> | I mean a lot of apps require swipes already. |
2021-10-20 13:17:28 +0200 | <maerwald> | you still want animations, but you could e.g. detect that your finger (pre-touch detection) switched context during an animation and have thresholds that block an action under certain circumstances |
2021-10-20 13:18:28 +0200 | <maerwald> | I mean, you still need to support mass-swipes etc, so it's not an easy problem |
2021-10-20 13:19:12 +0200 | mzan | (~quassel@mail.asterisell.com) |
2021-10-20 13:19:21 +0200 | <maerwald> | and that technology could be somewhat extended to websites... I hate it when I click and due to an element that just finished loading, the layout changed and I hit some random button |
2021-10-20 13:19:54 +0200 | Alex_test | (~al_test@178.34.160.45) |
2021-10-20 13:19:58 +0200 | AlexZenon | (~alzenon@178.34.160.45) |
2021-10-20 13:20:03 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 13:20:37 +0200 | <Inst> | Only matters if you're on a slow system; I have a decent connection and a decent workstation computer |
2021-10-20 13:20:46 +0200 | <Inst> | sometimes I wish loading might be actually slower |
2021-10-20 13:21:45 +0200 | <maerwald> | one idea on the desktop would be to block layout changes as long as the mouse is moving |
2021-10-20 13:22:03 +0200 | <maerwald> | but that'll need more refinement |
2021-10-20 13:23:17 +0200 | <Franciman> | Inst: are you on reddit too? |
2021-10-20 13:24:22 +0200 | <Inst> | that post is mine |
2021-10-20 13:25:09 +0200 | <Franciman> | which post? |
2021-10-20 13:25:51 +0200 | <Franciman> | ah found |
2021-10-20 13:26:04 +0200 | <Franciman> | Instrume, I-I had seen Inst somewhere else |
2021-10-20 13:26:37 +0200 | <Inst> | I'm dropping the issue, I wrote an e-mail to HF about whether or not it'd be viable to try to espouse Haskell among non-programmers. |
2021-10-20 13:26:57 +0200 | <Franciman> | it sure is a great idea |
2021-10-20 13:27:09 +0200 | <Inst> | the average person is both smarter and dumber than you think, i.e, with the right education, they can do incredible things, but at the same time they often have really dumb ideas |
2021-10-20 13:28:10 +0200 | <Franciman> | yeah people are interesting |
2021-10-20 13:28:29 +0200 | <Franciman> | being dumb can just be a lack of something |
2021-10-20 13:28:52 +0200 | <Franciman> | I wish we didn't have mass teaching as the only method |
2021-10-20 13:28:55 +0200 | <Franciman> | it is good |
2021-10-20 13:29:11 +0200 | <Franciman> | but treating anybody as a individual can get a lot of benefits |
2021-10-20 13:29:53 +0200 | <LiaoTao> | On the other hand some people are just plain dumb and can't be taught skills like extrapolation from known data. |
2021-10-20 13:29:54 +0200 | <Franciman> | Inst: i recall projects teaching functional languages as first language |
2021-10-20 13:30:27 +0200 | <Inst> | LiaoTao: was it Xun Zi or Mencius? |
2021-10-20 13:30:45 +0200 | <LiaoTao> | Inst, LiaoTao |
2021-10-20 13:30:46 +0200 | <Inst> | I forget, via Feng Youlan, some people are born sages, some are utterly incorrigible, most people are somewhere in between |
2021-10-20 13:31:00 +0200 | <Inst> | and thus educable |
2021-10-20 13:31:21 +0200 | <Franciman> | that's always the swingers being the most important |
2021-10-20 13:31:38 +0200 | jgeerds | (~jgeerds@55d4da80.access.ecotel.net) |
2021-10-20 13:32:10 +0200 | <lortabac> | I'm pretty sure dumb people don't exist, find something they are really interested in and they'll surprise you |
2021-10-20 13:32:25 +0200 | <Inst> | umm, people with real physiological disabilities |
2021-10-20 13:32:35 +0200 | <Inst> | someone with a chromosomal abnormality, for instance |
2021-10-20 13:32:42 +0200 | <lortabac> | ok that's a different problem |
2021-10-20 13:33:03 +0200 | <Franciman> | even in that case, let them be happy, and they'll find a way to be accomplished |
2021-10-20 13:33:09 +0200 | <LiaoTao> | lortabac, That's a very generous view and not something I've been able to corroborate with reality |
2021-10-20 13:33:13 +0200 | <LiaoTao> | Which is sad, but nevertheless |
2021-10-20 13:33:38 +0200 | <lortabac> | think of how much intelligence it takes to do things like driving, yet most people can do it |
2021-10-20 13:34:22 +0200 | <LiaoTao> | Someone more glib would ask you to take a look at your average roundabout during peak traffic hours |
2021-10-20 13:34:56 +0200 | <lortabac> | anyway it's offtopic |
2021-10-20 13:35:20 +0200 | <LiaoTao> | Right |
2021-10-20 13:35:43 +0200 | <Franciman> | let's get back about how wiki as documentation is cool |
2021-10-20 13:36:22 +0200 | <lortabac> | Franciman: welcome to 1990 :P |
2021-10-20 13:36:30 +0200 | <Franciman> | *.* |
2021-10-20 13:36:41 +0200 | Franciman | puts eiffel65 on |
2021-10-20 13:36:53 +0200 | hpc | puts portlandia on :D |
2021-10-20 13:36:59 +0200 | <Franciman> | *.* |
2021-10-20 13:37:05 +0200 | LiaoTao | puts macarena on |
2021-10-20 13:37:14 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 258 seconds) |
2021-10-20 13:37:21 +0200 | <hpc> | they didn't call it a wiki until 2005 |
2021-10-20 13:42:35 +0200 | <Inst> | @franciman: apparently there's a school in India that does Haskell first, Oxford does Haskell first, Haskell is included in first languages at Imperial College, Cambridge (at least sometimes) does Haskell first |
2021-10-20 13:42:35 +0200 | <lambdabot> | Unknown command, try @list |
2021-10-20 13:43:52 +0200 | off^ | (~off@68.101.53.15) |
2021-10-20 13:44:30 +0200 | <Inst> | https://wiki.haskell.org/Haskell_in_education |
2021-10-20 13:44:58 +0200 | <Franciman> | uh a wiki |
2021-10-20 13:45:06 +0200 | <Franciman> | ty |
2021-10-20 13:45:59 +0200 | Guest|41 | (~Guest|41@31-187-0-247.dynamic.upc.ie) (Ping timeout: 264 seconds) |
2021-10-20 13:47:04 +0200 | <LiaoTao> | Some adventurous CS lecturer at Chalmers uses Haskell too |
2021-10-20 13:48:26 +0200 | <LiaoTao> | We suddenly had lots of applications with Haskell on the resume, and I thought "Darn, maybe finally the year of FP is upon us", but as it turns out they had all just used it for a university course |
2021-10-20 13:48:41 +0200 | <sshine> | they use Haskell on the 1st MSc course at University of Copenhagen. they used to use SML for the 1st BSc course, but I think they switched to F# now. |
2021-10-20 13:51:27 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-10-20 13:53:41 +0200 | acidjnk_new | (~acidjnk@pd9e0b933.dip0.t-ipconnect.de) |
2021-10-20 13:54:21 +0200 | <kuribas> | Why don't they teach dependent types? |
2021-10-20 13:54:43 +0200 | <sshine> | kuribas, imagine what that would make people feel when they get their first job. |
2021-10-20 13:55:08 +0200 | max22- | (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Ping timeout: 265 seconds) |
2021-10-20 13:55:24 +0200 | <dminuoso> | kuribas: You have plenty cassava experience right? |
2021-10-20 13:55:39 +0200 | <dminuoso> | Is there a way to have cassava mention the column name a particular field couldn't be parsed in? |
2021-10-20 13:56:10 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 260 seconds) |
2021-10-20 13:56:33 +0200 | <dminuoso> | It's quite frustrating to just get some: Failed reading: conversion error: expected Int, got "" (not enough input) |
2021-10-20 13:56:47 +0200 | acidjnk_new3 | (~acidjnk@p200300d0c703cb959894c42690fc4f0f.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
2021-10-20 13:56:55 +0200 | <kuribas> | dminuoso: https://github.com/haskell-hvr/cassava/pull/197 |
2021-10-20 13:57:11 +0200 | <dminuoso> | I knew I was asking the right person. :-) |
2021-10-20 13:57:12 +0200 | <dminuoso> | Cheers |
2021-10-20 13:57:35 +0200 | <kuribas> | I didn't get any update on this PR sadly... |
2021-10-20 13:57:46 +0200 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2021-10-20 13:57:56 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2021-10-20 13:58:46 +0200 | <dminuoso> | kuribas: It's also frustrating that none of these FromField instances do a BS.null check |
2021-10-20 13:59:01 +0200 | <kuribas> | dminuoso: yeah |
2021-10-20 13:59:49 +0200 | <kuribas> | I am considering reimplementing most of the functionality, and just using cassava as "ByteString -> [Map Text Text]" |
2021-10-20 14:00:07 +0200 | <dminuoso> | Well it should be ByteString for general use |
2021-10-20 14:00:09 +0200 | <dminuoso> | But yeah |
2021-10-20 14:00:28 +0200 | <dminuoso> | I mean there's an alternate way |
2021-10-20 14:00:35 +0200 | <dminuoso> | You can also parse into tuples of bytestrings |
2021-10-20 14:01:04 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-10-20 14:01:37 +0200 | <kuribas> | Isn't csv utf8? |
2021-10-20 14:02:00 +0200 | <dminuoso> | kuribas: But really it seems the best way is to have cassava parse into `data RecordRaw = RecordRaw { rawSalary :: ByteString, rawName :: ByteString }`, with some matching `data Record = Record { salary :: Int, name :: Text }`, and then write some generic code turning RecordRaw into Record, producing legigble errors.. |
2021-10-20 14:02:06 +0200 | <dminuoso> | csv isnt even well defined really |
2021-10-20 14:02:36 +0200 | <dminuoso> | There's a lot of programs that rapidly produce latin encoded csvs instead |
2021-10-20 14:02:48 +0200 | <dminuoso> | SqlDeveloper is very liberal |
2021-10-20 14:02:53 +0200 | <dminuoso> | Pretty sure Excel is as well |
2021-10-20 14:03:38 +0200 | burnsidesLlama | (~burnsides@dhcp168-039.wadham.ox.ac.uk) |
2021-10-20 14:07:44 +0200 | <kuribas> | dminuoso: but then I have to make a Raw* record for each of my records? |
2021-10-20 14:08:44 +0200 | <dminuoso> | Bah you know what, I think what Ill do |
2021-10-20 14:08:47 +0200 | <dminuoso> | got a better idea |
2021-10-20 14:11:36 +0200 | <kuribas> | make a new csv library? |
2021-10-20 14:12:45 +0200 | <kuribas> | you could copy the low level parsing stuff from cassava. |
2021-10-20 14:14:09 +0200 | <dminuoso> | Im going to quickly ruin its performance (not relevant to my case), and simply bolt on variants of (.:) |
2021-10-20 14:14:14 +0200 | <dminuoso> | So I have .:: and .:! |
2021-10-20 14:14:34 +0200 | <dminuoso> | Which would both include field names in errors, and .:! would assert the field be non empty |
2021-10-20 14:16:39 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-10-20 14:17:41 +0200 | Guest13 | (~Guest13@cust190-dsl55.idnet.net) (Quit: Client closed) |
2021-10-20 14:23:11 +0200 | off^ | (~off@68.101.53.15) (Ping timeout: 264 seconds) |
2021-10-20 14:24:28 +0200 | <zincy> | Opinions on testing validity of generators in property based testing? |
2021-10-20 14:25:56 +0200 | k60 | (~k60@broadband-95-84-168-218.ip.moscow.rt.ru) (Ping timeout: 265 seconds) |
2021-10-20 14:27:42 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) |
2021-10-20 14:28:13 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
2021-10-20 14:30:25 +0200 | <kuribas> | zincy: add properties which validate your generators. |
2021-10-20 14:30:47 +0200 | <kuribas> | you can get statistics that not all properties are trivial for example. |
2021-10-20 14:31:36 +0200 | <zincy> | cover? |
2021-10-20 14:32:10 +0200 | <zincy> | Yeah so testing your tests is ok in moderation |
2021-10-20 14:34:13 +0200 | <kuribas> | Or I write a property that should fail, then remove it when I see the generator is catching those. |
2021-10-20 14:34:39 +0200 | <kuribas> | Getting the generators right is also important. |
2021-10-20 14:37:10 +0200 | <zincy> | So the coverage combinators for hedgehog are designed to help you get generators right |
2021-10-20 14:37:14 +0200 | <zincy> | very cool |
2021-10-20 14:37:35 +0200 | <zincy> | kuribas: Have you tried the state machine feature? |
2021-10-20 14:37:41 +0200 | <zincy> | Wondering if it is worth a go |
2021-10-20 14:37:49 +0200 | <kuribas> | zincy: no, I just recently learned that it exists. |
2021-10-20 14:37:55 +0200 | Guest2920 | (~Guest29@net-93-151-133-175.cust.dsl.teletu.it) (Quit: Client closed) |
2021-10-20 14:38:07 +0200 | <kuribas> | I didn't need it yet, but I might in the future. |
2021-10-20 14:40:33 +0200 | xiongxin | (~quassel@119.123.103.160) |
2021-10-20 14:41:01 +0200 | <dminuoso> | kuribas: https://gist.github.com/dminuoso/08e7b1aca8bb92fe84345adf3e0f1a10 |
2021-10-20 14:41:16 +0200 | <dminuoso> | Here, a dirty drop in solution for all my problems. |
2021-10-20 14:41:47 +0200 | <kuribas> | why is that slow? |
2021-10-20 14:42:21 +0200 | Guest55 | (~Guest55@78.198.4.122) |
2021-10-20 14:42:36 +0200 | <dminuoso> | That (potentially doubly nested) runParser will defeat the deforestration technique |
2021-10-20 14:42:41 +0200 | <dminuoso> | Parser uses continuations internally |
2021-10-20 14:42:45 +0200 | <dminuoso> | I turn that back into case-of |
2021-10-20 14:43:01 +0200 | <dminuoso> | Bah, I can probably simply break Parser open and use those continuations manually |
2021-10-20 14:43:03 +0200 | <dminuoso> | Maybe I shoulld |
2021-10-20 14:43:38 +0200 | <dminuoso> | Ah wait, its not exported |
2021-10-20 14:44:02 +0200 | <dminuoso> | So yeah, aside of `unsafeCoerce'ing` my way through, this is not going to play nice with large csvs |
2021-10-20 14:44:06 +0200 | <dminuoso> | but the ones I deal with are small anyway |
2021-10-20 14:44:56 +0200 | AlexNoo_ | AlexNoo |
2021-10-20 14:45:50 +0200 | <Guest55> | Hey, Could someone help me understand the error that i'm having on this simple program: https://paste.tomsmeding.com/LL1aSDyt |
2021-10-20 14:46:25 +0200 | stengah | (~stengah@user/stengah) |
2021-10-20 14:46:57 +0200 | <dminuoso> | Guest55: Hey yes. |
2021-10-20 14:47:00 +0200 | xiongxin | (~quassel@119.123.103.160) (Read error: Connection reset by peer) |
2021-10-20 14:47:00 +0200 | <lortabac> | Guest55: you apply (.) on things that are not functions |
2021-10-20 14:47:03 +0200 | <dminuoso> | % :t lines |
2021-10-20 14:47:04 +0200 | <yahb> | dminuoso: String -> [String] |
2021-10-20 14:47:25 +0200 | <dminuoso> | Or well, what lortabac said. |
2021-10-20 14:47:58 +0200 | <lortabac> | :t (.) |
2021-10-20 14:47:59 +0200 | <lambdabot> | (b -> c) -> (a -> b) -> a -> c |
2021-10-20 14:48:04 +0200 | xiongxin | (~quassel@119.123.100.49) |
2021-10-20 14:48:30 +0200 | <Guest55> | Could you elaborate? (... . lines str) isn't valid? |
2021-10-20 14:49:07 +0200 | <dminuoso> | Guest55: You already applied lines to str. |
2021-10-20 14:49:16 +0200 | <dminuoso> | So the expression `lines str` is of type [String]` |
2021-10-20 14:49:50 +0200 | <dminuoso> | So if we take `f . lines str`, you're trying to compose `f` with .. uh well a list of strings. But if you look at the type of (.) above, you can see that (.) demands its second argument to be a function. |
2021-10-20 14:50:37 +0200 | <Guest55> | Oh I see. So maybe `... . lines $ str` should do it?! And it seems to! |
2021-10-20 14:51:10 +0200 | lbseale | (~lbseale@user/ep1ctetus) |
2021-10-20 14:51:24 +0200 | <Guest55> | Thanks dminuoso ! |
2021-10-20 14:51:34 +0200 | <lortabac> | alternatively, you can remove 'str' both before and after the = |
2021-10-20 14:51:37 +0200 | mbuf | (~Shakthi@122.178.207.237) (Quit: Leaving) |
2021-10-20 14:51:50 +0200 | <dminuoso> | ^- and that would be the idiomatic thing to do, even. :) |
2021-10-20 14:52:08 +0200 | <Guest55> | Ah yes point free style :) |
2021-10-20 14:52:51 +0200 | <dminuoso> | Yeah. Though point free is not the ultimate goal, for simple function composition this is very idiomatic. |
2021-10-20 14:53:28 +0200 | <Guest55> | I see, thanks! |
2021-10-20 14:54:04 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 14:54:49 +0200 | <lortabac> | mixing (.) and ($) works too, but I find it a little confusing |
2021-10-20 14:55:44 +0200 | <Guest55> | Now for the most difficult part (imho), how does one go from the error message to this conclusion? Supposing the error wasn't obvious at first sight, and you had to understand the error message, how would you link it to '.' ? Is it "In the second argument of ‘(.)’, namely ‘lines str’" that gives it away? |
2021-10-20 14:56:18 +0200 | <Guest55> | Personally I was focused on the first part "Possible cause: ‘lines’ is applied to too many arguments" |
2021-10-20 14:57:31 +0200 | <lortabac> | yes, the hint is correct |
2021-10-20 14:57:47 +0200 | <lortabac> | lines is applied to too many arguments (1 instead of zero) |
2021-10-20 14:59:05 +0200 | <lortabac> | unfortunately I don't think there is a simple universal method to understand the error messages |
2021-10-20 14:59:17 +0200 | <Guest55> | Oh I see. GHC knows we're in a '.' composition context and hence knows that lines should have 0 (1 less than normal) argument ? |
2021-10-20 14:59:55 +0200 | <Guest55> | lortabac: Yeah I find most of them quite cryptic, but i'm trying to train myself to understand them better! |
2021-10-20 15:01:23 +0200 | <lortabac> | yes, (.) expects a function as a second argument, but you gave it a function applied to an argument, which resulted in a String |
2021-10-20 15:01:51 +0200 | <lortabac> | so it deduced that you probably shouldn't have applied it |
2021-10-20 15:01:52 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) |
2021-10-20 15:02:24 +0200 | <lortabac> | but remember that these "possible causes" are just hints, they are not right 100% of the times |
2021-10-20 15:03:52 +0200 | <Guest55> | Oh right, there's often more than one solution so the compiler certainly just tries to enumerate them. |
2021-10-20 15:04:03 +0200 | <Guest55> | Thank you very much lortabac ! |
2021-10-20 15:04:18 +0200 | AlexZenon | (~alzenon@178.34.160.45) (Quit: ;-) |
2021-10-20 15:04:22 +0200 | Alex_test | (~al_test@178.34.160.45) (Quit: ;-) |
2021-10-20 15:04:26 +0200 | AlexNoo | (~AlexNoo@178.34.160.45) (Quit: Leaving) |
2021-10-20 15:05:47 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 258 seconds) |
2021-10-20 15:06:21 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) (Ping timeout: 245 seconds) |
2021-10-20 15:06:45 +0200 | mei | (~mei@user/mei) |
2021-10-20 15:08:05 +0200 | CiaoSen | (~Jura@p200300c95730dd002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
2021-10-20 15:08:45 +0200 | azimut_ | (~azimut@gateway/tor-sasl/azimut) |
2021-10-20 15:10:02 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Quit: ZNC - https://znc.in) |
2021-10-20 15:11:09 +0200 | jgeerds | (~jgeerds@55d4da80.access.ecotel.net) (Ping timeout: 258 seconds) |
2021-10-20 15:11:37 +0200 | azimut_ | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2021-10-20 15:11:54 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2021-10-20 15:16:05 +0200 | off^ | (~off@68.101.53.15) |
2021-10-20 15:17:06 +0200 | _bo | (~bo@217.18.216.247) |
2021-10-20 15:19:18 +0200 | slack1256 | (~slack1256@45.4.2.52) |
2021-10-20 15:19:37 +0200 | Farzad | (~FarzadBek@178.131.24.144) |
2021-10-20 15:20:32 +0200 | <dminuoso> | kuribas: But yeah, cassava is not very good in a lot of ways |
2021-10-20 15:21:07 +0200 | <_bo> | Can someone please help me understand how to think about task of splitting string into substrings? I understand concept of maps and reduces, but how do I apply it here? |
2021-10-20 15:21:20 +0200 | renzhi | (~xp@2607:fa49:6500:b100::6e7f) |
2021-10-20 15:21:38 +0200 | <dminuoso> | _bo: What's the specific problem you are trying to solve? |
2021-10-20 15:21:48 +0200 | <_bo> | "aaabbba" -> ["aaa", a], this is an example |
2021-10-20 15:22:23 +0200 | <_bo> | dminuoso: If I'm completely transparent: https://www.codewars.com/kata/59c633e7dcc4053512000073 |
2021-10-20 15:22:30 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 260 seconds) |
2021-10-20 15:22:45 +0200 | AlexZenon | (~alzenon@178.34.160.45) |
2021-10-20 15:22:47 +0200 | MQ-17J | (~MQ-17J@2607:fb90:1d89:67a9:1cd1:a18:a57f:e102) |
2021-10-20 15:23:00 +0200 | AlexNoo | (~AlexNoo@178.34.160.45) |
2021-10-20 15:23:23 +0200 | <dminuoso> | _bo: Okay, Im really not sure how you come from that kata to the example you provided. |
2021-10-20 15:23:31 +0200 | <_bo> | I thought that I can approach this task by mapping string to sub-arrays of continuous consonants, then just replacing chars with numbers, then just summing sub-arrays and selecting the biggest |
2021-10-20 15:23:39 +0200 | <dminuoso> | But oh well I think I get it. |
2021-10-20 15:23:55 +0200 | <dminuoso> | _bo: Sounds about right. |
2021-10-20 15:24:35 +0200 | <dminuoso> | _bo: You can use `groupBy` from Data.List |
2021-10-20 15:24:45 +0200 | <dminuoso> | Incidentally its non-sorting behavior will fit your usage pattern nicely |
2021-10-20 15:25:09 +0200 | <_bo> | Grouping by "being consonant"? Clever |
2021-10-20 15:25:24 +0200 | <dminuoso> | yeah, it will require additional processing. it's just one of many solutions. |
2021-10-20 15:25:45 +0200 | <dminuoso> | _bo: Am I right in presuming you're just using these katas as ways to learn Haskell? |
2021-10-20 15:25:51 +0200 | <_bo> | But then how do I implement this group myself? I like solving katas without any libraries |
2021-10-20 15:26:01 +0200 | <dminuoso> | groupBy is part of base |
2021-10-20 15:26:07 +0200 | <dminuoso> | % :t groupBy |
2021-10-20 15:26:07 +0200 | <yahb> | dminuoso: (a -> a -> Bool) -> [a] -> [[a]] |
2021-10-20 15:26:11 +0200 | <dminuoso> | % :t Data.List.groupBy |
2021-10-20 15:26:11 +0200 | <yahb> | dminuoso: (a -> a -> Bool) -> [a] -> [[a]] |
2021-10-20 15:26:16 +0200 | Alex_test | (~al_test@178.34.160.45) |
2021-10-20 15:26:23 +0200 | <dminuoso> | But if you like, you can just write it yourself |
2021-10-20 15:26:30 +0200 | <dminuoso> | It's a neat little challenge if you dont know how |
2021-10-20 15:26:36 +0200 | <_bo> | Yes, you are 100% correct. I can't write any apps yet, so I'm starting with katas |
2021-10-20 15:26:42 +0200 | <dminuoso> | _bo: at any rate. |
2021-10-20 15:26:49 +0200 | <dminuoso> | _bo: The key primitives you are looking for is this: |
2021-10-20 15:26:51 +0200 | <dminuoso> | % :t span |
2021-10-20 15:26:51 +0200 | <yahb> | dminuoso: (a -> Bool) -> [a] -> ([a], [a]) |
2021-10-20 15:26:54 +0200 | <dminuoso> | % :t break |
2021-10-20 15:26:54 +0200 | <yahb> | dminuoso: (a -> Bool) -> [a] -> ([a], [a]) |
2021-10-20 15:27:02 +0200 | <dminuoso> | A lot of string processing revolves around these two |
2021-10-20 15:27:06 +0200 | <dminuoso> | Or list processing, rather. |
2021-10-20 15:27:23 +0200 | <dminuoso> | % span (>5) [1,2,3,4,5,6,7] |
2021-10-20 15:27:23 +0200 | <yahb> | dminuoso: ([],[1,2,3,4,5,6,7]) |
2021-10-20 15:27:28 +0200 | <dminuoso> | % span (<5) [1,2,3,4,5,6,7] |
2021-10-20 15:27:28 +0200 | <yahb> | dminuoso: ([1,2,3,4],[5,6,7]) |
2021-10-20 15:27:46 +0200 | <_bo> | Seems like a takeWhile |
2021-10-20 15:28:09 +0200 | <dminuoso> | Yeah, except `span` will also return the other list |
2021-10-20 15:28:34 +0200 | stengah | (~stengah@user/stengah) (Ping timeout: 260 seconds) |
2021-10-20 15:28:40 +0200 | <dminuoso> | So you can simply use `span` in some recursive manner, where you repeatedly work on the second remainder of the tuple |
2021-10-20 15:29:38 +0200 | Profpatsch | (~Profpatsc@static.88-198-193-255.clients.your-server.de) |
2021-10-20 15:30:00 +0200 | <Profpatsch> | chaining Wai.Middlewares means the last one receives the request first, right? |
2021-10-20 15:30:14 +0200 | <dminuoso> | Profpatsch: what does "last" mean? |
2021-10-20 15:30:14 +0200 | <_bo> | I see the idea, thanks! Will also try to write span myself |
2021-10-20 15:30:24 +0200 | <dminuoso> | Profpatsch: or "chaining" |
2021-10-20 15:30:25 +0200 | <Profpatsch> | middleware1 . middleware2 should pass the request to 1 first and 2 last |
2021-10-20 15:30:29 +0200 | <dminuoso> | Profpatsch: Yes. |
2021-10-20 15:30:32 +0200 | <Profpatsch> | Ah, okay |
2021-10-20 15:30:35 +0200 | <dminuoso> | Profpatsch: Consider this: |
2021-10-20 15:30:38 +0200 | <dminuoso> | type Middleware = Application -> Application |
2021-10-20 15:30:40 +0200 | <Profpatsch> | I used middleware2 >>> middleware1 |
2021-10-20 15:30:45 +0200 | <dminuoso> | And: |
2021-10-20 15:30:46 +0200 | <Profpatsch> | So the order is reversed |
2021-10-20 15:30:48 +0200 | <dminuoso> | type Application = Request -> (Response -> IO ResponseReceived) -> IO ResponseReceived |
2021-10-20 15:30:53 +0200 | <xsperry> | _bo going by the question on codewars link, you don't need group*, just filter, maximum and isConsonant :: Char -> Bool. you can write filter/maximum yourself if you want |
2021-10-20 15:31:18 +0200 | <dminuoso> | xsperry: no, you need either some form of group or span |
2021-10-20 15:31:29 +0200 | <dminuoso> | Or something similar in spirit |
2021-10-20 15:31:39 +0200 | <Profpatsch> | dminuoso: I remember stumbling over this a while ago, thanks for confirming |
2021-10-20 15:31:40 +0200 | <dminuoso> | The task is just poorly phrased |
2021-10-20 15:31:56 +0200 | <Profpatsch> | So i’d use . instead of >>> and the order should be top-to-bottom or left-to-rigth |
2021-10-20 15:32:00 +0200 | <xsperry> | dminuoso, how so? solve("zodiacs") = 26. value of z is 26. filter, maximum, and function that maps consonant to Int is all you need |
2021-10-20 15:32:18 +0200 | acidjnk_new | (~acidjnk@pd9e0b933.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2021-10-20 15:32:29 +0200 | <dminuoso> | xsperry: you take the largest consecutive sequence of consonants, and then add their ascii values together |
2021-10-20 15:32:49 +0200 | <dminuoso> | and the chunk of consequtive consonants with the highest such sum is what this kata is after |
2021-10-20 15:32:59 +0200 | rkrishnan | (~user@2402:e280:215c:2cd:d6b1:e062:567:7a9c) (Remote host closed the connection) |
2021-10-20 15:33:04 +0200 | <xsperry> | dminuoso, ah, my mistake. group will be useful then |
2021-10-20 15:33:38 +0200 | <dminuoso> | Profpatsch: Mmm I think you have that the wrong way |
2021-10-20 15:34:57 +0200 | <dminuoso> | Profpatsch: Consider for a second a simple response time logging middleware. |
2021-10-20 15:35:08 +0200 | <dminuoso> | So you might have `profile :: Application -> Application`, or `profile :: Middleware` |
2021-10-20 15:35:28 +0200 | zer0bitz | (~zer0bitz@dsl-hkibng31-54fae3-116.dhcp.inet.fi) |
2021-10-20 15:35:31 +0200 | <dminuoso> | You use this by simply applying this to your app `yourApp :: Application`, with `profile yourApp :: Application` |
2021-10-20 15:36:17 +0200 | <dminuoso> | Since this is just a function, composing `profile` with `logging` in `profile . logging` will first apply the logging middleware, and then the profiling middleware. |
2021-10-20 15:36:51 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-10-20 15:36:51 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-10-20 15:36:51 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-10-20 15:36:57 +0200 | <dminuoso> | Note that the order of middlewares is not necessarily reflecting on the relative order in which effects actually occur. |
2021-10-20 15:37:14 +0200 | <Profpatsch> | logging (profile app) |
2021-10-20 15:37:28 +0200 | <Profpatsch> | Won’t the request be passed to `logging` firts? |
2021-10-20 15:37:44 +0200 | <dminuoso> | Profpatsch: Perhaps its best to simply write a middleware yourself. |
2021-10-20 15:37:48 +0200 | mei | (~mei@user/mei) (Read error: Connection reset by peer) |
2021-10-20 15:39:10 +0200 | <Profpatsch> | dminuoso: I have a bunch of self-written middlewares heer |
2021-10-20 15:39:19 +0200 | <Profpatsch> | doesn’t mean I can understand the order in which things run :) |
2021-10-20 15:39:36 +0200 | <Profpatsch> | I mean that would be a prime example of what good Wai documentation should have as an example |
2021-10-20 15:39:41 +0200 | <dminuoso> | Profpatsch: Ah I think there's a mismatch between what you wrote and I understood. |
2021-10-20 15:39:44 +0200 | <dminuoso> | Yes. |
2021-10-20 15:40:23 +0200 | <dminuoso> | The "outer" middleware gets to hook *before* the inner middleware gets a request, and *after* the inner middleware sends a response. |
2021-10-20 15:40:42 +0200 | <dminuoso> | Perhaps "middleware" is a very misleading name, since it's rather like an onion layer |
2021-10-20 15:40:51 +0200 | <dminuoso> | it sits *around* an application, rather than in the middle.. |
2021-10-20 15:41:01 +0200 | <Profpatsch> | Yeah. |
2021-10-20 15:41:13 +0200 | <Profpatsch> | Pretty close to just forking wai and improving the docs :) |
2021-10-20 15:41:19 +0200 | <Profpatsch> | I mean I guess why not |
2021-10-20 15:41:23 +0200 | max22- | (~maxime@2a01cb0883359800cd1fff3f97961f02.ipv6.abo.wanadoo.fr) |
2021-10-20 15:41:32 +0200 | <Profpatsch> | I did the same to Servant.Foreign https://hackage.haskell.org/package/servant-foreign-0.15.4/docs/Servant-Foreign.html |
2021-10-20 15:41:47 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 264 seconds) |
2021-10-20 15:42:04 +0200 | <dminuoso> | Or you can just improve the official documentation? |
2021-10-20 15:42:11 +0200 | <dminuoso> | Im sure if you made a PR, it would be welcomed. |
2021-10-20 15:42:57 +0200 | <Profpatsch> | yep |
2021-10-20 15:44:26 +0200 | tomku | (~tomku@user/tomku) (Quit: Lost terminal) |
2021-10-20 15:46:18 +0200 | <Profpatsch> | Okay, I tried it out with badMid a req resp = error "oh no" and logMid a req resp = putStrLn "hi" >> a req resp |
2021-10-20 15:46:20 +0200 | jollygood2 | (~bc8165b6@217.29.117.252) |
2021-10-20 15:46:25 +0200 | xiongxin | (~quassel@119.123.100.49) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2021-10-20 15:46:34 +0200 | <Profpatsch> | And logMid . badMid prints hi\noh no |
2021-10-20 15:46:43 +0200 | <Profpatsch> | And badMid . logMid only "oh no" |
2021-10-20 15:46:50 +0200 | <Profpatsch> | So the outer one runs “first” |
2021-10-20 15:47:06 +0200 | stengah | (~stengah@user/stengah) |
2021-10-20 15:47:20 +0200 | <Profpatsch> | Since all of this is in IO, you can actually determine what is first and what is later : |
2021-10-20 15:48:38 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 260 seconds) |
2021-10-20 15:49:11 +0200 | <dminuoso> | In the absence of forkIO :> |
2021-10-20 15:49:44 +0200 | <Profpatsch> | na na na I can’t hear you |
2021-10-20 15:49:57 +0200 | <dminuoso> | forkIO really ruins a lot of naive interpretations of IO too :( |
2021-10-20 15:51:00 +0200 | <Profpatsch> | I bet terrorjack can tell a story or two about IO and implementing a runtime :P |
2021-10-20 15:51:54 +0200 | stengah | (~stengah@user/stengah) (Ping timeout: 260 seconds) |
2021-10-20 15:52:54 +0200 | MQ-17J | (~MQ-17J@2607:fb90:1d89:67a9:1cd1:a18:a57f:e102) (Read error: Connection reset by peer) |
2021-10-20 15:53:13 +0200 | MQ-17J | (~MQ-17J@35.50.77.148) |
2021-10-20 15:54:24 +0200 | mei | (~mei@user/mei) |
2021-10-20 15:55:40 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2021-10-20 15:56:24 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-10-20 15:56:24 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-10-20 15:56:24 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-10-20 16:00:52 +0200 | mc47 | (~mc47@xmonad/TheMC47) |
2021-10-20 16:01:13 +0200 | fef | (~thedawn@user/thedawn) (Quit: Leaving) |
2021-10-20 16:02:53 +0200 | <Profpatsch> | lol nobody has touched this documentation since Greg Weber in 2015 |
2021-10-20 16:03:26 +0200 | geekosaur | thanks you in advance |
2021-10-20 16:03:38 +0200 | <Profpatsch> | Though I don’t understand the existing docstring, at all |
2021-10-20 16:03:48 +0200 | <Profpatsch> | -- string map \[(String, String)\]. A logical type signature for this middleware |
2021-10-20 16:03:48 +0200 | <geekosaur> | every time I hit the documentation for wai I bounce hard :( |
2021-10-20 16:03:50 +0200 | <Profpatsch> | -- might be: |
2021-10-20 16:03:53 +0200 | <Profpatsch> | -- |
2021-10-20 16:03:54 +0200 | <Profpatsch> | -- @ loadSession :: ([(String, String)] -> Application) -> Application @ |
2021-10-20 16:04:08 +0200 | <Profpatsch> | Why is it left-bracketed |
2021-10-20 16:04:37 +0200 | <Profpatsch> | cause of ([…] -> Req -> Respond -> IO …) -> (Req -> Respond -> IO …) |
2021-10-20 16:05:42 +0200 | lbseale_ | (~lbseale@user/ep1ctetus) |
2021-10-20 16:05:47 +0200 | <dminuoso> | Profpatsch: Because that's how things are associated? |
2021-10-20 16:05:58 +0200 | <dminuoso> | They are a bit redundant, perhaps some personal style? |
2021-10-20 16:06:15 +0200 | <dminuoso> | That is [(String, String)] -> Application -> Application means the same thing. :) |
2021-10-20 16:06:27 +0200 | <dminuoso> | And yeah, perhaps this is just some refactoring artifact |
2021-10-20 16:06:37 +0200 | <dminuoso> | Perhaps originally this was |
2021-10-20 16:06:58 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:8daf:444e:9c84:5148) (Quit: WeeChat 2.8) |
2021-10-20 16:07:03 +0200 | <Profpatsch> | Is it though? a -> b -> b is a -> (b -> b) no? |
2021-10-20 16:07:10 +0200 | <Profpatsch> | Wheras this is (a -> b) -> b |
2021-10-20 16:07:14 +0200 | <dminuoso> | uh hold on |
2021-10-20 16:07:24 +0200 | <dminuoso> | This is embarrassing. |
2021-10-20 16:07:26 +0200 | <dminuoso> | :) |
2021-10-20 16:07:35 +0200 | <Profpatsch> | But yeah, we def need good examples in the docs |
2021-10-20 16:07:36 +0200 | <dminuoso> | Yeah you're right |
2021-10-20 16:07:41 +0200 | <Profpatsch> | That is targeted at haskell newbs |
2021-10-20 16:07:47 +0200 | <Profpatsch> | because that’s who would like to write webservers |
2021-10-20 16:07:49 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
2021-10-20 16:08:03 +0200 | <Profpatsch> | So Wai is in a sense one of the most important Haskell modules |
2021-10-20 16:08:07 +0200 | <dminuoso> | kuribas: Gosh I really hate cassava now. :( |
2021-10-20 16:08:15 +0200 | <dminuoso> | I wish errors worked like this: |
2021-10-20 16:08:51 +0200 | <dminuoso> | a) Id like the option to include the entire row in an error, or b) include some primary key (from the row) in an error |
2021-10-20 16:08:54 +0200 | tomku | (~tomku@user/tomku) |
2021-10-20 16:08:56 +0200 | <dminuoso> | Such that you could write: |
2021-10-20 16:09:10 +0200 | lbseale | (~lbseale@user/ep1ctetus) (Ping timeout: 260 seconds) |
2021-10-20 16:09:39 +0200 | <Profpatsch> | Can I modify a response with a Middleware? I don’t think so right? |
2021-10-20 16:09:45 +0200 | <dminuoso> | parseRow = do key <- rec .: "key"; context (show key) $ Record key <$> rec .: "foo" <*> rec .: "bar" <*> rec .: "quux" |
2021-10-20 16:09:54 +0200 | <dminuoso> | Profpatsch: Yes you can. |
2021-10-20 16:10:13 +0200 | <Profpatsch> | Oh you can, you just have to create a new (Response -> IO ResponseReceived) and pass it into the next middleware |
2021-10-20 16:10:18 +0200 | <dminuoso> | Indeed., |
2021-10-20 16:10:23 +0200 | <dminuoso> | It's just very disgusting to do |
2021-10-20 16:10:46 +0200 | <Profpatsch> | So I guess there should be two examples, one how to adjust the Request and one the response |
2021-10-20 16:10:54 +0200 | <Profpatsch> | dminuoso: why is that? e.g. you need it for gzipping |
2021-10-20 16:11:06 +0200 | <dminuoso> | Profpatsch: for that I'd simply put nginx in front |
2021-10-20 16:11:09 +0200 | <Profpatsch> | Iterate over the responseBody chunker and gzip the chunks |
2021-10-20 16:11:11 +0200 | <dminuoso> | Which I'd have in any case for tls termination |
2021-10-20 16:11:14 +0200 | <dminuoso> | and other things |
2021-10-20 16:11:15 +0200 | <Profpatsch> | dminuoso: ah, that’s true |
2021-10-20 16:12:10 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2021-10-20 16:12:40 +0200 | razor[m] | (~razormone@2001:470:69fc:105::f048) () |
2021-10-20 16:12:53 +0200 | absence | (torgeihe@hildring.pvv.ntnu.no) |
2021-10-20 16:13:58 +0200 | <absence> | in a project where "-F -pgmF=record-dot-preprocessor" is added to ghc options in the .cabal file, how can i disable this preprocessor in a specific file using a pragma? |
2021-10-20 16:16:27 +0200 | <dminuoso> | Profpatsch: And regarding modifying the response, the problem is that Response is a very internal type |
2021-10-20 16:16:41 +0200 | <dminuoso> | Profpatsch: So in order to *modify* it, you have to do a lot of highly annoying work |
2021-10-20 16:17:54 +0200 | <dminuoso> | You'd likely use responseToStream, and then some real annoying work starts. |
2021-10-20 16:18:20 +0200 | <dminuoso> | Profpatsch: And btw, wai provides some modifyResponse helper |
2021-10-20 16:18:25 +0200 | <dminuoso> | modifyResponse :: (Response -> Response) -> Middleware |
2021-10-20 16:18:34 +0200 | <dminuoso> | Modifying status and headers is easy |
2021-10-20 16:18:38 +0200 | <dminuoso> | Modifying the body is annoying. |
2021-10-20 16:18:51 +0200 | <dminuoso> | You'd have to create a custom type StreamingBody = (Builder -> IO ()) -> IO () -> IO () |
2021-10-20 16:19:26 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
2021-10-20 16:20:22 +0200 | ubert | (~Thunderbi@91.141.37.135.wireless.dyn.drei.com) (Remote host closed the connection) |
2021-10-20 16:20:40 +0200 | <dminuoso> | And then using that custom StreamingBody, that would write these chunks into some buffer of your choosing, process it, and then create a separate StreamingBody, and feed those processed chunks into that. |
2021-10-20 16:20:56 +0200 | grfn | (sid449115@id-449115.helmsley.irccloud.com) (Ping timeout: 245 seconds) |
2021-10-20 16:20:56 +0200 | ehamberg | (sid18208@id-18208.hampstead.irccloud.com) (Ping timeout: 245 seconds) |
2021-10-20 16:21:23 +0200 | kupi | (uid212005@id-212005.hampstead.irccloud.com) (Ping timeout: 264 seconds) |
2021-10-20 16:21:23 +0200 | astra` | (sid289983@user/amish) (Ping timeout: 264 seconds) |
2021-10-20 16:21:41 +0200 | sclv | (sid39734@haskell/developer/sclv) (Ping timeout: 258 seconds) |
2021-10-20 16:21:42 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2021-10-20 16:21:46 +0200 | tritlo | (sid58727@user/tritlo) (Ping timeout: 245 seconds) |
2021-10-20 16:22:04 +0200 | amir | (sid22336@user/amir) (Ping timeout: 258 seconds) |
2021-10-20 16:22:04 +0200 | jonrh | (sid5185@id-5185.ilkley.irccloud.com) (Ping timeout: 258 seconds) |
2021-10-20 16:22:12 +0200 | ubert1 | (~Thunderbi@91.141.37.135.wireless.dyn.drei.com) (Quit: ubert1) |
2021-10-20 16:22:27 +0200 | elvishjerricco | (sid237756@id-237756.helmsley.irccloud.com) (Ping timeout: 258 seconds) |
2021-10-20 16:22:35 +0200 | dmj` | (sid72307@id-72307.hampstead.irccloud.com) (Ping timeout: 264 seconds) |
2021-10-20 16:22:35 +0200 | SrPx | (sid108780@id-108780.uxbridge.irccloud.com) (Ping timeout: 264 seconds) |
2021-10-20 16:22:35 +0200 | ubert | (~Thunderbi@91.141.37.135.wireless.dyn.drei.com) |
2021-10-20 16:22:50 +0200 | <dminuoso> | That separate streaming body/lazy bytestring/builder can then be used to reconstruct a Response via responseLBS/responseStream/responseBuilder |
2021-10-20 16:23:11 +0200 | Boarders | (sid425905@id-425905.lymington.irccloud.com) (Ping timeout: 264 seconds) |
2021-10-20 16:23:11 +0200 | etrepum | (sid763@id-763.uxbridge.irccloud.com) (Ping timeout: 264 seconds) |
2021-10-20 16:23:29 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-10-20 16:23:32 +0200 | SrPx | (sid108780@uxbridge.irccloud.com) |
2021-10-20 16:23:40 +0200 | grfn | (sid449115@helmsley.irccloud.com) |
2021-10-20 16:23:41 +0200 | etrepum | (sid763@uxbridge.irccloud.com) |
2021-10-20 16:23:47 +0200 | elvishjerricco | (sid237756@helmsley.irccloud.com) |
2021-10-20 16:23:47 +0200 | jonrh | (sid5185@ilkley.irccloud.com) |
2021-10-20 16:23:47 +0200 | amir | (sid22336@user/amir) |
2021-10-20 16:23:56 +0200 | tritlo | (sid58727@user/tritlo) |
2021-10-20 16:23:56 +0200 | astra` | (sid289983@user/amish) |
2021-10-20 16:23:57 +0200 | dmj` | (sid72307@hampstead.irccloud.com) |
2021-10-20 16:23:58 +0200 | kupi | (uid212005@hampstead.irccloud.com) |
2021-10-20 16:24:00 +0200 | ehamberg | (sid18208@hampstead.irccloud.com) |
2021-10-20 16:24:39 +0200 | kupi | (uid212005@hampstead.irccloud.com) (Client Quit) |
2021-10-20 16:25:09 +0200 | sclv | (sid39734@haskell/developer/sclv) |
2021-10-20 16:25:26 +0200 | Boarders | (sid425905@id-425905.lymington.irccloud.com) |
2021-10-20 16:26:04 +0200 | stengah | (~stengah@user/stengah) |
2021-10-20 16:26:11 +0200 | ub | (~Thunderbi@91.141.37.135.wireless.dyn.drei.com) |
2021-10-20 16:26:28 +0200 | <geekosaur> | absence, by the time it reads the pragma it's already been through the preprocessor |
2021-10-20 16:26:39 +0200 | coot | (~coot@37.30.49.107.nat.umts.dynamic.t-mobile.pl) |
2021-10-20 16:26:54 +0200 | unit73e | (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) |
2021-10-20 16:26:57 +0200 | shriekingnoise | (~shrieking@186.137.144.80) |
2021-10-20 16:28:05 +0200 | <Profpatsch> | dminuoso: yeah, I remember. I think the thing is that it was expected only a server would ever consume the Response type |
2021-10-20 16:28:14 +0200 | <Profpatsch> | So no helpers exist to make consuming it very nice |
2021-10-20 16:28:38 +0200 | <Profpatsch> | I wrote a “pure” Application caller here, I should open source it actually, which is nice in tests |
2021-10-20 16:28:44 +0200 | <dminuoso> | Profpatsch: No, the problem is that the output is streamed. |
2021-10-20 16:28:46 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 260 seconds) |
2021-10-20 16:29:02 +0200 | <dminuoso> | If processing that output was desirable, you'd need an appropriate streaming library |
2021-10-20 16:29:06 +0200 | <Profpatsch> | It just reads the response body chunks into a binary builder and/or an ioref |
2021-10-20 16:30:49 +0200 | pbrisbin | (~patrick@pool-173-49-152-45.phlapa.fios.verizon.net) (Ping timeout: 252 seconds) |
2021-10-20 16:32:33 +0200 | pbrisbin | (~patrick@199.66.179.206) |
2021-10-20 16:33:31 +0200 | slack1256 | (~slack1256@45.4.2.52) (Remote host closed the connection) |
2021-10-20 16:34:52 +0200 | jgeerds | (~jgeerds@55d4da80.access.ecotel.net) |
2021-10-20 16:35:31 +0200 | <absence> | geekosaur: ah, that's unfortunate, but makes sense. thanks! |
2021-10-20 16:36:02 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-10-20 16:36:02 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-10-20 16:36:02 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-10-20 16:37:19 +0200 | Inst | (~Inst@2601:6c4:4080:3f80:6134:7ceb:5f94:e843) (Remote host closed the connection) |
2021-10-20 16:37:36 +0200 | Inst | (~Inst@2601:6c4:4080:3f80:887d:efb8:1cec:d51f) |
2021-10-20 16:40:26 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
2021-10-20 16:41:41 +0200 | max22- | (~maxime@2a01cb0883359800cd1fff3f97961f02.ipv6.abo.wanadoo.fr) (Remote host closed the connection) |
2021-10-20 16:42:15 +0200 | unit73e | (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Remote host closed the connection) |
2021-10-20 16:42:40 +0200 | max22- | (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) |
2021-10-20 16:42:59 +0200 | timCF | (~timCF@200-149-20-81.sta.estpak.ee) |
2021-10-20 16:46:04 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-10-20 16:48:08 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-10-20 16:48:12 +0200 | timCF | (~timCF@200-149-20-81.sta.estpak.ee) (Quit: leaving) |
2021-10-20 16:49:33 +0200 | hendursa1 | (~weechat@user/hendursaga) (Quit: hendursa1) |
2021-10-20 16:50:05 +0200 | ub | (~Thunderbi@91.141.37.135.wireless.dyn.drei.com) (Ping timeout: 260 seconds) |
2021-10-20 16:50:06 +0200 | iteratee | (~kyle@162.218.222.107) |
2021-10-20 16:50:12 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-10-20 16:50:45 +0200 | hendursaga | (~weechat@user/hendursaga) |
2021-10-20 16:52:29 +0200 | timCF | (~timCF@200-149-20-81.sta.estpak.ee) |
2021-10-20 16:52:52 +0200 | MQ-17J | (~MQ-17J@35.50.77.148) (Ping timeout: 252 seconds) |
2021-10-20 16:53:34 +0200 | Nosrep | (~archbox@user/nosrep) |
2021-10-20 16:54:17 +0200 | hnOsmium0001 | (uid453710@id-453710.hampstead.irccloud.com) |
2021-10-20 16:54:48 +0200 | MQ-17J | (~MQ-17J@2607:fb90:1d89:67a9:1cd1:a18:a57f:e102) |
2021-10-20 16:56:01 +0200 | <timCF> | Hello! I have a question about Async. When I'm doing high-level `withAsync task inner`, do I need to call `link pid` inside the inner to allow expection from `task` thread propagete immediately to parent thread? |
2021-10-20 16:56:42 +0200 | <timCF> | Of course there is source, but I'm not sure I do fully understand it https://hackage.haskell.org/package/async-2.2.4/docs/src/Control.Concurrent.Async.html#withAsyncUs… |
2021-10-20 16:57:59 +0200 | tinhatcat | (~manjaro-g@2620:103:a000:2201:8e4c:af6a:e11c:11a1) (Quit: Leaving) |
2021-10-20 17:00:11 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:e2c3:1bcc:edee:e9f1) |
2021-10-20 17:00:46 +0200 | <_bo> | Guys, I'm trying to write my own `span` and the following code gives me ` Occurs check: cannot construct the infinite type: a ~ [a] |
2021-10-20 17:00:46 +0200 | <_bo> | * In the expression: left`: https://gist.github.com/MidasBetankor/84c8951af333a382ed386c7de3529831 can someone see why? |
2021-10-20 17:01:40 +0200 | <_bo> | Tried to think of span as: "it's an array of two sub-arrays, where left one has all values that satisfy predicate and right one has rest of elements after first time predicate misses" |
2021-10-20 17:01:45 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 260 seconds) |
2021-10-20 17:02:03 +0200 | <_bo> | But still can't see what's so infinite about `left` sub-array in the snippet above |
2021-10-20 17:03:23 +0200 | <Inst> | hi, could I have some help? |
2021-10-20 17:03:31 +0200 | <Franciman> | hi Inst ofc |
2021-10-20 17:03:31 +0200 | <Inst> | what does 50 :: Num a => a mean? |
2021-10-20 17:03:47 +0200 | <Inst> | "if a is one of the types of number, then 50 can have type a" |
2021-10-20 17:03:51 +0200 | <Inst> | that's what the textbook says |
2021-10-20 17:04:12 +0200 | <Inst> | the reason it's confusing is because it can be read as "but a might not be a type of number" |
2021-10-20 17:04:21 +0200 | <Franciman> | Num a => a |
2021-10-20 17:04:36 +0200 | <Inst> | on :type 50, which really should just be :t 50 |
2021-10-20 17:04:54 +0200 | <Inst> | I'm just wondering what it means mathematically |
2021-10-20 17:05:09 +0200 | <Inst> | if a is within the Set "number" |
2021-10-20 17:05:15 +0200 | <Inst> | but then it's cat theory not set theory |
2021-10-20 17:05:46 +0200 | <geekosaur> | it doesn't mean anything strictly mathematically, it's just a convenience so you don';t have to annotate every numeric literal with its intended type |
2021-10-20 17:05:54 +0200 | <iteratee> | It's programmatic, not mathematic. If there is an active instance of "Num" for a, then 50 can be of type a. |
2021-10-20 17:06:28 +0200 | <Inst> | what is meant by active instance of "num", i.e, by saying active you're implying it can also be inactive |
2021-10-20 17:06:44 +0200 | <iteratee> | It has to be imported somehow. |
2021-10-20 17:07:37 +0200 | <Inst> | so the type has to be declared into the program, but num is a fundamental type of Haskell |
2021-10-20 17:07:58 +0200 | <Inst> | say, let's assume there is some type that's not implemented |
2021-10-20 17:08:06 +0200 | <Inst> | for whatever reason :t gives that type |
2021-10-20 17:08:24 +0200 | <Inst> | but it's stating that the expression will fail if that type isn't active? |
2021-10-20 17:09:36 +0200 | <iteratee> | No. (Num a => a) means that for any type the compiler knows is a Num, the expression can be evaluated as that type. |
2021-10-20 17:11:02 +0200 | <_bo> | > can't see what's so infinite about `left` < Please disregard, figured it out |
2021-10-20 17:11:04 +0200 | <lambdabot> | <hint>:1:43: error: parse error on input ‘<’ |
2021-10-20 17:11:07 +0200 | <Inst> | bleh, i'll reread the section, i skimmed it first after i couldn't understand what the "if a is one of the types of number, then 50 can have type a" |
2021-10-20 17:12:02 +0200 | <iteratee> | It's probably easier to understand "IsString" with the OverloadedStrings extension. |
2021-10-20 17:12:12 +0200 | <iteratee> | Num is doing something similar. |
2021-10-20 17:12:34 +0200 | <monochrom> | Inst: I think my http://www.cs.utoronto.ca/~trebla/CSCC24-2021-Summer/04-haskell-types-2.html helps. I am not going to commit to wordings like "set of types" or "set of methods" though (you see the problem?). |
2021-10-20 17:13:25 +0200 | <iteratee> | > 50 :: Rational |
2021-10-20 17:13:27 +0200 | <lambdabot> | 50 % 1 |
2021-10-20 17:13:33 +0200 | <iteratee> | > 50 :: Double |
2021-10-20 17:13:34 +0200 | <lambdabot> | 50.0 |
2021-10-20 17:13:38 +0200 | <iteratee> | > 50 :: String |
2021-10-20 17:13:40 +0200 | <lambdabot> | error: |
2021-10-20 17:13:40 +0200 | <lambdabot> | • No instance for (Num String) arising from the literal ‘50’ |
2021-10-20 17:13:40 +0200 | <lambdabot> | • In the expression: 50 :: String |
2021-10-20 17:14:59 +0200 | <jollygood2> | you could write a (completely silly) Num instance for String, and then 50 :: String would compile. you could also write it for your own, say, bignum type, and you could use numerical literals and all the math operators with it |
2021-10-20 17:15:21 +0200 | <iteratee> | @jollygood2 exactly |
2021-10-20 17:15:22 +0200 | <lambdabot> | Unknown command, try @list |
2021-10-20 17:15:53 +0200 | <geekosaur> | there is such an instance in one of the "acme" packages |
2021-10-20 17:16:16 +0200 | <geekosaur> | there's also an instance for Applicatives that is occasionally loaded into the bot |
2021-10-20 17:17:04 +0200 | MQ-17J | (~MQ-17J@2607:fb90:1d89:67a9:1cd1:a18:a57f:e102) (Read error: Connection reset by peer) |
2021-10-20 17:17:28 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
2021-10-20 17:18:34 +0200 | stengah | (~stengah@user/stengah) () |
2021-10-20 17:25:33 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:e2c3:1bcc:edee:e9f1) (Quit: WeeChat 2.8) |
2021-10-20 17:25:42 +0200 | Guest87 | (~Guest87@211.165.185.81.rev.sfr.net) |
2021-10-20 17:26:42 +0200 | Farzad | (~FarzadBek@178.131.24.144) (Ping timeout: 265 seconds) |
2021-10-20 17:28:31 +0200 | <Guest87> | hello, I'm trying to choose a pretty printing library, my requirements are basically a nice way to handle indentation (think JSON). custom formatting for data types would be nice |
2021-10-20 17:29:09 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) |
2021-10-20 17:29:38 +0200 | <Guest87> | prettyprinter seems to be the "default" choice? |
2021-10-20 17:31:11 +0200 | <lyxia> | yes |
2021-10-20 17:37:10 +0200 | <ph88> | when i set the max memory option on the runtime system is the garbage collector doing extra effort to clear up memory once the limit is hit ? |
2021-10-20 17:39:40 +0200 | Guest55 | (~Guest55@78.198.4.122) (Quit: Client closed) |
2021-10-20 17:40:29 +0200 | Null_A | (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) |
2021-10-20 17:41:33 +0200 | emliunix | (~emliunix@101.88.126.148) (Remote host closed the connection) |
2021-10-20 17:43:12 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Ping timeout: 276 seconds) |
2021-10-20 17:43:46 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-10-20 17:43:47 +0200 | Guest87 | (~Guest87@211.165.185.81.rev.sfr.net) (Quit: Client closed) |
2021-10-20 17:44:26 +0200 | _ht | (~quassel@82-169-194-8.biz.kpn.net) |
2021-10-20 17:45:01 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2021-10-20 17:45:03 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:9105:355e:98db:81cc) |
2021-10-20 17:45:13 +0200 | slowButPresent | (~slowButPr@user/slowbutpresent) |
2021-10-20 17:45:43 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-10-20 17:46:15 +0200 | emliunix | (~emliunix@101.88.126.148) |
2021-10-20 17:48:27 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2021-10-20 17:51:23 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer) |
2021-10-20 17:52:26 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
2021-10-20 17:54:06 +0200 | myShoggoth | (~myShoggot@97-120-85-195.ptld.qwest.net) |
2021-10-20 17:56:34 +0200 | <janus> | i would argue 'pretty' is more default since it is in the haskell org? |
2021-10-20 17:56:49 +0200 | rond_ | (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Quit: Client closed) |
2021-10-20 17:57:17 +0200 | <janus> | tree-diff uses pretty and i like tree-diff |
2021-10-20 17:57:32 +0200 | <Franciman> | @hackage tree-diff |
2021-10-20 17:57:33 +0200 | pbrisbin | (~patrick@199.66.179.206) (Read error: Connection reset by peer) |
2021-10-20 17:57:33 +0200 | <lambdabot> | https://hackage.haskell.org/package/tree-diff |
2021-10-20 17:57:43 +0200 | <Franciman> | so neado |
2021-10-20 17:57:46 +0200 | <Franciman> | tusen takk |
2021-10-20 17:57:48 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2021-10-20 17:58:11 +0200 | emf | (~emf@2620:10d:c090:400::5:7558) |
2021-10-20 17:58:28 +0200 | unit73e | (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) |
2021-10-20 17:58:33 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2021-10-20 17:59:27 +0200 | <monochrom> | pretty has the convenience factor that it comes with GHC. |
2021-10-20 17:59:45 +0200 | <Franciman> | but if you use cabal, that is not so important |
2021-10-20 18:00:06 +0200 | hjulle[m] | (~hjullemat@2001:470:69fc:105::1dd) (Quit: You have been kicked for being idle) |
2021-10-20 18:00:06 +0200 | dualinverter[m] | (~dualinver@2001:470:69fc:105::16a7) (Quit: You have been kicked for being idle) |
2021-10-20 18:00:14 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 260 seconds) |
2021-10-20 18:01:32 +0200 | _bo | (~bo@217.18.216.247) (Read error: Connection reset by peer) |
2021-10-20 18:03:50 +0200 | pbrisbin | (~patrick@pool-173-49-152-45.phlapa.fios.verizon.net) |
2021-10-20 18:04:35 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 264 seconds) |
2021-10-20 18:05:17 +0200 | segfaultfizzbuzz | (~segfaultf@135-180-0-138.static.sonic.net) |
2021-10-20 18:06:28 +0200 | kupi | (uid212005@id-212005.hampstead.irccloud.com) |
2021-10-20 18:12:20 +0200 | Farzad | (~FarzadBek@37.49.149.40) |
2021-10-20 18:13:42 +0200 | jgeerds | (~jgeerds@55d4da80.access.ecotel.net) (Remote host closed the connection) |
2021-10-20 18:15:15 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-10-20 18:15:42 +0200 | hendursaga | (~weechat@user/hendursaga) (Ping timeout: 276 seconds) |
2021-10-20 18:16:15 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 18:16:54 +0200 | hgolden | (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) |
2021-10-20 18:17:11 +0200 | pooryorick | (~pooryoric@87-119-174-173.tll.elisa.ee) (Ping timeout: 246 seconds) |
2021-10-20 18:17:12 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
2021-10-20 18:17:23 +0200 | hendursaga | (~weechat@user/hendursaga) |
2021-10-20 18:17:36 +0200 | awth13 | (~awth13@user/awth13) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-10-20 18:17:47 +0200 | <dminuoso> | To be fair, prettyprinter has a fair lightweight dependency footprint. It's very likely it wont introduce additional transitive dependencies for most projects. |
2021-10-20 18:17:51 +0200 | tommd | (~tommd@75-164-130-101.ptld.qwest.net) |
2021-10-20 18:18:00 +0200 | FarzadBekran_ | (~FarzadBek@37.49.149.40) |
2021-10-20 18:18:30 +0200 | FarzadBekran_ | (~FarzadBek@37.49.149.40) (Remote host closed the connection) |
2021-10-20 18:19:19 +0200 | pooryorick | (~pooryoric@87-119-174-173.tll.elisa.ee) |
2021-10-20 18:19:22 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-10-20 18:19:43 +0200 | <dminuoso> | And it addresses certain issues that pretty has |
2021-10-20 18:20:54 +0200 | Farzad | (~FarzadBek@37.49.149.40) (Ping timeout: 258 seconds) |
2021-10-20 18:21:40 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
2021-10-20 18:22:01 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 18:23:59 +0200 | ub | (~Thunderbi@91.141.37.135.wireless.dyn.drei.com) |
2021-10-20 18:24:41 +0200 | awth13 | (~awth13@user/awth13) |
2021-10-20 18:25:56 +0200 | ArtVandelayer | (~ArtVandel@ip174-68-147-20.lv.lv.cox.net) (Ping timeout: 245 seconds) |
2021-10-20 18:27:05 +0200 | ubert | (~Thunderbi@91.141.37.135.wireless.dyn.drei.com) (Quit: ubert) |
2021-10-20 18:27:06 +0200 | ub | ubert |
2021-10-20 18:27:18 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-10-20 18:27:29 +0200 | ubert1 | (~Thunderbi@91.141.37.135.wireless.dyn.drei.com) |
2021-10-20 18:28:02 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 18:28:35 +0200 | ubert | (~Thunderbi@91.141.37.135.wireless.dyn.drei.com) (Remote host closed the connection) |
2021-10-20 18:28:35 +0200 | ubert1 | ubert |
2021-10-20 18:30:01 +0200 | <Profpatsch> | dminuoso: geekosaur https://github.com/yesodweb/wai/pull/858 |
2021-10-20 18:31:57 +0200 | <Profpatsch> | Oh how I wish for haddock to have comments haha |
2021-10-20 18:32:11 +0200 | <Profpatsch> | Maybe there is a way to add them via a third-party server and a browser plugin |
2021-10-20 18:32:31 +0200 | <Profpatsch> | The PHP doc comments are such a chaotic good feature |
2021-10-20 18:33:22 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-10-20 18:33:42 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 18:34:02 +0200 | coot | (~coot@37.30.49.107.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
2021-10-20 18:35:57 +0200 | timCF_ | (~timCF@m91-129-111-87.cust.tele2.ee) |
2021-10-20 18:36:46 +0200 | emliunix | (~emliunix@101.88.126.148) (Remote host closed the connection) |
2021-10-20 18:39:37 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-10-20 18:40:12 +0200 | jumper149 | (~jumper149@80.240.31.34) (Quit: WeeChat 3.2) |
2021-10-20 18:42:29 +0200 | seer | (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) |
2021-10-20 18:42:38 +0200 | seer | InstX1 |
2021-10-20 18:42:40 +0200 | <InstX1> | hi guys |
2021-10-20 18:42:51 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.) |
2021-10-20 18:42:54 +0200 | <InstX1> | i got a message back from the Haskell Foundation, some nice resources for non-professional programmers |
2021-10-20 18:42:55 +0200 | <InstX1> | https://github.com/haskellfoundation/HaskellSchool |
2021-10-20 18:43:27 +0200 | <InstX1> | there's also Professor Graham Hutton's lectures on Haskell |
2021-10-20 18:43:41 +0200 | <InstX1> | https://www.youtube.com/watch?v=TdpBqhlgqGI |
2021-10-20 18:43:50 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-10-20 18:44:31 +0200 | <InstX1> | They seem to be more concerned about supporting and retaining existing Haskell programmers, though |
2021-10-20 18:44:40 +0200 | <InstX1> | and I can understand why they can make it an emphasis |
2021-10-20 18:45:08 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 18:45:56 +0200 | alzgh | (~alzgh@user/alzgh) (Remote host closed the connection) |
2021-10-20 18:46:17 +0200 | alzgh | (~alzgh@user/alzgh) |
2021-10-20 18:48:29 +0200 | <InstX1> | they feel like the ecosystem etc and ide isn't sufficient to keep new haskellers, though |
2021-10-20 18:48:30 +0200 | myShoggoth | (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 260 seconds) |
2021-10-20 18:49:21 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 265 seconds) |
2021-10-20 18:50:01 +0200 | xff0x | (~xff0x@2001:1a81:5213:b200:9d6e:5b31:ca1b:5892) (Ping timeout: 252 seconds) |
2021-10-20 18:50:07 +0200 | <unit73e> | InstX1, meaning the ecosystem and IDEs are kind of lacking? |
2021-10-20 18:50:33 +0200 | <InstX1> | i can't even get a proper install of the IDE on windows |
2021-10-20 18:50:35 +0200 | <unit73e> | vscode does a good job for beginners imo |
2021-10-20 18:50:41 +0200 | <InstX1> | there used to be a nice setup thing |
2021-10-20 18:50:46 +0200 | xff0x | (~xff0x@2001:1a81:5213:b200:3795:60dd:993c:5506) |
2021-10-20 18:50:50 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-10-20 18:50:54 +0200 | <unit73e> | hum I don't use windows so I wouldn't know |
2021-10-20 18:50:54 +0200 | <InstX1> | yeah ut beginners need ghci or another interpreter |
2021-10-20 18:51:02 +0200 | myShoggoth | (~myShoggot@97-120-85-195.ptld.qwest.net) |
2021-10-20 18:51:06 +0200 | <unit73e> | there's also IntelliJ |
2021-10-20 18:51:16 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 18:51:22 +0200 | <unit73e> | but I feel like vscode does a better job |
2021-10-20 18:51:34 +0200 | <unit73e> | regardless, imo that's the least of a beginners worries |
2021-10-20 18:52:09 +0200 | <InstX1> | textbooks seem fine, i'm really enjoying the basics book written by a guy teaching at cambridge, though |
2021-10-20 18:52:20 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) |
2021-10-20 18:52:33 +0200 | Cajun | (~Cajun@user/cajun) (Quit: Client closed) |
2021-10-20 18:52:55 +0200 | <InstX1> | the problem is, though, is that it seems equivalent to the first third or first half of a proper textbook, monads don't show up in the index |
2021-10-20 18:53:03 +0200 | <unit73e> | doing things different is perhaps the biggest stop gap of all, like having to do IO in an IO monad, or learning that you can't just have state out of nowhere, and so on |
2021-10-20 18:53:39 +0200 | <unit73e> | I think state is the next big problem for new users |
2021-10-20 18:54:03 +0200 | <unit73e> | because you have to carry it around and for imperative programmers that's not a thing |
2021-10-20 18:54:09 +0200 | <InstX1> | the target audience i'm talking about |
2021-10-20 18:54:17 +0200 | <InstX1> | doesn't even know what state is |
2021-10-20 18:54:41 +0200 | <InstX1> | i'm coming from effectively a non-programmer paradigm, so i annoyed people by arguing that haskell should target non-coders etc |
2021-10-20 18:55:19 +0200 | <unit73e> | you do have to start somewhere |
2021-10-20 18:55:57 +0200 | <yushyin> | every time i look into this channel it's the same discussion on and on :D |
2021-10-20 18:56:18 +0200 | <unit73e> | for a non-programmer it doesn't really matter which you choose first I think but haskell is obviously structured differently, by "joining functions" |
2021-10-20 18:56:29 +0200 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.3) |
2021-10-20 18:56:46 +0200 | <unit73e> | yushyin, lol yeah. I use it mostly for questions and to show my SDL examples |
2021-10-20 18:59:33 +0200 | <zincy> | Is it normal for Haskell packages to rely on types of other packages? Someone is asking me to "unify" the types with their library and I just don't feel I have the experience to know if it is a good idea or not. |
2021-10-20 18:59:48 +0200 | <zincy> | https://github.com/therewillbecode/poker-maison/issues/20 |
2021-10-20 19:01:05 +0200 | <geekosaur> | if you use other packages you generally have to use their types |
2021-10-20 19:01:36 +0200 | <zincy> | Yeah so the question is really should I use this other package then |
2021-10-20 19:02:17 +0200 | <geekosaur> | depends. they're trying to build a poker ecosystem; up to you whether you want to contribute to that ecosystem |
2021-10-20 19:02:30 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-10-20 19:02:38 +0200 | <maerwald> | that's where weak types have an advantage... they're more compatible |
2021-10-20 19:02:43 +0200 | <geekosaur> | in general not duplicating effort is a good thing, it's just annoying for existing packages |
2021-10-20 19:02:48 +0200 | <maerwald> | compare lazy bytestring with streaming types |
2021-10-20 19:03:43 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 19:04:41 +0200 | chele | (~chele@user/chele) (Remote host closed the connection) |
2021-10-20 19:05:25 +0200 | xff0x | (~xff0x@2001:1a81:5213:b200:3795:60dd:993c:5506) (Ping timeout: 260 seconds) |
2021-10-20 19:05:57 +0200 | zebrag | (~chris@user/zebrag) |
2021-10-20 19:05:59 +0200 | xff0x | (~xff0x@port-92-195-26-90.dynamic.as20676.net) |
2021-10-20 19:08:44 +0200 | ub | (~Thunderbi@91.141.37.135.wireless.dyn.drei.com) |
2021-10-20 19:09:18 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-10-20 19:10:10 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 19:11:44 +0200 | <zincy> | Cheers! |
2021-10-20 19:11:59 +0200 | wonko | (~wjc@62.115.229.50) |
2021-10-20 19:12:02 +0200 | benin | (~benin@183.82.179.164) |
2021-10-20 19:12:15 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2021-10-20 19:12:45 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) |
2021-10-20 19:15:14 +0200 | econo | (uid147250@user/econo) |
2021-10-20 19:15:20 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-10-20 19:16:25 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 19:17:08 +0200 | ubert | (~Thunderbi@91.141.37.135.wireless.dyn.drei.com) (Remote host closed the connection) |
2021-10-20 19:19:24 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2021-10-20 19:19:57 +0200 | cads | (~asdf@ip-64-72-99-234.lasvegas.net) |
2021-10-20 19:20:19 +0200 | ub | (~Thunderbi@91.141.37.135.wireless.dyn.drei.com) (Ping timeout: 258 seconds) |
2021-10-20 19:20:41 +0200 | suryasiva | (~suryasiva@49.206.117.198) |
2021-10-20 19:21:45 +0200 | suryasiva | (~suryasiva@49.206.117.198) (Client Quit) |
2021-10-20 19:21:54 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-10-20 19:21:58 +0200 | <cads> | hey all, a strong monad M has a strength transform S_A,B : A x SB -> S(AxB) which makes M compatible with the underlying product operation "In one way" |
2021-10-20 19:22:27 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 19:23:40 +0200 | suryasiva | (~suryasiva@49.206.117.198) |
2021-10-20 19:23:55 +0200 | <cads> | the strength transform is usually expressed via its components S_(A, B). But what are the two functors that S transforms between? |
2021-10-20 19:27:58 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer) |
2021-10-20 19:28:10 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-10-20 19:28:26 +0200 | aegon | (~mike@174.127.249.180) |
2021-10-20 19:28:37 +0200 | <ManofLetters[m]> | are you offending us? |
2021-10-20 19:28:50 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 19:28:57 +0200 | alzgh | (~alzgh@user/alzgh) (Remote host closed the connection) |
2021-10-20 19:29:18 +0200 | alzgh | (~alzgh@user/alzgh) |
2021-10-20 19:29:54 +0200 | <cads> | ManofLetters[m], no offense is meant, I am trying to understand strong monads because as far as I can tell, they are the "mathy" version of applicative functors |
2021-10-20 19:30:38 +0200 | suryasiva | (~suryasiva@49.206.117.198) (Quit: suryasiva) |
2021-10-20 19:32:34 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
2021-10-20 19:33:11 +0200 | <awpr> | a) looks to me like it's `_1 x M _2` ~> `M (_1 x _2)` (both of those being functors from HaskxHask to Hask); b) applicative <=> lax monoidal functor; and c) all Haskell `Functor`s are "strong" in this way, because `\x fy -> fmap (x,) fx` |
2021-10-20 19:33:22 +0200 | <ManofLetters[m]> | is S_A is a natural transformation with signature S_A : A x SB -> S(AxB), then it's a natural transformation from functor \K . K x S(B_ to functor \K . S(K x B), where is S is, probably, an arbitrary functor |
2021-10-20 19:33:41 +0200 | <ManofLetters[m]> | * \K . K x S(B) |
2021-10-20 19:34:07 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
2021-10-20 19:34:07 +0200 | <ManofLetters[m]> | and I didn't say what B is and where it's quantified; hmm |
2021-10-20 19:34:30 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 258 seconds) |
2021-10-20 19:34:40 +0200 | <ManofLetters[m]> | so probably awpr has a fuller picture |
2021-10-20 19:34:42 +0200 | <awpr> | if we're talking about functor strength, the `M` (which I renamed from `S` should be fixed to the particular functor we have a strength for) |
2021-10-20 19:34:56 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 19:35:01 +0200 | <awpr> | parens in the wrong place, but close enough |
2021-10-20 19:35:23 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-10-20 19:36:29 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) |
2021-10-20 19:37:31 +0200 | <cads> | I think I have conflated the notion of Strong Monad, with the notion of a Lax Functor With Strength. The Strong Lax Functor is already an applicative, even if it has no monadic multiplication and unit transforms. |
2021-10-20 19:38:04 +0200 | <ph88> | anyone know if it's possible to get the remainder of the unparsed text with megaparsec ? |
2021-10-20 19:39:13 +0200 | <ManofLetters[m]> | cads: so, for any functor S, the 2-category has S-strength (the functor S is a strong lax functor?), if for any 1-object B, there is a natural transformation from functor \K . K x S(B) to \K . S(K x B) ??? |
2021-10-20 19:39:21 +0200 | meltedbrain_y2k | (~tekserf@94.73.36.197) |
2021-10-20 19:40:06 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-10-20 19:40:06 +0200 | <ManofLetters[m]> | (putting aside Hask) |
2021-10-20 19:40:55 +0200 | <cads> | ManofLetters[m], I can't understand 2-categorical or delooped definitions of strength yet - I am trying to work with the naive "concrete" definition here, which defines the strength transform within the monoidal category itself https://ncatlab.org/nlab/show/strong+monad#concrete_definition |
2021-10-20 19:41:07 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 19:41:08 +0200 | <ManofLetters[m]> | and I guess, in case of Hask, it means that the real Haskell functors can handle free variables quantified somewhere outside |
2021-10-20 19:41:23 +0200 | <ManofLetters[m]> | ok, have fun :) |
2021-10-20 19:42:04 +0200 | <ManofLetters[m]> | (where S(B) would be the free variables) |
2021-10-20 19:42:20 +0200 | <ManofLetters[m]> | (or, rather, B would be the free variables) |
2021-10-20 19:44:46 +0200 | alzgh | (~alzgh@user/alzgh) (Remote host closed the connection) |
2021-10-20 19:45:06 +0200 | alzgh | (~alzgh@user/alzgh) |
2021-10-20 19:45:58 +0200 | <cads> | One thing we know about the transform: its components are indexed by two objects A, B of the underlying category. |
2021-10-20 19:46:41 +0200 | <cads> | The components of the transform of an ordinary functor have one one index. This suggests that the strength could be a transform on a bifunctor |
2021-10-20 19:46:50 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-10-20 19:46:54 +0200 | _xor | (~xor@72.49.199.147) (Read error: Connection reset by peer) |
2021-10-20 19:47:07 +0200 | Null_A | (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) (Remote host closed the connection) |
2021-10-20 19:47:34 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 19:48:07 +0200 | <ManofLetters[m]> | if B (or A) is fixed, it's an ordinary functor |
2021-10-20 19:48:33 +0200 | <awpr> | yeah, I wrote that bifunctor earlier |
2021-10-20 19:48:56 +0200 | <awpr> | (a bifunctor is an ordinary functor, just that its source is a product category) |
2021-10-20 19:50:00 +0200 | <ManofLetters[m]> | isn't it usually contravariant on the second argument, though? |
2021-10-20 19:50:12 +0200 | <awpr> | no, that's profunctor, and the first argument |
2021-10-20 19:50:19 +0200 | <cads> | awpr, did you you didn't write the bifunctor's signature? I missed that / could not parse your speech |
2021-10-20 19:50:39 +0200 | <cads> | err s/you didn't// |
2021-10-20 19:50:57 +0200 | <awpr> | I used the admittedly confusing "type expression with holes" notation that pops up in ncatlab a lot |
2021-10-20 19:51:05 +0200 | _xor | (~xor@72.49.199.147) |
2021-10-20 19:51:08 +0200 | <ManofLetters[m]> | apparently naming differs between people: https://en.wikipedia.org/wiki/Functor#Bifunctors_and_multifunctors |
2021-10-20 19:51:34 +0200 | <ManofLetters[m]> | afk |
2021-10-20 19:52:13 +0200 | <cads> | I guess the domain of the transform is the bifunctor Prod_H . (1_h x T) |
2021-10-20 19:52:59 +0200 | <cads> | this takes an object A and an TB into the product A x TB |
2021-10-20 19:53:13 +0200 | <awpr> | sorry, got distracted |
2021-10-20 19:53:29 +0200 | zer0bitz_ | (~zer0bitz@dsl-hkibng31-54fae3-116.dhcp.inet.fi) |
2021-10-20 19:53:33 +0200 | <cads> | and the codomain of the transform is the bifunctor T . Prod_H |
2021-10-20 19:53:54 +0200 | <cads> | taking products A x B into T(A x B) |
2021-10-20 19:53:56 +0200 | <awpr> | `\A B -> A x T B` which is HaskxHask -> Hask |
2021-10-20 19:54:15 +0200 | <awpr> | it's a composition of two functors |
2021-10-20 19:54:21 +0200 | <cads> | correct |
2021-10-20 19:54:44 +0200 | <cads> | can you confirm I have the codomain right? |
2021-10-20 19:55:34 +0200 | <awpr> | looks right, when looking at it as taking product objects to Hask objects |
2021-10-20 19:56:11 +0200 | zer0bitz | (~zer0bitz@dsl-hkibng31-54fae3-116.dhcp.inet.fi) (Ping timeout: 264 seconds) |
2021-10-20 19:58:27 +0200 | <cads> | to sum up, we have that a T strength on an H-endofunctor T is a natural transform of type M : (1_H x T);Prod_h -> Prod_h;T, where Prod_H : H^2 -> H is the H product. |
2021-10-20 19:58:52 +0200 | Null_A | (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) |
2021-10-20 19:59:33 +0200 | <cads> | that is way less painful than I thought! |
2021-10-20 20:00:51 +0200 | Cajun | (~Cajun@user/cajun) |
2021-10-20 20:01:51 +0200 | <cads> | thanks for the help, awpr ManofLetters[m]. Sorry for the impedance mismatch between category speech and hask speech, and sorry for my difficulty understanding hask-speech. I think awpr as good as gave me this exact answer, but I couldn't really parse it. In that case, sorry for 'catsplaning' this topic, lol |
2021-10-20 20:02:38 +0200 | cads | 's goal is to improve the nlab and wikipedia entries on strengths, applicatives, and strong monads |
2021-10-20 20:06:02 +0200 | Skyfire | (~pyon@user/pyon) (Quit: WeeChat 3.3) |
2021-10-20 20:06:39 +0200 | coot | (~coot@37.30.49.107.nat.umts.dynamic.t-mobile.pl) |
2021-10-20 20:06:39 +0200 | <ManofLetters[m]> | a lofty goal |
2021-10-20 20:07:38 +0200 | <maerwald> | strong monads, super monads, ... |
2021-10-20 20:07:44 +0200 | <maerwald> | we have them all |
2021-10-20 20:09:22 +0200 | <cads> | more of a nitpick - those articles all define monadic strength via its components rather than pointing out which functors we are transforming between |
2021-10-20 20:09:45 +0200 | <cads> | A skilled reader like awpr can immediately see that we are transforming between two T-modified versions of the underlying category's product bifunctor |
2021-10-20 20:10:06 +0200 | <cads> | I am going to paint that picture explicitly, for the benefit of readers that can't do that functorial gymnastics just yet |
2021-10-20 20:10:54 +0200 | <cads> | probably gonna piss off the article maintainters because they probably think the translation is trivial.. but it's tripped me up for quite a while, lol |
2021-10-20 20:11:35 +0200 | <monochrom> | That is the same tension between speaking like "x + c*y where the variables are x and y" and speaking like "define f(x,y) = x + c*y". |
2021-10-20 20:12:32 +0200 | <cads> | monochrom, right, in your example we're backgrounding the lambda operator, while in my example we're backgrounding the product bifunctor |
2021-10-20 20:13:33 +0200 | <monochrom> | And between "f :: (Int,a) -> Either a Bool, natural in a and b" and "define F(a) = (Int,a), define G(a) = Either a Bool, so f is natural from F to G" |
2021-10-20 20:14:02 +0200 | ubert | (~Thunderbi@91.141.37.135.wireless.dyn.drei.com) |
2021-10-20 20:14:04 +0200 | <monochrom> | s/ and b/ |
2021-10-20 20:16:35 +0200 | max22- | (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Ping timeout: 260 seconds) |
2021-10-20 20:17:45 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-10-20 20:20:56 +0200 | <cads> | I guess there are two ways about it. First we could depend on readers to immediately recognize components of transform between a modified bifunctor, to immediately recognize which bifunctor was modified, and how. Since the choice of bifunctor is 'obvious', and the way that functor is modified is 'apparent', that is the choice the authors have made. |
2021-10-20 20:22:21 +0200 | <monochrom> | On the bright side, it is mechanical. |
2021-10-20 20:22:27 +0200 | hgolden | (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (Remote host closed the connection) |
2021-10-20 20:22:41 +0200 | <cads> | monochrom, mechanical as in "there are these components and they only fit one way"? |
2021-10-20 20:23:32 +0200 | <monochrom> | Also recall that people don't have problem with "∂(x + y*c)/∂y = c" without being told, without even caring about, \x y -> x + y*c. |
2021-10-20 20:24:50 +0200 | <monochrom> | I don't know about only one way. But I know about mechanical. |
2021-10-20 20:28:55 +0200 | <monochrom> | In contrast, there is only one function from programs to "does it halt?", and it is not mechanical. |
2021-10-20 20:29:09 +0200 | <cads> | In the second approach, we mention the M: Prod.(Id, T) -> T.Prod signature. Then we write its action on the component variables, as before. |
2021-10-20 20:30:24 +0200 | <cads> | and I don't think this is so obvious or mechanical, since when I asked about the signature it led to a bunch of hask-handwaving, rather than a clear and simple answer |
2021-10-20 20:31:22 +0200 | <monochrom> | But I don't write like Prod.(Id, T) or T.Prod. |
2021-10-20 20:31:44 +0200 | <monochrom> | I just define, if necessary, F(A,B) = AxTB, G(A,B) = T(AxB). |
2021-10-20 20:34:43 +0200 | haritz | (~hrtz@user/haritz) (Ping timeout: 265 seconds) |
2021-10-20 20:35:16 +0200 | Midjak | (~Midjak@82-65-111-221.subs.proxad.net) |
2021-10-20 20:35:21 +0200 | tremon | (~tremon@217-63-61-89.cable.dynamic.v4.ziggo.nl) |
2021-10-20 20:36:06 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds) |
2021-10-20 20:36:37 +0200 | <monochrom> | "s :: ∀a,b. a x T b -> T (axb)" is no less readable than "unzip :: ∀a,b. [(a,b)] -> ([a],[b])" |
2021-10-20 20:38:22 +0200 | <cads> | lol, if we applied readability metrics to those senstences, we would find that both sentences are about equally hellish |
2021-10-20 20:38:27 +0200 | hgolden | (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) |
2021-10-20 20:38:49 +0200 | <mrianbloom> | Is there an easy way to convert between Massiv and Accelerate host arrays? |
2021-10-20 20:39:05 +0200 | <monochrom> | Um, talk to programmers? Who here finds "unzip :: ∀a,b. [(a,b)] -> ([a],[b])" hellish? |
2021-10-20 20:39:45 +0200 | <monochrom> | In fact, even stronger: Who here finds "unzip :: [].Prob => Prob.([], [])" better? |
2021-10-20 20:39:48 +0200 | <cads> | monochrom, can we agree that programmers are very poor judges of readability, or else they would be making a living writing prose? |
2021-10-20 20:40:06 +0200 | <monochrom> | But prose is not formula. |
2021-10-20 20:40:54 +0200 | <monochrom> | Or how about you? Do you prefer "unzip :: [].Prob => Prob.([], [])"? Seriously? |
2021-10-20 20:41:35 +0200 | <monochrom> | Below this the undertone is "how far do you go in writing functors in pointfree form?" |
2021-10-20 20:42:02 +0200 | haritz | (~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) |
2021-10-20 20:42:02 +0200 | haritz | (~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) (Changing host) |
2021-10-20 20:42:02 +0200 | haritz | (~hrtz@user/haritz) |
2021-10-20 20:42:23 +0200 | cads | is thinking of a readability metric that can judge between a good prose explanation of a function, and a bad formulaic explanation |
2021-10-20 20:42:47 +0200 | <cads> | but the reader is more important than the text and drives the metric |
2021-10-20 20:43:59 +0200 | <monochrom> | The major readers of ncatlab are mathematicians and programmers, neither group appreciating T.Prod. |
2021-10-20 20:44:22 +0200 | zer0bitz_ | (~zer0bitz@dsl-hkibng31-54fae3-116.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-10-20 20:44:45 +0200 | <monochrom> | Instead, the mathematician group appreciates leaving "A x T B" as is, and the programmer group appreciates introducing an intermediate "F(A,B) = A x T B". |
2021-10-20 20:44:48 +0200 | max22- | (~maxime@2a01cb0883359800fe2c7b136063d78c.ipv6.abo.wanadoo.fr) |
2021-10-20 20:44:56 +0200 | <cads> | monochrom, I appreciate it, though I'll grant that the reason I appreciate it is that before understanding it, I couldn't understand the article |
2021-10-20 20:45:44 +0200 | <cads> | but the reason I couldn't understand the article didn't have to do with that specific definition, but rather inexperience with manipulating bifunctor and their natural transforms |
2021-10-20 20:45:51 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2021-10-20 20:47:19 +0200 | <cads> | Now, if I modify the article to be more explicit about the bifunctor, it would definitely help my former self. But without knowing how representative of other readers my own confusion was, the value I add is dubious. |
2021-10-20 20:47:24 +0200 | kuribas | (~user@ptr-25vy0i7zawtky0bq46n.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
2021-10-20 20:47:32 +0200 | <cads> | I will likely do it, to see if the other editors hate it. |
2021-10-20 20:49:35 +0200 | myShoggoth | (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 264 seconds) |
2021-10-20 20:49:43 +0200 | <cads> | monochrom, remember when you said that refactoring should not remove important context, just because my inexperience makes the extra context hard to keep track of? |
2021-10-20 20:49:48 +0200 | oats | (~thomas@user/oats) (Leaving) |
2021-10-20 20:50:27 +0200 | <cads> | Here I am likely doing the opposite - refactoring to add context or dubious value, again because of inexperience. My inexperience makes me think other readers need that context. |
2021-10-20 20:53:20 +0200 | <unit73e> | I find haskell to be very mathematical |
2021-10-20 20:53:20 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 260 seconds) |
2021-10-20 20:54:04 +0200 | <geekosaur> | discrete math helps a bit. CT not necessary, really |
2021-10-20 20:54:44 +0200 | <monochrom> | school algebra skills. or even respect. |
2021-10-20 20:55:49 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-10-20 21:00:55 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 260 seconds) |
2021-10-20 21:01:42 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-10-20 21:03:05 +0200 | Farzad | (~FarzadBek@37.49.149.40) |
2021-10-20 21:04:28 +0200 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2021-10-20 21:04:42 +0200 | <maerwald> | @hoogle respect |
2021-10-20 21:04:43 +0200 | <lambdabot> | Network.AWS.AutoScaling.SetInstanceHealth sihShouldRespectGracePeriod :: Lens' SetInstanceHealth (Maybe Bool) |
2021-10-20 21:04:43 +0200 | <lambdabot> | Ormolu.Printer.Meat.Declaration p_hsDeclsRespectGrouping :: FamilyStyle -> [LHsDecl GhcPs] -> R () |
2021-10-20 21:05:02 +0200 | <[exa]> | F |
2021-10-20 21:05:56 +0200 | <cads> | monochrom, The other reason I appreciate P(1xT) -> TP is because it better shows the symmetry between the domain and codomain of the transform. It's like the strength lets us "semicommute" an instance of (1xT) left through P to obtain TP, but it only works in this one direction. |
2021-10-20 21:06:20 +0200 | <cads> | I don't see this algebraic "motion" based description as clearly looking (A x TB) -> T(A x B). |
2021-10-20 21:07:25 +0200 | <[exa]> | cads: you can help the readers a bit by avoiding the symmetrical `x` symbol |
2021-10-20 21:08:45 +0200 | Null_A | (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) (Remote host closed the connection) |
2021-10-20 21:08:56 +0200 | <cads> | [exa], how would you do that? |
2021-10-20 21:09:53 +0200 | <[exa]> | (A -x TB) -> T(A -x B) -- looks almost like functions |
2021-10-20 21:10:34 +0200 | <[exa]> | ( btw this might be off, I didn't read much of the scrollback :] ) |
2021-10-20 21:10:46 +0200 | Null_A | (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) |
2021-10-20 21:11:29 +0200 | <cads> | I was thinking of using the (A x -) functor, but doing it wasn't going to make things easier to understand |
2021-10-20 21:14:44 +0200 | <cads> | [exa], I don't think you should waste much time on the scroll back, I was picking nits which live on the back of a flea which lives on the back of a verminous plague rat |
2021-10-20 21:15:51 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) |
2021-10-20 21:19:08 +0200 | <[exa]> | ok good. :D |
2021-10-20 21:20:41 +0200 | Null_A | (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) (Remote host closed the connection) |
2021-10-20 21:21:48 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-10-20 21:22:33 +0200 | guydb89 | (~guy@98.198.128.24) |
2021-10-20 21:23:51 +0200 | myShoggoth | (~myShoggot@97-120-85-195.ptld.qwest.net) |
2021-10-20 21:25:07 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
2021-10-20 21:28:45 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2021-10-20 21:29:24 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:5edd:2a99:160f:84d2) |
2021-10-20 21:30:13 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) |
2021-10-20 21:33:59 +0200 | <InstX1> | i'm so giddy |
2021-10-20 21:34:03 +0200 | <InstX1> | for christ's sake |
2021-10-20 21:34:37 +0200 | <cads> | InstX1, por why? |
2021-10-20 21:34:40 +0200 | <InstX1> | i've tried learning programming with a metric ton of languages, this is the first time i've gotten through so much in so little time |
2021-10-20 21:34:52 +0200 | <monochrom> | Oh congrats. |
2021-10-20 21:35:14 +0200 | <cads> | v. nice! |
2021-10-20 21:35:37 +0200 | <InstX1> | haskell is going significantly faster than the C++ for dummies book I had, and I spent like 2-3 weeks on Stroustrup's intro programming with C++ book |
2021-10-20 21:35:41 +0200 | <monochrom> | Yes one of Haskell's strength (and FP's, and Logo's) is that if imperative programming fails you, Haskell can help. |
2021-10-20 21:36:04 +0200 | <InstX1> | iirc that was why Lisp was big as a teaching language, no? |
2021-10-20 21:36:15 +0200 | <[exa]> | yep |
2021-10-20 21:36:16 +0200 | <monochrom> | Although, I am not sure that Stroustrup's is really all that intro level. |
2021-10-20 21:36:38 +0200 | <monochrom> | Or K&R |
2021-10-20 21:36:40 +0200 | <InstX1> | he has an intro-level book |
2021-10-20 21:37:28 +0200 | <[exa]> | InstX1: the best way to learn c++ is by need, you first learn assembly and then try to save code volume by expressing stuff in the code generators (C, C with RAII, objects, templates, and suddenly you know a pretty practical subset of C++) |
2021-10-20 21:37:51 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2021-10-20 21:37:59 +0200 | <[exa]> | I wouldn't recommend anyone to take serious C++ before knowing a functional language |
2021-10-20 21:38:01 +0200 | <InstX1> | like, for C++, "The C++ Programming Language" (advanced / intermediate), "Programming: Principles and Practice Using C++" (beginner), "A Tour of C++" (iirc, he has a tour book that covers C++17 |
2021-10-20 21:38:13 +0200 | <InstX1> | it's more a problem with his style |
2021-10-20 21:38:20 +0200 | <InstX1> | i have an easier C++ for beginners book |
2021-10-20 21:38:31 +0200 | <InstX1> | i could breeze through it, but i'm told that one gives you bad habit |
2021-10-20 21:38:32 +0200 | <InstX1> | s |
2021-10-20 21:39:00 +0200 | <InstX1> | Stroustrup basically treats his intro textbook as if he were giving a lecture |
2021-10-20 21:39:11 +0200 | <InstX1> | unless you were talking about Programming: Principles and Practice @Monochrom |
2021-10-20 21:39:14 +0200 | <monochrom> | But I love lectures. |
2021-10-20 21:39:29 +0200 | <monochrom> | I had "The C++ Programming Language" in mind. |
2021-10-20 21:39:47 +0200 | <InstX1> | i mean more, I know Carnegie Mellon uses his intro book |
2021-10-20 21:40:09 +0200 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2021-10-20 21:40:32 +0200 | <InstX1> | it's more, with a textbook, you want to be able to read stuff out of order, skim for key information, and so on |
2021-10-20 21:41:07 +0200 | <monochrom> | There are two sides of "out of order". |
2021-10-20 21:41:08 +0200 | <InstX1> | he just combines ideas and digresses (fruitfully, in an actual lecture setting) so it's hard to parse his stuff |
2021-10-20 21:41:41 +0200 | <InstX1> | i like to read textbooks like a windows file transfer time estimator |
2021-10-20 21:41:50 +0200 | <InstX1> | read ahead, read back, review, etc |
2021-10-20 21:42:08 +0200 | <[exa]> | stop at 99% and try to find the last piece |
2021-10-20 21:42:12 +0200 | <monochrom> | I mean, sometimes it is unrealistic to. Dependencies exist. Intrinsic one. |
2021-10-20 21:42:13 +0200 | <[exa]> | yes, good. :D |
2021-10-20 21:42:36 +0200 | <monochrom> | For example, good luck with "read Functor before type classes", obviously. |
2021-10-20 21:43:16 +0200 | <monochrom> | Foldable and Functor could be in whatever order you like, sure. |
2021-10-20 21:43:28 +0200 | <InstX1> | i'll put in an example, i'm trying to learn classes, etc, but he gives you an introduction to classes in a chapter completely unrelated to classes |
2021-10-20 21:43:39 +0200 | <monochrom> | But good luck with "Foldable before Monoid", too. |
2021-10-20 21:43:41 +0200 | <[exa]> | monochrom: that can be done, with a bit of heresy you can get the idea to e.g. C# people with IFunctor, IFoldable |
2021-10-20 21:43:43 +0200 | <InstX1> | it's well-woven together, arguably a piece of art if treated purely sequentially |
2021-10-20 21:43:49 +0200 | mei | (~mei@user/mei) (Ping timeout: 252 seconds) |
2021-10-20 21:43:55 +0200 | Null_A | (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) |
2021-10-20 21:44:09 +0200 | <InstX1> | and when you get to the actual classes chapter |
2021-10-20 21:44:19 +0200 | <InstX1> | you have to know about the introduction, which you can only find via index |
2021-10-20 21:44:53 +0200 | <monochrom> | But the IFunctor interface cannot be expressed in Haskell. (Nor the Functor class in C#.) |
2021-10-20 21:45:13 +0200 | <monochrom> | In a category theory book for mainstream programmers, I would use IFunctor, yes. |
2021-10-20 21:45:35 +0200 | slack1256 | (~slack1256@45.4.2.52) |
2021-10-20 21:45:38 +0200 | <monochrom> | But in a Haskell book? I'd better talk about things that can be written in Haskell. |
2021-10-20 21:46:22 +0200 | <monochrom> | Fortunately, there is no market for a category theory book for mainstream programmers, so trying to use IFunctor remains hypothetical! |
2021-10-20 21:46:28 +0200 | <slack1256> | Is there a type level `elem` function defined somewhere on base? Just for type level lists. |
2021-10-20 21:47:26 +0200 | <[exa]> | monochrom: well at worst it allows you to motivate the people with something like "see how much this sucks?" |
2021-10-20 21:48:45 +0200 | <[exa]> | the main target is to reduce the gap before the moment when it clicks for as many people as possible |
2021-10-20 21:50:03 +0200 | <monochrom> | OK, the difference is between "functor" and "Functor". |
2021-10-20 21:53:09 +0200 | <InstX1> | by the way, just curious |
2021-10-20 21:53:21 +0200 | <InstX1> | has there been any attempts to teach haskell starting from main / do? |
2021-10-20 21:54:02 +0200 | <InstX1> | i'm also wondering if imperative languages might be more interesting if they were taught starting from abstractions, tbh |
2021-10-20 21:54:13 +0200 | random-jellyfish | (~random-je@user/random-jellyfish) |
2021-10-20 21:54:34 +0200 | <lortabac> | slack1256: not in base, AFAIK, but there are several on Hackage |
2021-10-20 21:54:38 +0200 | <[exa]> | (implying imperative languages have reasonable abstractions) |
2021-10-20 21:54:42 +0200 | <[exa]> | InstX1: ^ |
2021-10-20 21:54:52 +0200 | Null_A | (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) (Remote host closed the connection) |
2021-10-20 21:55:32 +0200 | <monochrom> | Modula-3 and Ada do. |
2021-10-20 21:55:54 +0200 | <InstX1> | i'd have taken far easier to C++ if they started by teaching classes asap |
2021-10-20 21:56:22 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds) |
2021-10-20 21:57:07 +0200 | <monochrom> | I have seen 1st-year 1st-language courses teaching classes very early. It's a failure. Students get all the wrong ideas. |
2021-10-20 21:57:58 +0200 | <monochrom> | Then again, that may be in total agreement with "asap", i.e., 1st-year 1st-language early is earlier than "p". |
2021-10-20 21:58:10 +0200 | <[exa]> | ah good point about modula. |
2021-10-20 21:58:14 +0200 | <InstX1> | i guess it depends on the person, #1, #2, then why do we keep on starting haskell with abstractions? |
2021-10-20 21:58:32 +0200 | <monochrom> | But we don't start Haskell with abstractions. |
2021-10-20 21:58:38 +0200 | <InstX1> | or perhaps at an earlier stage, people were trying the Haskell Hello World route |
2021-10-20 21:58:44 +0200 | <monochrom> | Functions? Yes. Abstractions? No. |
2021-10-20 21:58:45 +0200 | <InstX1> | Haskell starts with expressions |
2021-10-20 21:58:55 +0200 | <monochrom> | That is not an abstraction. |
2021-10-20 21:59:13 +0200 | <monochrom> | Not in the "functor is a abstraction" sense. |
2021-10-20 21:59:28 +0200 | <monochrom> | C also starts with expressions. |
2021-10-20 21:59:37 +0200 | <monochrom> | In fact, C has nothing except expressions. |
2021-10-20 21:59:51 +0200 | _ht | (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
2021-10-20 22:00:14 +0200 | <monochrom> | printf("hello world\n") is an expression. |
2021-10-20 22:00:48 +0200 | <monochrom> | and also a function call, etc etc. Not so different from Haskell's "double 1.5" |
2021-10-20 22:00:48 +0200 | Null_A | (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) |
2021-10-20 22:01:29 +0200 | <[exa]> | InstX1: I was starting the course with quick practical demystifiers so that people don't consider `do` to be magicks and the typeclass overloading seems natural. Interleaved with samples from gloss. |
2021-10-20 22:01:47 +0200 | <InstX1> | which course? |
2021-10-20 22:01:57 +0200 | <[exa]> | the one I was teaching. :D |
2021-10-20 22:01:57 +0200 | slack1256 | (~slack1256@45.4.2.52) (Remote host closed the connection) |
2021-10-20 22:02:20 +0200 | <InstX1> | how did that work? |
2021-10-20 22:02:41 +0200 | <[exa]> | anyway, I'm really not sure how to structure the stuff right either. This IMO worked (student feedback was very good) |
2021-10-20 22:02:49 +0200 | <InstX1> | also, i'm curious |
2021-10-20 22:03:06 +0200 | <InstX1> | i wrote some ignorant gobbledegook about how it might be interesting to start with main/do |
2021-10-20 22:03:19 +0200 | <InstX1> | then move into concepts etc and return to make do etc like an imperative language course |
2021-10-20 22:03:27 +0200 | <InstX1> | but one big advantage might be, you go over IO early |
2021-10-20 22:03:37 +0200 | <InstX1> | is haskell very good for image processing? |
2021-10-20 22:03:48 +0200 | <[exa]> | there's an inconvenient balance between doing it right and not boring the usual late-teenagers and early-20ers to death |
2021-10-20 22:04:19 +0200 | <InstX1> | like, one of the annoyances i had with imperative languages is how long it takes for you to get to IO |
2021-10-20 22:04:32 +0200 | <InstX1> | IO-ing a file and then transforming it somehow might be a cool party trick |
2021-10-20 22:04:36 +0200 | <[exa]> | re image processing, I'd say the ecosystem around repa is cool but afaik there's no big community |
2021-10-20 22:04:59 +0200 | <InstX1> | but it'd have to be something haskell is good at and can impress the kiddies |
2021-10-20 22:05:01 +0200 | <[exa]> | anyway you can literally write a function that does something like `interact`, just for an image, and give it to the students |
2021-10-20 22:05:07 +0200 | <InstX1> | when you're dealing with kids, they want to make games |
2021-10-20 22:05:09 +0200 | juhp | (~juhp@128.106.188.220) (Ping timeout: 258 seconds) |
2021-10-20 22:05:16 +0200 | <[exa]> | +1, Gloss helps |
2021-10-20 22:05:21 +0200 | <InstX1> | when you're dealing with people who are somewhat older |
2021-10-20 22:05:36 +0200 | <InstX1> | what they really want is file manipulation |
2021-10-20 22:06:04 +0200 | <InstX1> | fastest way to show it's practical might be to have a template for a resume etc or something you want to add to a bunch of MS Word files |
2021-10-20 22:06:14 +0200 | <[exa]> | they sometimes get sold on the fact that `interact $ show . length . lines` won't run out of memory |
2021-10-20 22:06:30 +0200 | <InstX1> | i don't get what it means ::sheepish:: |
2021-10-20 22:07:07 +0200 | <[exa]> | for elders it's actually nice to show the monads as overloaded semicolons, they appreciate how much if()s and other repeated nonsense can be saved |
2021-10-20 22:08:06 +0200 | <[exa]> | finally, hardcore compsci people are sold by standard library, namely definitions like this: https://hackage.haskell.org/package/containers-0.6.5.1/docs/src/Data.Graph.html#scc |
2021-10-20 22:08:22 +0200 | juhp | (~juhp@128.106.188.220) |
2021-10-20 22:10:40 +0200 | <InstX1> | i see |
2021-10-20 22:11:01 +0200 | fendor | (~fendor@91.141.32.154.wireless.dyn.drei.com) (Remote host closed the connection) |
2021-10-20 22:11:21 +0200 | <InstX1> | how hard is it, say, to get to the point where you can IO a jpeg/png, then use haskell to do a cool post-process so that your students can post it onto instagram? |
2021-10-20 22:12:15 +0200 | <[exa]> | comparatively easy |
2021-10-20 22:12:51 +0200 | <[exa]> | you need to know vectors (which is moreless trivial for whoever already did some programming) and e.g. JuicyPixels |
2021-10-20 22:13:24 +0200 | Guest38 | (~Guest38@pool-100-19-29-41.phlapa.fios.verizon.net) |
2021-10-20 22:13:27 +0200 | <[exa]> | this is full of effects https://github.com/RaphaelJ/friday |
2021-10-20 22:13:47 +0200 | ski_ | ski |
2021-10-20 22:14:32 +0200 | <Guest38> | @lamb |
2021-10-20 22:14:32 +0200 | <lambdabot> | Unknown command, try @list |
2021-10-20 22:14:42 +0200 | <Guest38> | @lambdabot help |
2021-10-20 22:14:42 +0200 | <lambdabot> | Unknown command, try @list |
2021-10-20 22:15:21 +0200 | jollygood2 | (~bc8165b6@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout)) |
2021-10-20 22:15:38 +0200 | <[exa]> | Guest38: you can /query lambdabot and try the commands privately |
2021-10-20 22:17:38 +0200 | Guest38 | (~Guest38@pool-100-19-29-41.phlapa.fios.verizon.net) (Client Quit) |
2021-10-20 22:18:17 +0200 | <InstX1> | what i had more in mind was to figure out how to custom craft an effect based on the more abstract material you were teaching your students |
2021-10-20 22:19:03 +0200 | <[exa]> | nah, really just read the docs of `friday` package |
2021-10-20 22:19:31 +0200 | <InstX1> | no, i mean, have the students custom craft them |
2021-10-20 22:19:43 +0200 | <[exa]> | do they know some of the pixel graphics practice? |
2021-10-20 22:20:28 +0200 | <[exa]> | with juicypixels there's a literal `pixelMap` function they can use to change the colors as they want |
2021-10-20 22:20:47 +0200 | <[exa]> | (ok maybe the name is different) |
2021-10-20 22:21:04 +0200 | <[exa]> | ah nope. https://hackage.haskell.org/package/JuicyPixels-3.3.6/docs/Codec-Picture.html#v:pixelMap |
2021-10-20 22:21:26 +0200 | <[exa]> | the example there is a brightness filter |
2021-10-20 22:21:30 +0200 | acidjnk_new | (~acidjnk@p200300d0c703cb959894c42690fc4f0f.dip0.t-ipconnect.de) |
2021-10-20 22:23:07 +0200 | Pdroman_ | (~Android@93.red-79-156-174.staticip.rima-tde.net) |
2021-10-20 22:23:58 +0200 | wonko | (~wjc@62.115.229.50) (Ping timeout: 252 seconds) |
2021-10-20 22:25:44 +0200 | <InstX1> | also, if you might consider my idea, just don't have them do transforms in real time or in demonstrations because if the algorithms produce something unexpected, it might be embarrassing or dangerous on a professional level |
2021-10-20 22:26:40 +0200 | ArctVaulMarsHMPJ | (~pjetcetal@128-71-225-36.broadband.corbina.ru) |
2021-10-20 22:27:28 +0200 | ArctVaulMarsHMPJ | (~pjetcetal@128-71-225-36.broadband.corbina.ru) (Read error: Connection reset by peer) |
2021-10-20 22:27:54 +0200 | hololeap | (~hololeap@user/hololeap) (Ping timeout: 276 seconds) |
2021-10-20 22:28:21 +0200 | hololeap | (~hololeap@user/hololeap) |
2021-10-20 22:28:36 +0200 | floridmarshmallo | (~nate@pool-100-19-29-41.phlapa.fios.verizon.net) |
2021-10-20 22:28:49 +0200 | <[exa]> | ah like I'd have the students code some dope instagram filters :] |
2021-10-20 22:28:54 +0200 | <[exa]> | could work. |
2021-10-20 22:29:09 +0200 | <[exa]> | might make a good homework |
2021-10-20 22:30:15 +0200 | <[exa]> | why embarassing though? (it's pretty normal that several first versions of what you code may be broken AF) |
2021-10-20 22:32:29 +0200 | <iteratee> | is there a canonical LTR equivalent of $ and $! ? |
2021-10-20 22:33:51 +0200 | <[exa]> | there's `&` but I've got no idea if there's `&!` |
2021-10-20 22:34:03 +0200 | <aegon> | whats a 'cononical' use of lambdaCase? I keep going through a loop of using case, thinking i can clean up the syntax with lambda case, then either realizing i should be using MaybeT instead or that lambda case doesn't save much and makes things harder to read |
2021-10-20 22:34:26 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) (Quit: Lost terminal) |
2021-10-20 22:34:35 +0200 | <aegon> | iteratee: i also got suggested <&> by hlint a little while ago and never considered that it might exist, but its a neat control structure sometimes |
2021-10-20 22:34:42 +0200 | <geekosaur> | usually when you have a single parameter function that would do a case anyway |
2021-10-20 22:34:49 +0200 | floridmarshmallo | (~nate@pool-100-19-29-41.phlapa.fios.verizon.net) (Quit: WeeChat 3.0) |
2021-10-20 22:35:11 +0200 | <geekosaur> | so instead of \x -> case x of ... do \case ... |
2021-10-20 22:35:31 +0200 | <ski> | iteratee : one could possibly argue that `$!' at least, and perhaps also `$', ought to be `infixl' .. |
2021-10-20 22:35:32 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) |
2021-10-20 22:35:49 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-10-20 22:35:52 +0200 | <iteratee> | [exa], what library defines `&`? |
2021-10-20 22:35:53 +0200 | <aegon> | geekosaur: ah, that makes a ton of sense, thanks! |
2021-10-20 22:36:20 +0200 | <InstX1> | exa: accidentally deepfaking yourself |
2021-10-20 22:36:23 +0200 | <InstX1> | or looking like it is |
2021-10-20 22:36:29 +0200 | <InstX1> | accidentally screwing up and getting swastikas |
2021-10-20 22:36:29 +0200 | <InstX1> | etc |
2021-10-20 22:37:07 +0200 | <ski> | (.. i don't care much for `foo x $ bar y z $ blah'. but being able to write e.g. foldl' f z (x:xs) = foldl' f $! f z x $ xs could be nice) |
2021-10-20 22:37:40 +0200 | <ski> | @src foldl' |
2021-10-20 22:37:41 +0200 | <lambdabot> | foldl' f a [] = a |
2021-10-20 22:37:41 +0200 | <lambdabot> | foldl' f a (x:xs) = let a' = f a x in a' `seq` foldl' f a' xs |
2021-10-20 22:37:45 +0200 | <[exa]> | aegon: wow that's neat |
2021-10-20 22:37:53 +0200 | <[exa]> | iteratee: Data.Function i hope? |
2021-10-20 22:38:17 +0200 | <ski> | foldl' f a (x:xs) = (foldl' f $! f a x) xs -- currently, you could write it like this |
2021-10-20 22:38:22 +0200 | <[exa]> | InstX1: ah I thought you're after normal filters, not neural-network madness |
2021-10-20 22:38:33 +0200 | <InstX1> | i'm a non-programmer |
2021-10-20 22:38:38 +0200 | <InstX1> | i just wonder about what could go wrong |
2021-10-20 22:38:52 +0200 | <InstX1> | what i was thinking about was more mandelbrotting stuff |
2021-10-20 22:38:55 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) (Client Quit) |
2021-10-20 22:38:58 +0200 | <InstX1> | or figuring out how to do weird memes via images |
2021-10-20 22:39:04 +0200 | <InstX1> | it's the stuff the kids would like |
2021-10-20 22:39:10 +0200 | <InstX1> | erm, weird memes via filters |
2021-10-20 22:39:22 +0200 | <InstX1> | keeping it "sane" and "professional" is an issue |
2021-10-20 22:39:38 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:5edd:2a99:160f:84d2) (Quit: WeeChat 2.8) |
2021-10-20 22:39:44 +0200 | <[exa]> | the best meme filter lately is `convert_to_jpeg -quality 1` |
2021-10-20 22:40:00 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) |
2021-10-20 22:40:01 +0200 | <InstX1> | lol |
2021-10-20 22:40:25 +0200 | <[exa]> | anyway yeah mandelbrots do work |
2021-10-20 22:40:34 +0200 | <[exa]> | people love diggin in that |
2021-10-20 22:40:36 +0200 | <InstX1> | on instagram a lot of people like to show off their figures, one thing that could go wrong is if the algorithm painted their clothes off, for intsance |
2021-10-20 22:40:53 +0200 | <InstX1> | not that it'd reproduce anatomy, but it'd be close enough to be embarrassing |
2021-10-20 22:43:07 +0200 | <[exa]> | you might be confusing programming with deep NN training now. :D |
2021-10-20 22:45:07 +0200 | <InstX1> | you could have a prompt to specify an area, and accident,s whoops |
2021-10-20 22:45:08 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-20 22:45:29 +0200 | <InstX1> | doesn't take anything special, just a region of the wrong color in the wrong place |
2021-10-20 22:46:21 +0200 | <InstX1> | i mean the inevitable stuff with instagram filters is that people might want to show off the filters in class |
2021-10-20 22:46:28 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-10-20 22:46:32 +0200 | <InstX1> | but to have the images curated beforehand |
2021-10-20 22:46:36 +0200 | <InstX1> | is just a good idea |
2021-10-20 22:49:39 +0200 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3) |
2021-10-20 22:51:00 +0200 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2021-10-20 22:51:23 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 264 seconds) |
2021-10-20 22:53:08 +0200 | Farzad | (~FarzadBek@37.49.149.40) (Quit: Leaving) |
2021-10-20 22:55:00 +0200 | coot | (~coot@37.30.49.107.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
2021-10-20 22:55:15 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 260 seconds) |
2021-10-20 23:00:06 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2021-10-20 23:05:41 +0200 | <monochrom> | Oh BTW I don't oppose starting with main, but I would oppose starting with do-notation. Because my students and TAs oppose that, too. |
2021-10-20 23:06:38 +0200 | oats | (~thomas@user/oats) |
2021-10-20 23:07:02 +0200 | xcmw | (~textual@dyn-72-33-0-245.uwnet.wisc.edu) |
2021-10-20 23:07:40 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-10-20 23:08:30 +0200 | <[exa]> | monochrom: sometimes there's the uncanny question about "can it read a number and print it back", I'm usually showing that there's `do` to do that easily but with a promise that it's not a side effect and I'm going to demystify it asap |
2021-10-20 23:09:09 +0200 | <[exa]> | IO works kinda nicely there as an eDSL |
2021-10-20 23:09:22 +0200 | ski | . o O ( `interact' ) |
2021-10-20 23:09:47 +0200 | <[exa]> | ski: oh you! |
2021-10-20 23:09:58 +0200 | <[exa]> | :] |
2021-10-20 23:10:16 +0200 | <monochrom> | That's interesting. I would like to take a look at your approach. |
2021-10-20 23:10:30 +0200 | michalz | (~michalz@185.246.204.93) (Remote host closed the connection) |
2021-10-20 23:10:45 +0200 | <ski> | what, you don't like having to juggle around fragile irrefutable patterns / forcing with `case' at the right time ? |
2021-10-20 23:10:46 +0200 | <[exa]> | the slides are in czech, not sure if it helps a lot :D |
2021-10-20 23:10:57 +0200 | <aegon> | whenever i show someone io without do notation they get scared, when i show them do notation they see return and start making all sorts of bad assumptions about whats going on |
2021-10-20 23:11:03 +0200 | <adamCS> | A Pipes question, if anyone is familiar: Streamly has a function IsStream t => fromEffect :: m a -> t m a. I'd like a Pipes equivalent: pipesFromEffect :: m a -> Producer a m () (I guess?). I see "yield :: a -> Producer a m ()" but that's not what I want... |
2021-10-20 23:11:12 +0200 | <monochrom> | At this point though it sounds like you are doing a "1st week: whirlwind tour. 2nd-nth week: properly" |
2021-10-20 23:11:19 +0200 | <aegon> | its rough when the entry point to a hello world is one of the hardest things to grasp coming from imperative land |
2021-10-20 23:11:22 +0200 | <monochrom> | which can work, yeah. |
2021-10-20 23:11:58 +0200 | <ski> | aegon : use applicative combinators, together with `join' ? |
2021-10-20 23:12:39 +0200 | <[exa]> | monochrom: I'm trying to avoid whirlwinds but well, you need to keep the fun going |
2021-10-20 23:12:48 +0200 | <awpr> | adamCS: that sounds like `lift`, I think |
2021-10-20 23:13:14 +0200 | <awpr> | oh, or `yield =<< lift ma` |
2021-10-20 23:13:52 +0200 | <monochrom> | If you teach do-notation, you will eventually have to answer this question: "s <- x" vs "let t = y", why can't I do the other way, "let s = x", "t <- y". |
2021-10-20 23:14:11 +0200 | <adamCS> | awpr: Thanks! |
2021-10-20 23:14:23 +0200 | <monochrom> | And the answer really forces you to go back to >>= and "M Int" vs "Int" anyway. |
2021-10-20 23:15:38 +0200 | <[exa]> | `<-` "removes the IO from the data you want and joins it with the bigger IO around" is a good temporary explanation |
2021-10-20 23:15:48 +0200 | <[exa]> | I'm open to a better one honestly |
2021-10-20 23:16:36 +0200 | <aegon> | ski: i like that, join might side step a lot without being as hand wavy as do notation to a new comer |
2021-10-20 23:17:19 +0200 | Null_A | (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) (Read error: Connection reset by peer) |
2021-10-20 23:18:33 +0200 | <monochrom> | Yikes haha. |
2021-10-20 23:19:04 +0200 | <monochrom> | https://www.vex.net/~trebla/photo/unorganized/IO-String.png |
2021-10-20 23:19:45 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-10-20 23:19:50 +0200 | <davean> | [exa]: I've said things like "Pipes it throuh to the larger IO" or something - though I've only like twice taught people who found this entire thing confusing |
2021-10-20 23:20:00 +0200 | <davean> | No the lack of InstanceSigs in the base language? |
2021-10-20 23:20:04 +0200 | <davean> | That shows up every time |
2021-10-20 23:20:09 +0200 | <dsal> | aegon: Nobody should write `return` in code anymore. Some people disagree with me, of course, but it's confusing. |
2021-10-20 23:20:33 +0200 | <ski> | aegon : i dunno how well it would work, but perhaps one could try it. also, sometimes i find `infixl <*>>; (<*>>) :: Monad m => m (a -> m b) -> (m a -> m b); mamb <*>> ma = mamb >>= (=<< ma) {- = join (mamb <*> ma) -}' useful. to be used like `frob <$> foo <*> bar <*> baz <*>> quux' |
2021-10-20 23:21:02 +0200 | <ski> | monochrom : a pushout ? |
2021-10-20 23:21:05 +0200 | <[exa]> | davean: "sorry guys you just have to do that to get rid of the IO wrap" is actually a tone the students are used to from pythons, so it kindof works but it's not right for sure. :D |
2021-10-20 23:21:50 +0200 | <monochrom> | Yeah a pushout. |
2021-10-20 23:21:59 +0200 | <davean> | [exa]: See that wouldn't fly with the people I end up teaching. They'd be like "But the point is the IO doesn't go away" and I'd get all sorts of shit for that |
2021-10-20 23:22:00 +0200 | <ski> | `InstanceSigs' is quite nice |
2021-10-20 23:22:11 +0200 | <davean> | they're also not students - they're people who already create things on their own |
2021-10-20 23:22:33 +0200 | <adamCS> | awpr: I always forget that underneath it's just a regular monad transformer. |
2021-10-20 23:22:35 +0200 | <ski> | dsal : there's already overloading of other terms, i suppose |
2021-10-20 23:22:38 +0200 | <ski> | (e.g. "functor") |
2021-10-20 23:22:43 +0200 | <hpc> | "you just have to use (.) to get rid of the function" |
2021-10-20 23:22:59 +0200 | <dsal> | ski: Yeah, I was confused by "functor" from o'caml years ago. |
2021-10-20 23:23:08 +0200 | <ski> | @where on-functors |
2021-10-20 23:23:08 +0200 | <lambdabot> | "On Functors" (in C++,Standard ML,Haskell,Prolog) by Peteris Krumins in 2010-05-17 at <http://www.catonmat.net/blog/on-functors/> |
2021-10-20 23:23:22 +0200 | <davean> | [exa]: now when I explain what a primtive type is as a basis vector in the space of Haskell types, they're really happy with it. |
2021-10-20 23:23:26 +0200 | <davean> | its all the people you teach? |
2021-10-20 23:24:10 +0200 | <ski> | davean : or a generator in a group presentation ? |
2021-10-20 23:24:24 +0200 | <davean> | ski: Yah, think I did that one once too |
2021-10-20 23:24:50 +0200 | <davean> | ski: though tehy jump to asking me about (thing that turns out to be sum and product types) when I do the vector space one |
2021-10-20 23:25:06 +0200 | <davean> | They don't start asking me if "data" works the way it does when I say group things |
2021-10-20 23:25:13 +0200 | <davean> | they just don't run as far with it |
2021-10-20 23:25:30 +0200 | <davean> | and I'm nothing if not lazy |
2021-10-20 23:25:42 +0200 | <davean> | I'd prefer they explain how data types work to me than me to them |
2021-10-20 23:25:48 +0200 | <[exa]> | davean: I said it's temporary :D |
2021-10-20 23:26:11 +0200 | <davean> | [exa]: Yah, but I like temporary to be longer than "until I finish saying it" :) |
2021-10-20 23:26:14 +0200 | <awpr> | ski: I knew I'd seen that type signature before, apparently I defined it as `(=*<)` |
2021-10-20 23:26:31 +0200 | <[exa]> | anyway yeah the ADT "algebra" is a great discovery for many people |
2021-10-20 23:26:33 +0200 | <awpr> | :t (=<<) |
2021-10-20 23:26:35 +0200 | <lambdabot> | Monad m => (a -> m b) -> m a -> m b |
2021-10-20 23:26:41 +0200 | <[exa]> | esp. later with zippers |
2021-10-20 23:26:54 +0200 | <awpr> | by analogy to that with an extra layer of `m` on the function, like the Applicative operators have |
2021-10-20 23:27:00 +0200 | Guest9393 | (~Guest93@2800:2181:4400:27c:dd94:662c:5a7e:2a36) |
2021-10-20 23:27:07 +0200 | jushur | (~human@user/jushur) (Quit: ¯\_(ツ)_/¯) |
2021-10-20 23:27:15 +0200 | <[exa]> | (school motto: if in doubt, differentiate it) |
2021-10-20 23:27:58 +0200 | Guest9393 | (~Guest93@2800:2181:4400:27c:dd94:662c:5a7e:2a36) (Client Quit) |
2021-10-20 23:29:11 +0200 | ski | . o O ( "We will encourage you to develop the three great virtues of a programmer: laziness, impatience, and hubris. --Larry Wall and Randal L Schwartz" -- "The Swine Before Perl" (talk/presentation) by Shriram Krishnamurthi in 2001-11 at <https://cs.brown.edu/~sk/Publications/Talks/SwineBeforePerl/> ) |
2021-10-20 23:30:56 +0200 | <ski> | awpr : i came up with it years ago. i guess others have also encountered a desire for it (or maybe recalling me mentioning it previously in here) .. imho, it'd be nice to have in `Control.Monad' or something |
2021-10-20 23:31:12 +0200 | Null_A | (~null_a@2601:645:8700:2290:a94b:e46c:6690:e477) |
2021-10-20 23:31:38 +0200 | Pdroman_ | (~Android@93.red-79-156-174.staticip.rima-tde.net) (Quit: -a- IRC for Android 2.1.39) |
2021-10-20 23:31:38 +0200 | <awpr> | +1, I like that it lets monadic computations have an "applicative-style" expression form |
2021-10-20 23:33:05 +0200 | <ski> | the `<*>>' is intended to look like a regular `<*>', except that the whole shebang is then wrapped in a `join', so that the initial function returns an action that'll be performed in the same go |
2021-10-20 23:33:30 +0200 | <Inst> | sorry about that, this is one of the reasons i'm attracted to haskell as a future hobbyist; i get panicky and think of all sorts of terrible edge cases and ways things can go wrong, anyways, headed to sleep |
2021-10-20 23:35:10 +0200 | <awpr> | yeah, I think I see the meaning behind that name. personally I see it being more closely related to `=<<`, but I'm not strongly opinionated about it |
2021-10-20 23:35:30 +0200 | ubert | (~Thunderbi@91.141.37.135.wireless.dyn.drei.com) (Ping timeout: 260 seconds) |
2021-10-20 23:35:52 +0200 | <ski> | (for two effectful parameters, it's `frob <$> foo <**> bar'. for just one, it'll have to be `frob =<< foo' .. of course, one could also have the operation be effectfully computed, like `frob <*> foo <*>> bar' or `frob <*>> foo') |
2021-10-20 23:36:41 +0200 | <ski> | (s/<**>/<*>>/) |
2021-10-20 23:43:40 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 258 seconds) |
2021-10-20 23:52:16 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-10-20 23:53:04 +0200 | jgeerds | (~jgeerds@55d4da80.access.ecotel.net) |
2021-10-20 23:54:50 +0200 | xcmw | (~textual@dyn-72-33-0-245.uwnet.wisc.edu) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-10-20 23:56:40 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2021-10-20 23:59:41 +0200 | zebrag | (~chris@user/zebrag) |