2021-09-07 00:05:05 +0200 | vysn | (~vysn@user/vysn) (Quit: WeeChat 3.2) |
2021-09-07 00:07:57 +0200 | max22- | (~maxime@2a01cb0883359800f259119bb9ba011d.ipv6.abo.wanadoo.fr) (Quit: Leaving) |
2021-09-07 00:08:51 +0200 | michalz | (~michalz@185.246.204.97) (Remote host closed the connection) |
2021-09-07 00:13:15 +0200 | chomwitt | (~chomwitt@2a02:587:dc16:c800:12c3:7bff:fe6d:d374) (Remote host closed the connection) |
2021-09-07 00:14:33 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-09-07 00:15:04 +0200 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 252 seconds) |
2021-09-07 00:16:41 +0200 | Erutuon | (~Erutuon@user/erutuon) |
2021-09-07 00:18:52 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 245 seconds) |
2021-09-07 00:19:50 +0200 | Topsi | (~Tobias@dyndsl-095-033-095-030.ewe-ip-backbone.de) |
2021-09-07 00:21:00 +0200 | shapr | (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
2021-09-07 00:24:53 +0200 | APic | (apic@apic.name) (Read error: Connection reset by peer) |
2021-09-07 00:29:40 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 240 seconds) |
2021-09-07 00:30:34 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-09-07 00:31:06 +0200 | benin0369323 | (~benin@183.82.207.253) (Quit: Ping timeout (120 seconds)) |
2021-09-07 00:33:04 +0200 | benin0369323 | (~benin@183.82.207.253) |
2021-09-07 00:36:04 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-09-07 00:37:14 +0200 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2021-09-07 00:38:22 +0200 | cjb | (~cjb@user/cjb) |
2021-09-07 00:38:43 +0200 | benin0369323 | (~benin@183.82.207.253) (Ping timeout: 252 seconds) |
2021-09-07 00:39:54 +0200 | Pickchea | (~private@user/pickchea) (Quit: Leaving) |
2021-09-07 00:41:52 +0200 | urdh | (~urdh@user/urdh) (Ping timeout: 250 seconds) |
2021-09-07 00:42:06 +0200 | APic | (apic@apic.name) |
2021-09-07 00:44:21 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-09-07 00:45:20 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-07 00:45:28 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) |
2021-09-07 00:48:54 +0200 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2) |
2021-09-07 00:49:24 +0200 | wroathe | (~wroathe@user/wroathe) (Read error: Connection reset by peer) |
2021-09-07 00:50:49 +0200 | jonatan | (~nate@h85-8-60-194.cust.a3fiber.se) (Ping timeout: 252 seconds) |
2021-09-07 00:51:08 +0200 | jonatan | (~nate@h85-8-60-194.cust.a3fiber.se) |
2021-09-07 00:54:52 +0200 | jtomas | (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Ping timeout: 250 seconds) |
2021-09-07 00:55:32 +0200 | wroathe | (~wroathe@96-88-30-181-static.hfc.comcastbusiness.net) |
2021-09-07 00:55:32 +0200 | wroathe | (~wroathe@96-88-30-181-static.hfc.comcastbusiness.net) (Changing host) |
2021-09-07 00:55:32 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-09-07 00:55:48 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 00:56:11 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 00:56:14 +0200 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 256 seconds) |
2021-09-07 00:56:40 +0200 | urdh | (~urdh@user/urdh) |
2021-09-07 00:59:12 +0200 | amahl | (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 250 seconds) |
2021-09-07 01:05:12 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-09-07 01:06:26 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2021-09-07 01:13:55 +0200 | zaquest | (~notzaques@5.128.210.178) (Quit: Leaving) |
2021-09-07 01:14:37 +0200 | nicbk | (~nicbk@user/nicbk) (Remote host closed the connection) |
2021-09-07 01:17:12 +0200 | ArctVaulMarsHMPJ | (~pjetcetal@2.95.102.85) |
2021-09-07 01:19:07 +0200 | machinedgod | (~machinedg@24.105.81.50) |
2021-09-07 01:19:10 +0200 | zaquest | (~notzaques@5.128.210.178) |
2021-09-07 01:21:08 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-09-07 01:21:08 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-09-07 01:21:08 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-09-07 01:21:22 +0200 | pmk | (~user@2a02:587:941a:35d9:8f9c:6cb6:67dc:f5e3) (Ping timeout: 245 seconds) |
2021-09-07 01:22:01 +0200 | notzmv | (~zmv@user/notzmv) (Read error: Connection reset by peer) |
2021-09-07 01:23:40 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 240 seconds) |
2021-09-07 01:23:57 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 01:29:53 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-07 01:30:03 +0200 | notzmv | (~zmv@user/notzmv) |
2021-09-07 01:31:15 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 01:31:28 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 01:32:37 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds) |
2021-09-07 01:32:51 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.) |
2021-09-07 01:32:55 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 01:37:33 +0200 | vicfred | (~vicfred@user/vicfred) |
2021-09-07 01:38:44 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 256 seconds) |
2021-09-07 01:39:02 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 01:43:37 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 252 seconds) |
2021-09-07 01:48:27 +0200 | Gurkenglas | (~Gurkengla@dslb-090-186-104-237.090.186.pools.vodafone-ip.de) (Ping timeout: 245 seconds) |
2021-09-07 01:50:54 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:51c9:9325:5764:1e14) (Remote host closed the connection) |
2021-09-07 01:54:09 +0200 | sayola | (~vekto@dslb-088-064-186-138.088.064.pools.vodafone-ip.de) (Ping timeout: 248 seconds) |
2021-09-07 01:55:51 +0200 | sayola | (~vekto@dslb-088-064-186-138.088.064.pools.vodafone-ip.de) |
2021-09-07 01:59:54 +0200 | alx741 | (~alx741@181.196.69.81) |
2021-09-07 02:01:51 +0200 | nicbk | (~nicbk@user/nicbk) |
2021-09-07 02:04:14 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-09-07 02:04:21 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:51c9:9325:5764:1e14) |
2021-09-07 02:04:55 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:51c9:9325:5764:1e14) (Remote host closed the connection) |
2021-09-07 02:05:04 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:51c9:9325:5764:1e14) |
2021-09-07 02:06:40 +0200 | xsperry | (~as@user/xsperry) (Ping timeout: 240 seconds) |
2021-09-07 02:06:57 +0200 | [_] | (~itchyjunk@user/itchyjunk/x-7353470) |
2021-09-07 02:09:28 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 252 seconds) |
2021-09-07 02:11:12 +0200 | srk_ | (~sorki@user/srk) |
2021-09-07 02:11:36 +0200 | srk | (~sorki@user/srk) (Ping timeout: 256 seconds) |
2021-09-07 02:13:04 +0200 | jpds1 | (~jpds@gateway/tor-sasl/jpds) |
2021-09-07 02:14:07 +0200 | srk_ | srk |
2021-09-07 02:14:58 +0200 | aarvar | (~aaron@2601:602:a080:fa0:c490:e73a:21d7:a4e7) (Ping timeout: 252 seconds) |
2021-09-07 02:16:37 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2021-09-07 02:25:32 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 245 seconds) |
2021-09-07 02:25:50 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 02:25:58 +0200 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 252 seconds) |
2021-09-07 02:26:56 +0200 | lbseale | (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer) |
2021-09-07 02:28:02 +0200 | srk | (~sorki@user/srk) (Ping timeout: 256 seconds) |
2021-09-07 02:28:05 +0200 | srk_ | (~sorki@user/srk) |
2021-09-07 02:31:02 +0200 | srk_ | srk |
2021-09-07 02:31:30 +0200 | alx741 | (~alx741@181.196.69.81) (Ping timeout: 250 seconds) |
2021-09-07 02:32:01 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 252 seconds) |
2021-09-07 02:34:17 +0200 | acarrico1 | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
2021-09-07 02:35:53 +0200 | mikoto-chan | (~mikoto-ch@83.137.2.251) (Read error: Connection reset by peer) |
2021-09-07 02:41:35 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 02:41:49 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 02:44:00 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-07 02:44:42 +0200 | alx741 | (~alx741@181.196.68.218) |
2021-09-07 02:51:59 +0200 | Guest69 | (~Guest69@172.104.64.123) |
2021-09-07 02:52:40 +0200 | Guest69 | (~Guest69@172.104.64.123) (Client Quit) |
2021-09-07 02:58:55 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2.1) |
2021-09-07 03:01:56 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 03:02:10 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 03:04:44 +0200 | vicfred | (~vicfred@user/vicfred) (Quit: Leaving) |
2021-09-07 03:05:41 +0200 | euandreh | (~euandreh@2804:14c:33:9fe5:2c9d:2885:3ab4:eb30) (Quit: WeeChat 3.2) |
2021-09-07 03:05:57 +0200 | euandreh | (~euandreh@2804:14c:33:9fe5:1caf:1d6c:286e:abe2) |
2021-09-07 03:09:00 +0200 | <ldlework> | dsal: what's the book fwiw? |
2021-09-07 03:09:49 +0200 | <dsal> | ldlework: https://leanpub.com/optics-by-example |
2021-09-07 03:11:21 +0200 | <dsal> | It's not a beginning book on Haskell. i.e., helpful if you've comfortable with functors and traversals and stuff. |
2021-09-07 03:11:47 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2021-09-07 03:12:19 +0200 | neurocyte0 | (~neurocyte@212.232.84.187) |
2021-09-07 03:12:19 +0200 | [_] | [itchyjunk] |
2021-09-07 03:12:19 +0200 | neurocyte0 | (~neurocyte@212.232.84.187) (Changing host) |
2021-09-07 03:12:19 +0200 | neurocyte0 | (~neurocyte@user/neurocyte) |
2021-09-07 03:12:55 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2021-09-07 03:13:49 +0200 | <mniip> | 9.2's RecordDotSyntax should hopefully alleviate some of the more basic issues that lens tries to solve |
2021-09-07 03:14:22 +0200 | neurocyte | (~neurocyte@user/neurocyte) (Ping timeout: 252 seconds) |
2021-09-07 03:14:22 +0200 | neurocyte0 | neurocyte |
2021-09-07 03:15:39 +0200 | <ldlework> | Why is this saying the patterns are non-exhaustive? |
2021-09-07 03:15:41 +0200 | <ldlework> | http://logos.ldlework.com/caps/2021-09-07-01-15-24.png |
2021-09-07 03:17:01 +0200 | <ldlework> | arnt they? |
2021-09-07 03:17:18 +0200 | <janus> | ldlework: because it can't know that arbitrary boolean expressions like that can rule each other out, i think |
2021-09-07 03:17:21 +0200 | <Cale> | ldlework: because it's not clear that b == a, b < a and b > a cover all the possible cases |
2021-09-07 03:17:21 +0200 | <mniip> | it doesn't recognize the guards involving </==/> as exhaustive |
2021-09-07 03:17:37 +0200 | <Cale> | If you used b == a, b < a and otherwise, it should work |
2021-09-07 03:17:37 +0200 | <mniip> | (technically the instance implementing these could be unlawful) |
2021-09-07 03:17:37 +0200 | <ldlework> | heh, thanks for the responses |
2021-09-07 03:17:38 +0200 | <janus> | ldlework: you can rewrite it using case a `compare` b of LT => ... | EQ => ... |
2021-09-07 03:17:46 +0200 | <mniip> | `compare` is the way to go forward with this |
2021-09-07 03:17:54 +0200 | <ldlework> | huh i think i understand |
2021-09-07 03:18:07 +0200 | <Cale> | Or you could use case compare b a of LT -> ...; GT -> ...; EQ -> ... |
2021-09-07 03:18:29 +0200 | <mniip> | you could even use `| LT <- compare a b ... | EQ <- compare a b` |
2021-09-07 03:18:36 +0200 | <ldlework> | that worked |
2021-09-07 03:18:36 +0200 | <mniip> | these would be picked up as exhaustive iirc |
2021-09-07 03:18:45 +0200 | hiruji | (~hiruji@user/hiruji) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-09-07 03:19:05 +0200 | hiruji | (~hiruji@user/hiruji) |
2021-09-07 03:19:16 +0200 | <ldlework> | Haskell From First Principles needs a new edition :) |
2021-09-07 03:19:21 +0200 | <Cale> | That reads so inefficiently that it's painful, even though I know it's one of the few things GHC will actually do CSE on :) |
2021-09-07 03:19:24 +0200 | <mniip> | debatable |
2021-09-07 03:19:33 +0200 | <ldlework> | heh |
2021-09-07 03:20:12 +0200 | <mniip> | oh maybe it doesn't pick them up as exhaustive |
2021-09-07 03:20:57 +0200 | <Cale> | It really should |
2021-09-07 03:21:07 +0200 | <ldlework> | http://logos.ldlework.com/caps/2021-09-07-01-21-06.png |
2021-09-07 03:21:09 +0200 | <ldlework> | this version worked |
2021-09-07 03:21:09 +0200 | <mniip> | it does if you're matching on a variable |
2021-09-07 03:21:18 +0200 | <ldlework> | but not the guards |
2021-09-07 03:21:26 +0200 | <Cale> | yeah |
2021-09-07 03:21:47 +0200 | <Cale> | mniip: I would have expected them to actually have the same intermediate representation, so that's funny |
2021-09-07 03:21:55 +0200 | <mniip> | `f x y | LT <- k = undefined | EQ <- k = undefined | GT <- k = undefined where k = compare x y` |
2021-09-07 03:21:57 +0200 | <mniip> | this doesn't warn |
2021-09-07 03:22:08 +0200 | <Cale> | There's that thing that converts everything into match trees |
2021-09-07 03:22:13 +0200 | <mniip> | yes |
2021-09-07 03:22:13 +0200 | <ldlework> | I know Copilot is basically universally hated, but it has helped so much guessing at/remembering syntax while learning Haskell |
2021-09-07 03:22:18 +0200 | <mniip> | I expected that to kick in too |
2021-09-07 03:22:27 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) |
2021-09-07 03:22:27 +0200 | <iqubic> | What is Copilot? |
2021-09-07 03:22:43 +0200 | <ldlework> | gpt3 for intellisense basically |
2021-09-07 03:22:44 +0200 | pavonia | (~user@user/siracusa) |
2021-09-07 03:25:30 +0200 | <janus> | > compare (0 / 0) (0 / 0) |
2021-09-07 03:25:32 +0200 | <lambdabot> | GT |
2021-09-07 03:25:33 +0200 | <janus> | 👍 |
2021-09-07 03:26:00 +0200 | <mniip> | > S.fromList [0/0, 0/0] |
2021-09-07 03:26:01 +0200 | <lambdabot> | fromList [NaN,NaN] |
2021-09-07 03:26:30 +0200 | <justsomeguy> | One thing I like about Haskell is that it doesn't have a lot of syntax. I do forget function names pretty frequently, though. |
2021-09-07 03:26:42 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) (Ping timeout: 245 seconds) |
2021-09-07 03:27:10 +0200 | xff0x | (~xff0x@2001:1a81:5209:3600:6986:c057:5fff:c53b) (Ping timeout: 240 seconds) |
2021-09-07 03:27:22 +0200 | zgrep | (~zgrep@user/zgrep) (I'm in too many channels.) |
2021-09-07 03:27:39 +0200 | justsomeguy | also hasn't gotten into any language extensions, yet |
2021-09-07 03:28:03 +0200 | <mniip> | even the extensions generally try to be conservative in terms of adding new syntax |
2021-09-07 03:28:13 +0200 | favonia | (~favonia@user/favonia) |
2021-09-07 03:29:00 +0200 | xff0x | (~xff0x@2001:1a81:5244:5800:ade4:7c8b:9b3b:6271) |
2021-09-07 03:30:05 +0200 | h_ | (rootvegeta@fsf/member/hays) (Quit: h_) |
2021-09-07 03:31:38 +0200 | hays | (rootvegeta@st5ve.com) |
2021-09-07 03:32:38 +0200 | <janus> | justsomeguy: what is your source for haskell not having a lot of syntax? |
2021-09-07 03:33:22 +0200 | <ldlework> | Is Haste any good |
2021-09-07 03:33:35 +0200 | <janus> | ldlework: abandoned, i think. not good |
2021-09-07 03:33:37 +0200 | <dsal> | Does Haskell have a lot of syntax? |
2021-09-07 03:33:39 +0200 | <ldlework> | rip |
2021-09-07 03:34:17 +0200 | <ldlework> | When it comes to MLs it's less about syntax and more about opaque operators :P |
2021-09-07 03:34:22 +0200 | <iqubic> | Is there a way to make a point-free version of "\n -> n > 10"? |
2021-09-07 03:34:30 +0200 | <janus> | dsal: well there are so many ways to write the same thing , doesn't strike me as super minimal. just because people don't write braces doesn't mean it is minimal |
2021-09-07 03:34:43 +0200 | <iqubic> | Is that my thing just "flip (> 10)"? |
2021-09-07 03:34:43 +0200 | <geekosaur> | :t (>10) |
2021-09-07 03:34:45 +0200 | <lambdabot> | (Ord a, Num a) => a -> Bool |
2021-09-07 03:35:14 +0200 | <janus> | and i think of the differences between let..in and where, that doesn't seem minimal. GADTs syntax enabling a superset of regular data type definition |
2021-09-07 03:35:25 +0200 | <geekosaur> | unless you wrote the wrong thing in which case it's (10 >) |
2021-09-07 03:35:27 +0200 | <dsal> | @\pl \n -> n > 10 |
2021-09-07 03:35:27 +0200 | <lambdabot> | (> 10) |
2021-09-07 03:35:44 +0200 | <iqubic> | Ah. Right. |
2021-09-07 03:35:56 +0200 | <janus> | many convenience like view patterns and pattern guards, enabling things that you would just need an extra case for if you were to do it without. not minimal |
2021-09-07 03:36:03 +0200 | <justsomeguy> | janus: Source? It's my personal opinion as a new Haskell user. |
2021-09-07 03:36:05 +0200 | <janus> | so that's why i ask for the source, i want to see which metric we are comparing here |
2021-09-07 03:36:18 +0200 | <iqubic> | What I actually want is the point-free version of "\m n -> n > m" |
2021-09-07 03:36:30 +0200 | geekosaur | wonders if we're discussingf surface haskell or core |
2021-09-07 03:36:44 +0200 | <iqubic> | @pl \m n -> n > m |
2021-09-07 03:36:45 +0200 | <lambdabot> | flip (>) |
2021-09-07 03:36:48 +0200 | <iqubic> | I see. |
2021-09-07 03:37:05 +0200 | <dsal> | I guess there are extensions... ViewPatterns is only kind of new syntax. Pattern guards are similarly reused in a lot of places, but I don't feel like there's all that much syntax most days. |
2021-09-07 03:37:10 +0200 | <ldlework> | For example, I just looked up a Haskell article on the Reingold-Tilford algorithm of drawing binary trees and the very first snippet in the article uses; >> <|> <$> <* |
2021-09-07 03:37:14 +0200 | <ldlework> | I probably need to slow my roll |
2021-09-07 03:37:23 +0200 | <justsomeguy> | janus: I think in comparison to something like rust or C++ the syntax is pretty minimal. You don't have too many keywords, there are fewer baked-in control flow constructs, etc. |
2021-09-07 03:37:33 +0200 | <dsal> | ldlework: Those are pretty common, but they're still library defined. |
2021-09-07 03:37:38 +0200 | <geekosaur> | I mean, a lot of surface haskell including many of the extensions get converted to the more austere core equivalents |
2021-09-07 03:37:51 +0200 | <dsal> | ldlework: they're just functions, though. |
2021-09-07 03:38:05 +0200 | <ldlework> | dsal: I was just defending the original point that as a newbie the baggage I brought with me isn't doing much good |
2021-09-07 03:38:11 +0200 | <ldlework> | dsal: sure, I clarified above |
2021-09-07 03:38:22 +0200 | <ldlework> | "it's less syntax and more opaque operators, re: MLs" |
2021-09-07 03:38:48 +0200 | <dsal> | Yeah, going slow gets you there faster. Those operators in particular are common enough that you'll rarely write anything without using them. :) |
2021-09-07 03:39:08 +0200 | <dsal> | At least parsers. I don't use <* or even <|> quite as much as >> or <$> |
2021-09-07 03:39:18 +0200 | <dsal> | I can't get very far into a file without <$> |
2021-09-07 03:39:26 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 256 seconds) |
2021-09-07 03:39:46 +0200 | <ldlework> | A number of years ago I ported the SML examples from Reppy's Concurrency in ML to F# using Hopac so I have a little experience with very powerful operators |
2021-09-07 03:39:55 +0200 | Topsi | (~Tobias@dyndsl-095-033-095-030.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
2021-09-07 03:40:01 +0200 | <justsomeguy> | Whether the syntax seems minimal is a subjective thing, really. (...wait, is there an objective measure?) I bet a scheme or smalltalk programmer would have a pretty different reaction than I did. But I came from the land of curly braces. |
2021-09-07 03:40:08 +0200 | <ldlework> | They're matrix code until you learn them though |
2021-09-07 03:41:00 +0200 | <dsal> | Yeah, coming from, e.g., go, you'll find less syntax and fewer operators and reserved words as part of the language itself. |
2021-09-07 03:41:17 +0200 | <janus> | justsomeguy: if haskell was minimal, tree-sitter would have an easier time supporting all the extensions , right ? ;) https://github.com/tree-sitter/tree-sitter-haskell#supported-language-extensions |
2021-09-07 03:41:55 +0200 | <janus> | there is a rust grammar too, maybe there is some sensible way to compare the two: https://github.com/tree-sitter/tree-sitter-rust |
2021-09-07 03:42:09 +0200 | <iqubic> | Yeah. I havn't used "<*", or "<$" outside of writing parsers. |
2021-09-07 03:44:19 +0200 | <janus> | weird how they don't support RecordWildCards, i would think it would be easy. and it is pretty popular |
2021-09-07 03:45:06 +0200 | <janus> | i guess i don't really know what "parsing" means to tree-sitter. what would they need to do to support OverloadedStrings? |
2021-09-07 03:45:13 +0200 | <janus> | aaah |
2021-09-07 03:45:18 +0200 | <janus> | the minus means not applicable! |
2021-09-07 03:45:59 +0200 | <janus> | but RecordWildCards is surely applicable to parsing? hmm |
2021-09-07 03:46:47 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-07 03:50:30 +0200 | thmprover | (~user@047-042-215-236.res.spectrum.com) (Quit: Goodnight, ladies, good night, sweet ladies, good night, good night) |
2021-09-07 03:50:48 +0200 | <janus> | justsomeguy: regarding the control structures, there are not so many, so they are quickly outnumbered by haskell-only counterparts such as "data family" "data instance" "type family" "type instance" "newtype" "mdo" |
2021-09-07 03:51:04 +0200 | alx741 | (~alx741@181.196.68.218) (Quit: alx741) |
2021-09-07 03:51:13 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 252 seconds) |
2021-09-07 03:52:56 +0200 | <iqubic> | What is tree-sitter? |
2021-09-07 03:55:16 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-07 03:57:16 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 03:57:33 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 04:00:30 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-07 04:01:38 +0200 | <janus> | iqubic: incremental parsing system |
2021-09-07 04:03:52 +0200 | <sm> | continuing the great haskell tradition of baffling naming... |
2021-09-07 04:05:31 +0200 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2021-09-07 04:05:31 +0200 | FinnElija | Guest9426 |
2021-09-07 04:05:31 +0200 | finn_elija | FinnElija |
2021-09-07 04:05:54 +0200 | <ldlework> | Why is this saying the patterns are incomplete? |
2021-09-07 04:05:56 +0200 | <ldlework> | http://logos.ldlework.com/caps/2021-09-07-02-05-44.png |
2021-09-07 04:07:14 +0200 | <geekosaur> | because [a] matches a 1-character string |
2021-09-07 04:07:25 +0200 | <geekosaur> | leaving longer strings unmatched |
2021-09-07 04:08:02 +0200 | <geekosaur> | if all you're using is 1-character strings, it doesn't know that |
2021-09-07 04:08:12 +0200 | <ldlework> | I see |
2021-09-07 04:08:27 +0200 | Guest9426 | (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 245 seconds) |
2021-09-07 04:08:27 +0200 | <janus> | is it a confusion because of the type-level/term-level punning? |
2021-09-07 04:09:52 +0200 | <geekosaur> | no, just that the pattern match checker doesn't check what's going on elsewhere so has no idea that there will only be 1-character strings inb use |
2021-09-07 04:10:19 +0200 | <geekosaur> | possibly in that case you just want to use Char instead of String |
2021-09-07 04:16:16 +0200 | <mniip> | iqubic, I have used <* in other contexts |
2021-09-07 04:16:26 +0200 | <iqubic> | What context? |
2021-09-07 04:16:29 +0200 | <ldlework> | geekosaur: that's what I did, thanks for your help |
2021-09-07 04:16:41 +0200 | <janus> | geekosaur: right , i understand why the pattern is incomplete. but let's say the haskell had no punning. then you'd have no '[a]' on line 28. then, what could have inspired ldlework to put '[a]' on line 38? |
2021-09-07 04:16:44 +0200 | <mniip> | if you have an applicative/alternative encoding a coyoneda extension of a boolean formula, of some sort |
2021-09-07 04:17:40 +0200 | td_ | (~td@muedsl-82-207-238-207.citykom.de) (Ping timeout: 240 seconds) |
2021-09-07 04:17:46 +0200 | <justsomeguy> | janus: Seems like I still have a ton to learn. I've only used vanilla Haskell, without any language extensions so far. (Other than -XOverloadedStrings.) |
2021-09-07 04:18:01 +0200 | <mniip> | data Formula a where { And :: Formula (a -> b) -> Formula a -> Formula b; Or :: Formula a -> Formula a -> Formula a; ... } |
2021-09-07 04:18:04 +0200 | <geekosaur> | oh boy, next thing you know it's coyoneda |
2021-09-07 04:18:04 +0200 | <mniip> | this sorta thing |
2021-09-07 04:18:43 +0200 | <janus> | justsomeguy: the comittee has decided on a list of the most worthy extensions. you can use the list to guide your learning: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0380-ghc2021.rst |
2021-09-07 04:19:29 +0200 | tcard | (~tcard@p2307053-ipngn17101hodogaya.kanagawa.ocn.ne.jp) (Quit: Leaving) |
2021-09-07 04:19:51 +0200 | td_ | (~td@94.134.91.74) |
2021-09-07 04:20:01 +0200 | <mniip> | "most worthy" I disagree |
2021-09-07 04:20:13 +0200 | <Cale> | iqubic: mniip: <$ is also good for quasi-frp stuff like newtype EventHandler a = EventHandler { step :: Event -> (Maybe a, EventHandler a) } |
2021-09-07 04:20:40 +0200 | <Cale> | button $> valueToUseWhenButtonIsClicked |
2021-09-07 04:21:00 +0200 | <Cale> | (also for actual FRP Events) |
2021-09-07 04:23:49 +0200 | tcard | (~tcard@p2307053-ipngn17101hodogaya.kanagawa.ocn.ne.jp) |
2021-09-07 04:23:51 +0200 | <janus> | mniip: why would a comittee member vote yes on an extension that they do not consider worthy? what do you consider a reason to vote yes, if it is not worth? |
2021-09-07 04:24:46 +0200 | <janus> | worth is about value judgment, if there was no need for value judgment, there would be no voting |
2021-09-07 04:24:46 +0200 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 252 seconds) |
2021-09-07 04:25:20 +0200 | <Cale> | That's worthy to be part of the extension set labelled GHC2021, which is intended to be a conservative set of extensions useful as a default |
2021-09-07 04:25:30 +0200 | <mniip> | ^ |
2021-09-07 04:26:27 +0200 | <mniip> | TemplateHaskell is not worthy of being a "default" extension, but definitely worthy of being learned if you want to do haskell seriously |
2021-09-07 04:27:30 +0200 | <Cale> | otoh, we're also accumulating extensions lately that I wish didn't exist |
2021-09-07 04:27:49 +0200 | <Cale> | Like RecordDotSyntax and... well basically all the record-related stuff |
2021-09-07 04:27:55 +0200 | <Cale> | and LinearHaskell |
2021-09-07 04:27:58 +0200 | polykernel | (~polykerne@user/polykernel) () |
2021-09-07 04:28:14 +0200 | john2312 | (~user@114.250.137.142) |
2021-09-07 04:28:16 +0200 | <mniip> | linearhaskell has 0 votes |
2021-09-07 04:28:26 +0200 | <Cale> | Well, of course :) |
2021-09-07 04:28:27 +0200 | <mniip> | unless you mean you don't want linear types to exist at all |
2021-09-07 04:28:36 +0200 | <c_wraith> | Hey, NoFieldSelectors is a perfectly fine extension! |
2021-09-07 04:28:53 +0200 | <Cale> | c_wraith: That one is... okay I guess |
2021-09-07 04:29:10 +0200 | <Cale> | mniip: I mean I'd rather this stuff not exist at all |
2021-09-07 04:29:18 +0200 | <mniip> | how so |
2021-09-07 04:29:35 +0200 | <Cale> | It complicates the language and its implementation for dubious benefit |
2021-09-07 04:30:32 +0200 | pzanco | (~Android@2804:14c:3ba1:42d:c022:dfe5:eb2e:987) |
2021-09-07 04:30:32 +0200 | <Cale> | I really don't believe in linear types at all, haven't seen anything remotely close to convincing come out of them, though possibly different substructural restrictions could be useful. |
2021-09-07 04:31:31 +0200 | <janus> | justsomeguy: btw if you wanna live the dangerous life, i can teach you about some dubious avant-garde extensions with only seven votes |
2021-09-07 04:32:02 +0200 | <Cale> | RecordDotSyntax is an ugly mess, and I don't like overloading "." any further than it already is. During the process, there were 8 or 9 different proposals for how to disambiguate RecordDotSyntax-using expressions and a solution was chosen by Condorcet voting. |
2021-09-07 04:32:04 +0200 | <janus> | justsomeguy: you already know about one of them: OverloadingStrings. so you can probably take it |
2021-09-07 04:32:32 +0200 | <mniip> | I feel like there's some sort of deep connection (adjunction?) between linear types and reference borrowing, which I feel like is an important direction in research |
2021-09-07 04:32:42 +0200 | <mniip> | because that gets us safe yet manual memory management |
2021-09-07 04:33:15 +0200 | dajoer | (~david@user/gvx) |
2021-09-07 04:34:17 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
2021-09-07 04:34:25 +0200 | dsrt^ | (~dsrt@68.101.54.227) |
2021-09-07 04:34:39 +0200 | <Cale> | mniip: I think if you could get to something along the lines of Conal's constrained categories stuff, that would be worth doing. I think you're much more likely in general to want something that's affine or some other substructural constraint, rather than perfectly linear, and on top of that, you're probably not going to want a proper subset of Haskell functions exactly. It's important to have the possibility for |
2021-09-07 04:34:39 +0200 | <Cale> | effects. |
2021-09-07 04:35:31 +0200 | <mniip> | right, so you want to intersperse your effect with the memory management and also keep it safe |
2021-09-07 04:35:34 +0200 | <Cale> | The only application of Linear Haskell I've seen that looked remotely practical to me so far was a thing that also used unsafePerformIO. |
2021-09-07 04:35:38 +0200 | <mniip> | which is not always possible |
2021-09-07 04:35:40 +0200 | <ldlework> | cool I wrote a foldTree |
2021-09-07 04:35:43 +0200 | <ldlework> | look at me doing fp |
2021-09-07 04:36:03 +0200 | <Cale> | (and it's not clear that another arrow-ish combinator library wouldn't have done just as well) |
2021-09-07 04:36:27 +0200 | <mniip> | hmmmm |
2021-09-07 04:36:29 +0200 | <janus> | in effects and memory management related news, Daan Leijen and Ningning Xie's talk on Koka is now available: https://www.youtube.com/watch?v=6OFhD_mHtKA "functional but in-place" ! |
2021-09-07 04:36:40 +0200 | <mniip> | something inherently cartesian monoidal about monads? |
2021-09-07 04:36:50 +0200 | pzanco | (~Android@2804:14c:3ba1:42d:c022:dfe5:eb2e:987) (Quit: -a- IRC for Android 2.1.59) |
2021-09-07 04:36:59 +0200 | <mniip> | while arrows can indeed capture linear arrows |
2021-09-07 04:37:28 +0200 | <Cale> | Maybe it's that every Haskell monad is a strong monad? |
2021-09-07 04:37:36 +0200 | <Cale> | I'm not sure :) |
2021-09-07 04:37:49 +0200 | <mniip> | but also Control.Arrow is a very weird arrow |
2021-09-07 04:37:55 +0200 | <Cale> | Yeah |
2021-09-07 04:38:03 +0200 | <Cale> | I'd like to fix Control.Arrow as well |
2021-09-07 04:38:19 +0200 | <Cale> | and bring it more in line with the definition of a symmetric monoidal category, and break it up into subclasses a little |
2021-09-07 04:38:29 +0200 | <Cale> | (and then fix the proc/do syntax to work with it) |
2021-09-07 04:38:46 +0200 | <mniip> | and the internal language of a symmetric monoidal category is? |
2021-09-07 04:38:47 +0200 | <mniip> | :P |
2021-09-07 04:38:48 +0200 | <Cale> | I haven't found the time to actually do that, since it's been ages since I actually worked with anything arrow-like |
2021-09-07 04:38:59 +0200 | <mniip> | hm |
2021-09-07 04:39:02 +0200 | <mniip> | symmetric monoidal closed |
2021-09-07 04:39:12 +0200 | pzanco | (~Android@2804:14c:3ba1:42d:c022:dfe5:eb2e:987) |
2021-09-07 04:39:19 +0200 | pzanco | (~Android@2804:14c:3ba1:42d:c022:dfe5:eb2e:987) (Client Quit) |
2021-09-07 04:39:28 +0200 | <Cale> | Well, I just mean relying less on 'arr' and adding in explicit isomorphisms like rAssoc :: a ((u,v),w) (u,(v,w)) etc. |
2021-09-07 04:39:55 +0200 | <mniip> | yeah my main gripe is with arr |
2021-09-07 04:40:18 +0200 | pzanco | (~Android@2804:14c:3ba1:42d:c022:dfe5:eb2e:987) |
2021-09-07 04:40:19 +0200 | <mniip> | if you're talking about monoidal cats, (,) has to go too |
2021-09-07 04:40:29 +0200 | <Cale> | The main advantage that Arrow has over Monad is that it explicitly represents binding, so you can potentially do more analysis on your computation before running it. |
2021-09-07 04:40:39 +0200 | <mniip> | and you very quickly go into MPTC/tyfams lad |
2021-09-07 04:40:40 +0200 | gnyeki | (~gnyeki@li578-216.members.linode.com) |
2021-09-07 04:40:56 +0200 | <Cale> | Whereas the right argument to >>= is always a black box lambda, both arguments to >>> are things you potentially have control over |
2021-09-07 04:41:27 +0200 | <Cale> | But then when all your basic structural operations are via arr, you're inserting black boxes everywhere and there's no hope of being any smarter |
2021-09-07 04:41:47 +0200 | pzanco | (~Android@2804:14c:3ba1:42d:c022:dfe5:eb2e:987) (Client Quit) |
2021-09-07 04:42:23 +0200 | <Cale> | Well, yeah, you can generalise over pairs as well while you're at it, though that actually worries me less in a practical sense than the missing structure |
2021-09-07 04:42:31 +0200 | pzanco | (~Android@2804:14c:3ba1:42d:c022:dfe5:eb2e:987) |
2021-09-07 04:42:50 +0200 | <mniip> | land* |
2021-09-07 04:46:02 +0200 | cjb | (~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50) |
2021-09-07 04:49:23 +0200 | awpr | (uid446117@id-446117.lymington.irccloud.com) |
2021-09-07 04:53:37 +0200 | pzanco | (~Android@2804:14c:3ba1:42d:c022:dfe5:eb2e:987) (Quit: -a- IRC for Android 2.1.59) |
2021-09-07 04:54:13 +0200 | nicbk | (~nicbk@user/nicbk) (Quit: nicbk) |
2021-09-07 04:54:34 +0200 | pzanco | (~Android@2804:14c:3ba1:42d:c022:dfe5:eb2e:987) |
2021-09-07 04:55:26 +0200 | hexfive | (~eric@50.35.83.177) |
2021-09-07 04:55:38 +0200 | <dsal> | justsomeguy: If you like OverloadedStrings, you'll *love* OverloadedLists |
2021-09-07 04:56:37 +0200 | <xerox> | i |
2021-09-07 04:56:41 +0200 | <dsal> | I thought OverloadedLists would be pretty great and tried using it in real code and things stopped compiling with fantastic e3rrors. |
2021-09-07 04:57:09 +0200 | hexfive | (~eric@50.35.83.177) (Client Quit) |
2021-09-07 04:58:09 +0200 | <Cale> | OverloadedStrings is important though, since you really want to be using Data.Text a lot of the time |
2021-09-07 04:59:39 +0200 | fvr | (uid503686@id-503686.highgate.irccloud.com) |
2021-09-07 05:02:14 +0200 | jespada | (~jespada@90.254.245.194) (Ping timeout: 252 seconds) |
2021-09-07 05:02:56 +0200 | pzanco | (~Android@2804:14c:3ba1:42d:c022:dfe5:eb2e:987) (Quit: -a- IRC for Android 2.1.59) |
2021-09-07 05:04:12 +0200 | <lechner> | Hi, anyone else getting a certificate error with https://haskell-miso.org/ ? |
2021-09-07 05:05:01 +0200 | jespada | (~jespada@90.254.245.194) |
2021-09-07 05:07:25 +0200 | <dsal> | It claims to be trying to steal my data. |
2021-09-07 05:07:38 +0200 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2021-09-07 05:08:05 +0200 | <lechner> | that message may be from your browser |
2021-09-07 05:09:42 +0200 | <janus> | % system "echo -ne 'HEAD / HTTP/1.0\r\n\r\n' | nc haskell-miso.org 443" |
2021-09-07 05:09:42 +0200 | <yahb> | janus: /bin/sh: 3: nc: not found; ExitFailure 127 |
2021-09-07 05:09:54 +0200 | <geekosaur> | chroome tells me date invslifd i.e. cert expired? |
2021-09-07 05:10:09 +0200 | <ldlework> | Everytime vscode recommends a point-free reduction I think "I never would've thought of that" |
2021-09-07 05:10:28 +0200 | <geekosaur> | yeh, expired 59 days ago |
2021-09-07 05:11:09 +0200 | <Cale> | ldlework: You should also question its wisdom in applying it ;) |
2021-09-07 05:12:07 +0200 | <Cale> | Points-free code *can* be nicer, but it's not always easier to read or to edit |
2021-09-07 05:12:33 +0200 | <janus> | % system "curl --insecure haskell-miso.org" |
2021-09-07 05:12:33 +0200 | <yahb> | janus: /bin/sh: 1: curl: not found; ExitFailure 127 |
2021-09-07 05:15:09 +0200 | arkho | (~ccc@dynamic-acs-24-112-153-241.zoominternet.net) (Remote host closed the connection) |
2021-09-07 05:15:26 +0200 | arkho | (~ccc@dynamic-acs-24-112-153-241.zoominternet.net) |
2021-09-07 05:17:39 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 05:17:57 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 05:18:08 +0200 | <ldlework> | Can someone help me understand what's going on here? http://logos.ldlework.com/caps/2021-09-07-03-17-56.png |
2021-09-07 05:18:15 +0200 | <Cale> | The certificate for haskell-miso.org expired on 2021-07-10. |
2021-09-07 05:18:17 +0200 | <ldlework> | I don't understand where "Seq Char" is coming from. |
2021-09-07 05:18:55 +0200 | <Cale> | You're explicitly using Data.Sequence.length |
2021-09-07 05:18:56 +0200 | <dsal> | ldlework: You're asking for a Seq length. |
2021-09-07 05:19:39 +0200 | <ldlework> | When I remove that it complains that it's ambiguous with Prelude.length |
2021-09-07 05:19:56 +0200 | <Cale> | You probably want to be importing Data.Sequence qualified |
2021-09-07 05:20:05 +0200 | <Cale> | but Prelude.length is the one you want |
2021-09-07 05:21:19 +0200 | <ldlework> | Is the problem actually my use of mapWithIndex that is defined in terms of Seq |
2021-09-07 05:21:21 +0200 | <Cale> | Though... Prelude.length isn't especially cheap to compute, so I'd want to make sure it got computed once for the key and reused |
2021-09-07 05:21:30 +0200 | <ldlework> | Makes sense Cale |
2021-09-07 05:22:00 +0200 | <Cale> | Oh, right, you're using mapWithIndex from Data.Sequence as well |
2021-09-07 05:22:35 +0200 | <Cale> | I suppose you could do that, if you don't mind converting the String back and forth. At least the lookups will be cheaper |
2021-09-07 05:23:14 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) |
2021-09-07 05:23:57 +0200 | Axman6 | (~Axman6@user/axman6) (Ping timeout: 260 seconds) |
2021-09-07 05:24:33 +0200 | <Cale> | Though, you only do lookups in the key, and there's not much reason to be converting the input string to a Seq |
2021-09-07 05:24:59 +0200 | <Cale> | zipWith (\i c -> ...) [0..] input |
2021-09-07 05:26:19 +0200 | <ldlework> | Cale: you're suggesting that over mapWithIndex? |
2021-09-07 05:26:23 +0200 | <Cale> | Yeah |
2021-09-07 05:27:06 +0200 | <ldlework> | that fixed it heh |
2021-09-07 05:27:10 +0200 | <ldlework> | thank you |
2021-09-07 05:27:40 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds) |
2021-09-07 05:28:24 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Quit: Leaving) |
2021-09-07 05:33:00 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 05:33:18 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 05:33:47 +0200 | cjb | (~cjb@user/cjb) |
2021-09-07 05:36:45 +0200 | aarvar | (~aaron@2601:602:a080:fa0:1804:9b51:73a6:32bd) |
2021-09-07 05:39:12 +0200 | <ldlework> | Is there an obvious refactor/unification here? https://gist.github.com/dustinlacewell/a4e877326775198bf1e52243080656e9 |
2021-09-07 05:43:41 +0200 | Axman6 | (~Axman6@user/axman6) |
2021-09-07 05:45:13 +0200 | <Cale> | ldlework: Well, the completely mechanical thing to do is to factor out the function you're applying to j in order to get n |
2021-09-07 05:46:05 +0200 | <Cale> | Turn that into a function parameter, and then define encrypt = crypt nForChar and decrypt = crypt (negate . nForChar) |
2021-09-07 05:48:11 +0200 | <dsal> | ldlework: You shouldn't have any conflict with length... If you intend to use the one from Data.Foldable, you can explicitly hide the one from Prelude, otherwise whatever you're conflicting with probably wasn't imported the best way. |
2021-09-07 05:48:23 +0200 | <ldlework> | Cale: nice |
2021-09-07 05:50:34 +0200 | otto_s | (~user@p5b0445ba.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2021-09-07 05:51:09 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-09-07 05:52:27 +0200 | otto_s | (~user@p5de2f2c9.dip0.t-ipconnect.de) |
2021-09-07 05:53:20 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 05:53:34 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 05:53:47 +0200 | <ldlework> | Cale: that's really nicej |
2021-09-07 05:54:35 +0200 | <Cale> | Yep, that's the advantage of using a functional programming language, you can always factor out similar code |
2021-09-07 05:54:58 +0200 | kjak | (~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Ping timeout: 252 seconds) |
2021-09-07 06:03:48 +0200 | <janus> | ldlework: if you import Data.Seq qualified, you won't need to write Prelude.length |
2021-09-07 06:08:01 +0200 | <mniip> | Data.Seq is one of those modules that's "intended" to be imported qualified |
2021-09-07 06:09:08 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-09-07 06:12:01 +0200 | slowButPresent | (~slowButPr@user/slowbutpresent) (Quit: leaving) |
2021-09-07 06:22:02 +0200 | myShoggoth | (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 250 seconds) |
2021-09-07 06:22:50 +0200 | <ldlework> | making this code vigenere cipher work properly in skipping spaces and the like is tricky |
2021-09-07 06:23:12 +0200 | <ldlework> | I miss F#'s for-loops |
2021-09-07 06:23:16 +0200 | ldlework | ducks. |
2021-09-07 06:26:11 +0200 | <mniip> | you could use forM in the state monad you know? |
2021-09-07 06:26:38 +0200 | <ldlework> | I haven't made it that far. Don't mind me, I'm harmlessly teasing. |
2021-09-07 06:29:00 +0200 | <Cale> | ldlework: A list is a loop frozen in time. Just as a loop either doesn't occur because its precondition isn't met, or it consists of a single iteration followed by another loop, a list is either empty or consists of a single element followed by another list. |
2021-09-07 06:31:08 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-07 06:32:43 +0200 | <dsal> | Haskell has all the loops, but also no loops. |
2021-09-07 06:32:49 +0200 | <ldlework> | hehe |
2021-09-07 06:35:00 +0200 | <Axman6> | for-loops are trash tier control flow |
2021-09-07 06:36:10 +0200 | euandreh | (~euandreh@2804:14c:33:9fe5:1caf:1d6c:286e:abe2) (Ping timeout: 240 seconds) |
2021-09-07 06:36:13 +0200 | shapr | (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 252 seconds) |
2021-09-07 06:36:48 +0200 | bens | (~bens@www.typius.com) (*.net *.split) |
2021-09-07 06:36:48 +0200 | wolfshappen | (~waff@irc.furworks.de) (*.net *.split) |
2021-09-07 06:36:48 +0200 | abrar_ | (~abrar@static-108-2-152-54.phlapa.fios.verizon.net) (*.net *.split) |
2021-09-07 06:36:48 +0200 | shachaf | (~shachaf@user/shachaf) (*.net *.split) |
2021-09-07 06:36:48 +0200 | ajb | (~ajb@cupid.whatbox.ca) (*.net *.split) |
2021-09-07 06:36:56 +0200 | shachaf | (~shachaf@user/shachaf) |
2021-09-07 06:37:01 +0200 | ajb | (~ajb@cupid.whatbox.ca) |
2021-09-07 06:37:03 +0200 | bens | (~bens@www.typius.com) |
2021-09-07 06:37:04 +0200 | wolfshappen | (~waff@irc.furworks.de) |
2021-09-07 06:37:13 +0200 | abrar_ | (~abrar@static-108-2-152-54.phlapa.fios.verizon.net) |
2021-09-07 06:37:19 +0200 | euandreh | (~euandreh@2804:14c:33:9fe5:ffb9:2324:6d72:6629) |
2021-09-07 06:41:15 +0200 | ircbrowse_tom | (~ircbrowse@static.162.49.55.162.clients.your-server.de) (ZNC 1.7.5+deb4 - https://znc.in) |
2021-09-07 06:41:40 +0200 | ircbrowse_tom | (~ircbrowse@2a01:4f8:1c1c:9319::1) |
2021-09-07 06:41:40 +0200 | Server | +Cnt |
2021-09-07 06:41:41 +0200 | jmct_ | (sid160793@id-160793.tinside.irccloud.com) |
2021-09-07 06:41:42 +0200 | jjhoo | (~jahakala@dsl-trebng21-58c18f-56.dhcp.inet.fi) |
2021-09-07 06:41:53 +0200 | Ram-Z | (~Ram-Z@li1814-254.members.linode.com) |
2021-09-07 06:41:55 +0200 | mcfrdy | (~mcfrdy@user/mcfrdy) |
2021-09-07 06:41:58 +0200 | Flonk | (~Flonk@ec2-52-40-29-25.us-west-2.compute.amazonaws.com) |
2021-09-07 06:42:00 +0200 | bbhoss | (sid18216@id-18216.tinside.irccloud.com) |
2021-09-07 06:42:16 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
2021-09-07 06:42:31 +0200 | terrorjack | (~terrorjac@ec2-54-95-39-30.ap-northeast-1.compute.amazonaws.com) |
2021-09-07 06:43:07 +0200 | shanemikel | (~shanemike@desk.roadwar.net) |
2021-09-07 06:46:38 +0200 | <dsal> | I use forever sometimes. But it's nice having names for the actual things we're doing and not just try to think about how to use `for` to do all the things. |
2021-09-07 06:48:40 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 06:48:59 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 06:49:01 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Client Quit) |
2021-09-07 06:49:20 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 06:51:27 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2021-09-07 06:57:14 +0200 | SanchayanMaity | (sid478177@stonehaven.irccloud.com) (*.net *.split) |
2021-09-07 06:57:14 +0200 | amir | (sid22336@user/amir) (*.net *.split) |
2021-09-07 06:57:14 +0200 | ridcully_ | (~ridcully@p508ac428.dip0.t-ipconnect.de) (*.net *.split) |
2021-09-07 06:57:14 +0200 | smitop | (~smitop@user/smitop) (*.net *.split) |
2021-09-07 06:57:14 +0200 | nitrix | (~nitrix@user/nitrix) (*.net *.split) |
2021-09-07 06:57:14 +0200 | wagle | (~wagle@quassel.wagle.io) (*.net *.split) |
2021-09-07 06:57:14 +0200 | eL_Bart0- | (eL_Bart0@dietunichtguten.org) (*.net *.split) |
2021-09-07 06:57:14 +0200 | ziman | (~ziman@user/ziman) (*.net *.split) |
2021-09-07 06:57:14 +0200 | hexology | (~hexology@user/hexology) (*.net *.split) |
2021-09-07 06:57:14 +0200 | wrengr | (~wrengr@56.72.82.34.bc.googleusercontent.com) (*.net *.split) |
2021-09-07 06:57:14 +0200 | stefan-_ | (~cri@42dots.de) (*.net *.split) |
2021-09-07 06:57:14 +0200 | sm[i] | (~user@plaintextaccounting/sm) (*.net *.split) |
2021-09-07 06:57:14 +0200 | lambdabot | (~lambdabot@haskell/bot/lambdabot) (*.net *.split) |
2021-09-07 06:57:14 +0200 | lep | (~lep@94.31.80.176) (*.net *.split) |
2021-09-07 06:57:14 +0200 | justache | (~justache@user/justache) (*.net *.split) |
2021-09-07 06:57:14 +0200 | p3n | (~p3n@217.198.124.246) (*.net *.split) |
2021-09-07 06:57:14 +0200 | aravk | (~aravk@user/aravk) (*.net *.split) |
2021-09-07 06:57:14 +0200 | dragestil_ | (~quassel@user/dragestil) (*.net *.split) |
2021-09-07 06:57:14 +0200 | tureba | (~tureba@tureba.org) (*.net *.split) |
2021-09-07 06:57:14 +0200 | ldlework | (~hexeme@user/hexeme) (*.net *.split) |
2021-09-07 06:57:14 +0200 | _________ | (~nobody@user/noodly) (*.net *.split) |
2021-09-07 06:57:14 +0200 | marienz | (~marienz@libera/staff/marienz) (*.net *.split) |
2021-09-07 06:57:14 +0200 | Rembane_ | (~Rembane@li346-36.members.linode.com) (*.net *.split) |
2021-09-07 06:57:14 +0200 | mikolaj__ | (~mikon@duch.mimuw.edu.pl) (*.net *.split) |
2021-09-07 06:57:14 +0200 | nshepperd2 | (~nshepperd@li364-218.members.linode.com) (*.net *.split) |
2021-09-07 06:57:14 +0200 | raoul | (~raoul@95.179.203.88) (*.net *.split) |
2021-09-07 06:57:14 +0200 | haveo | (~haveo@sl35.iuwt.fr) (*.net *.split) |
2021-09-07 06:57:14 +0200 | niko | (~niko@libera/staff/niko) (*.net *.split) |
2021-09-07 06:57:14 +0200 | dkeohane1 | (~dkeohane@ec2-18-189-29-140.us-east-2.compute.amazonaws.com) (*.net *.split) |
2021-09-07 06:57:14 +0200 | davl | (~davl@207.154.228.18) (*.net *.split) |
2021-09-07 06:57:14 +0200 | dragestil | (~znc@user/dragestil) (*.net *.split) |
2021-09-07 06:57:14 +0200 | Aleksejs | (~Aleksejs@haskell.lv) (*.net *.split) |
2021-09-07 06:57:21 +0200 | haveo | (~haveo@sl35.iuwt.fr) |
2021-09-07 06:57:22 +0200 | mikolaj_ | (~mikon@duch.mimuw.edu.pl) |
2021-09-07 06:57:23 +0200 | Rembane | (~Rembane@li346-36.members.linode.com) |
2021-09-07 06:57:23 +0200 | lambdabot | (~lambdabot@silicon.int-e.eu) |
2021-09-07 06:57:27 +0200 | tureba | (~tureba@tureba.org) |
2021-09-07 06:57:27 +0200 | eL_Bart0 | (eL_Bart0@dietunichtguten.org) |
2021-09-07 06:57:28 +0200 | Aleksejs | (~Aleksejs@haskell.lv) |
2021-09-07 06:57:29 +0200 | wrengr | (~wrengr@56.72.82.34.bc.googleusercontent.com) |
2021-09-07 06:57:30 +0200 | SanchayanMaity | (sid478177@id-478177.stonehaven.irccloud.com) |
2021-09-07 06:57:32 +0200 | marienz | (~marienz@libera/staff/marienz) |
2021-09-07 06:57:33 +0200 | aravk | (~aravk@user/aravk) |
2021-09-07 06:57:34 +0200 | wagle | (~wagle@quassel.wagle.io) |
2021-09-07 06:57:35 +0200 | ridcully_ | (~ridcully@p508ac428.dip0.t-ipconnect.de) |
2021-09-07 06:57:37 +0200 | ziman | (~ziman@c25-5.condornet.sk) |
2021-09-07 06:57:39 +0200 | lambdabot | (~lambdabot@silicon.int-e.eu) (Changing host) |
2021-09-07 06:57:39 +0200 | lambdabot | (~lambdabot@haskell/bot/lambdabot) |
2021-09-07 06:57:53 +0200 | nitrix | (~nitrix@ns569831.ip-51-79-81.net) |
2021-09-07 06:57:55 +0200 | nshepperd2 | (~nshepperd@li364-218.members.linode.com) |
2021-09-07 06:57:57 +0200 | lep | (~lep@94.31.80.176) |
2021-09-07 06:58:01 +0200 | lep | lep- |
2021-09-07 06:58:03 +0200 | amir | (sid22336@id-22336.stonehaven.irccloud.com) |
2021-09-07 06:58:13 +0200 | stefan-_ | (~cri@42dots.de) |
2021-09-07 06:58:13 +0200 | dragestil | (~quassel@user/dragestil) |
2021-09-07 06:58:21 +0200 | smitop | (~smitop@user/smitop) |
2021-09-07 06:58:21 +0200 | raoul | (~raoul@95.179.203.88) |
2021-09-07 06:58:21 +0200 | amir | (sid22336@id-22336.stonehaven.irccloud.com) (Changing host) |
2021-09-07 06:58:21 +0200 | amir | (sid22336@user/amir) |
2021-09-07 06:58:27 +0200 | nitrix | (~nitrix@ns569831.ip-51-79-81.net) (Changing host) |
2021-09-07 06:58:27 +0200 | nitrix | (~nitrix@user/nitrix) |
2021-09-07 06:58:27 +0200 | justache | (~justache@user/justache) |
2021-09-07 06:58:34 +0200 | sm[i] | (~user@plaintextaccounting/sm) |
2021-09-07 06:58:45 +0200 | hexology | (~hexology@user/hexology) |
2021-09-07 06:58:45 +0200 | p3n | (~p3n@217.198.124.246) |
2021-09-07 06:58:46 +0200 | hexeme | (~hexeme@user/hexeme) |
2021-09-07 06:58:48 +0200 | dragestil_ | (~znc@user/dragestil) |
2021-09-07 06:58:50 +0200 | davl | (~davl@207.154.228.18) |
2021-09-07 06:58:52 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-09-07 06:58:52 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-09-07 06:58:52 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-09-07 06:59:34 +0200 | dkeohane1 | (~dkeohane@ec2-18-189-29-140.us-east-2.compute.amazonaws.com) |
2021-09-07 07:01:01 +0200 | dragestil_ | dragestil` |
2021-09-07 07:01:11 +0200 | mikoto-chan | (~mikoto-ch@83.137.2.244) |
2021-09-07 07:01:33 +0200 | dragestil` | dragestil_ |
2021-09-07 07:02:36 +0200 | _________ | (~nobody@user/noodly) |
2021-09-07 07:03:47 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
2021-09-07 07:04:51 +0200 | APic | (apic@apic.name) (Read error: Connection reset by peer) |
2021-09-07 07:05:02 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
2021-09-07 07:06:16 +0200 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 256 seconds) |
2021-09-07 07:06:42 +0200 | euandreh | (~euandreh@2804:14c:33:9fe5:ffb9:2324:6d72:6629) (Ping timeout: 245 seconds) |
2021-09-07 07:08:52 +0200 | <hexeme> | yes! my cipher replicates the book, finally |
2021-09-07 07:09:40 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 256 seconds) |
2021-09-07 07:09:57 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 07:12:28 +0200 | <hexeme> | Is there a way to make `ord 'a'` a named constant? |
2021-09-07 07:13:32 +0200 | <hexeme> | oh it was my capitalization |
2021-09-07 07:15:21 +0200 | michalz | (~michalz@185.246.204.101) |
2021-09-07 07:17:16 +0200 | <dsal> | What do you mean "a named constant?" |
2021-09-07 07:18:34 +0200 | <monochrom> | immutable "variable" :) |
2021-09-07 07:18:58 +0200 | <dsal> | Isn't that just `ninetySeven = ord 'a'` ? |
2021-09-07 07:19:18 +0200 | <monochrom> | Yeah. See "oh it was my capitalization". |
2021-09-07 07:19:23 +0200 | <dsal> | Oooh |
2021-09-07 07:21:44 +0200 | <hexeme> | Why doesn't this work: moduloOrdinal = (`mod` 26) . adjustOrdinal |
2021-09-07 07:21:52 +0200 | <hexeme> | it complains mod hasn't enough arguments applied |
2021-09-07 07:22:11 +0200 | <hexeme> | but I thought I was "sectioning" mod so that the output of adjustOrdinal is passed as the first argument |
2021-09-07 07:22:15 +0200 | cjb | (~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50) |
2021-09-07 07:24:01 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) |
2021-09-07 07:24:02 +0200 | <dsal> | What are the types of these things? |
2021-09-07 07:24:40 +0200 | <dsal> | :t (`mod` 26) . adjustOrdinal |
2021-09-07 07:24:41 +0200 | <lambdabot> | error: |
2021-09-07 07:24:41 +0200 | <lambdabot> | Variable not in scope: adjustOrdinal :: a -> c |
2021-09-07 07:25:13 +0200 | <hexeme> | http://logos.ldlework.com/caps/2021-09-07-05-25-11.png |
2021-09-07 07:25:38 +0200 | <dsal> | Ah, well lambdabot gave you the answer. :) |
2021-09-07 07:25:55 +0200 | <dsal> | :t (.) |
2021-09-07 07:25:56 +0200 | <lambdabot> | (b -> c) -> (a -> b) -> a -> c |
2021-09-07 07:26:15 +0200 | hexeme | scraches his head |
2021-09-07 07:27:03 +0200 | <hexeme> | ohhh |
2021-09-07 07:27:08 +0200 | APic | (apic@apic.name) |
2021-09-07 07:27:15 +0200 | <pavonia> | (.) composes functions with one input argument, but adjustOrdignal takes two |
2021-09-07 07:27:15 +0200 | <hexeme> | I didn't apply because to do point free, you have to remove args from the function |
2021-09-07 07:27:29 +0200 | niko | (~niko@libera/staff/niko) |
2021-09-07 07:27:42 +0200 | APic | (apic@apic.name) (Read error: Connection reset by peer) |
2021-09-07 07:28:29 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) (Ping timeout: 265 seconds) |
2021-09-07 07:28:49 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2021-09-07 07:28:52 +0200 | <hexeme> | reduceOrdinal char = ord char - baseOrdinal |
2021-09-07 07:28:54 +0200 | <hexeme> | adjustOrdinal = (+ amount) . reduceOrdinal |
2021-09-07 07:29:20 +0200 | <hexeme> | oh hmm |
2021-09-07 07:31:02 +0200 | <hexeme> | I'm just curious, is there a way to make this truly point-free or should I not bother? |
2021-09-07 07:31:03 +0200 | <hexeme> | http://logos.ldlework.com/caps/2021-09-07-05-30-36.png |
2021-09-07 07:31:06 +0200 | <dsal> | It's slightly easier if you think of . as a function and not magic concatenation operator. It takes a function (b->c) and a function (a->b) and returns a function (a->c). |
2021-09-07 07:31:15 +0200 | <dsal> | It's a lot easier to work with code that's not in png format. :/ |
2021-09-07 07:31:42 +0200 | <hexeme> | haha |
2021-09-07 07:31:58 +0200 | <hexeme> | https://gist.github.com/dustinlacewell/97858ec608a9f6903d92593abd69bba5 |
2021-09-07 07:32:17 +0200 | <hexeme> | it'd be cool to see `moduloOrdinal` be defined with no params |
2021-09-07 07:32:18 +0200 | <dsal> | @pl \amount -> (`mod` 26) . adjustOrdinal amount |
2021-09-07 07:32:18 +0200 | <lambdabot> | ((`mod` 26) .) . adjustOrdinal |
2021-09-07 07:32:18 +0200 | myShoggoth | (~myShoggot@97-120-70-214.ptld.qwest.net) |
2021-09-07 07:32:28 +0200 | <dsal> | I don't know that I'd call that cool. |
2021-09-07 07:32:45 +0200 | <hexeme> | With respect to seeing what's possible I guess. But alright :) |
2021-09-07 07:32:48 +0200 | <pavonia> | :t (.:) |
2021-09-07 07:32:50 +0200 | <lambdabot> | error: |
2021-09-07 07:32:50 +0200 | <lambdabot> | • Variable not in scope: .: |
2021-09-07 07:32:50 +0200 | <lambdabot> | • Perhaps you meant one of these: |
2021-09-07 07:33:23 +0200 | <dsal> | Making code point free is fine when it's a simple η-reduction. |
2021-09-07 07:33:40 +0200 | <dsal> | @pl \amount -> (+ amount) . reduceOrdinal |
2021-09-07 07:33:40 +0200 | <lambdabot> | (. reduceOrdinal) . (+) |
2021-09-07 07:33:54 +0200 | <dsal> | But you can end up doing gross stuff. |
2021-09-07 07:34:20 +0200 | <hexeme> | What's meant by n-reduction |
2021-09-07 07:34:21 +0200 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2021-09-07 07:34:49 +0200 | <dsal> | eta, not n. When you take the same thing off the end of both sides of the equation. |
2021-09-07 07:35:04 +0200 | <dsal> | @pl \f a -> g a |
2021-09-07 07:35:04 +0200 | <lambdabot> | const g |
2021-09-07 07:35:06 +0200 | <dsal> | heh |
2021-09-07 07:35:17 +0200 | <dsal> | @pl \f a b -> g x b |
2021-09-07 07:35:17 +0200 | <lambdabot> | const (const (g x)) |
2021-09-07 07:35:20 +0200 | <dsal> | damnit, pl |
2021-09-07 07:35:36 +0200 | <dsal> | @pl \a b -> g x b |
2021-09-07 07:35:36 +0200 | <lambdabot> | const (g x) |
2021-09-07 07:36:14 +0200 | <dsal> | Anyway, when you define a function that has an argument and then you place that argument directly on the end of your definition, you can remove it from both sides. |
2021-09-07 07:36:37 +0200 | <hexeme> | I see |
2021-09-07 07:36:46 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2021-09-07 07:36:50 +0200 | <dsal> | I'm being really dumb with my pl examples. |
2021-09-07 07:37:10 +0200 | APic | (apic@apic.name) |
2021-09-07 07:37:20 +0200 | APic | (apic@apic.name) (Read error: Connection reset by peer) |
2021-09-07 07:37:24 +0200 | <dsal> | @pl \a1 -> g "something" a1 |
2021-09-07 07:37:24 +0200 | <lambdabot> | g "something" |
2021-09-07 07:37:29 +0200 | <dsal> | @pl \a1 a2 -> g "something" a1 a2 |
2021-09-07 07:37:29 +0200 | <lambdabot> | g "something" |
2021-09-07 07:37:52 +0200 | <dsal> | But you can get really gross with it |
2021-09-07 07:39:10 +0200 | <dsal> | @pl \ amount -> (`mod` 26) . (\a -> (+ a) . (\char -> ord char - baseOrdinal)) amount |
2021-09-07 07:39:10 +0200 | <lambdabot> | ((`mod` 26) .) . (. flip ((-) . ord) baseOrdinal) . (+) |
2021-09-07 07:40:02 +0200 | max22- | (~maxime@2a01cb0883359800332c1af3aa4fc5cd.ipv6.abo.wanadoo.fr) |
2021-09-07 07:40:13 +0200 | <dsal> | :t ((`mod` 26) .) . (. flip ((-) . ord) baseOrdinal) . (+) |
2021-09-07 07:40:14 +0200 | <lambdabot> | error: |
2021-09-07 07:40:14 +0200 | <lambdabot> | Variable not in scope: baseOrdinal :: Int |
2021-09-07 07:40:24 +0200 | <dsal> | :t ((`mod` 26) .) . (. flip ((-) . ord) (ord 'a')) . (+) |
2021-09-07 07:40:25 +0200 | <lambdabot> | Int -> Char -> Int |
2021-09-07 07:41:05 +0200 | <dsal> | > let moduloOrdinal = ((`mod` 26) .) . (. flip ((-) . ord) 97) . (+) in moduloOrdinal 13 'a' |
2021-09-07 07:41:06 +0200 | <lambdabot> | 13 |
2021-09-07 07:41:21 +0200 | <dsal> | > let moduloOrdinal = ((`mod` 26) .) . (. flip ((-) . ord) 97) . (+) in moduloOrdinal 13 'd' |
2021-09-07 07:41:22 +0200 | <lambdabot> | 16 |
2021-09-07 07:41:32 +0200 | <dsal> | I don't know what this function is supposed to do, but it's perfectly readable. |
2021-09-07 07:42:17 +0200 | <hexeme> | hehe |
2021-09-07 07:42:48 +0200 | <john2312> | in ContT's do-notation, how let k work on a list? |
2021-09-07 07:44:06 +0200 | <john2312> | do { r <- cont $ \k -> k alist } I'd like let k apply on alist's every element, and r is that result, just like what List do |
2021-09-07 07:44:07 +0200 | <dsal> | john2312: a bit confused by the question. do notation is do notation. ContT doesn't do anything special there. |
2021-09-07 07:44:29 +0200 | <dsal> | You want a list monad instead? |
2021-09-07 07:44:41 +0200 | <john2312> | in List, r <- [1,2,3], r will 1 and then 2 then 3, right? |
2021-09-07 07:44:46 +0200 | <dsal> | Or ContT over a list? |
2021-09-07 07:44:55 +0200 | <john2312> | dsal: ContT over a list |
2021-09-07 07:46:01 +0200 | <dsal> | <- isn't let |
2021-09-07 07:46:04 +0200 | slavaqq | (~slavaqq@sdmail.sdserver.cz) |
2021-09-07 07:46:39 +0200 | <dsal> | @undo do { r <- [1, 2, 3]; pure r } |
2021-09-07 07:46:39 +0200 | <lambdabot> | [1, 2, 3] >>= \ r -> pure r |
2021-09-07 07:46:50 +0200 | <dsal> | Do you want lift? |
2021-09-07 07:47:41 +0200 | <john2312> | > traverse (\i -> if odd i then Right() else Left i) [1..10] |
2021-09-07 07:47:43 +0200 | <lambdabot> | Left 2 |
2021-09-07 07:48:12 +0200 | <john2312> | dsal: I'd like to see how ContT doing the same thing as traverse |
2021-09-07 07:49:27 +0200 | lep- | lep |
2021-09-07 07:49:36 +0200 | <john2312> | dsal: lift can lift a List into ContT? |
2021-09-07 07:49:54 +0200 | <dsal> | :t lift |
2021-09-07 07:49:55 +0200 | <lambdabot> | (MonadTrans t, Monad m) => m a -> t m a |
2021-09-07 07:51:13 +0200 | <john2312> | dsal: in ContT do, r <- cont $ \k -> k <$> [1..10] is ok? |
2021-09-07 07:51:57 +0200 | <john2312> | will r be will k 1, then k 2? like what List do? |
2021-09-07 07:52:20 +0200 | <john2312> | lift can help here? |
2021-09-07 07:53:01 +0200 | <dsal> | I'm not completely sure what you getting at there, but if you have a `ContT (List Int)` and you want to do something in the List part, that's what lift is for. |
2021-09-07 07:54:03 +0200 | <john2312> | dsal: i'd like to how ContT doing that same thing just like traverse (\i -> if odd i then Right() else Left i) [1..10] |
2021-09-07 07:56:48 +0200 | <hexeme> | is this built in as a short operator? pipe fa fb = fb fa |
2021-09-07 07:57:34 +0200 | yahb | (xsbot@user/mniip/bot/yahb) (Ping timeout: 252 seconds) |
2021-09-07 07:59:56 +0200 | Akronymus | (~Akronymus@85.118.189.59) |
2021-09-07 08:00:23 +0200 | <dsal> | john2312: I'm not at a computer for a while, but it should be possible. Not with fmap, though. You'll need to consume the list inside the ContT. fmap can't change shapes |
2021-09-07 08:00:34 +0200 | <dsal> | hexeme: $ |
2021-09-07 08:00:43 +0200 | <dsal> | Er, & |
2021-09-07 08:00:43 +0200 | shriekingnoise | (~shrieking@186.137.144.80) (Quit: Quit) |
2021-09-07 08:00:56 +0200 | <dsal> | :t (&) |
2021-09-07 08:00:57 +0200 | <lambdabot> | a -> (a -> b) -> b |
2021-09-07 08:01:35 +0200 | <hexeme> | sick |
2021-09-07 08:01:54 +0200 | yahb | (xsbot@user/mniip/bot/yahb) |
2021-09-07 08:02:10 +0200 | APic | (apic@apic.name) |
2021-09-07 08:03:16 +0200 | APic | (apic@apic.name) (Read error: Connection reset by peer) |
2021-09-07 08:03:56 +0200 | <john2312> | I don't know how to consume the list inside the ContT... |
2021-09-07 08:04:24 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 08:04:37 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 08:04:56 +0200 | mikoto-chan | (~mikoto-ch@83.137.2.244) (Quit: mikoto-chan) |
2021-09-07 08:05:09 +0200 | <dsal> | I'm guessing it's just lift |
2021-09-07 08:07:10 +0200 | APic | (apic@apic.name) |
2021-09-07 08:07:52 +0200 | APic | (apic@apic.name) (Read error: Connection reset by peer) |
2021-09-07 08:09:31 +0200 | <john2312> | lift [Int] into ContT Int [] Int? |
2021-09-07 08:10:35 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-09-07 08:11:18 +0200 | <dsal> | > flip runContT pure (lift [1,2,3] >>= \r -> pure r) :: [Int] |
2021-09-07 08:11:20 +0200 | <lambdabot> | [1,2,3] |
2021-09-07 08:11:28 +0200 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2021-09-07 08:11:47 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:9b50:ae6e:a049:784) |
2021-09-07 08:11:52 +0200 | ubert | (~Thunderbi@91.141.54.165.wireless.dyn.drei.com) |
2021-09-07 08:14:24 +0200 | <dibblego> | you can delete ">>= \r -> pure r" |
2021-09-07 08:15:25 +0200 | Gurkenglas | (~Gurkengla@dslb-090-186-104-237.090.186.pools.vodafone-ip.de) |
2021-09-07 08:17:06 +0200 | arjun | (~Srain@user/arjun) |
2021-09-07 08:17:51 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2021-09-07 08:18:45 +0200 | <dsal> | Sure, just illustrating. Though I've never actually used ContT, so I'm not quite sure how it does the thing here. |
2021-09-07 08:27:31 +0200 | ubert1 | (~Thunderbi@91.141.54.165.wireless.dyn.drei.com) |
2021-09-07 08:28:10 +0200 | ubert | (~Thunderbi@91.141.54.165.wireless.dyn.drei.com) (Ping timeout: 260 seconds) |
2021-09-07 08:28:10 +0200 | ubert1 | ubert |
2021-09-07 08:28:40 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) |
2021-09-07 08:33:26 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds) |
2021-09-07 08:39:14 +0200 | APic | (apic@apic.name) |
2021-09-07 08:39:19 +0200 | fvr | (uid503686@id-503686.highgate.irccloud.com) (Quit: Connection closed for inactivity) |
2021-09-07 08:39:26 +0200 | APic | (apic@apic.name) (Read error: Connection reset by peer) |
2021-09-07 08:39:44 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 08:40:03 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 08:41:24 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-09-07 08:44:14 +0200 | APic | (apic@apic.name) |
2021-09-07 08:44:22 +0200 | APic | (apic@apic.name) (Read error: Connection reset by peer) |
2021-09-07 08:45:39 +0200 | kuribas | (~user@ptr-25vy0i6t0eunz4pw5nt.18120a2.ip6.access.telenet.be) |
2021-09-07 08:46:00 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) |
2021-09-07 08:46:05 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
2021-09-07 08:49:14 +0200 | APic | (apic@apic.name) |
2021-09-07 08:49:28 +0200 | APic | (apic@apic.name) (Read error: Connection reset by peer) |
2021-09-07 08:55:07 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 08:55:21 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 09:01:44 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-07 09:07:50 +0200 | mc47 | (~mc47@xmonad/TheMC47) |
2021-09-07 09:08:24 +0200 | jtomas | (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) |
2021-09-07 09:09:40 +0200 | sleblanc | (~sleblanc@user/sleblanc) (Ping timeout: 252 seconds) |
2021-09-07 09:12:37 +0200 | cfricke | (~cfricke@user/cfricke) |
2021-09-07 09:17:33 +0200 | burnsidesLlama | (~burnsides@client-8-65.eduroam.oxuni.org.uk) |
2021-09-07 09:19:57 +0200 | niko | (~niko@libera/staff/niko) (Quit: i will be back) |
2021-09-07 09:20:17 +0200 | APic | (apic@apic.name) |
2021-09-07 09:20:27 +0200 | APic | (apic@apic.name) (Read error: Connection reset by peer) |
2021-09-07 09:20:30 +0200 | o | (~niko@libera/staff/niko) |
2021-09-07 09:22:31 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-09-07 09:25:17 +0200 | APic | (apic@apic.name) |
2021-09-07 09:27:47 +0200 | anandprabhu | (~anandprab@91.73.233.2) |
2021-09-07 09:31:00 +0200 | o | niko |
2021-09-07 09:33:14 +0200 | chomwitt | (~chomwitt@2a02:587:dc16:c800:12c3:7bff:fe6d:d374) |
2021-09-07 09:33:40 +0200 | arjun | (~Srain@user/arjun) (Ping timeout: 265 seconds) |
2021-09-07 09:34:27 +0200 | arjun | (~Srain@user/arjun) |
2021-09-07 09:36:05 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-09-07 09:38:13 +0200 | wonko | (~wjc@62.115.229.50) |
2021-09-07 09:45:26 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-07 09:57:08 +0200 | amk | (~amk@109.255.169.126) (Remote host closed the connection) |
2021-09-07 09:59:42 +0200 | <kuribas> | yikes, why does cassava NamedRecord use ByteString... |
2021-09-07 09:59:58 +0200 | fendor | (~fendor@91.141.66.73.wireless.dyn.drei.com) |
2021-09-07 10:05:43 +0200 | <dminuoso> | kuribas: You have been complaining about cassava for perhaps 18 months now. |
2021-09-07 10:05:52 +0200 | <dminuoso> | Just write your own csv library. |
2021-09-07 10:05:54 +0200 | <dminuoso> | :-) |
2021-09-07 10:05:58 +0200 | hendursa1 | (~weechat@user/hendursaga) |
2021-09-07 10:06:05 +0200 | <kuribas> | dminuoso: when I take the chance, I'll remove it from our project :) |
2021-09-07 10:06:18 +0200 | <kuribas> | We'll use ods then. |
2021-09-07 10:09:07 +0200 | <kuribas> | Or reduce the usage of cassava to ByteString -> [HashMap Text Text] |
2021-09-07 10:09:12 +0200 | hendursaga | (~weechat@user/hendursaga) (Ping timeout: 276 seconds) |
2021-09-07 10:09:38 +0200 | <mniip> | fun fact |
2021-09-07 10:09:49 +0200 | <mniip> | :t \f -> callCC $ \k -> ask >>= \s -> case f s of (s, x) -> local (const s) (k x) |
2021-09-07 10:09:50 +0200 | <lambdabot> | (MonadReader b m, MonadCont m) => (b -> (b, a)) -> m a |
2021-09-07 10:10:10 +0200 | <mniip> | State ~ ContT Reader |
2021-09-07 10:10:21 +0200 | <kuribas> | yeah |
2021-09-07 10:11:19 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) |
2021-09-07 10:13:33 +0200 | anandprabhu | (~anandprab@91.73.233.2) (Quit: Leaving) |
2021-09-07 10:14:04 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2021-09-07 10:16:13 +0200 | spruit11 | (~quassel@2a02:a467:ccd6:1:3c81:60b6:4f21:77d2) (Ping timeout: 252 seconds) |
2021-09-07 10:17:32 +0200 | aarvar | (~aaron@2601:602:a080:fa0:1804:9b51:73a6:32bd) (Ping timeout: 245 seconds) |
2021-09-07 10:17:55 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
2021-09-07 10:17:55 +0200 | allbery_b | (~geekosaur@xmonad/geekosaur) |
2021-09-07 10:17:58 +0200 | allbery_b | geekosaur |
2021-09-07 10:18:58 +0200 | notzmv | (~zmv@user/notzmv) (Ping timeout: 252 seconds) |
2021-09-07 10:27:54 +0200 | spruit11 | (~quassel@2a02:a467:ccd6:1:e578:65a3:833a:6855) |
2021-09-07 10:28:11 +0200 | hnOsmium0001 | (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
2021-09-07 10:28:58 +0200 | ubert | (~Thunderbi@91.141.54.165.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
2021-09-07 10:32:16 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds) |
2021-09-07 10:32:25 +0200 | spruit11 | (~quassel@2a02:a467:ccd6:1:e578:65a3:833a:6855) (Ping timeout: 260 seconds) |
2021-09-07 10:32:35 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 10:38:11 +0200 | jakalx | (~jakalx@base.jakalx.net) () |
2021-09-07 10:38:40 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2021-09-07 10:39:12 +0200 | vysn | (~vysn@user/vysn) |
2021-09-07 10:40:53 +0200 | michalz | (~michalz@185.246.204.101) (Remote host closed the connection) |
2021-09-07 10:41:27 +0200 | APic | (apic@apic.name) (Quit: [TLS] Client upgrade) |
2021-09-07 10:41:37 +0200 | APic | (apic@apic.name) |
2021-09-07 10:42:10 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds) |
2021-09-07 10:42:29 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 10:50:33 +0200 | APic | (apic@apic.name) (Quit: Boot tut gut™) |
2021-09-07 10:52:35 +0200 | Ariakenom | (~patrik@h-81-170-208-30.A163.corp.bahnhof.se) |
2021-09-07 10:53:46 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-09-07 10:54:01 +0200 | ubert | (~Thunderbi@91.141.54.165.wireless.dyn.drei.com) |
2021-09-07 10:58:05 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
2021-09-07 11:00:36 +0200 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2021-09-07 11:01:37 +0200 | spruit11 | (~quassel@2a02:a467:ccd6:1:e578:65a3:833a:6855) |
2021-09-07 11:06:55 +0200 | spruit11 | (~quassel@2a02:a467:ccd6:1:e578:65a3:833a:6855) (Ping timeout: 252 seconds) |
2021-09-07 11:07:25 +0200 | chomwitt | (~chomwitt@2a02:587:dc16:c800:12c3:7bff:fe6d:d374) (Ping timeout: 260 seconds) |
2021-09-07 11:07:30 +0200 | aliosablack | (~chomwitt@94.66.61.235) |
2021-09-07 11:10:21 +0200 | hololeap_ | (~hololeap@user/hololeap) (Remote host closed the connection) |
2021-09-07 11:10:31 +0200 | hololeap | (~hololeap@user/hololeap) |
2021-09-07 11:12:20 +0200 | flukiluke | (~flukiluke@2603:c023:c000:6c7e:8945:ad24:9113:a962) (Remote host closed the connection) |
2021-09-07 11:12:31 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
2021-09-07 11:13:31 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-09-07 11:14:19 +0200 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) |
2021-09-07 11:16:38 +0200 | neo | (~neo3@cpe-292712.ip.primehome.com) |
2021-09-07 11:17:02 +0200 | neo | Guest1856 |
2021-09-07 11:17:11 +0200 | flukiluke_ | flukiluke |
2021-09-07 11:18:48 +0200 | Guest1856 | (~neo3@cpe-292712.ip.primehome.com) (Client Quit) |
2021-09-07 11:19:08 +0200 | spruit11 | (~quassel@2a02:a467:ccd6:1:e578:65a3:833a:6855) |
2021-09-07 11:19:49 +0200 | slep | (~slep@cpc150002-brnt4-2-0-cust437.4-2.cable.virginm.net) |
2021-09-07 11:20:19 +0200 | michalz | (~michalz@185.246.204.101) |
2021-09-07 11:20:58 +0200 | slavaqq | (~slavaqq@sdmail.sdserver.cz) (Quit: Client closed) |
2021-09-07 11:25:27 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 11:25:40 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 11:30:46 +0200 | jpds1 | jpds |
2021-09-07 11:31:53 +0200 | pzanco | (~Android@187.104.158.159) |
2021-09-07 11:32:16 +0200 | zfnmxt | (~zfnmxtzfn@2001:470:69fc:105::2b32) (Changing host) |
2021-09-07 11:32:16 +0200 | zfnmxt | (~zfnmxtzfn@user/zfnmxt) |
2021-09-07 11:38:10 +0200 | amahl | (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) |
2021-09-07 11:42:40 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 252 seconds) |
2021-09-07 11:43:19 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-09-07 11:52:33 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 276 seconds) |
2021-09-07 11:53:40 +0200 | xsperry | (~as@user/xsperry) |
2021-09-07 11:54:29 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:51c9:9325:5764:1e14) (Remote host closed the connection) |
2021-09-07 11:54:37 +0200 | amk | (~amk@109.255.169.126) |
2021-09-07 11:55:50 +0200 | poljar | (~poljar@78-3-12-111.adsl.net.t-com.hr) (Ping timeout: 252 seconds) |
2021-09-07 11:59:38 +0200 | poljar | (~poljar@93-139-113-226.adsl.net.t-com.hr) |
2021-09-07 12:07:38 +0200 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2021-09-07 12:13:49 +0200 | slavaqq | (~slavaqq@sdmail.sdserver.cz) |
2021-09-07 12:15:35 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Remote host closed the connection) |
2021-09-07 12:15:51 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 12:18:41 +0200 | kayprish | (~kayprish@cable-188-2-153-140.dynamic.sbb.rs) |
2021-09-07 12:18:58 +0200 | aliosablack | (~chomwitt@94.66.61.235) (Ping timeout: 265 seconds) |
2021-09-07 12:19:03 +0200 | chomwitt | (~chomwitt@athedsl-369855.home.otenet.gr) |
2021-09-07 12:20:09 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-07 12:20:49 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 12:21:03 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 12:26:08 +0200 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-09-07 12:26:10 +0200 | chomwitt | (~chomwitt@athedsl-369855.home.otenet.gr) (Ping timeout: 260 seconds) |
2021-09-07 12:26:13 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) (Ping timeout: 265 seconds) |
2021-09-07 12:27:30 +0200 | img | (~img@user/img) |
2021-09-07 12:28:37 +0200 | notzmv | (~zmv@user/notzmv) |
2021-09-07 12:28:45 +0200 | ub | (~Thunderbi@91.141.54.165.wireless.dyn.drei.com) |
2021-09-07 12:29:47 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2021-09-07 12:30:21 +0200 | slavaqq | (~slavaqq@sdmail.sdserver.cz) (Ping timeout: 256 seconds) |
2021-09-07 12:32:00 +0200 | ubert | (~Thunderbi@91.141.54.165.wireless.dyn.drei.com) (Ping timeout: 260 seconds) |
2021-09-07 12:32:01 +0200 | ub | ubert |
2021-09-07 12:36:50 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) |
2021-09-07 12:37:09 +0200 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-09-07 12:38:32 +0200 | img | (~img@user/img) |
2021-09-07 12:44:46 +0200 | chomwitt | (~chomwitt@athedsl-351437.home.otenet.gr) |
2021-09-07 12:47:21 +0200 | Akronymus | (~Akronymus@85.118.189.59) (Ping timeout: 256 seconds) |
2021-09-07 12:52:29 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds) |
2021-09-07 12:54:01 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) |
2021-09-07 12:54:08 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-09-07 12:54:53 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:51c9:9325:5764:1e14) |
2021-09-07 12:55:33 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-07 12:59:07 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:51c9:9325:5764:1e14) (Ping timeout: 252 seconds) |
2021-09-07 12:59:34 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2021-09-07 13:00:20 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-09-07 13:00:59 +0200 | alx741 | (~alx741@181.196.68.218) |
2021-09-07 13:03:04 +0200 | aliosablack | (~chomwitt@ppp-94-67-192-178.home.otenet.gr) |
2021-09-07 13:03:26 +0200 | chomwitt | (~chomwitt@athedsl-351437.home.otenet.gr) (Ping timeout: 265 seconds) |
2021-09-07 13:03:56 +0200 | TranquilEcho | (~grom@user/tranquilecho) |
2021-09-07 13:04:03 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 276 seconds) |
2021-09-07 13:04:19 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2021-09-07 13:04:42 +0200 | chexum_ | (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 276 seconds) |
2021-09-07 13:05:22 +0200 | <iqubic> | Is there a version of mapMaybe that works with NonEmpty from base? |
2021-09-07 13:05:42 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-09-07 13:05:51 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-09-07 13:06:10 +0200 | <iqubic> | specifically I want something of the type "(a -> Maybe b) -> NonEmpty a -> [b]" |
2021-09-07 13:06:49 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-07 13:07:10 +0200 | qbt | (~edun@user/edun) |
2021-09-07 13:07:36 +0200 | <opqdonut> | :t \f -> mapMaybe f . toList |
2021-09-07 13:07:37 +0200 | <lambdabot> | Foldable t => (a -> Maybe b) -> t a -> [b] |
2021-09-07 13:07:57 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) |
2021-09-07 13:08:13 +0200 | <opqdonut> | NonEmpty is Foldable, usually there's no need for a special NonEmpty version of a function |
2021-09-07 13:08:24 +0200 | <iqubic> | Yeah, but doesn't that traverse the list twice? |
2021-09-07 13:08:33 +0200 | <opqdonut> | no, because laziness |
2021-09-07 13:08:56 +0200 | <opqdonut> | assuming that mapMaybe and toList are defined suitably, you'll even get list fusion and the intermediate list won't even get allocated |
2021-09-07 13:12:08 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-09-07 13:12:41 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-07 13:12:53 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-09-07 13:14:10 +0200 | john2312 | (~user@114.250.137.142) (Ping timeout: 240 seconds) |
2021-09-07 13:21:46 +0200 | chisui | (~chisui@200116b868697b00c8225f803a065f0d.dip.versatel-1u1.de) |
2021-09-07 13:22:50 +0200 | <chisui> | Hey, what are modern haskell solutions for parsing arguments into data? Does something akin to rusts structopts or clap exist? |
2021-09-07 13:23:35 +0200 | <kaol> | Can't go wrong with optparse-applicative. |
2021-09-07 13:24:12 +0200 | <iqubic> | Yeah. I was just about to suggest that. |
2021-09-07 13:24:44 +0200 | <hpc> | base has a getopt module, but optparse-applicative is crazy good |
2021-09-07 13:25:40 +0200 | fendor_ | (~fendor@77.119.198.92.wireless.dyn.drei.com) |
2021-09-07 13:27:46 +0200 | <chisui> | Oh, wow it also has completion support. Thats wild. |
2021-09-07 13:27:50 +0200 | Akronymus | (~Akronymus@85.31.8.180) |
2021-09-07 13:28:16 +0200 | fendor | (~fendor@91.141.66.73.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
2021-09-07 13:29:56 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Remote host closed the connection) |
2021-09-07 13:30:09 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 13:31:53 +0200 | <dminuoso> | optparse-applicative is just very verbose. :) |
2021-09-07 13:32:07 +0200 | <dminuoso> | It's good, but at times I wish there was something that required less typing for minimal problems. |
2021-09-07 13:33:13 +0200 | aliosablack | (~chomwitt@ppp-94-67-192-178.home.otenet.gr) (Ping timeout: 252 seconds) |
2021-09-07 13:33:38 +0200 | aman | (~aman@user/aman) |
2021-09-07 13:35:56 +0200 | Ariakenom | (~patrik@h-81-170-208-30.A163.corp.bahnhof.se) (Ping timeout: 252 seconds) |
2021-09-07 13:39:57 +0200 | <hpc> | i like knowing i can add more options over time without hitting some arbitrary limitation of the underlying library |
2021-09-07 13:40:08 +0200 | <hpc> | and it's not even really that verbose imo |
2021-09-07 13:41:08 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 13:41:24 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 13:43:05 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds) |
2021-09-07 13:43:23 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 13:50:04 +0200 | pzanco | (~Android@187.104.158.159) (Quit: Connection Timed Out) |
2021-09-07 13:51:31 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 13:51:54 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 13:52:12 +0200 | <tomsmeding> | I'm not sure "not having arbitary limits on the number of options" is really the best thing you can say about optparse-applicative :p |
2021-09-07 13:54:14 +0200 | pzanco | (~Android@187.104.158.159) |
2021-09-07 13:54:38 +0200 | pzanco | (~Android@187.104.158.159) (Client Quit) |
2021-09-07 13:54:42 +0200 | <lortabac> | dminuoso: there is optparse-generic |
2021-09-07 13:54:46 +0200 | <lortabac> | @hackage optparse-generic |
2021-09-07 13:54:46 +0200 | <lambdabot> | https://hackage.haskell.org/package/optparse-generic |
2021-09-07 13:56:43 +0200 | ubert1 | (~Thunderbi@91.141.54.165.wireless.dyn.drei.com) |
2021-09-07 13:57:55 +0200 | <hololeap> | dminuoso: @hackage optparse-simple |
2021-09-07 13:57:56 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2021-09-07 13:58:06 +0200 | <hololeap> | @hackage optparse-simple |
2021-09-07 13:58:06 +0200 | <lambdabot> | https://hackage.haskell.org/package/optparse-simple |
2021-09-07 13:58:29 +0200 | ubert | (~Thunderbi@91.141.54.165.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
2021-09-07 13:58:29 +0200 | ubert1 | ubert |
2021-09-07 13:58:50 +0200 | burnsidesLlama | (~burnsides@client-8-65.eduroam.oxuni.org.uk) (Remote host closed the connection) |
2021-09-07 13:59:26 +0200 | burnsidesLlama | (~burnsides@dhcp168-020.wadham.ox.ac.uk) |
2021-09-07 14:00:40 +0200 | max22- | (~maxime@2a01cb0883359800332c1af3aa4fc5cd.ipv6.abo.wanadoo.fr) (Ping timeout: 260 seconds) |
2021-09-07 14:00:43 +0200 | sleblanc | (~sleblanc@user/sleblanc) |
2021-09-07 14:01:51 +0200 | <merijn> | dminuoso: Easy enough to handroll a few custom combinators for the common case of your application |
2021-09-07 14:01:55 +0200 | <hpc> | tomsmeding: limit on complexity |
2021-09-07 14:02:08 +0200 | euandreh | (~euandreh@2804:14c:33:9fe5:c3ab:c75d:f803:b354) |
2021-09-07 14:02:14 +0200 | <hpc> | maybe i want to add a whole other mode of operation |
2021-09-07 14:02:22 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds) |
2021-09-07 14:02:39 +0200 | <hpc> | "foo add --this-set-of-options" or "foo delete --something-totally-different" |
2021-09-07 14:02:39 +0200 | <tomsmeding> | oh right you were complaining about the simplicity of base's getopt |
2021-09-07 14:02:48 +0200 | <merijn> | tomsmeding: The point is "a relatively minimal CLI is a bit more verbose in optparse, but it scales up from that to arbitrarily complex commandlines" |
2021-09-07 14:03:00 +0200 | <tomsmeding> | yeah |
2021-09-07 14:04:48 +0200 | acidjnk_new3 | (~acidjnk@p200300d0c72030994532c033362507d1.dip0.t-ipconnect.de) |
2021-09-07 14:05:07 +0200 | myShoggoth | (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 252 seconds) |
2021-09-07 14:05:35 +0200 | fendor_ | fendor |
2021-09-07 14:06:55 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) |
2021-09-07 14:08:10 +0200 | acidjnk_new | (~acidjnk@p5487d0ba.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2021-09-07 14:08:56 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds) |
2021-09-07 14:09:13 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 14:14:36 +0200 | alx741 | (~alx741@181.196.68.218) (Quit: alx741) |
2021-09-07 14:18:46 +0200 | slowButPresent | (~slowButPr@user/slowbutpresent) |
2021-09-07 14:19:23 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds) |
2021-09-07 14:19:41 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 14:20:31 +0200 | ubert | (~Thunderbi@91.141.54.165.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
2021-09-07 14:21:23 +0200 | <dminuoso> | merijn: Ideally I want something with a minimalistic interface in the likes of say optparse in python. |
2021-09-07 14:21:46 +0200 | <dminuoso> | With optparse-applicative it seems like Im writing 20 lines for what could be written in 3 instead. |
2021-09-07 14:21:51 +0200 | <dminuoso> | It's just a mild annoyance, not a major issue. |
2021-09-07 14:28:13 +0200 | sleblanc | (~sleblanc@user/sleblanc) (Ping timeout: 252 seconds) |
2021-09-07 14:29:41 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) |
2021-09-07 14:34:04 +0200 | acarrico1 | acarrico |
2021-09-07 14:34:14 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds) |
2021-09-07 14:34:32 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 14:37:11 +0200 | <kuribas> | But optparse-applicative is obviously inferior data clojure: https://www.reddit.com/r/programming/comments/pe1zlt/whatever_your_language_you_can_steal_clojures/ |
2021-09-07 14:37:37 +0200 | <kuribas> | (because you cannot inspect the generated parser, or something...) |
2021-09-07 14:38:28 +0200 | xff0x | (~xff0x@2001:1a81:5244:5800:ade4:7c8b:9b3b:6271) (Ping timeout: 256 seconds) |
2021-09-07 14:38:57 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 276 seconds) |
2021-09-07 14:39:44 +0200 | <merijn> | Easily fixed |
2021-09-07 14:39:54 +0200 | <merijn> | Just picked up the ticket to implement optparse-selective |
2021-09-07 14:41:01 +0200 | <dminuoso> | I started it, looked at optparse-applicative implementation, and then decided it was better to watch Dark Crystal: Age of Resistance instead. |
2021-09-07 14:41:33 +0200 | <merijn> | I dove into it quite a bit and feel I actually understand it well enough now |
2021-09-07 14:41:52 +0200 | <merijn> | But then I realised nobody's paying me and I have enough work already, so fuck that :p |
2021-09-07 14:44:04 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-09-07 14:45:09 +0200 | <albet70> | > flip runContT return $ do { r <- lift [1..6]; when (r == 3) $ return 2; return r } |
2021-09-07 14:45:11 +0200 | <lambdabot> | error: |
2021-09-07 14:45:12 +0200 | <lambdabot> | • Could not deduce (Num ()) arising from the literal ‘2’ |
2021-09-07 14:45:12 +0200 | <lambdabot> | from the context: (Enum r, Eq r, Num r) |
2021-09-07 14:45:32 +0200 | <albet70> | err... |
2021-09-07 14:46:17 +0200 | <tomsmeding> | > flip runContT return $ do { r <- lift [1..6]; if r == 3 then return 2 else return r } |
2021-09-07 14:46:18 +0200 | <lambdabot> | [1,2,2,4,5,6] |
2021-09-07 14:46:25 +0200 | <tomsmeding> | :t when |
2021-09-07 14:46:26 +0200 | <lambdabot> | Applicative f => Bool -> f () -> f () |
2021-09-07 14:47:30 +0200 | <albet70> | could it return immediately when r == 3? make the result is [1,2] not [1,2,3,4,5,6]? |
2021-09-07 14:47:44 +0200 | <tomsmeding> | there is no "early return" with 'return' in haskell |
2021-09-07 14:47:47 +0200 | <tomsmeding> | :t return |
2021-09-07 14:47:49 +0200 | <lambdabot> | Monad m => a -> m a |
2021-09-07 14:48:01 +0200 | <tomsmeding> | 'return' is just a function that injects a value into a monad; it's exactly the same function as: |
2021-09-07 14:48:02 +0200 | <tomsmeding> | :t pure |
2021-09-07 14:48:03 +0200 | <lambdabot> | Applicative f => a -> f a |
2021-09-07 14:48:16 +0200 | <dminuoso> | callCC give you that "early return" :p |
2021-09-07 14:48:17 +0200 | <tomsmeding> | (exactly as in "return = pure" is the default implementation) |
2021-09-07 14:48:40 +0200 | <albet70> | dminuoso, could u do that with callCC? |
2021-09-07 14:48:45 +0200 | <dminuoso> | albet70: Yes. |
2021-09-07 14:48:47 +0200 | <albet70> | that above |
2021-09-07 14:48:50 +0200 | <dminuoso> | Yes. |
2021-09-07 14:48:52 +0200 | <tomsmeding> | right, you might get an early return somehow, but that is then because the monad in question _explicitly_ implemented that, and that's not going to be with 'pure' (also known as 'return') |
2021-09-07 14:48:53 +0200 | <albet70> | how? |
2021-09-07 14:49:09 +0200 | xff0x | (~xff0x@2001:1a81:5244:5800:ade4:7c8b:9b3b:6271) |
2021-09-07 14:49:28 +0200 | <albet70> | use Cont to break List |
2021-09-07 14:50:18 +0200 | <dminuoso> | albet70: Well it doesnt quite behave like you'd expect it to. |
2021-09-07 14:50:31 +0200 | <dminuoso> | callCC can be thought of as a pure functional setjmp/longjmp |
2021-09-07 14:50:36 +0200 | <albet70> | would u show me pls |
2021-09-07 14:51:15 +0200 | <albet70> | not jmp, just do early exit |
2021-09-07 14:51:58 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 14:52:09 +0200 | <albet70> | I saw some code like this, forLoop items fn = let contArr = fmap fn items in C.runContT (sequence_ contArr) return |
2021-09-07 14:52:13 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 14:52:36 +0200 | pbrisbin | (~patrick@pool-108-16-214-93.phlapa.fios.verizon.net) |
2021-09-07 14:52:39 +0200 | <albet70> | breakOut :: Monad m => C.ContT () m c; breakOut = C.ContT $ \_ -> return () |
2021-09-07 14:53:12 +0200 | <albet70> | but it uses sequence_ here, that would be meaningless, because traverse can do early exit already |
2021-09-07 14:53:30 +0200 | hays | (rootvegeta@st5ve.com) (Quit: hays) |
2021-09-07 14:53:56 +0200 | hays | (rootvegeta@st5ve.com) |
2021-09-07 14:53:56 +0200 | hays | (rootvegeta@st5ve.com) (Changing host) |
2021-09-07 14:53:57 +0200 | hays | (rootvegeta@fsf/member/hays) |
2021-09-07 14:53:58 +0200 | <albet70> | forLoop :: Monad m => [a] -> (a -> C.ContT () m c) -> m () |
2021-09-07 14:54:02 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-09-07 14:54:44 +0200 | chomwitt | (~chomwitt@2a02:587:dc02:7900:12c3:7bff:fe6d:d374) |
2021-09-07 14:55:12 +0200 | <dminuoso> | Mmm, you'd have to swap ListT (or LogicT) and ContT around, no? |
2021-09-07 14:55:21 +0200 | <kuribas> | albet70: you can use "Either" for early return. |
2021-09-07 14:56:03 +0200 | <albet70> | aha, ListT does exist? |
2021-09-07 14:56:20 +0200 | <dminuoso> | Yeah, e.g.: |
2021-09-07 14:56:32 +0200 | <dminuoso> | https://hackage.haskell.org/package/logict-0.7.1.0/docs/Control-Monad-Logic.html#t:LogicT |
2021-09-07 14:56:37 +0200 | <albet70> | if it does, we can achieve this with ListT? |
2021-09-07 14:56:46 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:51c9:9325:5764:1e14) |
2021-09-07 14:59:58 +0200 | <albet70> | example? |
2021-09-07 15:00:58 +0200 | <albet70> | kuribas but Either just like Maybe, it still do the whole computation, not break immediately |
2021-09-07 15:01:13 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:51c9:9325:5764:1e14) (Ping timeout: 252 seconds) |
2021-09-07 15:01:17 +0200 | <kuribas> | albet70: no, it doesn't? |
2021-09-07 15:01:28 +0200 | <dminuoso> | It depends on what order you layer them |
2021-09-07 15:01:33 +0200 | <dminuoso> | If done via transformers |
2021-09-07 15:02:44 +0200 | kayprish | (~kayprish@cable-188-2-153-140.dynamic.sbb.rs) (Remote host closed the connection) |
2021-09-07 15:02:50 +0200 | <albet70> | let's back to that callCC stuff, could callCC break that List computation in above code? |
2021-09-07 15:03:38 +0200 | hays | (rootvegeta@fsf/member/hays) (Quit: hays) |
2021-09-07 15:03:55 +0200 | <albet70> | > flip runContT return $ do { r <- lift [1..6]; if (r == 3) then return 2 else return r } |
2021-09-07 15:03:57 +0200 | <lambdabot> | [1,2,2,4,5,6] |
2021-09-07 15:03:57 +0200 | hays | (rootvegeta@fsf/member/hays) |
2021-09-07 15:04:18 +0200 | <albet70> | let it just return [1,2] |
2021-09-07 15:04:19 +0200 | Ariakenom | (~patrik@h-81-170-208-30.A163.corp.bahnhof.se) |
2021-09-07 15:06:00 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 260 seconds) |
2021-09-07 15:07:54 +0200 | aman | (~aman@user/aman) (Quit: aman) |
2021-09-07 15:08:41 +0200 | <kuribas> | albet70: you're returning a number, how could it then return a list? |
2021-09-07 15:10:10 +0200 | MQ-17J | (~MQ-17J@2607:fb90:1d33:949a:dd01:ad33:fd60:12c6) |
2021-09-07 15:10:33 +0200 | <albet70> | because it's type is ContT Int [] Int? |
2021-09-07 15:11:40 +0200 | michalz | (~michalz@185.246.204.101) (Ping timeout: 252 seconds) |
2021-09-07 15:11:45 +0200 | <albet70> | within ListT, we can lift print every single item, no need sequence |
2021-09-07 15:13:12 +0200 | <kuribas> | > runStateT $ for_ [1..] $ \x -> do xs <- get; if x > 5 then lift $ Left xs; else put (x:xs) |
2021-09-07 15:13:14 +0200 | <lambdabot> | <[Integer] -> Either [Integer] ((),[Integer])> |
2021-09-07 15:13:32 +0200 | oxide | (~lambda@user/oxide) |
2021-09-07 15:13:45 +0200 | <kuribas> | > flip runStateT [] $ for_ [1..] $ \x -> do xs <- get; if x > 5 then lift $ Left xs; else put (x:xs) |
2021-09-07 15:13:46 +0200 | <lambdabot> | Left [5,4,3,2,1] |
2021-09-07 15:15:19 +0200 | <kuribas> | albet70: note that ListT (from transformers) isn't a proper monad. |
2021-09-07 15:15:35 +0200 | <kuribas> | also the List monad probably doesn't short circuit the way you think. |
2021-09-07 15:16:34 +0200 | <kuribas> | continuation monad on top of the list monad is madness... |
2021-09-07 15:17:29 +0200 | michalz | (~michalz@185.246.204.41) |
2021-09-07 15:19:16 +0200 | koz | (~koz@2404:4408:430f:a900:ca69:658c:ba89:aa9f) (Ping timeout: 252 seconds) |
2021-09-07 15:19:38 +0200 | acidjnk_new | (~acidjnk@p5487d0ba.dip0.t-ipconnect.de) |
2021-09-07 15:22:19 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 15:22:37 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 15:22:40 +0200 | acidjnk_new3 | (~acidjnk@p200300d0c72030994532c033362507d1.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2021-09-07 15:27:04 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2021-09-07 15:27:51 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2021-09-07 15:28:25 +0200 | arjun_ | (~Srain@user/arjun) |
2021-09-07 15:29:38 +0200 | alp | (~alp@163.172.83.213) (Quit: ZNC 1.8.1 - https://znc.in) |
2021-09-07 15:29:39 +0200 | guibou | (~guibou@163.172.83.213) (Quit: ZNC 1.8.1 - https://znc.in) |
2021-09-07 15:30:53 +0200 | arjun | (~Srain@user/arjun) (Ping timeout: 252 seconds) |
2021-09-07 15:30:54 +0200 | arjun_ | arjun |
2021-09-07 15:31:58 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-09-07 15:31:58 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-09-07 15:31:58 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-09-07 15:35:22 +0200 | Kevin578 | (~Kevin578@pool-96-237-112-198.bstnma.fios.verizon.net) |
2021-09-07 15:39:07 +0200 | pzanco | (~pzanco@2804:14c:3ba1:42d:2204:fff:feff:44a0) |
2021-09-07 15:39:18 +0200 | shriekingnoise | (~shrieking@186.137.144.80) |
2021-09-07 15:42:22 +0200 | <lechner> | Hi, in this servant example what does the sole, single quote do, please? https://github.com/sras/servant-examples/blob/master/src/HelloWorld.hs#L44 |
2021-09-07 15:42:39 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 15:42:53 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 15:43:42 +0200 | <geekosaur> | marks it as a type-level list |
2021-09-07 15:44:05 +0200 | max22- | (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) |
2021-09-07 15:46:15 +0200 | <geekosaur> | instead of declaring a value-level list's type |
2021-09-07 15:47:27 +0200 | hendursa1 | (~weechat@user/hendursaga) (Quit: hendursa1) |
2021-09-07 15:47:53 +0200 | hendursaga | (~weechat@user/hendursaga) |
2021-09-07 15:48:21 +0200 | <lechner> | it's available even without "TypeOperators" right? |
2021-09-07 15:48:25 +0200 | tddschn | (~textual@45.77.71.205) |
2021-09-07 15:48:33 +0200 | <dminuoso> | Yes. |
2021-09-07 15:48:36 +0200 | <dminuoso> | lechner: It's part of DataKinds |
2021-09-07 15:49:19 +0200 | <dminuoso> | Or at least Id expect it to be |
2021-09-07 15:49:57 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-09-07 15:52:08 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 256 seconds) |
2021-09-07 15:52:20 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 252 seconds) |
2021-09-07 15:53:55 +0200 | <lechner> | thanks! |
2021-09-07 15:54:25 +0200 | chomwitt | (~chomwitt@2a02:587:dc02:7900:12c3:7bff:fe6d:d374) (Ping timeout: 260 seconds) |
2021-09-07 15:54:29 +0200 | <dminuoso> | lechner: The ' essentially lets you distinguish between a lifted and non-lifted constructor. |
2021-09-07 15:54:32 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 265 seconds) |
2021-09-07 15:55:08 +0200 | <dminuoso> | for instance: |
2021-09-07 15:55:13 +0200 | <dminuoso> | % :set -XDataKinds |
2021-09-07 15:55:13 +0200 | <yahb> | dminuoso: |
2021-09-07 15:55:20 +0200 | <dminuoso> | % data Color = Red | Blue |
2021-09-07 15:55:20 +0200 | <yahb> | dminuoso: |
2021-09-07 15:55:35 +0200 | <dminuoso> | % type A = '['Red] |
2021-09-07 15:55:36 +0200 | <yahb> | dminuoso: ; <interactive>:43:10: error: parse error on input ' |
2021-09-07 15:56:36 +0200 | koz | (~koz@121.99.240.58) |
2021-09-07 15:57:03 +0200 | <dminuoso> | % type T = Const Int 'Red |
2021-09-07 15:57:03 +0200 | <yahb> | dminuoso: |
2021-09-07 15:57:36 +0200 | <dminuoso> | lechner: Interestingly here you could have also written `type T = Const Int Red`, because `Red` happens to be unambiguous in the current namespace (it can only refer to the lifted type) |
2021-09-07 15:57:41 +0200 | <dminuoso> | But consider if we also have this present: |
2021-09-07 15:57:47 +0200 | <dminuoso> | % newtype Red = Red Int |
2021-09-07 15:57:47 +0200 | <yahb> | dminuoso: |
2021-09-07 15:57:55 +0200 | <dminuoso> | % type T = Const Int Red |
2021-09-07 15:57:55 +0200 | <yahb> | dminuoso: |
2021-09-07 15:58:12 +0200 | <dminuoso> | Then here `Red` will refer to the newtype Red, but `'Red` would refer to the lifted type from Colour. |
2021-09-07 15:58:45 +0200 | <dminuoso> | ' for type lists is the same thing, as '[] lets GHC disambiguate between the lifted list and non-lifted list |
2021-09-07 16:00:40 +0200 | MQ-17J | (~MQ-17J@2607:fb90:1d33:949a:dd01:ad33:fd60:12c6) (Read error: Connection reset by peer) |
2021-09-07 16:00:55 +0200 | zebrag | (~chris@user/zebrag) |
2021-09-07 16:01:10 +0200 | MQ-17J | (~MQ-17J@35.50.7.10) |
2021-09-07 16:02:20 +0200 | chomwitt | (~chomwitt@2a02:587:dc02:7900:12c3:7bff:fe6d:d374) |
2021-09-07 16:02:28 +0200 | <lechner> | why would someone do something like newtype Red = Red Int ? |
2021-09-07 16:03:54 +0200 | <[exa]> | lechner: for example because it may have different typeclass instances than Int |
2021-09-07 16:05:01 +0200 | <[exa]> | it sounds kindof like color, so e.g. Show can print with blood and Num may clamp to 0-255 for 8bit rgb values |
2021-09-07 16:05:09 +0200 | biberu\ | (~biberu@user/biberu) |
2021-09-07 16:06:50 +0200 | <lechner> | i am just confused by the naming. same with "newtype FirstName = FirstName String" here https://wiki.haskell.org/Type |
2021-09-07 16:06:59 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) |
2021-09-07 16:07:05 +0200 | pzanco | (~pzanco@2804:14c:3ba1:42d:2204:fff:feff:44a0) (Quit: Leaving) |
2021-09-07 16:08:10 +0200 | biberu | (~biberu@user/biberu) (Ping timeout: 252 seconds) |
2021-09-07 16:08:10 +0200 | biberu\ | biberu |
2021-09-07 16:08:20 +0200 | alp | (~alp@mail.fmap.fr) |
2021-09-07 16:09:03 +0200 | alp | (~alp@mail.fmap.fr) (Changing host) |
2021-09-07 16:09:03 +0200 | alp | (~alp@user/alp) |
2021-09-07 16:10:04 +0200 | <dminuoso> | lechner: Newtypes are barriers that increase the robustness of your program. |
2021-09-07 16:10:17 +0200 | Dima[m] | (~reddima10@2001:470:69fc:105::366) () |
2021-09-07 16:10:30 +0200 | <dminuoso> | Consider you have some function that returns a temperature in degrees celsius, and some function that deposits money onto an account |
2021-09-07 16:10:36 +0200 | <lechner> | i get that, but how can the same label appear on both sides? |
2021-09-07 16:10:45 +0200 | <dminuoso> | If we used Int for both, you could accidentally pass a temperature into the latter function. |
2021-09-07 16:10:47 +0200 | <dminuoso> | Oh |
2021-09-07 16:10:50 +0200 | <dminuoso> | Different namespaces |
2021-09-07 16:10:56 +0200 | <dminuoso> | Types and values live in different namespaces |
2021-09-07 16:11:01 +0200 | <dminuoso> | So they are completely non-ambiguous |
2021-09-07 16:11:08 +0200 | <maerwald> | dminuoso: aren't they poor mans liquid types? |
2021-09-07 16:11:09 +0200 | guibou | (~guibou@mail.fmap.fr) |
2021-09-07 16:12:33 +0200 | <lechner> | so in newtype Red = Red Int both "Int" and the first "Red" are types, right? |
2021-09-07 16:12:49 +0200 | <[exa]> | lechner: the first Red is in a language of types, the second Red is in a language of values. You use `x :: Red` to say something has a type (notice: behind :: and with no parameters) |
2021-09-07 16:12:58 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-07 16:12:59 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 16:13:12 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 16:13:27 +0200 | <[exa]> | ...and `Red 1` to make a value of Red type (here, actually, you may view the constructor as a function `Red :: Int -> Red`) |
2021-09-07 16:14:24 +0200 | <[exa]> | so as dminuoso said -- stuff before and after :: is from a completely different language |
2021-09-07 16:15:00 +0200 | <lechner> | i get that too, but i don't understand how the the value (the second "Red") can appear next to a type (the "Int") without anyone being confused about name spaces |
2021-09-07 16:15:09 +0200 | <[exa]> | the only place you mix these now is when specifying the types in the data structure, where you write `Red Int` -- that's a special syntax, kinda mixed language. |
2021-09-07 16:15:20 +0200 | <[exa]> | ah yes you just asked. :] |
2021-09-07 16:15:42 +0200 | <lechner> | how does the compiler know? |
2021-09-07 16:15:47 +0200 | <[exa]> | in fact, if you enable generalized algebraic datatypes, you would write this as `red :: Int -> Red` |
2021-09-07 16:16:10 +0200 | <[exa]> | and the compiler doesn't really "know"-- it's syntax driven. first thing after the `=` is the data constructor, and that's it |
2021-09-07 16:16:34 +0200 | dsrt^ | (~dsrt@68.101.54.227) (Remote host closed the connection) |
2021-09-07 16:16:53 +0200 | <[exa]> | the pattern is roughly: |
2021-09-07 16:17:21 +0200 | <[exa]> | data Type = Datacons Type Type | Datacons Type Type Type | ... |
2021-09-07 16:18:56 +0200 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
2021-09-07 16:21:02 +0200 | ubert | (~Thunderbi@91.141.65.123.wireless.dyn.drei.com) |
2021-09-07 16:23:19 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 16:23:33 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 16:23:37 +0200 | <dminuoso> | Clint: the language is very dense, yes. |
2021-09-07 16:23:41 +0200 | <dminuoso> | Err lechner |
2021-09-07 16:23:52 +0200 | <lechner> | i'm getting there |
2021-09-07 16:23:55 +0200 | <dminuoso> | lechner: the compiler knows this because we have grammar production rules for it. |
2021-09-07 16:24:07 +0200 | <dminuoso> | However |
2021-09-07 16:24:11 +0200 | <dminuoso> | For learning, you can enable GADTSyntax |
2021-09-07 16:24:15 +0200 | <dminuoso> | Which allows you to write: |
2021-09-07 16:24:33 +0200 | favonia | (~favonia@user/favonia) |
2021-09-07 16:24:36 +0200 | <dminuoso> | `data Foo where Con :: Int -> String -> Foo` rather than `data Foo = Con Int String` |
2021-09-07 16:24:45 +0200 | maxime_ | (~maxime@2a01cb0883359800de1604fd61332a1a.ipv6.abo.wanadoo.fr) |
2021-09-07 16:24:46 +0200 | <dminuoso> | Which is less terse, but more readable |
2021-09-07 16:25:33 +0200 | gentauro | (~gentauro@user/gentauro) (Read error: Connection reset by peer) |
2021-09-07 16:25:47 +0200 | <lechner> | in this example https://stackoverflow.com/a/51549110 does the value constructor Person (but not the type Person) appear anywhere except in (Person id name) ? |
2021-09-07 16:26:41 +0200 | <dminuoso> | Nope |
2021-09-07 16:27:24 +0200 | <dminuoso> | Some people also tend to prefix data constructors with Mk, so you might write `data Person = MkPerson Int String`, giving a visual clue of whats a type constructor and whats a data constructor. |
2021-09-07 16:27:38 +0200 | <dminuoso> | Not very common, but you see it from time to time |
2021-09-07 16:27:40 +0200 | max22- | (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Ping timeout: 260 seconds) |
2021-09-07 16:27:56 +0200 | <dminuoso> | Especially in examples or learning material |
2021-09-07 16:28:25 +0200 | <lechner> | i think i get it now. in essence, the reuse that i find so confusing is actually meant to synchronize the two name spaces |
2021-09-07 16:28:27 +0200 | Kevin578 | (~Kevin578@pool-96-237-112-198.bstnma.fios.verizon.net) (Remote host closed the connection) |
2021-09-07 16:28:39 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 16:28:50 +0200 | <janus> | might as well get used to avoiding punning if we're getting dependent types... |
2021-09-07 16:28:52 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 16:29:09 +0200 | vicfred | (~vicfred@user/vicfred) |
2021-09-07 16:29:11 +0200 | vicfred | (~vicfred@user/vicfred) (Client Quit) |
2021-09-07 16:30:15 +0200 | <lechner> | will that mix the name spaces? |
2021-09-07 16:30:38 +0200 | gentauro | (~gentauro@user/gentauro) |
2021-09-07 16:31:47 +0200 | <janus> | lechner: yes |
2021-09-07 16:32:02 +0200 | <lechner> | you will have a revolution |
2021-09-07 16:33:16 +0200 | <lortabac> | lechner: if you are a beginner I'd suggest you to consider values and types as separate things and not worry about the namespace problem |
2021-09-07 16:34:13 +0200 | slack1256 | (~slack1256@12.0.89.245) |
2021-09-07 16:34:42 +0200 | dajoer | (~david@user/gvx) (Quit: leaving) |
2021-09-07 16:34:47 +0200 | <lortabac> | that's a problem that only arises when you enable the DataKinds extension |
2021-09-07 16:35:13 +0200 | <lortabac> | or maybe in the future if one day there is a DependentHaskell extension |
2021-09-07 16:35:32 +0200 | <lechner> | https://int-index.com/posts/haskell-punning |
2021-09-07 16:37:04 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 265 seconds) |
2021-09-07 16:38:44 +0200 | <EvanR> | List a, Pair a b... dunno |
2021-09-07 16:39:14 +0200 | Akronymus | (~Akronymus@85.31.8.180) (Quit: Client closed) |
2021-09-07 16:39:49 +0200 | <EvanR> | too bad you just use different colors in the code itself |
2021-09-07 16:39:55 +0200 | <EvanR> | you can't* |
2021-09-07 16:41:00 +0200 | john2312 | (~user@114.250.137.142) |
2021-09-07 16:41:17 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
2021-09-07 16:42:16 +0200 | lep | lep- |
2021-09-07 16:43:21 +0200 | <lortabac> | someone should come up with a color-sensitive language :D |
2021-09-07 16:43:36 +0200 | kmein | (~weechat@user/kmein) (Quit: ciao kakao) |
2021-09-07 16:44:14 +0200 | kmein | (~weechat@user/kmein) |
2021-09-07 16:44:32 +0200 | <janus> | lortabac: we have something even better, a language without syntax: http://www.lamdu.org/ |
2021-09-07 16:44:57 +0200 | myShoggoth | (~myShoggot@97-120-70-214.ptld.qwest.net) |
2021-09-07 16:45:41 +0200 | stefan-_ | (~cri@42dots.de) (Ping timeout: 252 seconds) |
2021-09-07 16:46:15 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) (Ping timeout: 265 seconds) |
2021-09-07 16:48:12 +0200 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) (Remote host closed the connection) |
2021-09-07 16:49:08 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) |
2021-09-07 16:49:36 +0200 | stefan-_ | (~cri@42dots.de) |
2021-09-07 16:51:00 +0200 | chomwitt | (~chomwitt@2a02:587:dc02:7900:12c3:7bff:fe6d:d374) (Ping timeout: 260 seconds) |
2021-09-07 16:53:31 +0200 | asthasr | (~asthasr@162.210.28.151) |
2021-09-07 16:54:05 +0200 | Ariakenom | (~patrik@h-81-170-208-30.A163.corp.bahnhof.se) (Quit: WeeChat 3.1) |
2021-09-07 16:56:39 +0200 | <geekosaur> | lortabac, does piet not count? |
2021-09-07 16:57:05 +0200 | shapr | (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
2021-09-07 16:57:36 +0200 | <lortabac> | geekosaur: nice :) I didn't know this language |
2021-09-07 16:58:03 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 276 seconds) |
2021-09-07 16:58:43 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:51c9:9325:5764:1e14) |
2021-09-07 16:58:53 +0200 | hnOsmium0001 | (uid453710@id-453710.stonehaven.irccloud.com) |
2021-09-07 16:59:25 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Quit: Leaving) |
2021-09-07 16:59:28 +0200 | neo | (~neo3@cpe-292712.ip.primehome.com) |
2021-09-07 16:59:50 +0200 | <merijn> | lortabac: eh |
2021-09-07 16:59:51 +0200 | neo | Guest1732 |
2021-09-07 16:59:55 +0200 | <merijn> | lortabac: Color-sensitive already exists |
2021-09-07 17:00:20 +0200 | <merijn> | lortabac: https://en.wikipedia.org/wiki/ColorForth |
2021-09-07 17:01:34 +0200 | <lortabac> | when you think you had a crazy idea, there is always someone crazier than you who has even implemented it |
2021-09-07 17:03:19 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:51c9:9325:5764:1e14) (Ping timeout: 252 seconds) |
2021-09-07 17:07:44 +0200 | ub | (~Thunderbi@178.165.164.206.wireless.dyn.drei.com) |
2021-09-07 17:07:48 +0200 | ubert1 | (~Thunderbi@178.165.164.206.wireless.dyn.drei.com) |
2021-09-07 17:07:53 +0200 | <dminuoso> | 16:28:50 janus | might as well get used to avoiding punning if we're getting dependent types... |
2021-09-07 17:08:09 +0200 | Guest1732 | neo |
2021-09-07 17:08:09 +0200 | <dminuoso> | Yup, in hindsight having separate namespaces was a poor idea. |
2021-09-07 17:08:26 +0200 | <dminuoso> | Same thing for operators not needing ' anymore. :( |
2021-09-07 17:08:38 +0200 | neo | Guest9247 |
2021-09-07 17:09:09 +0200 | <pavonia> | How would you enter differently colored text? |
2021-09-07 17:09:22 +0200 | ubert | (~Thunderbi@91.141.65.123.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
2021-09-07 17:09:22 +0200 | ubert1 | ubert |
2021-09-07 17:09:32 +0200 | <geekosaur> | editors would have shortcuts for it |
2021-09-07 17:09:50 +0200 | <geekosaur> | much the same way various IRC clients have shortcuts for entering colors |
2021-09-07 17:11:41 +0200 | <geekosaur> | (which I alays have to look up or use the riught click menu for, because I never remember them :) |
2021-09-07 17:13:54 +0200 | <pavonia> | Seems to me the tiny compiling speedup comes with a huge editing slowdown |
2021-09-07 17:15:00 +0200 | <geekosaur> | same could be said of unicode operators |
2021-09-07 17:15:17 +0200 | <geekosaur> | yet e.g. agda uses them |
2021-09-07 17:15:53 +0200 | <pavonia> | Well, who uses Agda anyway? :p |
2021-09-07 17:17:49 +0200 | vysn | (~vysn@user/vysn) (Quit: WeeChat 3.2) |
2021-09-07 17:18:07 +0200 | vysn | (~vysn@user/vysn) |
2021-09-07 17:18:30 +0200 | <kuribas> | does anyone write practical programs in idris/agda/coq/lean/... ? |
2021-09-07 17:18:42 +0200 | <kuribas> | anything other than a proof? |
2021-09-07 17:20:19 +0200 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.2) |
2021-09-07 17:20:24 +0200 | lep- | lep |
2021-09-07 17:20:55 +0200 | vysn | (~vysn@user/vysn) (Client Quit) |
2021-09-07 17:21:12 +0200 | vysn | (~vysn@user/vysn) |
2021-09-07 17:21:53 +0200 | <kuribas> | I suppose haskell is the most "advanced" among practical languages. |
2021-09-07 17:22:06 +0200 | <[exa]> | kuribas: y tho |
2021-09-07 17:22:28 +0200 | <[exa]> | there is some software that is verified using coq programs, which I'd say is practical programming |
2021-09-07 17:22:39 +0200 | <[exa]> | either a compiler or an operating system or something |
2021-09-07 17:22:41 +0200 | <kuribas> | [exa]: it compiles to haskell? |
2021-09-07 17:23:25 +0200 | <[exa]> | L4 microkernel was verified by something too, I guess it was isabelle/hol? |
2021-09-07 17:24:25 +0200 | <kuribas> | what language was it written in? |
2021-09-07 17:24:51 +0200 | <kuribas> | Do they prove it in isabelle/hol, then implement the algorithm in another language? |
2021-09-07 17:25:07 +0200 | vysn | (~vysn@user/vysn) (Client Quit) |
2021-09-07 17:25:13 +0200 | <[exa]> | it's written in C and then verified in isabelle afaik |
2021-09-07 17:25:21 +0200 | <[exa]> | there's some magicks around there too |
2021-09-07 17:25:24 +0200 | vysn | (~vysn@user/vysn) |
2021-09-07 17:25:42 +0200 | <[exa]> | like, what's wrong with a specialized language for writing tests? :D |
2021-09-07 17:26:14 +0200 | <[exa]> | wow, wiki: The proof is constructed and checked in Isabelle/HOL and comprises over 200,000 lines of proof script to verify 7,500 lines of C. |
2021-09-07 17:26:20 +0200 | vysn | (~vysn@user/vysn) (Client Quit) |
2021-09-07 17:26:34 +0200 | <kuribas> | wow |
2021-09-07 17:26:37 +0200 | vysn | (~vysn@user/vysn) |
2021-09-07 17:27:10 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:9b50:ae6e:a049:784) (Ping timeout: 260 seconds) |
2021-09-07 17:27:11 +0200 | <[exa]> | that's some testing |
2021-09-07 17:28:36 +0200 | libertyprime | (~libertypr@118.149.78.102) |
2021-09-07 17:28:58 +0200 | <libertyprime> | hi haskell people. please make one of these! |
2021-09-07 17:29:03 +0200 | <libertyprime> | https://semiosis.github.io/ilambda/ |
2021-09-07 17:30:16 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:51c9:9325:5764:1e14) |
2021-09-07 17:31:07 +0200 | <[exa]> | libertyprime: the code samples there need more comments I'd say |
2021-09-07 17:33:18 +0200 | <libertyprime> | sorry ive been in a real rush with trying to make tooling for openai's codex/gpt3. i am outsourcing to you guys because i know its important |
2021-09-07 17:33:42 +0200 | <[exa]> | no worries |
2021-09-07 17:34:05 +0200 | <[exa]> | the languages that don't "return" stuff are not covered by the paradigm? |
2021-09-07 17:34:41 +0200 | chomwitt | (~chomwitt@ppp-94-67-192-178.home.otenet.gr) |
2021-09-07 17:35:00 +0200 | burnsidesLlama | (~burnsides@dhcp168-020.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-09-07 17:37:14 +0200 | <libertyprime> | http://semiosis.github.io/posts/imaginary-chimera-languages-with-codex/ |
2021-09-07 17:37:44 +0200 | <libertyprime> | codex is a LM which is a representation of all languages in a large vector space |
2021-09-07 17:38:04 +0200 | <libertyprime> | it's probabilistic. the imaginary dimensions allow you to translate, do code gen and make these chimeric languages |
2021-09-07 17:38:50 +0200 | <libertyprime> | but the real value, i think is in keeping your peas and carrots separate, which haskell is good at |
2021-09-07 17:39:18 +0200 | <libertyprime> | a proper interop instead of a pure imaginary ghci , an ilambda library |
2021-09-07 17:40:51 +0200 | <monochrom> | "the program was written in C, the verification was written in Coq" sounds like "Coq is a practical proof language" to me. proof ≠ program. |
2021-09-07 17:41:03 +0200 | <monochrom> | Unpopular opinion: proof ≠ program. |
2021-09-07 17:41:27 +0200 | <[exa]> | monochrom: thats just unpopular :( |
2021-09-07 17:41:40 +0200 | <monochrom> | program is what you actually run. |
2021-09-07 17:41:53 +0200 | <monochrom> | If you don't run your proof, it is not a program. |
2021-09-07 17:42:02 +0200 | <[exa]> | libertyprime: I'm a bit lost. does it have any explanation in already known terms? (without LM and "probabilistic language" etc) |
2021-09-07 17:42:31 +0200 | <monochrom> | I am a formal methods person, I value proofs. All the more reason to acknowledge the difference. |
2021-09-07 17:42:32 +0200 | <[exa]> | monochrom: b...b.but...curry&howard :'( |
2021-09-07 17:43:02 +0200 | <libertyprime> | [exa]: there are some very dense academic papers you can read on prompt engineering and GPT |
2021-09-07 17:43:17 +0200 | <libertyprime> | but IP is very very new |
2021-09-07 17:43:27 +0200 | <[exa]> | link? |
2021-09-07 17:43:27 +0200 | <monochrom> | My personal experience with the ergonomics of writing programs and the ergonomics of writing proof is that they have very different ergonomics. |
2021-09-07 17:44:11 +0200 | <libertyprime> | https://arxiv.org/abs/2107.13586 |
2021-09-07 17:44:17 +0200 | <libertyprime> | This is a recent survey on prompting |
2021-09-07 17:44:26 +0200 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) |
2021-09-07 17:44:37 +0200 | <libertyprime> | a prompt links a function to a language model |
2021-09-07 17:44:58 +0200 | <janus> | what does it even mean to 'run' a program? if the program contains a value that type that witnesses the poincare conjecture, what would running it do? |
2021-09-07 17:45:25 +0200 | <monochrom> | That experience is consistent with how Coq, Agda, ATS didn't quite catch on as programming languages, and how Haskell, Idris didn't quite catch on as proof languages. |
2021-09-07 17:45:27 +0200 | <janus> | is that why you object to proof=program? |
2021-09-07 17:45:49 +0200 | <janus> | ok |
2021-09-07 17:46:01 +0200 | <libertyprime> | janus: are you eleutherai janus? |
2021-09-07 17:46:04 +0200 | <monochrom> | janus, do you run your OS? do you run your webapp? |
2021-09-07 17:46:42 +0200 | <janus> | if we say that 'running' includes type checking, then surely 'running' a program that contains interesting types does tell you something about what is true |
2021-09-07 17:46:43 +0200 | <monochrom> | What would running your OS do, under your logic? |
2021-09-07 17:46:50 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-09-07 17:46:52 +0200 | Guest9247 | (~neo3@cpe-292712.ip.primehome.com) (Quit: Leaving) |
2021-09-07 17:47:03 +0200 | <janus> | libertyprime: i don't know what eleutherai is, so i don't know if it is me |
2021-09-07 17:47:13 +0200 | neo1 | (~neo3@cpe-292712.ip.primehome.com) |
2021-09-07 17:47:22 +0200 | <libertyprime> | [exa]: you wont find anything on IP. but im doing a presentation on it in a month |
2021-09-07 17:47:26 +0200 | <libertyprime> | https://semiosis.github.io/posts/emacsconf-2021-imaginary-programming/ |
2021-09-07 17:47:50 +0200 | <libertyprime> | github copilot is an example of it. except its a very very simplistic example of IP |
2021-09-07 17:48:04 +0200 | <janus> | monochrom: well, i thought i was arguing that 'running' isn't really clearly defined. so i don't know if i can say that i am running anything at all :P |
2021-09-07 17:48:45 +0200 | <janus> | maybe it just means electricity is turned to heat? then type checking would also be 'running' :P |
2021-09-07 17:50:20 +0200 | <janus> | it seems like an analogue to 'life'. not clearly defined but still commonly accepted as a term, even by scientists |
2021-09-07 17:50:48 +0200 | <monochrom> | OK, for starters, you are ignoring the fact that 99.999% of the time, the "value" is a function. Perhaps a function that maps a list to its sum. Now I'm going to use that function, give it [3,1,4], and hope to get some answer. |
2021-09-07 17:51:01 +0200 | MQ-17J | (~MQ-17J@35.50.7.10) (Ping timeout: 265 seconds) |
2021-09-07 17:51:10 +0200 | landonf | (landonf@mac68k.info) (Ping timeout: 240 seconds) |
2021-09-07 17:51:21 +0200 | <[exa]> | libertyprime: well, good luck. :] |
2021-09-07 17:51:34 +0200 | <monochrom> | Your proof did not witness that 8 exists. Your proof witnessed that a function that maps [3,1,4] to 8, [1,4] to 5, etc., exists. |
2021-09-07 17:52:07 +0200 | <monochrom> | But I'm going to use that function, with a parameter that is drawn from an infinite space. |
2021-09-07 17:52:09 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:51c9:9325:5764:1e14) (Remote host closed the connection) |
2021-09-07 17:52:18 +0200 | <libertyprime> | [exa] thanks. gpt4 is coming out very soon. its important to have a haskell library |
2021-09-07 17:52:33 +0200 | <libertyprime> | i mean, i can make something really lame with my noob haskell skills |
2021-09-07 17:52:33 +0200 | <monochrom> | And this is only the most basic use case. |
2021-09-07 17:53:27 +0200 | <monochrom> | In reality, the "value" is even more interesting than a function. It is an interactive automaton, such as an OS, a webapp, a stdio application, a unix pipe, ... |
2021-09-07 17:53:40 +0200 | <libertyprime> | but please u are welcome to attempt to build yourself. could probably get a codex key if you say you want to work on an ilambda implementation foor the benefit of humanity or something |
2021-09-07 17:53:45 +0200 | <[exa]> | libertyprime: haskell isn't the usual working ground for linguists honestly |
2021-09-07 17:54:04 +0200 | <libertyprime> | [exa] this is nothing to do with linguistics really, it isnt |
2021-09-07 17:54:18 +0200 | <monochrom> | There is indeed the remaining 0.001% of the time when the "value" is just a natural number. That's called Project Euler. |
2021-09-07 17:54:29 +0200 | danasca | (~dana@77.227.165.152) |
2021-09-07 17:54:37 +0200 | <monochrom> | Unpopular opinion: Project Euler is not programming either. |
2021-09-07 17:54:42 +0200 | maxime_ | (~maxime@2a01cb0883359800de1604fd61332a1a.ipv6.abo.wanadoo.fr) (Remote host closed the connection) |
2021-09-07 17:55:14 +0200 | MQ-17J | (~MQ-17J@2607:fb90:46:a8a6:384f:d5fd:c3eb:fa6f) |
2021-09-07 17:55:19 +0200 | <c_wraith> | is that unpopular? |
2021-09-07 17:55:22 +0200 | <[exa]> | monochrom: +1, euler is puzzles |
2021-09-07 17:55:31 +0200 | max22- | (~maxime@2a01cb088335980060aa426106dec0f1.ipv6.abo.wanadoo.fr) |
2021-09-07 17:55:39 +0200 | <c_wraith> | I thought anyone who read over any of their problems past #10 or so knew that it was a math test. |
2021-09-07 17:55:50 +0200 | <monochrom> | So if you want to pitch "the value exists, it's proven, what's there to run?", pitch it to people who use PE to "learn coding" and tell them there is nothing to run when they ask "but why is my code so slow?" |
2021-09-07 17:55:50 +0200 | favonia | (~favonia@user/favonia) |
2021-09-07 17:56:21 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-09-07 17:57:35 +0200 | <[exa]> | monochrom: it might be interesting for teaching the phds in number theory and algebra to code[4~ |
2021-09-07 17:58:01 +0200 | <janus> | i think maybe i know what you're saying. is it that type checking is just part of a compilation/running pipeline and it makes little sense to run only part of it? |
2021-09-07 17:58:20 +0200 | lbseale | (~lbseale@user/ep1ctetus) |
2021-09-07 17:58:24 +0200 | <janus> | if instead of types, i had a program that generated my program, and i claimed it would be sufficient to only run the first, that would make little sense |
2021-09-07 17:59:05 +0200 | <janus> | so is the argument that type checking is not sufficient because the type commonly is not exact enough to prove the statement? like you mention that the type only witnesses that the mapping exists |
2021-09-07 17:59:41 +0200 | maxime_ | (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) |
2021-09-07 18:00:12 +0200 | tddschn | (~textual@45.77.71.205) (Ping timeout: 265 seconds) |
2021-09-07 18:00:28 +0200 | <janus> | but i don't know if i claimed otherwise. i agree that it makes no difference if you spend the time running a type checker or a runtime system |
2021-09-07 18:01:04 +0200 | <monochrom> | You are running your IRC client. What is it proving? What is it checking? |
2021-09-07 18:01:21 +0200 | <monochrom> | Proving that you exist? |
2021-09-07 18:01:41 +0200 | <monochrom> | Proving that someone else on the Internet also exists? |
2021-09-07 18:02:07 +0200 | <janus> | i don't know how to use the word 'proving' about interactions with the internet, so i don't know if those statements make sense to me |
2021-09-07 18:02:29 +0200 | <monochrom> | How do you explain how the PL research community has two words, "static" and "dynamic"? |
2021-09-07 18:02:45 +0200 | max22- | (~maxime@2a01cb088335980060aa426106dec0f1.ipv6.abo.wanadoo.fr) (Ping timeout: 260 seconds) |
2021-09-07 18:02:50 +0200 | <monochrom> | How do you explain how they have a "static semantics" and then a "dynamic semantics"? |
2021-09-07 18:03:23 +0200 | <monochrom> | Stop weaseling out with "I don't know". |
2021-09-07 18:04:01 +0200 | <monochrom> | Either you confirm "I don't know, I withdraw everything I said", or "I know, here is the justification of what I said". |
2021-09-07 18:05:16 +0200 | <janus> | i can't withdraw without understanding why i am wrong. and i can't justify without understanding exactly what needs justification |
2021-09-07 18:05:36 +0200 | <monochrom> | Alternatively if you assert "the OS is not a program, the IRC client is not a program, the web browser is not a program, none of those are being run", I'm also OK with that. |
2021-09-07 18:06:12 +0200 | <Hecate> | monochrom: dynamic semantics is when the behaviour of your programme is created from something during runtime, and you cannot infer what it could possibly do before you run it :D |
2021-09-07 18:06:29 +0200 | <Hecate> | like, a TCP-connected lisp interpreter |
2021-09-07 18:06:33 +0200 | <Hecate> | opened to the Internet |
2021-09-07 18:06:34 +0200 | <janus> | right, i previously stated that 'running' is not well defined to me. why should i make assertions that use ill-defined terms? |
2021-09-07 18:06:51 +0200 | <monochrom> | But you did. |
2021-09-07 18:06:51 +0200 | aliosablack | (~chomwitt@2a02:587:dc02:7900:12c3:7bff:fe6d:d374) |
2021-09-07 18:07:07 +0200 | <Hecate> | sounds like a "you" problem, the majority of people have no trouble understanding what "running" a programme means |
2021-09-07 18:07:22 +0200 | <Hecate> | and if I'm not mistaken that is usually the first thing you do after writing your first programme |
2021-09-07 18:07:46 +0200 | libertyprime | (~libertypr@118.149.78.102) (Quit: leaving) |
2021-09-07 18:07:54 +0200 | chomwitt | (~chomwitt@ppp-94-67-192-178.home.otenet.gr) (Read error: Connection reset by peer) |
2021-09-07 18:07:56 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 265 seconds) |
2021-09-07 18:08:26 +0200 | burnsidesLlama | (~burnsides@dhcp168-020.wadham.ox.ac.uk) |
2021-09-07 18:08:32 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-09-07 18:08:36 +0200 | <janus> | Hecate: the majority of people have no trouble using ill-defined terms like e.g. 'life', your appeal to the majority cannot sway me |
2021-09-07 18:08:52 +0200 | <monochrom> | Alternatively squared you can assert "the OS is not a program, the IRC client is not a program, the web browser is not a program, none of those are proving/checking anything" |
2021-09-07 18:09:07 +0200 | <Hecate> | janus: again, still sounds like a "you" problem, I have no trouble sleeping at night |
2021-09-07 18:09:22 +0200 | <janus> | Hecate: i have not made any statements about your sleep quality |
2021-09-07 18:09:24 +0200 | econo | (uid147250@user/econo) |
2021-09-07 18:09:40 +0200 | <Hecate> | janus: no but you sound like someone who would lose sleep over the definition of the term "sleep" :P |
2021-09-07 18:09:40 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:51c9:9325:5764:1e14) |
2021-09-07 18:09:48 +0200 | <monochrom> | And you did make assertions about proofs and checks, so don't tell me now you suddenly don't know what proving and checking mean. |
2021-09-07 18:09:52 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-09-07 18:10:18 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2021-09-07 18:10:45 +0200 | arjun_ | (~Srain@user/arjun) |
2021-09-07 18:10:47 +0200 | favonia | (~favonia@user/favonia) |
2021-09-07 18:11:36 +0200 | <lechner> | I'm having a Magritte moment "Ceci n'est pas une pipe" |
2021-09-07 18:12:30 +0200 | <monochrom> | That's the dual meme to "is this a pigeon?" :) |
2021-09-07 18:12:32 +0200 | <janus> | monochrom: if we accept proofs==programs, we can go either way, either we claim that a web browser is a really bad proof, or we claim that it is no program. or we can reject proofs==programs like you do. |
2021-09-07 18:13:16 +0200 | <monochrom> | "bad" is ill-defined. |
2021-09-07 18:13:28 +0200 | <monochrom> | and "really bad" is really ill-defined. |
2021-09-07 18:13:42 +0200 | <janus> | of course it is subjective, you can ignore it if you like |
2021-09-07 18:13:44 +0200 | arjun | (~Srain@user/arjun) (Ping timeout: 265 seconds) |
2021-09-07 18:13:45 +0200 | arjun_ | arjun |
2021-09-07 18:14:01 +0200 | <monochrom> | And be it recorded that I was not the one who brought up "bad". I only brought up programs, proofs, and web browsers. |
2021-09-07 18:14:04 +0200 | <monochrom> | and running. |
2021-09-07 18:14:13 +0200 | burnsidesLlama | (~burnsides@dhcp168-020.wadham.ox.ac.uk) (Ping timeout: 265 seconds) |
2021-09-07 18:14:15 +0200 | pzanco | (~pzanco@2804:14c:3ba1:42d:2204:fff:feff:44a0) |
2021-09-07 18:14:27 +0200 | <lechner> | "the quote ... is widely used to express utter confusion" https://knowyourmeme.com/memes/is-this-a-pigeon |
2021-09-07 18:14:29 +0200 | <janus> | is it a bigger sin to use 'bad' than use 'proof'? they are both subjective |
2021-09-07 18:14:51 +0200 | <monochrom> | No I'm just saying if I took up that bait, 10 minutes down the road you would be weaseling out with "'bad" is ill-defined". |
2021-09-07 18:15:40 +0200 | <lechner> | maybe a poem about it would shed more light on the truth |
2021-09-07 18:15:50 +0200 | <dminuoso> | 17:21:53 kuribas | I suppose haskell is the most "advanced" among practical languages. |
2021-09-07 18:15:54 +0200 | <dminuoso> | Depends on what you mean by advanced. |
2021-09-07 18:16:38 +0200 | <dminuoso> | If by "advanced" you mean complicated, C or C++ win by a large margin. Or even Python in terms of having to be very talented in order to write or manage non-trivial code. |
2021-09-07 18:16:39 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-07 18:16:59 +0200 | <Hecate> | I think it stopped being "the most advanced" with Koka and its effect handlers |
2021-09-07 18:17:25 +0200 | <kuribas> | dminuoso: I was thinking more in an "academic" sense. |
2021-09-07 18:17:51 +0200 | <dminuoso> | Mmm, hard to say. |
2021-09-07 18:17:51 +0200 | <Hecate> | kuribas: from an Academic perspective, OCaml and Haskell are basically at the same level |
2021-09-07 18:18:02 +0200 | <dminuoso> | Haskell in the sense of Haskell2010 is rather simple. |
2021-09-07 18:18:14 +0200 | <dminuoso> | Much of the complicated parts are in the libraries, not the language. |
2021-09-07 18:18:44 +0200 | <dminuoso> | Rust with borrow checking is also not trivial |
2021-09-07 18:18:46 +0200 | <kuribas> | dminuoso: sure, but does anyone actually programin in haskell2010? |
2021-09-07 18:19:05 +0200 | <monochrom> | I sometimes do. |
2021-09-07 18:19:11 +0200 | <kuribas> | dminuoso: true, I didn't consider rust, which is getting pretty popular. |
2021-09-07 18:19:19 +0200 | <monochrom> | At least it's better than Haskell98. |
2021-09-07 18:19:43 +0200 | <kuribas> | does Haskell2010 have multiparam typeclasses? |
2021-09-07 18:19:47 +0200 | <monochrom> | No. |
2021-09-07 18:20:34 +0200 | <monochrom> | But it has pattern guards. :) |
2021-09-07 18:20:51 +0200 | <Hecate> | kuribas: no you need to enable it in GHC, IIRC |
2021-09-07 18:21:21 +0200 | <dminuoso> | Hecate: That's just GHC being weird. |
2021-09-07 18:21:32 +0200 | <monochrom> | When I step outside of Haskell2010, usually it is only because of scoped type variables and exceptions. |
2021-09-07 18:21:38 +0200 | <dminuoso> | And hold on, you dont need to enable pattern guards. |
2021-09-07 18:21:40 +0200 | <dminuoso> | Im very sure |
2021-09-07 18:21:48 +0200 | <kuribas> | monochrom: no multiparam typeclasses? |
2021-09-07 18:21:52 +0200 | <monochrom> | No. |
2021-09-07 18:21:53 +0200 | <kuribas> | monochrom: no generics? |
2021-09-07 18:21:54 +0200 | <dminuoso> | I regularly use them, and I never had to flip on an extension for it. |
2021-09-07 18:21:57 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-09-07 18:21:57 +0200 | <monochrom> | No. |
2021-09-07 18:22:17 +0200 | <Hecate> | dminuoso: I don't understand your point |
2021-09-07 18:22:24 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-07 18:22:44 +0200 | <dminuoso> | Hecate: Sorry, I got the lines mixed up - caused some confusion. |
2021-09-07 18:22:48 +0200 | <Hecate> | ok no worries |
2021-09-07 18:22:50 +0200 | maxime_ | (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Quit: Leaving) |
2021-09-07 18:23:13 +0200 | chisui | (~chisui@200116b868697b00c8225f803a065f0d.dip.versatel-1u1.de) (Quit: Client closed) |
2021-09-07 18:23:19 +0200 | <Hecate> | dminuoso: I become extremely defensive when people say "oh that's just implementation-specific" when there is only one implementation which is used everywhere :P |
2021-09-07 18:23:59 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 18:24:12 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 18:24:45 +0200 | <monochrom> | Yeah I don't draw that line in all contexts. Only in some contexts when it's reasonable to. |
2021-09-07 18:25:42 +0200 | <monochrom> | A lot of times, to a lot of people who are interested in getting things done, names like "Haskell", "C", "Python" mean what programmers actually do, not what the defining documents say. |
2021-09-07 18:26:31 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) |
2021-09-07 18:27:30 +0200 | <kuribas> | monochrom: then you never use Vector? |
2021-09-07 18:27:41 +0200 | <kuribas> | as it uses type-families, etc... |
2021-09-07 18:27:45 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-09-07 18:28:22 +0200 | <Hecate> | especially since we said "fuck you" to the definition quite some time ago for Haskell, that C is mostly implementation-specific so the standard isn't worth more than your compiler… |
2021-09-07 18:28:33 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-07 18:28:40 +0200 | <kuribas> | does having a standard even matter for haskell? |
2021-09-07 18:28:41 +0200 | <Hecate> | Python I can respect the fact that PyPy is an absolute unit when it comes to performance |
2021-09-07 18:28:57 +0200 | <kuribas> | for Python it actually would matter :) |
2021-09-07 18:31:09 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Quit: Leaving) |
2021-09-07 18:32:33 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-09-07 18:34:15 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-09-07 18:34:41 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-07 18:37:45 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2021-09-07 18:38:00 +0200 | Erutuon | (~Erutuon@user/erutuon) |
2021-09-07 18:38:19 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-09-07 18:38:44 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-09-07 18:39:32 +0200 | <maerwald> | standard matters for any language |
2021-09-07 18:40:05 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-09-07 18:40:16 +0200 | <maerwald> | unless you have a C++ workflow |
2021-09-07 18:40:21 +0200 | <maerwald> | then it really makes no difference |
2021-09-07 18:40:21 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-07 18:40:33 +0200 | <maerwald> | the idea is that a language shouldn't grow randomly |
2021-09-07 18:40:56 +0200 | <maerwald> | a standard is likely to enforce some discipline there |
2021-09-07 18:41:19 +0200 | max22- | (~maxime@2a01cb0883359800554e78e897c895d5.ipv6.abo.wanadoo.fr) |
2021-09-07 18:41:24 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-09-07 18:42:58 +0200 | <c_wraith> | agh. I just figured out what problem I'm having. |
2021-09-07 18:43:02 +0200 | <c_wraith> | :t callCC |
2021-09-07 18:43:04 +0200 | <lambdabot> | MonadCont m => ((a -> m b) -> m a) -> m a |
2021-09-07 18:43:10 +0200 | <c_wraith> | that's not polymorphic enough! :( |
2021-09-07 18:43:35 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-09-07 18:44:12 +0200 | <c_wraith> | I want to choose b independently at each use of the function provided |
2021-09-07 18:45:37 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-09-07 18:46:25 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-07 18:46:57 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-09-07 18:47:00 +0200 | <c_wraith> | well. When I have time, that's something to experiment on with quick look impredicativity. |
2021-09-07 18:47:16 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-09-07 18:47:22 +0200 | <c_wraith> | ... nevermind, that just needs a higher-rank type. Not impredicativity |
2021-09-07 18:48:54 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Excess Flood) |
2021-09-07 18:48:55 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2.1) |
2021-09-07 18:49:14 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-09-07 18:51:55 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-09-07 18:52:29 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-07 18:52:44 +0200 | john2312 | (~user@114.250.137.142) (Ping timeout: 252 seconds) |
2021-09-07 18:53:51 +0200 | <awpr> | seems to me you can make the more polymorphic version out of the standard one -- callCC (\k -> absurd <$> k _something), or factor that (fmap absurd . k) into a let-binding, or even wrap callCC with type ((forall b. a -> m b) -> m a) -> m a |
2021-09-07 18:53:52 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-09-07 18:54:14 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-09-07 18:56:34 +0200 | <monochrom> | kuribas: Heh right, I sometimes use vector. But not very often. |
2021-09-07 18:57:01 +0200 | <awpr> | c_wraith: it does seem like a worthwhile convenience for callCC to have, though. I wonder if there's a way for transformers/mtl to add this without interfering with Haskell98 support, e.g. CPP that only enables it on (non-ancient) GHC |
2021-09-07 18:57:41 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-09-07 18:57:58 +0200 | <c_wraith> | it's not like mtl and transformers try to work on non-ghc these days |
2021-09-07 18:58:02 +0200 | <monochrom> | c_wraith: Congrats on discovering the truth :) |
2021-09-07 18:58:32 +0200 | <dminuoso> | c_wraith: :s/mtl and transformers/anything on hackage/ |
2021-09-07 18:58:34 +0200 | <awpr> | yeah I was just poking around at the metadata to figure that out. maybe there's no obstacle to it |
2021-09-07 18:58:39 +0200 | <c_wraith> | I wonder if that'd be a breaking change. |
2021-09-07 18:58:41 +0200 | <monochrom> | The nice thing is that you only need to fix the type sig. The function body is the same. |
2021-09-07 18:58:43 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-07 18:59:00 +0200 | <c_wraith> | like, if the type change would break any code anywhere relying on it for inference. |
2021-09-07 18:59:19 +0200 | <monochrom> | Yeah it may be a breaking change. |
2021-09-07 18:59:33 +0200 | <awpr> | I suppose it would break instances of using TypeApplications on callCC |
2021-09-07 18:59:59 +0200 | <monochrom> | I think adding a second name is safer than changing the type on the original name. |
2021-09-07 19:00:02 +0200 | <c_wraith> | oh, right. that too. |
2021-09-07 19:00:32 +0200 | <monochrom> | I don't think realistically callCC has been or will be used with type application. :) |
2021-09-07 19:00:58 +0200 | <c_wraith> | you're right, but it feels like there's a danger of becoming php if you go too far that direction. foo, foo_real, foo_real_fixed, etc |
2021-09-07 19:01:03 +0200 | <dminuoso> | TypeApplications has too many issues to be seriously used as part of an API. |
2021-09-07 19:01:28 +0200 | <awpr> | is this perhaps one of those cases where GHC would not complain if a type variable is completely unconstrained? |
2021-09-07 19:01:32 +0200 | <monochrom> | callCC itself is already pretty fringe. And it is not one of those things that gains much from type application. It is not even a type-level programming tool. |
2021-09-07 19:02:04 +0200 | <awpr> | I've never really understood when that can happen, but I've seen it here and there, when working with phantom types |
2021-09-07 19:02:15 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds) |
2021-09-07 19:02:43 +0200 | kuribas | (~user@ptr-25vy0i6t0eunz4pw5nt.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
2021-09-07 19:03:00 +0200 | <monochrom> | s/php/snoyman/ with his exception-safe |
2021-09-07 19:03:37 +0200 | <awpr> | er, "this" referring to calls to the callback provided by callCC where the result type would be ambiguous. if GHC would be okay with unconstrained types, then you can't be relying on it for inference, because they'd become unconstrained and still be fine |
2021-09-07 19:04:00 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-09-07 19:04:14 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-09-07 19:04:17 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-07 19:05:05 +0200 | <awpr> | I think I can contrive a case where the non-quantified version of the callback helps GHC choose an instance, so I guess it's not guaranteed to be safe |
2021-09-07 19:05:26 +0200 | <c_wraith> | yeah, that's certainly possible to construct. |
2021-09-07 19:07:03 +0200 | <c_wraith> | I don't think the whole thing really matters all that much, as the typical fix for problems with callCC is "don't use continuations" |
2021-09-07 19:07:19 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-09-07 19:08:14 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-09-07 19:08:30 +0200 | ub1 | (~Thunderbi@77.119.174.203.wireless.dyn.drei.com) |
2021-09-07 19:08:48 +0200 | ubert1 | (~Thunderbi@77.119.174.203.wireless.dyn.drei.com) |
2021-09-07 19:08:49 +0200 | <c_wraith> | I was mostly just poking at it to get a better intuition for what the type says. nothing I did is best expressed using callCC |
2021-09-07 19:09:14 +0200 | ub | (~Thunderbi@178.165.164.206.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
2021-09-07 19:09:50 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-09-07 19:10:22 +0200 | ubert | (~Thunderbi@178.165.164.206.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
2021-09-07 19:10:23 +0200 | ubert1 | ubert |
2021-09-07 19:10:24 +0200 | ub1 | ub |
2021-09-07 19:10:34 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-07 19:11:53 +0200 | aman_ | (~aman@user/aman) |
2021-09-07 19:14:31 +0200 | <lechner> | Lambdu looks super cool, but did the UI improvements require a new language? |
2021-09-07 19:15:01 +0200 | _ht | (~quassel@82-169-194-8.biz.kpn.net) |
2021-09-07 19:16:20 +0200 | <janus> | lechner: note that lamdu supports multiple languages for bindings. so a binding can have different names in different langauges. how would you encode that in an existing language? |
2021-09-07 19:16:41 +0200 | <monochrom> | https://xkcd.com/927/ |
2021-09-07 19:17:00 +0200 | <janus> | lechner: of course it can be done, it is yet anoth question of compromises. there are other 'structural' langauges, i linked this one because it is implemented in haskell and i think it is the neatest |
2021-09-07 19:17:02 +0200 | aarvar | (~aaron@2601:602:a080:fa0:e5a8:13bc:a9e7:fefb) |
2021-09-07 19:17:46 +0200 | <lechner> | janus: the language is neat, or the IDE is neat? |
2021-09-07 19:17:48 +0200 | pzanco | (~pzanco@2804:14c:3ba1:42d:2204:fff:feff:44a0) (Quit: Leaving) |
2021-09-07 19:17:50 +0200 | APic | (apic@apic.name) |
2021-09-07 19:18:00 +0200 | <janus> | is there an xkcd for "we developed an incompatible implementation of an existing standard" that i can send when people send xkcd 927?? |
2021-09-07 19:18:44 +0200 | <monochrom> | I think no. I think I'm pretty safe. |
2021-09-07 19:18:59 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-09-07 19:19:19 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 19:19:28 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 265 seconds) |
2021-09-07 19:19:34 +0200 | <monochrom> | But you should interpret it more broadly. Instead of "standard", it could just as well be "language", "implementation", "philosophy". |
2021-09-07 19:19:39 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 19:19:49 +0200 | <monochrom> | So, how about sending 927 back to those who send 927? |
2021-09-07 19:20:06 +0200 | <monochrom> | I send 927 to those who don't send 927 to themselves. |
2021-09-07 19:20:37 +0200 | <janus> | lechner: i think their videos are really neat, i think the animations in the IDE is really neat . i think you still can't make your own data types, so the language probably is incomplete :P |
2021-09-07 19:20:54 +0200 | <Gurkenglas> | monochrom, you're lucky haskell is inconsistent |
2021-09-07 19:21:04 +0200 | <janus> | lechner: but they are building it on their own AST library which i still have to understand... some day https://hackage.haskell.org/package/hypertypes |
2021-09-07 19:21:40 +0200 | <janus> | lechner: the github explains how they build on data types a la carte: https://github.com/lamdu/hypertypes#readme |
2021-09-07 19:21:55 +0200 | MQ-17J | (~MQ-17J@2607:fb90:46:a8a6:384f:d5fd:c3eb:fa6f) (Read error: Connection reset by peer) |
2021-09-07 19:22:22 +0200 | <lechner> | janus: i may want that IDE, but I'm lukewarm about learning a new language |
2021-09-07 19:22:38 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 19:23:03 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) (Read error: Connection reset by peer) |
2021-09-07 19:23:22 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) |
2021-09-07 19:23:29 +0200 | <lechner> | they could so totally build for Haskell what Eclipse was for Java |
2021-09-07 19:23:29 +0200 | <monochrom> | When one day every language is similar to Haskell, |
2021-09-07 19:23:45 +0200 | <monochrom> | we can say "learning a new language is just a matter of picking up new syntax" again! |
2021-09-07 19:23:55 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-09-07 19:24:14 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-09-07 19:24:40 +0200 | <janus> | lechner: apropos eclipse , did you see https://www.jetbrains.com/mps/ ? |
2021-09-07 19:25:32 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 245 seconds) |
2021-09-07 19:27:20 +0200 | <raehik> | janus: that library looks veeeery interesting, thank you! |
2021-09-07 19:29:40 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 260 seconds) |
2021-09-07 19:30:13 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 19:31:31 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-07 19:32:11 +0200 | StefanMeier | (~StefanMei@cm56-244-20.liwest.at) |
2021-09-07 19:32:54 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-09-07 19:34:44 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-09-07 19:34:46 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 19:34:59 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 19:35:25 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 265 seconds) |
2021-09-07 19:35:32 +0200 | <StefanMeier> | hello. i'm having strange issues with ghci on Windows when I terminate a process with control-c. the process seems to still run in the background spamming my inputs. |
2021-09-07 19:36:23 +0200 | <StefanMeier> | Windows 10, platform installed with stack, running "stack ghci", tried in terminal: cmd, git bash, cygwin, msys2, powershell, powershell 7, msys2 + winpty. but nothing works |
2021-09-07 19:36:46 +0200 | xff0x | (~xff0x@2001:1a81:5244:5800:ade4:7c8b:9b3b:6271) (Ping timeout: 252 seconds) |
2021-09-07 19:37:17 +0200 | <StefanMeier> | using ghc 9.0.1 |
2021-09-07 19:37:44 +0200 | xff0x | (~xff0x@2001:1a81:5244:5800:bebc:1a37:2a8f:4a9c) |
2021-09-07 19:39:42 +0200 | burnsidesLlama | (~burnsides@dhcp168-020.wadham.ox.ac.uk) |
2021-09-07 19:41:19 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2021-09-07 19:42:40 +0200 | qbt | (~edun@user/edun) (Ping timeout: 265 seconds) |
2021-09-07 19:42:46 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
2021-09-07 19:42:46 +0200 | allbery_b | (~geekosaur@xmonad/geekosaur) |
2021-09-07 19:42:50 +0200 | allbery_b | geekosaur |
2021-09-07 19:43:05 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 260 seconds) |
2021-09-07 19:44:37 +0200 | qbt | (~edun@user/edun) |
2021-09-07 19:46:25 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-09-07 19:46:44 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-09-07 19:48:13 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 19:48:45 +0200 | <zzz> | that's weird. the process never exits? can you kill it? what terminal are you using? |
2021-09-07 19:49:49 +0200 | <StefanMeier> | apparently it's a "stack ghci" issues. https://github.com/commercialhaskell/stack/issues/4737 |
2021-09-07 19:49:49 +0200 | <StefanMeier> | https://github.com/commercialhaskell/stack/issues/610 |
2021-09-07 19:50:31 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 252 seconds) |
2021-09-07 19:50:35 +0200 | <StefanMeier> | when I run plain "ghci" and press control-c twice, everything is fine. "stack ghci" and control-c twice produces strange glitches and exits ghci, while keeping the process in the backgorund |
2021-09-07 19:50:53 +0200 | favonia | (~favonia@user/favonia) |
2021-09-07 19:52:43 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds) |
2021-09-07 19:53:02 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 19:54:36 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-07 19:57:39 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 265 seconds) |
2021-09-07 19:59:50 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-09-07 20:00:50 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 20:04:52 +0200 | fryguybob | (~fryguybob@cpe-74-65-31-113.rochester.res.rr.com) (Ping timeout: 256 seconds) |
2021-09-07 20:05:27 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-09-07 20:07:01 +0200 | StefanMeier | (~StefanMei@cm56-244-20.liwest.at) (Quit: Client closed) |
2021-09-07 20:07:32 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds) |
2021-09-07 20:07:57 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 20:11:05 +0200 | arjun | (~Srain@user/arjun) (Remote host closed the connection) |
2021-09-07 20:11:19 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-09-07 20:11:43 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-09-07 20:12:38 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 265 seconds) |
2021-09-07 20:12:57 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 20:16:05 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-09-07 20:16:05 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-09-07 20:16:05 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-09-07 20:20:45 +0200 | aman_ | (~aman@user/aman) (Quit: aman_) |
2021-09-07 20:21:04 +0200 | aman | (~aman@user/aman) |
2021-09-07 20:21:27 +0200 | fryguybob | (~fryguybob@cpe-74-65-17-248.rochester.res.rr.com) |
2021-09-07 20:27:20 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds) |
2021-09-07 20:28:30 +0200 | zebrag | (~chris@user/zebrag) (Remote host closed the connection) |
2021-09-07 20:31:22 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-07 20:35:35 +0200 | max22- | (~maxime@2a01cb0883359800554e78e897c895d5.ipv6.abo.wanadoo.fr) (Ping timeout: 260 seconds) |
2021-09-07 20:36:55 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) |
2021-09-07 20:38:49 +0200 | slack1256 | (~slack1256@12.0.89.245) (Remote host closed the connection) |
2021-09-07 20:39:09 +0200 | jess | (~jess@libera/staff/jess) |
2021-09-07 20:40:11 +0200 | lbseale | (~lbseale@user/ep1ctetus) (Ping timeout: 265 seconds) |
2021-09-07 20:40:12 +0200 | slack1256 | (~slack1256@12.0.89.245) |
2021-09-07 20:40:50 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 260 seconds) |
2021-09-07 20:43:26 +0200 | roboguy_ | (~roboguy_@cpe-98-156-4-161.kc.res.rr.com) |
2021-09-07 20:46:09 +0200 | MQ-17J | (~MQ-17J@8.21.10.6) |
2021-09-07 20:48:37 +0200 | lbseale | (~lbseale@user/ep1ctetus) |
2021-09-07 20:49:56 +0200 | no-n | (~ed@101.53.218.157) |
2021-09-07 20:50:15 +0200 | no-n | pony |
2021-09-07 20:51:32 +0200 | jtomas | (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Ping timeout: 252 seconds) |
2021-09-07 20:51:51 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2) |
2021-09-07 20:51:55 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds) |
2021-09-07 20:52:13 +0200 | <maerwald[m]> | ghcii? |
2021-09-07 20:53:07 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-09-07 20:53:08 +0200 | lbseale | (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer) |
2021-09-07 20:53:25 +0200 | xyh | (~xyh@113.92.75.47) |
2021-09-07 20:55:06 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 20:55:19 +0200 | michalz | (~michalz@185.246.204.41) (Remote host closed the connection) |
2021-09-07 20:55:19 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 20:56:33 +0200 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2021-09-07 20:56:46 +0200 | oxide | (~lambda@user/oxide) (Quit: oxide) |
2021-09-07 21:02:47 +0200 | burnsidesLlama | (~burnsides@dhcp168-020.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-09-07 21:04:42 +0200 | roboguy_ | (~roboguy_@cpe-98-156-4-161.kc.res.rr.com) (Remote host closed the connection) |
2021-09-07 21:05:17 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-09-07 21:06:19 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-09-07 21:07:20 +0200 | roboguy_ | (~roboguy_@cpe-98-156-4-161.kc.res.rr.com) |
2021-09-07 21:07:41 +0200 | kenran | (~kenran@200116b82b0c2200502f5bd42a0f55ef.dip.versatel-1u1.de) |
2021-09-07 21:07:46 +0200 | <sm> | @StefanMeier:libera.chat: i used to hit that quite often on non windows.. +1 if you've found a repro |
2021-09-07 21:07:46 +0200 | <lambdabot> | Unknown command, try @list |
2021-09-07 21:07:54 +0200 | <sm> | g'day all |
2021-09-07 21:08:31 +0200 | roboguy_ | (~roboguy_@cpe-98-156-4-161.kc.res.rr.com) (Remote host closed the connection) |
2021-09-07 21:08:43 +0200 | roboguy_ | (~roboguy_@cpe-98-156-4-161.kc.res.rr.com) |
2021-09-07 21:10:47 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
2021-09-07 21:11:54 +0200 | <tomsmeding> | sm: you're hitting that on something _other_ than windows? |
2021-09-07 21:13:28 +0200 | pzanco | (~pzanco@2804:14c:3ba1:42d:2204:fff:feff:44a0) |
2021-09-07 21:14:29 +0200 | mikoto-chan | (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) |
2021-09-07 21:14:38 +0200 | mikoto-chan | (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Client Quit) |
2021-09-07 21:15:05 +0200 | max22- | (~maxime@2a01cb08833598001355d88e505fa1ae.ipv6.abo.wanadoo.fr) |
2021-09-07 21:15:13 +0200 | aarvar | (~aaron@2601:602:a080:fa0:e5a8:13bc:a9e7:fefb) (Ping timeout: 252 seconds) |
2021-09-07 21:15:28 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2021-09-07 21:18:00 +0200 | pzanco | (~pzanco@2804:14c:3ba1:42d:2204:fff:feff:44a0) (Client Quit) |
2021-09-07 21:18:23 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) |
2021-09-07 21:19:43 +0200 | <c_wraith> | huh. I was just thinking about the challenge some people face with learning recursion, when they have trouble tracing the whole thing in their head. we tell them to just make sure it works correctly if it works correctly. |
2021-09-07 21:20:23 +0200 | <c_wraith> | then it hit me - the form of that logic is (works correctly -> works correctly) -> works correctly |
2021-09-07 21:20:26 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 21:20:38 +0200 | <c_wraith> | that's not a coincidence. |
2021-09-07 21:20:41 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 21:20:47 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Client Quit) |
2021-09-07 21:20:52 +0200 | <tomsmeding> | no, it is: works(basecase) -> (works(n) -> works(n+1)) -> works, which is induction on N :p |
2021-09-07 21:21:04 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 21:22:05 +0200 | <tomsmeding> | or, well, that should really be the induction principle of whatever data structure you're recursing over, instead of N |
2021-09-07 21:23:39 +0200 | kimjetwav | (~user@2607:fea8:235f:9730:2829:edb2:f2b7:f87c) |
2021-09-07 21:25:00 +0200 | <c_wraith> | that's not the general case anyway. the general case is "works correctly on all sub-structures", not just one size down. |
2021-09-07 21:25:04 +0200 | <tomsmeding> | perhaps, instead of teaching people induction, we should teach them writing recursive programs [I'm not being serious] |
2021-09-07 21:25:37 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds) |
2021-09-07 21:26:37 +0200 | <tomsmeding> | right, though I'm not sure I can think of a recursive function where you actively need to apply strong induction in order to see why it works |
2021-09-07 21:27:24 +0200 | <c_wraith> | Fibonacci? |
2021-09-07 21:27:33 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-09-07 21:27:49 +0200 | <c_wraith> | quick sort. |
2021-09-07 21:27:52 +0200 | neo1 | (~neo3@cpe-292712.ip.primehome.com) (Ping timeout: 252 seconds) |
2021-09-07 21:27:56 +0200 | <c_wraith> | there are lots of examples. |
2021-09-07 21:27:57 +0200 | aarvar | (~aaron@2601:602:a080:fa0:18d6:e186:b364:ee0b) |
2021-09-07 21:28:54 +0200 | <tomsmeding> | hm, right, so this depends on what you consider to be the structure you're recursing over |
2021-09-07 21:28:56 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds) |
2021-09-07 21:29:15 +0200 | vysn | (~vysn@user/vysn) (Quit: WeeChat 3.2) |
2021-09-07 21:29:28 +0200 | <tomsmeding> | indeed for quick sort the actual tree structure you're folding is quite unnatural to the uninitiated programmer |
2021-09-07 21:29:43 +0200 | vysn | (~vysn@user/vysn) |
2021-09-07 21:29:45 +0200 | <tomsmeding> | quick sort is a good example |
2021-09-07 21:30:42 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-09-07 21:30:44 +0200 | <awpr> | I guess the idea is if you think of it as building up proofs that "quicksort works for all arrays of length N", then it's strong induction, but for "quicksort works for _this array_" then it's just structural on subsequences of the array? |
2021-09-07 21:31:08 +0200 | <tomsmeding> | next level up: analyse a recursive function that doesn't have a single parameter that's always smaller in the recursive calls (i.e. a function that would fail standard totality checks in agda/idris/coq) |
2021-09-07 21:31:10 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 21:31:27 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 21:31:35 +0200 | <c_wraith> | 3n+1. not even proven to terminate! |
2021-09-07 21:32:07 +0200 | <c_wraith> | ok, that's not well-founded recursion anymore. |
2021-09-07 21:32:26 +0200 | <tomsmeding> | what does it even mean to "understand" how the recursion works in an implementation of collatz :p |
2021-09-07 21:33:21 +0200 | <c_wraith> | I think it means you get to publish some papers and be internet famous |
2021-09-07 21:33:46 +0200 | <tomsmeding> | awpr: from a suitably ivory-tower perspective, quicksort recurses over a binary tree structure that gives the precise partitioning decisions for this particular array |
2021-09-07 21:34:36 +0200 | <tomsmeding> | but that's not really a useful perspective in practice often |
2021-09-07 21:34:40 +0200 | <tomsmeding> | c_wraith: heh yes |
2021-09-07 21:34:48 +0200 | <awpr> | tomsmeding: yeah, that's what I was getting at, I guess I didn't convey it too well |
2021-09-07 21:34:56 +0200 | <tomsmeding> | right |
2021-09-07 21:36:33 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 21:36:48 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 21:37:24 +0200 | burnsidesLlama | (~burnsides@dhcp168-020.wadham.ox.ac.uk) |
2021-09-07 21:41:16 +0200 | asivitz | (uid178348@id-178348.tinside.irccloud.com) |
2021-09-07 21:41:17 +0200 | tfeb | (~tfb@88.98.95.237) |
2021-09-07 21:42:32 +0200 | roboguy_ | (~roboguy_@cpe-98-156-4-161.kc.res.rr.com) (Remote host closed the connection) |
2021-09-07 21:43:01 +0200 | burnsidesLlama | (~burnsides@dhcp168-020.wadham.ox.ac.uk) (Ping timeout: 265 seconds) |
2021-09-07 21:43:20 +0200 | roboguy_ | (~roboguy_@cpe-98-156-4-161.kc.res.rr.com) |
2021-09-07 21:44:26 +0200 | aman | (~aman@user/aman) (Quit: aman) |
2021-09-07 21:45:55 +0200 | wonko | (~wjc@62.115.229.50) (Ping timeout: 265 seconds) |
2021-09-07 21:47:42 +0200 | roboguy_ | (~roboguy_@cpe-98-156-4-161.kc.res.rr.com) (Remote host closed the connection) |
2021-09-07 21:47:54 +0200 | roboguy_ | (~roboguy_@cpe-98-156-4-161.kc.res.rr.com) |
2021-09-07 21:48:44 +0200 | roboguy__ | (~roboguy_@cpe-98-156-4-161.kc.res.rr.com) |
2021-09-07 21:48:45 +0200 | roboguy_ | (~roboguy_@cpe-98-156-4-161.kc.res.rr.com) (Read error: Connection reset by peer) |
2021-09-07 21:52:11 +0200 | wrengr | (~wrengr@56.72.82.34.bc.googleusercontent.com) (Quit: leaving) |
2021-09-07 21:52:12 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 265 seconds) |
2021-09-07 21:52:28 +0200 | wrengr | (~wrengr@56.72.82.34.bc.googleusercontent.com) |
2021-09-07 21:54:20 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 260 seconds) |
2021-09-07 21:59:28 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-09-07 21:59:28 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-09-07 21:59:28 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-09-07 21:59:46 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 252 seconds) |
2021-09-07 22:00:45 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-07 22:05:24 +0200 | juhp | (~juhp@128.106.188.220) (Ping timeout: 250 seconds) |
2021-09-07 22:06:31 +0200 | _ht | (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
2021-09-07 22:08:00 +0200 | juhp | (~juhp@128.106.188.220) |
2021-09-07 22:08:06 +0200 | tfeb | (~tfb@88.98.95.237) (Quit: died) |
2021-09-07 22:08:15 +0200 | tfeb | (~tfb@88.98.95.237) |
2021-09-07 22:08:37 +0200 | pony | (~ed@101.53.218.157) (WeeChat 2.8) |
2021-09-07 22:08:47 +0200 | hiruji | (~hiruji@user/hiruji) (Ping timeout: 245 seconds) |
2021-09-07 22:10:21 +0200 | hiruji | (~hiruji@user/hiruji) |
2021-09-07 22:10:52 +0200 | mikoto-chan | (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) |
2021-09-07 22:12:17 +0200 | roboguy__ | (~roboguy_@cpe-98-156-4-161.kc.res.rr.com) () |
2021-09-07 22:15:53 +0200 | mikoto-chan | (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 265 seconds) |
2021-09-07 22:16:41 +0200 | <lechner> | Hi, for a newbie reimplementing a Node website in Haskell, is there a reason to prefer scotty over servant? |
2021-09-07 22:17:15 +0200 | mikoto-chan | (~mikoto-ch@83.137.2.243) |
2021-09-07 22:17:16 +0200 | <slack1256> | Scotty is easier to set up and work with. |
2021-09-07 22:17:22 +0200 | <dsal> | What's a Node website? |
2021-09-07 22:17:50 +0200 | <geekosaur> | node.js? |
2021-09-07 22:17:50 +0200 | <slack1256> | nodejs backend I think.k |
2021-09-07 22:17:50 +0200 | <dsal> | I've meant to learn servant a few times, but I always do scotty like a plebe. |
2021-09-07 22:17:57 +0200 | <lechner> | dsal: http://expressjs.com/ |
2021-09-07 22:18:03 +0200 | <dsal> | Like ghcjs? |
2021-09-07 22:18:39 +0200 | <xsperry> | I always used scotty as well. what's the advantage of servant? |
2021-09-07 22:18:41 +0200 | <slack1256> | dsal: https://en.wikipedia.org/wiki/Node.js |
2021-09-07 22:18:53 +0200 | <dsal> | Ooh. I missed "re" in that initial question and it was very confusing for me. |
2021-09-07 22:19:01 +0200 | <dsal> | xsperry: servant does a lot of really neat type magic. |
2021-09-07 22:19:14 +0200 | <lechner> | slack1256: for debian, i can only send server-generated content. too many folks with text browsers |
2021-09-07 22:19:29 +0200 | zer0bitz_ | (~zer0bitz@dsl-hkibng31-58c384-213.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-09-07 22:19:59 +0200 | <slack1256> | Servant can be used to describe the endpoint of a http interface. So you can say "On this endpoing, only json put queries allowed and they should have this format". It is cool but not world changing for me, at least when prototyping. |
2021-09-07 22:20:07 +0200 | <lechner> | servant does some cool stuff and may make it easier to implement an existing JSON query interface |
2021-09-07 22:20:08 +0200 | <dsal> | I've mostly avoided writing anything in node.js, but scotty is easy to understand and get started with. I've done pretty neat stuff with it. |
2021-09-07 22:20:30 +0200 | ub | (~Thunderbi@77.119.174.203.wireless.dyn.drei.com) (Read error: Connection reset by peer) |
2021-09-07 22:20:46 +0200 | ub | (~Thunderbi@77.119.174.203.wireless.dyn.drei.com) |
2021-09-07 22:21:03 +0200 | <lechner> | okay, maybe i'll give scotty a shot |
2021-09-07 22:21:11 +0200 | <dsal> | Give scotty the shotty |
2021-09-07 22:21:32 +0200 | <lechner> | dsal: you used blaze or lucid? |
2021-09-07 22:21:39 +0200 | <dsal> | Nah. |
2021-09-07 22:21:47 +0200 | <lechner> | <> ? |
2021-09-07 22:21:59 +0200 | <dsal> | The only thing I've got an actual UX in is in elm. |
2021-09-07 22:22:05 +0200 | <lechner> | i see |
2021-09-07 22:22:07 +0200 | <dsal> | The backend just does JSON and static. |
2021-09-07 22:22:30 +0200 | <lechner> | is elm stil your favorite? |
2021-09-07 22:22:39 +0200 | <slack1256> | I would not be that concerned of choosing the "right" library. You can always rewrite an API from scotty to servant. Both libraries make clear what should be translated between the two. |
2021-09-07 22:22:40 +0200 | fryguybob | (~fryguybob@cpe-74-65-17-248.rochester.res.rr.com) (Ping timeout: 265 seconds) |
2021-09-07 22:22:45 +0200 | <dsal> | I wouldn't say elm has ever been my favorite, but elm is pretty good at what elm is good at. |
2021-09-07 22:24:16 +0200 | <lechner> | i probably can't use either, but what about RFP, Miso or Purescript? |
2021-09-07 22:25:15 +0200 | ub | (~Thunderbi@77.119.174.203.wireless.dyn.drei.com) (Ping timeout: 260 seconds) |
2021-09-07 22:25:39 +0200 | <dsal> | I've had a good time with purescript recently. |
2021-09-07 22:25:54 +0200 | <dsal> | I used it to replace a bunch of gross JS in a Google Sheets thing. |
2021-09-07 22:26:33 +0200 | <dsal> | elm is much more limited in what it does and can do in a good way if you're doing the stuff it's good at. |
2021-09-07 22:26:39 +0200 | <lechner> | with halogen? |
2021-09-07 22:27:00 +0200 | MQ-17J | (~MQ-17J@8.21.10.6) (Ping timeout: 260 seconds) |
2021-09-07 22:29:15 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 22:29:44 +0200 | tfeb | (~tfb@88.98.95.237) (Remote host closed the connection) |
2021-09-07 22:29:57 +0200 | <dsal> | I don't know what halogen is, so probably not. |
2021-09-07 22:30:19 +0200 | <dsal> | Oh, no. This is just backend junk for a spreadsheet. No UI components. |
2021-09-07 22:30:22 +0200 | <lechner> | no worries, thanks to everyone! |
2021-09-07 22:30:38 +0200 | <lechner> | dsal: thanks! |
2021-09-07 22:30:52 +0200 | <lechner> | as always |
2021-09-07 22:31:54 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-07 22:32:03 +0200 | <dsal> | The spreadsheet is the UI. The scripts run on a timer and get new data to update the spreadsheet automatically. |
2021-09-07 22:32:09 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 22:32:15 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Client Quit) |
2021-09-07 22:32:23 +0200 | vysn | (~vysn@user/vysn) (Quit: WeeChat 3.2) |
2021-09-07 22:32:30 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-07 22:32:40 +0200 | vysn | (~vysn@user/vysn) |
2021-09-07 22:33:50 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2021-09-07 22:33:52 +0200 | Kaiepi | (~Kaiepi@156.34.44.192) |
2021-09-07 22:34:16 +0200 | Kaipi | (~Kaiepi@156.34.44.192) (Ping timeout: 252 seconds) |
2021-09-07 22:34:25 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
2021-09-07 22:34:59 +0200 | kjak | (~kjak@pool-108-45-56-21.washdc.fios.verizon.net) |
2021-09-07 22:35:13 +0200 | slack1256 | (~slack1256@12.0.89.245) (Remote host closed the connection) |
2021-09-07 22:36:11 +0200 | <lechner> | Can 'let' take two lvalues? https://github.com/eckyputrady/haskell-scotty-realworld-example-app/blob/master/src/Lib.hs#L34 |
2021-09-07 22:36:12 +0200 | <sm> | sounds nice! |
2021-09-07 22:37:08 +0200 | <geekosaur> | lechner: that defines a local function |
2021-09-07 22:37:10 +0200 | ubert | (~Thunderbi@77.119.174.203.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
2021-09-07 22:37:28 +0200 | <sm> | dsal, you are one of the few haskellers I hear regularly building practical projects - good to hear |
2021-09-07 22:37:45 +0200 | <sm> | "real-world" practical |
2021-09-07 22:37:49 +0200 | kenran | (~kenran@200116b82b0c2200502f5bd42a0f55ef.dip.versatel-1u1.de) (Quit: WeeChat info:version) |
2021-09-07 22:38:36 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 265 seconds) |
2021-09-07 22:38:55 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 22:41:07 +0200 | ubert | (~Thunderbi@77.119.174.203.wireless.dyn.drei.com) |
2021-09-07 22:42:23 +0200 | <lechner> | geekosaur: even without 'in' ? |
2021-09-07 22:42:24 +0200 | Unhammer | (~Unhammer@user/unhammer) (Ping timeout: 256 seconds) |
2021-09-07 22:43:32 +0200 | zebrag | (~chris@user/zebrag) |
2021-09-07 22:44:52 +0200 | <geekosaur> | it's in a do expression, so yes |
2021-09-07 22:45:05 +0200 | <geekosaur> | it desugars to the let-in style |
2021-09-07 22:45:52 +0200 | troydm | (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 252 seconds) |
2021-09-07 22:45:52 +0200 | <lechner> | okay, finally i'm getting something |
2021-09-07 22:46:36 +0200 | aravk | (~aravk@user/aravk) (Remote host closed the connection) |
2021-09-07 22:47:30 +0200 | <lechner> | geekosaur: but isn't 'runner' missing an argument in the next line? https://github.com/eckyputrady/haskell-scotty-realworld-example-app/blob/master/src/Lib.hs#L35 |
2021-09-07 22:47:41 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2021-09-07 22:48:17 +0200 | <geekosaur> | that just means HTTP.main expects a function, which it presumably provides a parameter to |
2021-09-07 22:48:30 +0200 | <geekosaur> | my guess is it accepts a connection and calls runner on it |
2021-09-07 22:49:22 +0200 | <lechner> | i should have remembered that "functions are first-class citizens" |
2021-09-07 22:49:29 +0200 | <lechner> | geekosaur: thanks! |
2021-09-07 22:49:43 +0200 | <geekosaur> | and the definition of runner seems to support that |
2021-09-07 22:50:20 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 252 seconds) |
2021-09-07 22:52:20 +0200 | <lechner> | okay, i have one more for today: What's up with all the 'deriving' clauses, please? If it is automatic, why isn't everything derived by default? |
2021-09-07 22:52:52 +0200 | <sm> | it's not free.. it can produce a lot of code |
2021-09-07 22:53:06 +0200 | <sm> | and every class doesn't make sense for every type |
2021-09-07 22:53:24 +0200 | <lechner> | i see |
2021-09-07 22:53:47 +0200 | cheater | (~Username@user/cheater) |
2021-09-07 22:53:47 +0200 | Skyfire | (~pyon@user/pyon) (Quit: brb) |
2021-09-07 22:54:01 +0200 | <c_wraith> | I do pretty much throw Eq, Ord, and Show on everything that doesn't contain a function explicitly, though |
2021-09-07 22:54:09 +0200 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2021-09-07 22:54:09 +0200 | Skyfire | (~pyon@user/pyon) |
2021-09-07 22:54:20 +0200 | <c_wraith> | they just are too useful for debugging to leave out |
2021-09-07 22:54:24 +0200 | <sm> | same |
2021-09-07 22:54:31 +0200 | <asivitz> | lechner: for large projects, you might even consider removing derivings that you don't really need to save on compile times. but that doesn't happen often |
2021-09-07 22:54:52 +0200 | <dsal> | sm: Thanks! :) It's my goto language. I am real world haskell. |
2021-09-07 22:55:19 +0200 | <lechner> | i just did a double take on GOTO |
2021-09-07 22:55:20 +0200 | <sm> | dsal++ |
2021-09-07 22:55:45 +0200 | <dsal> | lechner: scheme is my call/cc language |
2021-09-07 22:55:55 +0200 | unit73e | (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) |
2021-09-07 22:56:10 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds) |
2021-09-07 22:56:10 +0200 | Lord_of_Life_ | Lord_of_Life |
2021-09-07 22:56:46 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:51c9:9325:5764:1e14) (Remote host closed the connection) |
2021-09-07 22:56:46 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer) |
2021-09-07 22:57:08 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 22:57:36 +0200 | <asivitz> | Data.Vector.modify seems weird to me. why wouldn't the ST argument be last? I'd expect it to be nearly always larger and more cumbersome than the vector argument. and on top of that, I can't use `flip` because of impredicative polymorphism (I think!) |
2021-09-07 22:57:39 +0200 | <dsal> | One cool thing I did in my scotty web app thing was have a MonadLogger thing that would log to a tchan, and then a web handler that would start websockets and send the logged events to the browser. Then the elm code had a handler for the inbound messages that would put up little toasties for log messages. |
2021-09-07 22:57:53 +0200 | <c_wraith> | dsal: hah. did you see my complaint about the type of mtl's callCC this morning? |
2021-09-07 22:58:09 +0200 | <dsal> | c_wraith: Someone was talking about it last night, but I've still never actually used ContT |
2021-09-07 22:58:31 +0200 | ikex | (ash@user/ikex) (Ping timeout: 252 seconds) |
2021-09-07 22:58:58 +0200 | Pickchea | (~private@user/pickchea) |
2021-09-07 22:59:02 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) |
2021-09-07 22:59:27 +0200 | ikex | (ash@user/ikex) |
2021-09-07 22:59:29 +0200 | <lechner> | you folks are real pros. thanks for indulging my questions! |
2021-09-07 22:59:41 +0200 | <dsal> | Oh, that's not even the thing people were talking about last night. |
2021-09-07 22:59:47 +0200 | troydm | (~troydm@host-176-37-124-197.b025.la.net.ua) |
2021-09-07 22:59:55 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) |
2021-09-07 23:00:10 +0200 | aliosablack | (~chomwitt@2a02:587:dc02:7900:12c3:7bff:fe6d:d374) (Read error: Connection reset by peer) |
2021-09-07 23:01:21 +0200 | chomwitt | (~chomwitt@ppp-94-67-192-178.home.otenet.gr) |
2021-09-07 23:01:25 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 260 seconds) |
2021-09-07 23:01:26 +0200 | aegon | (~mike@174.127.249.180) |
2021-09-07 23:01:55 +0200 | ubert | (~Thunderbi@77.119.174.203.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
2021-09-07 23:01:56 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-07 23:03:45 +0200 | <lechner> | due to the '$' it is not possible to define this local function partially (without 'app') before it is used in the next line, right? https://github.com/eckyputrady/haskell-scotty-realworld-example-app/blob/master/src/Lib.hs#L34 |
2021-09-07 23:05:37 +0200 | <monochrom> | @remember dsal scheme is my call/cc language |
2021-09-07 23:05:37 +0200 | <lambdabot> | Nice! |
2021-09-07 23:05:54 +0200 | MQ-17J | (~MQ-17J@2607:fb90:46:a8a6:384f:d5fd:c3eb:fa6f) |
2021-09-07 23:06:06 +0200 | <unit73e> | hello. If you're interested I've been doing an SDL2 lazyfoo: https://gitlab.com/unit73e/lazyfoo-examples |
2021-09-07 23:06:19 +0200 | MQ-17J | (~MQ-17J@2607:fb90:46:a8a6:384f:d5fd:c3eb:fa6f) (Read error: Connection reset by peer) |
2021-09-07 23:06:33 +0200 | <unit73e> | it's similar to the one in SDL2 project but the comments are similar to the lazyfoo tutorial and has some more examples |
2021-09-07 23:06:44 +0200 | <dsal> | @pl \app -> flip runReaderT (pgEnv, jwtEnv) $ unAppT app |
2021-09-07 23:06:44 +0200 | <lambdabot> | flip runReaderT (pgEnv, jwtEnv) . unAppT |
2021-09-07 23:06:57 +0200 | <kaol> | asivitz: That follows the same pattern that all the folding, filtering and searching higher order functions for Data.Vector do. |
2021-09-07 23:06:59 +0200 | <dsal> | Not sure why they did that, lechner |
2021-09-07 23:07:08 +0200 | <Clint> | better than combining fax and xanadu |
2021-09-07 23:07:22 +0200 | <Clint> | er, wrong window |
2021-09-07 23:07:36 +0200 | <unit73e> | I'm still kind of noob though so you will probably see code that isn't really the best |
2021-09-07 23:07:37 +0200 | <hexeme> | If you have functions foo and bar, how do you pass bar to foo, if foo takes additional arguments? |
2021-09-07 23:07:53 +0200 | <hexeme> | foo bar a b < this wants to call (bar a b) |
2021-09-07 23:08:35 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 23:08:57 +0200 | <dsal> | hexeme: Can you give a bit more context. What are the types? |
2021-09-07 23:09:03 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 265 seconds) |
2021-09-07 23:09:16 +0200 | <lechner> | dsal: thanks! |
2021-09-07 23:09:19 +0200 | <asivitz> | kaol: I wish they were all changed :( am I the weird one here? not sure if my style is unconventional. But I'd rather use block arguments and just hang my filter/fold/update off the end of the line and not have to use parens around it |
2021-09-07 23:09:37 +0200 | <unit73e> | hexeme, I guess `foo` is supposed to have 3 arguments? a function a and b? |
2021-09-07 23:09:43 +0200 | <hexeme> | unit73e: exactly |
2021-09-07 23:09:49 +0200 | <dsal> | hexeme: `foo bar a b` does not mean `foo (bar a b)` |
2021-09-07 23:09:53 +0200 | <hexeme> | I want to pass 3 arguments to foo |
2021-09-07 23:10:04 +0200 | <sm> | nice unit73e, sounds good to add to sdl2 docs |
2021-09-07 23:10:14 +0200 | <hexeme> | Hmm OK maybe I'm reading the error wrong. |
2021-09-07 23:10:17 +0200 | <dsal> | hexeme: do you want to pass the function, or the result of the function? |
2021-09-07 23:10:37 +0200 | <lechner> | also, what's the error? |
2021-09-07 23:10:43 +0200 | <hexeme> | Ah OK, pebkac |
2021-09-07 23:10:49 +0200 | <hexeme> | I was just confused sorry. |
2021-09-07 23:10:55 +0200 | <hexeme> | Thanks |
2021-09-07 23:11:16 +0200 | <dsal> | Being confused is one of the states of learning. |
2021-09-07 23:11:23 +0200 | <maerwald> | hmm, stack clones git repos, tars them up and then puts them into an sqlite database with its own tree-hashing algorithm |
2021-09-07 23:12:46 +0200 | <maerwald> | something that could have been solved easier with a git bare checkout |
2021-09-07 23:13:06 +0200 | <monochrom> | asivitz: I see your point, but one day if you engage in "map g . filter pred . modify f" you may enjoy the status quo order. |
2021-09-07 23:13:29 +0200 | <monochrom> | To be sure, I don't have statistics to say what's more common. |
2021-09-07 23:15:05 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds) |
2021-09-07 23:15:23 +0200 | <monochrom> | But yeah if you try "flip modify" you run into predicativity. |
2021-09-07 23:15:25 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 23:15:48 +0200 | <asivitz> | ah ok, that's fair. I still think I'd like it changed, just guessing at my overall usage, but you're right in pipelines it makes sense that way |
2021-09-07 23:16:52 +0200 | fendor | (~fendor@77.119.198.92.wireless.dyn.drei.com) (Remote host closed the connection) |
2021-09-07 23:17:32 +0200 | <monochrom> | Sometimes I am a fan of "why not provide both versions". |
2021-09-07 23:18:00 +0200 | <monochrom> | Some other times I realize "OK but naming both is hard" and give up. :) |
2021-09-07 23:18:17 +0200 | <monochrom> | And the renaming times, ironically... |
2021-09-07 23:18:23 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
2021-09-07 23:18:25 +0200 | <monochrom> | @quote monochrom pointless.debate |
2021-09-07 23:18:25 +0200 | <lambdabot> | monochrom says: All pointless debates can be settled by going polymorphic. |
2021-09-07 23:18:53 +0200 | <kaol> | import flip Data.Vector -- Let's not have this language construct |
2021-09-07 23:19:36 +0200 | <monochrom> | Hey let's comply with Wadler's law and argue over syntax! |
2021-09-07 23:19:57 +0200 | <monochrom> | I say that it should be "import flipped Data.Vector"! |
2021-09-07 23:21:08 +0200 | Pickchea | (~private@user/pickchea) (Quit: Leaving) |
2021-09-07 23:21:50 +0200 | <hexeme> | i refactored my code an introduced a logic error |
2021-09-07 23:21:57 +0200 | <hexeme> | been starting at it, wont jump out at me lol |
2021-09-07 23:21:59 +0200 | mikoto-chan | (~mikoto-ch@83.137.2.243) (Read error: Connection reset by peer) |
2021-09-07 23:22:14 +0200 | <hexeme> | i guess i will refactor it further and test each of the functions |
2021-09-07 23:22:35 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 265 seconds) |
2021-09-07 23:23:00 +0200 | <monochrom> | Yeah automatically correct refactoring algorithms would be nice... |
2021-09-07 23:23:15 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-07 23:23:58 +0200 | xyh | (~xyh@113.92.75.47) (Quit: WeeChat 3.2) |
2021-09-07 23:24:05 +0200 | <maerwald> | there's wingman |
2021-09-07 23:24:12 +0200 | <maerwald> | which has strategies |
2021-09-07 23:24:35 +0200 | mikoto-chan | (~mikoto-ch@83.137.2.243) |
2021-09-07 23:24:50 +0200 | <hexeme> | I've found JetBrains' Resharper, does an impressive job with C#. |
2021-09-07 23:25:26 +0200 | <monochrom> | Ironically, automatically correct obfuscation algorithms are a solved problem. Brought to you by Patrick Cousot no less, the guy who brought you abstract interpretation. |
2021-09-07 23:25:44 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 23:30:06 +0200 | <dsal> | @hoogle a -> Maybe b -> Either a b |
2021-09-07 23:30:07 +0200 | <lambdabot> | Data.Either.Combinators maybeToRight :: b -> Maybe a -> Either b a |
2021-09-07 23:30:07 +0200 | <lambdabot> | Rebase.Prelude maybeToRight :: () => b -> Maybe a -> Either b a |
2021-09-07 23:30:07 +0200 | <lambdabot> | Network.Haskoin.Util maybeToEither :: b -> Maybe a -> Either b a |
2021-09-07 23:30:19 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 265 seconds) |
2021-09-07 23:33:58 +0200 | MQ-17J | (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
2021-09-07 23:34:04 +0200 | <hexeme> | that's a cool feature |
2021-09-07 23:34:36 +0200 | <hpc> | @hackage hoogle |
2021-09-07 23:34:36 +0200 | <lambdabot> | https://hackage.haskell.org/package/hoogle |
2021-09-07 23:34:39 +0200 | <hpc> | @where hoogle |
2021-09-07 23:34:40 +0200 | <lambdabot> | https://hoogle.haskell.org |
2021-09-07 23:34:44 +0200 | <hpc> | it's quite nice |
2021-09-07 23:34:53 +0200 | <dsal> | I'm reading some code someone else wrote and just wrote that function and wondered what other people call it. |
2021-09-07 23:34:56 +0200 | <dsal> | (web hoogle didn't work) |
2021-09-07 23:35:09 +0200 | Gurkenglas | (~Gurkengla@dslb-090-186-104-237.090.186.pools.vodafone-ip.de) (Ping timeout: 265 seconds) |
2021-09-07 23:35:12 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-09-07 23:35:12 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-09-07 23:35:12 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-09-07 23:35:36 +0200 | <dsal> | `maybeToRight` seems a little odd. How about `youMaybeRight` |
2021-09-07 23:35:45 +0200 | hololeap_ | (~hololeap@user/hololeap) |
2021-09-07 23:36:25 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-09-07 23:36:30 +0200 | hololeap | (~hololeap@user/hololeap) (Ping timeout: 276 seconds) |
2021-09-07 23:39:52 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
2021-09-07 23:39:56 +0200 | hexology | (~hexology@user/hexology) (Quit: hex on you ...) |
2021-09-07 23:40:25 +0200 | falafel | (~falafel@2603-8000-d801-2d68-1d6d-bf72-eba2-a20e.res6.spectrum.com) |
2021-09-07 23:41:30 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) |
2021-09-07 23:42:26 +0200 | <monochrom> | maybeToEither, justToRight |
2021-09-07 23:43:09 +0200 | <hpc> | unsafeCoerce |
2021-09-07 23:46:16 +0200 | hannessteffenhag | (~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) (Ping timeout: 265 seconds) |
2021-09-07 23:46:50 +0200 | nicbk | (~nicbk@user/nicbk) |
2021-09-07 23:46:51 +0200 | <hexeme> | is there a tool that will run a .hs file but really, only all the comments inside it |
2021-09-07 23:46:56 +0200 | <hexeme> | like a doctest kinda deal |
2021-09-07 23:47:16 +0200 | <monochrom> | left adjoint of the forgetful natural transformation from Either to Maybe >:) |
2021-09-07 23:47:49 +0200 | <geekosaur> | @hackage doctest |
2021-09-07 23:47:49 +0200 | <lambdabot> | https://hackage.haskell.org/package/doctest |
2021-09-07 23:47:57 +0200 | <hexeme> | Well, there it is. |
2021-09-07 23:48:20 +0200 | danasca | (~dana@77.227.165.152) (Quit: Konversation terminated!) |
2021-09-07 23:50:34 +0200 | jtomas | (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) |
2021-09-07 23:52:46 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:51c9:9325:5764:1e14) |
2021-09-07 23:53:14 +0200 | m1dnight | (~christoph@188.ip-51-91-158.eu) (Ping timeout: 256 seconds) |
2021-09-07 23:54:46 +0200 | m1dnight | (~christoph@188.ip-51-91-158.eu) |
2021-09-07 23:55:21 +0200 | hendursaga | (~weechat@user/hendursaga) (Ping timeout: 276 seconds) |
2021-09-07 23:56:44 +0200 | lstor_ | (~lstor@user/lstor) |
2021-09-07 23:56:47 +0200 | statusfa1led | (~statusfai@statusfailed.com) |
2021-09-07 23:56:56 +0200 | hendursaga | (~weechat@user/hendursaga) |
2021-09-07 23:57:17 +0200 | statusfailed | (~statusfai@statusfailed.com) (Ping timeout: 240 seconds) |
2021-09-07 23:57:17 +0200 | lstor | (~lstor@user/lstor) (Ping timeout: 240 seconds) |
2021-09-07 23:59:10 +0200 | fryguybob | (~fryguybob@cpe-74-65-17-248.rochester.res.rr.com) |