2022-07-31 00:03:45 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-07-31 00:03:59 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
2022-07-31 00:05:41 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-07-31 00:06:22 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-07-31 00:06:29 +0200 | Jeanne-Kamikaze | (~Jeanne-Ka@142.147.89.198) |
2022-07-31 00:06:41 +0200 | shailangsa | (~shailangs@host86-185-98-81.range86-185.btcentralplus.com) |
2022-07-31 00:07:46 +0200 | johnw | (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) |
2022-07-31 00:08:57 +0200 | winny | (~weechat@user/winny) (Quit: WeeChat 3.2) |
2022-07-31 00:15:21 +0200 | JannisO | (~JannisO@dyndsl-089-166-213-108.ewe-ip-backbone.de) (Ping timeout: 252 seconds) |
2022-07-31 00:21:03 +0200 | JNU99 | (~JNU99@host-92-30-66-211.as13285.net) |
2022-07-31 00:21:58 +0200 | JNU99 | (~JNU99@host-92-30-66-211.as13285.net) () |
2022-07-31 00:22:07 +0200 | yin | (~yin@user/zero) (Ping timeout: 245 seconds) |
2022-07-31 00:32:27 +0200 | sonologico | (~raphael@dhcp-077-251-118-129.chello.nl) (Ping timeout: 268 seconds) |
2022-07-31 00:33:26 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-07-31 00:34:37 +0200 | vglfr | (~vglfr@194.9.14.33) (Ping timeout: 245 seconds) |
2022-07-31 00:35:45 +0200 | yin | (~yin@user/zero) |
2022-07-31 00:44:09 +0200 | chomwitt | (~chomwitt@2a02:587:dc12:b700:d6f4:2a4f:a8e:737) (Ping timeout: 276 seconds) |
2022-07-31 00:46:58 +0200 | acidjnk | (~acidjnk@p200300d6e7058679d19d5270ce8bc1dc.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-07-31 00:51:39 +0200 | jpds1 | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds) |
2022-07-31 00:52:39 +0200 | jpds1 | (~jpds@gateway/tor-sasl/jpds) |
2022-07-31 00:56:09 +0200 | winny | (~weechat@user/winny) |
2022-07-31 00:59:58 +0200 | triteraflops | (~triterafl@user/triteraflops) (Ping timeout: 240 seconds) |
2022-07-31 01:06:20 +0200 | infinity0 | (~infinity0@185.112.146.113) (Remote host closed the connection) |
2022-07-31 01:08:31 +0200 | Tuplanolla | (~Tuplanoll@91-159-68-204.elisa-laajakaista.fi) (Quit: Leaving.) |
2022-07-31 01:17:33 +0200 | jespada | (~jespada@181.80.249.105) (Read error: Connection reset by peer) |
2022-07-31 01:23:02 +0200 | jespada | (~jespada@181.80.249.105) |
2022-07-31 01:24:52 +0200 | sandy_doo | (~sandydoo@185.209.196.136) (Ping timeout: 268 seconds) |
2022-07-31 01:25:21 +0200 | <koala_man> | is there a neat way to go from (a, Maybe b) -> Maybe (a,b) ? |
2022-07-31 01:26:26 +0200 | <geekosaur> | > sequence (5, Just 'a') |
2022-07-31 01:26:26 +0200 | <dolio> | > sequence (1, Just "a") |
2022-07-31 01:26:27 +0200 | <lambdabot> | Just (5,'a') |
2022-07-31 01:26:28 +0200 | <lambdabot> | Just (1,"a") |
2022-07-31 01:27:20 +0200 | <koala_man> | very nice, thanks! |
2022-07-31 01:28:10 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2022-07-31 01:34:17 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2022-07-31 01:35:22 +0200 | <monochrom> | That... is a life hack :) |
2022-07-31 01:37:02 +0200 | <hpc> | the real life hack is doing the reverse :P |
2022-07-31 01:37:41 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
2022-07-31 01:38:05 +0200 | <monochrom> | Uh that would be magic! |
2022-07-31 01:40:54 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-07-31 01:41:33 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-07-31 01:43:03 +0200 | <jackdk> | liquid haskell I suppose? |
2022-07-31 01:43:40 +0200 | <geekosaur> | don't think even that would work |
2022-07-31 01:44:15 +0200 | <jackdk> | If you prove that it's not Nothing, you should be right? |
2022-07-31 01:44:23 +0200 | <jackdk> | I've never used it |
2022-07-31 01:45:08 +0200 | <hpc> | yeah, you need a value of type 'a' |
2022-07-31 01:51:39 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-07-31 01:52:33 +0200 | <monochrom> | If you prove that it's Nothing, I should be wrong? :) |
2022-07-31 01:52:54 +0200 | <monochrom> | I mean let's take it to the extreme... |
2022-07-31 01:53:16 +0200 | <monochrom> | You ask me to multiple an input number by 5. |
2022-07-31 01:53:39 +0200 | <monochrom> | If I use Liquid Haskell to prove that the input number is 0, then "f x = 0" is right? :) |
2022-07-31 01:56:06 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
2022-07-31 02:01:38 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-07-31 02:01:41 +0200 | califax | (~califax@user/califx) (Remote host closed the connection) |
2022-07-31 02:03:13 +0200 | califax | (~califax@user/califx) |
2022-07-31 02:04:15 +0200 | gurkenglas | (~gurkengla@p548ac71b.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2022-07-31 02:07:08 +0200 | sandy_doo | (~sandydoo@185.209.196.136) |
2022-07-31 02:08:15 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-07-31 02:08:15 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-07-31 02:08:15 +0200 | wroathe | (~wroathe@user/wroathe) |
2022-07-31 02:09:21 +0200 | califax | (~califax@user/califx) (Ping timeout: 268 seconds) |
2022-07-31 02:09:49 +0200 | <dolio> | > sequence (Just ("a", 1)) |
2022-07-31 02:09:50 +0200 | <lambdabot> | ("a",Just 1) |
2022-07-31 02:11:08 +0200 | dcoutts__ | (~duncan@host86-151-44-186.range86-151.btcentralplus.com) |
2022-07-31 02:11:18 +0200 | nate4 | (~nate@98.45.169.16) |
2022-07-31 02:12:01 +0200 | califax | (~califax@user/califx) |
2022-07-31 02:13:47 +0200 | dcoutts_ | (~duncan@host109-149-1-189.range109-149.btcentralplus.com) (Ping timeout: 252 seconds) |
2022-07-31 02:19:24 +0200 | yin | shrugs |
2022-07-31 02:21:36 +0200 | phma | (~phma@host-67-44-208-231.hnremote.net) (Read error: Connection reset by peer) |
2022-07-31 02:26:05 +0200 | <monochrom> | Haha I see the true life hack now. |
2022-07-31 02:26:45 +0200 | <monochrom> | "The inverse of sequence is... sequence!" |
2022-07-31 02:27:13 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
2022-07-31 02:34:41 +0200 | GuerrillaMonkey | (~Jeanne-Ka@142.147.89.233) |
2022-07-31 02:35:49 +0200 | tubogram44 | (~tubogram@user/tubogram) (Quit: See ya later!) |
2022-07-31 02:35:58 +0200 | <yin> | > sequence . sequence $ Just ("a",1) |
2022-07-31 02:36:01 +0200 | <lambdabot> | Just ("a",1) |
2022-07-31 02:37:07 +0200 | Jeanne-Kamikaze | (~Jeanne-Ka@142.147.89.198) (Ping timeout: 245 seconds) |
2022-07-31 02:38:24 +0200 | tubogram44 | (~tubogram@user/tubogram) |
2022-07-31 02:43:10 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2022-07-31 02:44:06 +0200 | <mrianbloom> | Where is a good place to see the Data.Constraint library in action if one is trying to learn to use it? |
2022-07-31 02:45:04 +0200 | machinedgod | (~machinedg@d172-219-86-154.abhsia.telus.net) |
2022-07-31 02:46:26 +0200 | phma | (~phma@host-67-44-208-60.hnremote.net) |
2022-07-31 02:49:18 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2022-07-31 02:50:11 +0200 | tstat | (~user@user/tstat) |
2022-07-31 03:04:59 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
2022-07-31 03:09:12 +0200 | zebrag | (~chris@user/zebrag) (Ping timeout: 245 seconds) |
2022-07-31 03:13:50 +0200 | zebrag | (~chris@user/zebrag) |
2022-07-31 03:14:45 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5) |
2022-07-31 03:16:24 +0200 | kimjetwav | (~user@2607:fea8:235e:b600:4fe5:aa4:5bfb:2ba6) |
2022-07-31 03:17:03 +0200 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) |
2022-07-31 03:18:14 +0200 | <dmj`> | is there a library that generates haskell types from a json schema definition? |
2022-07-31 03:19:48 +0200 | crazazy | (~user@130.89.171.62) (Ping timeout: 244 seconds) |
2022-07-31 03:22:36 +0200 | bilegeek | (~bilegeek@2600:1008:b052:7d02:5779:f1d9:cfbf:c1a3) |
2022-07-31 03:24:05 +0200 | naso | (~naso@193-116-244-197.tpgi.com.au) |
2022-07-31 03:24:31 +0200 | Inst | (~Inst@2601:6c4:4080:3f80:d998:768b:c35b:a535) |
2022-07-31 03:24:40 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-07-31 03:33:58 +0200 | yin | (~yin@user/zero) (Quit: leaving) |
2022-07-31 03:37:07 +0200 | xff0x | (~xff0x@ap007189.d.east.v6connect.net) (Ping timeout: 245 seconds) |
2022-07-31 03:44:30 +0200 | xff0x | (~xff0x@ap007189.d.east.v6connect.net) |
2022-07-31 03:44:58 +0200 | Typedfern | (~Typedfern@202.red-83-37-35.dynamicip.rima-tde.net) (Ping timeout: 240 seconds) |
2022-07-31 03:48:38 +0200 | Typedfern | (~Typedfern@202.red-83-37-35.dynamicip.rima-tde.net) |
2022-07-31 03:49:32 +0200 | yauhsien | (~yauhsien@61-231-30-230.dynamic-ip.hinet.net) |
2022-07-31 03:55:21 +0200 | yauhsien | (~yauhsien@61-231-30-230.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
2022-07-31 04:00:29 +0200 | tstat | (~user@user/tstat) (Ping timeout: 252 seconds) |
2022-07-31 04:12:44 +0200 | mvk | (~mvk@2607:fea8:5ce3:8500::311d) |
2022-07-31 04:21:56 +0200 | jpds1 | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds) |
2022-07-31 04:23:29 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2022-07-31 04:23:29 +0200 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2022-07-31 04:23:29 +0200 | finn_elija | FinnElija |
2022-07-31 04:24:04 +0200 | jpds1 | (~jpds@gateway/tor-sasl/jpds) |
2022-07-31 04:28:47 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 245 seconds) |
2022-07-31 04:32:20 +0200 | ystael | (~ystael@user/ystael) (Ping timeout: 268 seconds) |
2022-07-31 04:32:49 +0200 | [_] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-07-31 04:32:57 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 245 seconds) |
2022-07-31 04:33:06 +0200 | [_] | [itchyjunk] |
2022-07-31 04:34:33 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-07-31 04:41:40 +0200 | jargon | (~jargon@184.101.188.251) |
2022-07-31 04:44:03 +0200 | td_ | (~td@94.134.91.248) (Ping timeout: 268 seconds) |
2022-07-31 04:45:33 +0200 | td_ | (~td@94.134.91.252) |
2022-07-31 04:52:38 +0200 | GuerrillaMonkey | (~Jeanne-Ka@142.147.89.233) (Quit: Leaving) |
2022-07-31 04:52:54 +0200 | Jeanne-Kamikaze | (~Jeanne-Ka@142.147.89.233) |
2022-07-31 04:52:56 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2022-07-31 04:54:37 +0200 | yin | (~yin@user/zero) |
2022-07-31 05:06:00 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-07-31 05:06:35 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit) |
2022-07-31 05:15:58 +0200 | funsafe | (~funsafe@2601:1c1:4200:9ac:84cb:185c:2a3c:c92c) (Ping timeout: 272 seconds) |
2022-07-31 05:17:38 +0200 | funsafe | (~funsafe@2601:1c1:4200:9ac:84cb:185c:2a3c:c92c) |
2022-07-31 05:20:25 +0200 | nate4 | (~nate@98.45.169.16) |
2022-07-31 05:24:49 +0200 | yin | (~yin@user/zero) (Ping timeout: 252 seconds) |
2022-07-31 05:25:43 +0200 | yin | (~yin@user/zero) |
2022-07-31 05:27:48 +0200 | Haskelytic | (~Haskelyti@118.179.211.17) (Quit: Client closed) |
2022-07-31 05:30:32 +0200 | johnw | (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in) |
2022-07-31 05:32:45 +0200 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2022-07-31 05:35:13 +0200 | naso | (~naso@193-116-244-197.tpgi.com.au) (Remote host closed the connection) |
2022-07-31 05:36:29 +0200 | naso | (~naso@193-116-244-197.tpgi.com.au) |
2022-07-31 05:37:05 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
2022-07-31 05:40:52 +0200 | naso | (~naso@193-116-244-197.tpgi.com.au) (Ping timeout: 245 seconds) |
2022-07-31 05:41:42 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 245 seconds) |
2022-07-31 05:45:19 +0200 | naso | (~naso@193-116-244-197.tpgi.com.au) |
2022-07-31 05:51:22 +0200 | vglfr | (~vglfr@194.9.14.33) |
2022-07-31 05:59:51 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-07-31 06:01:42 +0200 | vglfr | (~vglfr@194.9.14.33) (Ping timeout: 245 seconds) |
2022-07-31 06:01:42 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 245 seconds) |
2022-07-31 06:01:50 +0200 | vglfr | (~vglfr@194.9.14.33) |
2022-07-31 06:04:06 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
2022-07-31 06:06:15 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 252 seconds) |
2022-07-31 06:07:43 +0200 | nate4 | (~nate@98.45.169.16) |
2022-07-31 06:12:07 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 252 seconds) |
2022-07-31 06:14:23 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-07-31 06:17:56 +0200 | vglfr | (~vglfr@194.9.14.33) (Read error: Connection reset by peer) |
2022-07-31 06:18:39 +0200 | vglfr | (~vglfr@194.9.14.33) |
2022-07-31 06:24:48 +0200 | nate4 | (~nate@98.45.169.16) |
2022-07-31 06:25:27 +0200 | benin0 | (~benin@183.82.177.174) |
2022-07-31 06:25:48 +0200 | vglfr | (~vglfr@194.9.14.33) (Ping timeout: 268 seconds) |
2022-07-31 06:26:04 +0200 | vglfr | (~vglfr@194.9.14.33) |
2022-07-31 06:34:21 +0200 | foul_owl | (~kerry@23.82.194.108) (Read error: Connection reset by peer) |
2022-07-31 06:37:03 +0200 | vglfr | (~vglfr@194.9.14.33) (Ping timeout: 252 seconds) |
2022-07-31 06:37:03 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 252 seconds) |
2022-07-31 06:37:23 +0200 | vglfr | (~vglfr@194.9.14.33) |
2022-07-31 06:39:22 +0200 | machinedgod | (~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 268 seconds) |
2022-07-31 06:41:14 +0200 | <naso> | how can i open a cabal repl so my test modules are in scope |
2022-07-31 06:42:10 +0200 | <sclv> | cabl repl test-suite-name or test:test-suite-name |
2022-07-31 06:43:21 +0200 | <naso> | thank you |
2022-07-31 06:45:27 +0200 | Kaiepi | (~Kaiepi@156.34.47.253) (Quit: Leaving) |
2022-07-31 06:53:29 +0200 | foul_owl | (~kerry@23.82.194.108) |
2022-07-31 06:54:53 +0200 | Jeanne-Kamikaze | (~Jeanne-Ka@142.147.89.233) (Quit: Leaving) |
2022-07-31 07:00:57 +0200 | naso | (~naso@193-116-244-197.tpgi.com.au) (Remote host closed the connection) |
2022-07-31 07:03:06 +0200 | naso | (~naso@193-116-244-197.tpgi.com.au) |
2022-07-31 07:04:55 +0200 | xff0x | (~xff0x@ap007189.d.east.v6connect.net) (Ping timeout: 252 seconds) |
2022-07-31 07:05:18 +0200 | xff0x | (~xff0x@ap007189.d.east.v6connect.net) |
2022-07-31 07:09:42 +0200 | mbuf | (~Shakthi@122.165.55.71) |
2022-07-31 07:12:03 +0200 | vglfr | (~vglfr@194.9.14.33) (Ping timeout: 268 seconds) |
2022-07-31 07:12:40 +0200 | vglfr | (~vglfr@194.9.14.33) |
2022-07-31 07:15:10 +0200 | naso | (~naso@193-116-244-197.tpgi.com.au) (Remote host closed the connection) |
2022-07-31 07:15:56 +0200 | naso | (~naso@193-116-244-197.tpgi.com.au) |
2022-07-31 07:16:42 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 245 seconds) |
2022-07-31 07:18:58 +0200 | naso | (~naso@193-116-244-197.tpgi.com.au) (Remote host closed the connection) |
2022-07-31 07:19:13 +0200 | naso | (~naso@193-116-244-197.tpgi.com.au) |
2022-07-31 07:27:33 +0200 | monochrom | (trebla@216.138.220.146) (Read error: Connection reset by peer) |
2022-07-31 07:30:04 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-07-31 07:31:51 +0200 | naso | (~naso@193-116-244-197.tpgi.com.au) (Remote host closed the connection) |
2022-07-31 07:32:53 +0200 | naso | (~naso@193-116-244-197.tpgi.com.au) |
2022-07-31 07:32:57 +0200 | naso | (~naso@193-116-244-197.tpgi.com.au) (Remote host closed the connection) |
2022-07-31 07:33:22 +0200 | naso | (~naso@193-116-244-197.tpgi.com.au) |
2022-07-31 07:34:15 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 252 seconds) |
2022-07-31 07:36:45 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-07-31 07:43:04 +0200 | monochrom | (trebla@216.138.220.146) |
2022-07-31 07:43:36 +0200 | Pickchea | (~private@user/pickchea) |
2022-07-31 07:55:31 +0200 | rembo10 | (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-07-31 07:56:29 +0200 | rembo10 | (~rembo10@main.remulis.com) |
2022-07-31 07:56:35 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-07-31 07:59:34 +0200 | Batzy | (~quassel@user/batzy) (Read error: Connection reset by peer) |
2022-07-31 08:07:36 +0200 | bilegeek | (~bilegeek@2600:1008:b052:7d02:5779:f1d9:cfbf:c1a3) (Ping timeout: 244 seconds) |
2022-07-31 08:22:12 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-07-31 08:23:36 +0200 | myme1 | (~myme@2a01:799:d5a:cd00:c77:b8df:327d:c96f) (Ping timeout: 244 seconds) |
2022-07-31 08:24:28 +0200 | myme1 | (~myme@2a01:799:d5a:cd00:f235:66bd:b223:d95e) |
2022-07-31 08:26:31 +0200 | winny | (~weechat@user/winny) (WeeChat 3.2) |
2022-07-31 08:28:16 +0200 | mvk | (~mvk@2607:fea8:5ce3:8500::311d) (Ping timeout: 244 seconds) |
2022-07-31 08:31:39 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-07-31 08:33:26 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
2022-07-31 08:37:36 +0200 | z0k | (~z0k@206.84.140.97) |
2022-07-31 08:39:15 +0200 | naso | (~naso@193-116-244-197.tpgi.com.au) (Remote host closed the connection) |
2022-07-31 08:39:21 +0200 | obabo1 | (~obabo@20014C4C1C5409000000000000001000.catv.pool.telekom.hu) (Quit: WeeChat 3.6) |
2022-07-31 08:40:18 +0200 | naso | (~naso@193-116-244-197.tpgi.com.au) |
2022-07-31 08:42:05 +0200 | Pickchea | (~private@user/pickchea) (Ping timeout: 252 seconds) |
2022-07-31 08:53:12 +0200 | acidjnk | (~acidjnk@p200300d6e70586358424384a1bd111e9.dip0.t-ipconnect.de) |
2022-07-31 08:53:38 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-07-31 08:57:57 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 245 seconds) |
2022-07-31 08:59:20 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-07-31 09:01:36 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-07-31 09:02:37 +0200 | sandy_doo | (~sandydoo@185.209.196.136) (Ping timeout: 252 seconds) |
2022-07-31 09:03:41 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-07-31 09:04:25 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-07-31 09:04:32 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
2022-07-31 09:07:29 +0200 | Kaiepi | (~Kaiepi@156.34.47.253) |
2022-07-31 09:07:55 +0200 | retropikzel | (9d1a4f9f46@2604:bf00:561:2000::ce) |
2022-07-31 09:11:11 +0200 | chomwitt | (~chomwitt@2a02:587:dc12:b700:9b5a:97ff:58b5:cbbb) |
2022-07-31 09:12:36 +0200 | johnw | (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) |
2022-07-31 09:13:54 +0200 | johnw | (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Client Quit) |
2022-07-31 09:20:30 +0200 | chomwitt | (~chomwitt@2a02:587:dc12:b700:9b5a:97ff:58b5:cbbb) (Ping timeout: 240 seconds) |
2022-07-31 09:22:15 +0200 | coco | (~coco@212-51-146-199.fiber7.init7.net) |
2022-07-31 09:24:31 +0200 | bilegeek | (~bilegeek@50.sub-174-209-38.myvzw.com) |
2022-07-31 09:30:15 +0200 | mrmr | (~mrmr@user/mrmr) (Quit: Ping timeout (120 seconds)) |
2022-07-31 09:30:35 +0200 | mrmr | (~mrmr@user/mrmr) |
2022-07-31 09:30:52 +0200 | vglfr | (~vglfr@194.9.14.33) (Ping timeout: 245 seconds) |
2022-07-31 09:32:21 +0200 | ggVGc | (~ggVGc@a.lowtech.earth) |
2022-07-31 09:32:22 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-07-31 09:34:21 +0200 | johnw | (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) |
2022-07-31 09:36:56 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
2022-07-31 09:40:22 +0200 | <ggVGc> | What would be the most straightforward way to define a one-way relationship on the type-level? For example modelling null-casting, like: You can get a Null a from an a, but you can't go the other way. |
2022-07-31 09:41:15 +0200 | <ggVGc> | actually, that's too simplistic |
2022-07-31 09:41:57 +0200 | shriekingnoise | (~shrieking@186.137.167.202) (Quit: Quit) |
2022-07-31 09:42:57 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 245 seconds) |
2022-07-31 09:44:00 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-07-31 09:48:50 +0200 | <ggVGc> | For example: assign (Nullable a) (Nullable b) = ok, assign a (Nullable b) = ok, assign (Nullable a) b = type error |
2022-07-31 09:52:28 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-07-31 09:52:37 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2022-07-31 09:55:28 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds) |
2022-07-31 09:57:23 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-07-31 10:02:04 +0200 | vglfr | (~vglfr@194.9.14.33) |
2022-07-31 10:07:10 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-07-31 10:11:17 +0200 | gurkenglas | (~gurkengla@p548ac71b.dip0.t-ipconnect.de) |
2022-07-31 10:11:17 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 245 seconds) |
2022-07-31 10:18:10 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2022-07-31 10:19:24 +0200 | yauhsien | (~yauhsien@118-167-41-184.dynamic-ip.hinet.net) |
2022-07-31 10:20:49 +0200 | chomwitt | (~chomwitt@2a02:587:dc12:b700:569a:41be:aae6:a6d5) |
2022-07-31 10:22:35 +0200 | kenran | (~kenran@200116b82b2ba400dde0e2235d830ce2.dip.versatel-1u1.de) |
2022-07-31 10:23:39 +0200 | yauhsien | (~yauhsien@118-167-41-184.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
2022-07-31 10:24:29 +0200 | kenran | (~kenran@200116b82b2ba400dde0e2235d830ce2.dip.versatel-1u1.de) (Client Quit) |
2022-07-31 10:25:33 +0200 | dextaa | (~DV@user/dextaa) (Ping timeout: 244 seconds) |
2022-07-31 10:26:50 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-07-31 10:27:45 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2022-07-31 10:30:43 +0200 | sonologico | (~raphael@dhcp-077-251-118-129.chello.nl) |
2022-07-31 10:32:50 +0200 | bilegeek | (~bilegeek@50.sub-174-209-38.myvzw.com) (Remote host closed the connection) |
2022-07-31 10:33:15 +0200 | bilegeek | (~bilegeek@50.sub-174-209-38.myvzw.com) |
2022-07-31 10:33:58 +0200 | chomwitt | (~chomwitt@2a02:587:dc12:b700:569a:41be:aae6:a6d5) (Ping timeout: 240 seconds) |
2022-07-31 10:34:10 +0200 | misterfish | (~misterfis@ip214-130-173-82.adsl2.static.versatel.nl) |
2022-07-31 10:36:55 +0200 | sandy_doo | (~sandydoo@185.209.196.136) |
2022-07-31 10:43:47 +0200 | jakalx | (~jakalx@base.jakalx.net) () |
2022-07-31 10:46:05 +0200 | retropikzel | (9d1a4f9f46@2604:bf00:561:2000::ce) () |
2022-07-31 10:49:11 +0200 | <tomsmeding> | Haskell doesn't do implicit casting |
2022-07-31 10:49:48 +0200 | <tomsmeding> | But if explicit is fine: what about a type class that precisely models the allowed pairs? |
2022-07-31 10:50:47 +0200 | <tomsmeding> | ggVGc: ^ |
2022-07-31 10:51:37 +0200 | <tomsmeding> | Is `assign a b = ok` if neither a nor b are Nullable? |
2022-07-31 10:56:46 +0200 | causal | (~user@2001:470:ea0f:3:329c:23ff:fe3f:1e0e) (Quit: WeeChat 3.6) |
2022-07-31 10:58:26 +0200 | <tomsmeding> | ggVGc: https://play-haskell.tomsmeding.com/play/paste/g0rxiCwN/1 |
2022-07-31 10:59:38 +0200 | <tomsmeding> | In a closed type family, like this is (because of the use of 'where' instead of standalone 'type instance' statements), the equations are checked in-order from top to bottom |
2022-07-31 11:00:09 +0200 | ereslibre[m] | (~ereslibre@2001:470:69fc:105::1:8f90) (Quit: You have been kicked for being idle) |
2022-07-31 11:00:09 +0200 | shiraeeshi[m] | (~shiraeesh@2001:470:69fc:105::1:77) (Quit: You have been kicked for being idle) |
2022-07-31 11:00:23 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2022-07-31 11:00:27 +0200 | <tomsmeding> | Hence, for example, the second equation, F (Nullable a) b, will only get picked if ghc can prove that b does not match `Nullable c` for any c |
2022-07-31 11:00:40 +0200 | ereslibre[m] | (~ereslibre@2001:470:69fc:105::1:8f90) |
2022-07-31 11:00:52 +0200 | shiraeeshi[m] | (~shiraeesh@2001:470:69fc:105::1:77) |
2022-07-31 11:01:01 +0200 | <tomsmeding> | You can model basically any relation you want this way, though it's a bit of a blunt hammer |
2022-07-31 11:03:47 +0200 | sonologico | (~raphael@dhcp-077-251-118-129.chello.nl) (Ping timeout: 245 seconds) |
2022-07-31 11:04:41 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-07-31 11:06:43 +0200 | <ggVGc> | tomsmeding: thanks, was trying to achieve it through a type family (like you showed) but got stuck a few times. Your example helps a lot! |
2022-07-31 11:07:19 +0200 | <ggVGc> | blunt hammer is fine for my use-case. I have the exact same "blunt hammer" implemented at the value level atm... |
2022-07-31 11:08:18 +0200 | <ggVGc> | it validates subsets of ranges. Like, positive numbers being a subset of all numbers, and nullable ranges not being subsets of non-nullable ones etc. |
2022-07-31 11:08:39 +0200 | <tomsmeding> | Sounds like a lattice |
2022-07-31 11:08:46 +0200 | <ggVGc> | I've been meaning to move most of it to the type level for a long time but never got to it (and haven't been sure how to best achieve it) |
2022-07-31 11:08:58 +0200 | <tomsmeding> | Though I doubt knowing that it's a lattice helps much :) |
2022-07-31 11:09:52 +0200 | Tuplanolla | (~Tuplanoll@91-159-68-204.elisa-laajakaista.fi) |
2022-07-31 11:11:06 +0200 | <tomsmeding> | Doing it with a closed type family instead of a network of type class instances (if that's even possible -- definitely with overlapping instances, but eh) furthermore has the advantage that a malicious user can't just add an extra instance |
2022-07-31 11:13:54 +0200 | <ggVGc> | yep, that's why I felt type families might be the right choice. I went down the type class path a bit, and it didn't feel like it'd work out well |
2022-07-31 11:14:36 +0200 | <ggVGc> | this is my first actual usage of type families though, so it's good to finally understand them through a real-world use-case |
2022-07-31 11:15:17 +0200 | Guest49 | (~Guest49@5.214.214.80) |
2022-07-31 11:15:20 +0200 | Jade30 | (~Jade@ip-178-201-128-039.um46.pools.vodafone-ip.de) |
2022-07-31 11:16:08 +0200 | <Jade30> | Hello, I'm trying to install the haskell toolstack but upon installing with ghcup I get |
2022-07-31 11:16:08 +0200 | <Jade30> | ``` |
2022-07-31 11:16:09 +0200 | <Jade30> | [ Error ] Process "make" with arguments ["DESTDIR=/home/jade/.ghcup/tmp/ghcup-a853bee7b96b6a44", |
2022-07-31 11:16:09 +0200 | <Jade30> | [ ... ] "install"] failed with exit code 1. |
2022-07-31 11:16:10 +0200 | <Jade30> | [ Error ] Also check the logs in /home/jade/.ghcup/logs |
2022-07-31 11:16:10 +0200 | <Jade30> | "_eghcup --cache install ghc recommended" failed! |
2022-07-31 11:16:11 +0200 | <Jade30> | ``` |
2022-07-31 11:16:56 +0200 | <Guest49> | Hi there. I am 18 years old. I was wondering.whether haskell is a wide option as the first programming language for me? |
2022-07-31 11:17:10 +0200 | <Guest49> | Wise* |
2022-07-31 11:18:47 +0200 | <Rembane> | Guest49: Yes, but you'll have a very interesting experience learning other programming languages. |
2022-07-31 11:19:02 +0200 | <ggVGc> | Guest49: your age probably doesn't matter much, but your past programming experience does. Haskell the language is somewhat okay as a first choice, although learning it from online resources is more challenging than other languages in my opinion. The bigger issue I think, for a beginner in programming in general, is that the tooling around haskell is still less than ideal, and it can be hard to |
2022-07-31 11:19:03 +0200 | <ggVGc> | get started because of that |
2022-07-31 11:19:37 +0200 | <ggVGc> | see for example what Jade30 just posted above... |
2022-07-31 11:19:47 +0200 | Milan | (~Milan@46.245.111.222) |
2022-07-31 11:20:16 +0200 | <tomsmeding> | Jade30: can you post the most recent log file in /home/jade/.ghcup/logs ? |
2022-07-31 11:20:22 +0200 | <tomsmeding> | @where paste |
2022-07-31 11:20:22 +0200 | <lambdabot> | Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com |
2022-07-31 11:22:02 +0200 | <ggVGc> | I'm gonna go out on a limb and suggest Elixir as a first programming language instead. Because it's incredibly easy to get setup and begin a first project, the documentation is superb, and it's designed to be quite simple and straight-forward. At the same time it's a functional language, and runs on a mature platform, and there's a proper (although still small) job market for it |
2022-07-31 11:22:32 +0200 | <ggVGc> | Spending a month with Elixir as a beginner programmer would probably be a lot less frustrating than a first month with Haskell though |
2022-07-31 11:22:44 +0200 | Guest49 | (~Guest49@5.214.214.80) (Ping timeout: 252 seconds) |
2022-07-31 11:22:50 +0200 | <ggVGc> | oh well |
2022-07-31 11:22:55 +0200 | <ggVGc> | guess that was wasted text |
2022-07-31 11:23:12 +0200 | Guest49 | (~Guest49@5.214.214.80) |
2022-07-31 11:23:37 +0200 | <ggVGc> | did you see my last comment about maybe looking at Elixir, Guest49? |
2022-07-31 11:23:55 +0200 | <Guest49> | Oh no |
2022-07-31 11:24:13 +0200 | <ggVGc> | 09:22:01 ggVGc | I'm gonna go out on a limb and suggest Elixir as a first programming language instead. Because it's incredibly easy to get setup and begin a first project, the documentation is |
2022-07-31 11:24:15 +0200 | <ggVGc> | | superb, and it's designed to be quite simple and straight-forward. At the same time it's a functional language, and runs on a mature platform, and there's a proper (although |
2022-07-31 11:24:17 +0200 | <ggVGc> | | still small) job market for it |
2022-07-31 11:24:19 +0200 | <ggVGc> | 09:22:32 ggVGc | Spending a month with Elixir as a beginner programmer would probably be a lot less frustrating than a first month with Haskell though |
2022-07-31 11:24:21 +0200 | <ggVGc> | Guest49: ^ |
2022-07-31 11:25:18 +0200 | <Guest49> | Do you think that learning a functional program first is a good idea at all? |
2022-07-31 11:26:20 +0200 | <ggVGc> | My personal input is that I was programming for a few years in C++, C# and Python, and at age 19 (not that age matters that much) I had my first go at Haskell. I didn't have a great time, and eventually gave up and started writing F# instead (which had just been released that year). A few years after that I started looking at haskell again and am using it today. But I don't think that the |
2022-07-31 11:26:22 +0200 | <ggVGc> | developer experience of Haskell is |
2022-07-31 11:26:31 +0200 | <ggVGc> | very good compared to other languages, even if I like the language itself now |
2022-07-31 11:26:49 +0200 | <ggVGc> | Guest49: yes, definitely going the functinal path from the start is a good idea |
2022-07-31 11:26:55 +0200 | <ggVGc> | that's why I think Elixir is a great stepping stone |
2022-07-31 11:27:45 +0200 | <ggVGc> | It's a well designed, easy-to-use, functional programming language that is used in production by many companies (e.g it's mature, both in functionality and tooling) |
2022-07-31 11:28:05 +0200 | <Rembane> | A lot of time and effort has gone into the developer experience of elixir. |
2022-07-31 11:28:15 +0200 | <ggVGc> | it's definitely not as powerful as Haskell, but as a beginner (either in programming, or functional programming) that's mostly a good thing |
2022-07-31 11:29:12 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 245 seconds) |
2022-07-31 11:30:37 +0200 | <Milan> | if u were me , you would choose Elixir instead of something like python ? |
2022-07-31 11:30:44 +0200 | <ggVGc> | Guest49: Haskell is a very interesting language to learn, and it has capabilities that are difficult to find elsewhere. But, that comes at a (sometimes huge) learning cost, and most of it is actually not really useful for the vast majority of things. So, my personal suggestion is to say "Haskell is interesting, I'll definitely look at it" but not as a first step, or even in the first years of |
2022-07-31 11:30:46 +0200 | <ggVGc> | programming |
2022-07-31 11:31:04 +0200 | <ggVGc> | Milan: 100%, but I also recently worked as an Elixir developer for almost 5 years |
2022-07-31 11:33:01 +0200 | <jackdk> | Haskell is an excellent general-purpose programming language, and I used to TA a first-year computer science course which used it and assumed no prior programming experience |
2022-07-31 11:33:25 +0200 | <ggVGc> | yeah, that might work. But for self-teaching it's quite a bad choice, imo |
2022-07-31 11:34:31 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-07-31 11:34:55 +0200 | <Guest49> | I live in a village and i dont afford attending university |
2022-07-31 11:35:17 +0200 | <Guest49> | I must selfstudy |
2022-07-31 11:36:00 +0200 | mbuf | (~Shakthi@122.165.55.71) (Quit: Leaving) |
2022-07-31 11:37:31 +0200 | <Guest49> | What book do u recommend to begin learning Elixir |
2022-07-31 11:37:48 +0200 | <ggVGc> | Guest49: I would say this. Pick some choices, e.g Haskell, Elixir, maybe Go, or Python. Spend a few days with each of them and try to do something simple (like getting the initial environment up and writing a small program). Compare the experience of how comfortable the experience is, and how easy it is to find clear information. Then pick one |
2022-07-31 11:38:13 +0200 | <ggVGc> | I think that's the most important thing in the beginning, being able to find good information (that you understand) and easily working with the language |
2022-07-31 11:38:18 +0200 | <ggVGc> | not necessarily what language you use |
2022-07-31 11:38:29 +0200 | <tomsmeding> | ggVGc++ |
2022-07-31 11:38:45 +0200 | <ggVGc> | after a few months you'll be able to switch to some other language and have an easier time |
2022-07-31 11:39:19 +0200 | <tomsmeding> | Trying multiple languages initially takes some time investment without much reward yet, though |
2022-07-31 11:39:24 +0200 | <ggVGc> | Guest49: I would start here :) https://elixir-lang.org/getting-started/introduction.html |
2022-07-31 11:39:50 +0200 | <ggVGc> | tomsmeding: yeah, but if you spend a day and can't get the initial workflow up, then maybe at least that one isn't a good choice |
2022-07-31 11:39:57 +0200 | acidjnk | (~acidjnk@p200300d6e70586358424384a1bd111e9.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
2022-07-31 11:40:00 +0200 | <ggVGc> | I would say it's clear after 1-2 days if it's gonna work out or not |
2022-07-31 11:40:31 +0200 | <tomsmeding> | ggVGc: I'm curious, would you consider Haskell more suitable for self study if there was a compiler that strictly adhered to Haskell2010 instead of suggesting one enable DataKinds when mixing up type level and value level? |
2022-07-31 11:41:06 +0200 | coco | (~coco@212-51-146-199.fiber7.init7.net) (Quit: WeeChat 3.5) |
2022-07-31 11:42:24 +0200 | <ggVGc> | tomsmeding: I honestly think, unfortunately, that what makes Haskell unsuitable for selfstufy as a beinnger is the same reason that it is what it is (a platform for language research). It's so wide, and so evolving, and people often come to it with significant background experience (but everyone from different pasts). So, the information you find when trying to learn something is often fragmented, |
2022-07-31 11:42:26 +0200 | <ggVGc> | hard to grasp, unclear if it is actually what you're looking for or not etc. |
2022-07-31 11:42:32 +0200 | <ggVGc> | no one sat down and wrote a propoer "Getting started" |
2022-07-31 11:42:42 +0200 | <ggVGc> | and library documentation is atrocious |
2022-07-31 11:43:12 +0200 | <tomsmeding> | ggVGc: I kind of agree :) |
2022-07-31 11:43:22 +0200 | <ggVGc> | restricting to Haskell2010 definitely is better as a start, I think. But that doesn't help the issue of learning resources, which are not carrying that restriction |
2022-07-31 11:43:29 +0200 | <tomsmeding> | Yeah |
2022-07-31 11:44:39 +0200 | <ggVGc> | This is why I suggest Elixir (not because that's what I did for work lately). The whole community very much values clear documentation, avoids complexities as much as it can, and just tries to keep things simple and well-described |
2022-07-31 11:44:47 +0200 | <ggVGc> | it makes for a very good grounds for learning |
2022-07-31 11:45:03 +0200 | <tomsmeding> | "avoids complexities as much as it can" -- right |
2022-07-31 11:45:26 +0200 | <tomsmeding> | So the language is less expressive than haskell, and they embrace that |
2022-07-31 11:45:48 +0200 | <ggVGc> | I brought a frontend developer at work into our backend team in 2-3 months, in which he got comfortable with proper functional programming (not JS-"functional") and unit testing (which he never really did properly before) |
2022-07-31 11:45:52 +0200 | <ggVGc> | and backend development in general |
2022-07-31 11:45:55 +0200 | <tomsmeding> | That's a good thing and very nice until you need the extra functionality |
2022-07-31 11:46:07 +0200 | <ggVGc> | yeah, but 99% of the time you don't |
2022-07-31 11:46:21 +0200 | <tomsmeding> | But then I believe that a good programmer should know >1 language in the first place :) |
2022-07-31 11:46:47 +0200 | <tomsmeding> | ggVGc: cool |
2022-07-31 11:47:19 +0200 | <tomsmeding> | That's certainly a vote of confidence for elixir |
2022-07-31 11:47:32 +0200 | misterfish | (~misterfis@ip214-130-173-82.adsl2.static.versatel.nl) (Ping timeout: 245 seconds) |
2022-07-31 11:48:34 +0200 | <Jade30> | tomsmeding: |
2022-07-31 11:48:35 +0200 | <Jade30> | Debug: Identified Platform as: Linux UnknownLinux |
2022-07-31 11:48:35 +0200 | <Jade30> | Debug: last access was 8.188348676s ago, cache interval is 300s |
2022-07-31 11:48:36 +0200 | <Jade30> | Debug: Decoding yaml at: /home/jade/.ghcup/cache/ghcup-0.0.7.yaml |
2022-07-31 11:48:36 +0200 | <Jade30> | Debug: Requested to install GHC with 8.10.7 |
2022-07-31 11:48:37 +0200 | <Jade30> | Info: verifying digest of: ghc-8.10.7-x86_64-fedora27-linux.tar.xz |
2022-07-31 11:48:37 +0200 | <Jade30> | Info: Unpacking: ghc-8.10.7-x86_64-fedora27-linux.tar.xz to /home/jade/.ghcup/tmp/ghcup-415eb58728e758d9 |
2022-07-31 11:48:38 +0200 | <Jade30> | Info: Installing GHC (this may take a while) |
2022-07-31 11:48:38 +0200 | <Jade30> | Debug: Running sh with arguments ["./configure","--prefix=/home/jade/.ghcup/ghc/8.10.7"] |
2022-07-31 11:48:39 +0200 | <Jade30> | Debug: Running make with arguments ["DESTDIR=/home/jade/.ghcup/tmp/ghcup-a853bee7b96b6a44","install"] |
2022-07-31 11:48:39 +0200 | <Jade30> | Error: Process "make" with arguments ["DESTDIR=/home/jade/.ghcup/tmp/ghcup-a853bee7b96b6a44", |
2022-07-31 11:48:40 +0200 | <Jade30> | "install"] failed with exit code 1. |
2022-07-31 11:48:40 +0200 | <Jade30> | Error: Also check the logs in /home/jade/.ghcup/logs |
2022-07-31 11:48:44 +0200 | <tomsmeding> | Jade30: use a pastebin |
2022-07-31 11:48:47 +0200 | <Jade30> | (it didn't let me send the file for whatever reason |
2022-07-31 11:48:57 +0200 | <tomsmeding> | Irc doesn't support files, use a pastebin |
2022-07-31 11:49:03 +0200 | <Jade30> | tomsmeding, ok |
2022-07-31 11:49:15 +0200 | <tomsmeding> | @where paste |
2022-07-31 11:49:15 +0200 | <lambdabot> | Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com |
2022-07-31 11:49:23 +0200 | <Jade30> | https://pastebin.com/gaEYYYgA |
2022-07-31 11:49:32 +0200 | <Jade30> | oh |
2022-07-31 11:49:46 +0200 | <tomsmeding> | Jade30: "Error: Also check the logs in /home/jade/.ghcup/logs" |
2022-07-31 11:50:03 +0200 | <tomsmeding> | Can you post the most recent file in that directory? |
2022-07-31 11:50:24 +0200 | <Jade30> | ghc-configure.log ghc-make.log which of these? |
2022-07-31 11:50:36 +0200 | <tomsmeding> | The make one |
2022-07-31 11:51:07 +0200 | <Jade30> | ghcup: make: executeFile: does not exist (No such file or directory) |
2022-07-31 11:51:11 +0200 | <Jade30> | that's the only line |
2022-07-31 11:51:13 +0200 | <tomsmeding> | Lol ok |
2022-07-31 11:51:16 +0200 | <tomsmeding> | What OS? |
2022-07-31 11:51:17 +0200 | bilegeek | (~bilegeek@50.sub-174-209-38.myvzw.com) (Ping timeout: 245 seconds) |
2022-07-31 11:51:20 +0200 | <Jade30> | Arch linux |
2022-07-31 11:51:31 +0200 | <tomsmeding> | sudo pacman -S base-devel |
2022-07-31 11:51:42 +0200 | <tomsmeding> | And then try again |
2022-07-31 11:52:16 +0200 | <ggVGc> | tomsmeding: another thing is that Elixir is, by design, "verbose" when compared to haskell. To be fair, Haskell is extremely terse, so it's not a super fair comparison, and I wouldn't call Elixir a very verbose language. But the point is, I think this is a pro when learning. fn a, b -> runSomething(a, b, 123) end isn't as terse as function composition, but it's very easy to read and very clear |
2022-07-31 11:52:17 +0200 | <ggVGc> | what's going on |
2022-07-31 11:52:51 +0200 | <Jade30> | tomsemding, it looks like it's working! |
2022-07-31 11:52:54 +0200 | <Jade30> | Thanks |
2022-07-31 11:53:21 +0200 | <tomsmeding> | ggVGc: It doesn't have automatic currying? (i.e. that a -> b -> c === a -> (b -> c)) |
2022-07-31 11:53:25 +0200 | <tomsmeding> | Jade30: cool! :) |
2022-07-31 11:53:32 +0200 | Guest49 | (~Guest49@5.214.214.80) (Ping timeout: 252 seconds) |
2022-07-31 11:53:43 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-07-31 11:54:09 +0200 | <ggVGc> | there's a shorthand operator so you can write what I did as this instead: &(&1, &2, 123) |
2022-07-31 11:54:53 +0200 | <tomsmeding> | &(&1, &2, 123) would be written in haskell as \f x y -> f x y 123 ? |
2022-07-31 11:55:00 +0200 | <ggVGc> | yep |
2022-07-31 11:55:20 +0200 | <tomsmeding> | How would you express \f x _ -> f x 123 |
2022-07-31 11:55:33 +0200 | <ggVGc> | but, in general things are a lot less automatic, which again I think is a good thing for beginner programming, and honestly for long-term maintenance of production code also |
2022-07-31 11:55:37 +0200 | <tomsmeding> | Not &(&1, 123) because that is \f x -> f x 123 :p |
2022-07-31 11:57:00 +0200 | <tomsmeding> | I have mixed feelins about not having automatic currying -- I'm quite sure that it's easier to learn and that knowledge transfers more easily between elixir and most other languages. But on the other hand, power users at some point want power tools |
2022-07-31 11:57:44 +0200 | <tomsmeding> | Terse syntax is bad for its learning curve and intelligibility for non-experts, but experts benefit from terse syntax |
2022-07-31 11:57:53 +0200 | Everything | (~Everythin@37.115.210.35) |
2022-07-31 11:58:02 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-07-31 11:58:05 +0200 | <tomsmeding> | But go also exists :p |
2022-07-31 11:58:07 +0200 | zxx7529 | (~Thunderbi@user/zxx7529) |
2022-07-31 11:58:48 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds) |
2022-07-31 11:59:34 +0200 | <tomsmeding> | From just what you've told me, though (which is all I know about elixir :p), I do agree with your recommendation of it over haskell as a first language |
2022-07-31 12:00:17 +0200 | <tomsmeding> | Not quite convinced yet it should necessarily be one's first _functional_ language if one already has a bunch of programming experience |
2022-07-31 12:02:07 +0200 | <tomsmeding> | Jade30: curious, is haskell your first programming language? Most other things would not work either without base-devel, I think :p |
2022-07-31 12:02:35 +0200 | <tomsmeding> | Perhaps the scripting languages might (js, python) |
2022-07-31 12:02:44 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
2022-07-31 12:02:50 +0200 | <Jade30> | No, idk how many languages I know. I just reinstalled arch and forgot `base-devel` |
2022-07-31 12:02:59 +0200 | <tomsmeding> | Ah that also explains :) |
2022-07-31 12:03:22 +0200 | <tomsmeding> | Yay arch btw |
2022-07-31 12:03:36 +0200 | <Jade30> | I do that more often than I should, but a package list and a seperate home partition make it easy |
2022-07-31 12:03:46 +0200 | <tomsmeding> | And good on you for using ghcup instead of the ghc package from the arch repos :p |
2022-07-31 12:03:50 +0200 | <Jade30> | I'm a Java programmer "by trade" |
2022-07-31 12:03:59 +0200 | <Jade30> | Also learning rust and haskell |
2022-07-31 12:04:10 +0200 | <Jade30> | Been doing Java for 3 years now |
2022-07-31 12:04:52 +0200 | <tomsmeding> | Good luck! Rust and Haskell can be a lot of fun, in related but somewhat different ways, if you like this kind of programming :) |
2022-07-31 12:05:26 +0200 | <Jade30> | yeah, thanks! |
2022-07-31 12:05:50 +0200 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2022-07-31 12:06:14 +0200 | <Jade30> | Now I still don't have ghcup working .. I think my failed install mesed with some caches. |
2022-07-31 12:06:14 +0200 | <Jade30> | The only thing it installed was `ghc(i)`. No stack, cabal, HLS or `ghcup` binary |
2022-07-31 12:06:29 +0200 | <tomsmeding> | Is there a ~/.ghcup directory? |
2022-07-31 12:06:39 +0200 | <Jade30> | yes, there was even after the failed install |
2022-07-31 12:06:41 +0200 | <maerwald> | Jade30: source ~/.ghcup/env |
2022-07-31 12:06:42 +0200 | <tomsmeding> | If so, is there stuff in ~/.ghcup/bin |
2022-07-31 12:07:03 +0200 | <tomsmeding> | What maerwald says, or just put that bin directory in your path however you wish |
2022-07-31 12:07:50 +0200 | <Jade30> | oops, forgot to open a new terminal for the changes on path to take effect |
2022-07-31 12:07:59 +0200 | <tomsmeding> | Though I wonder how ghc got in your path |
2022-07-31 12:07:59 +0200 | <Jade30> | works now |
2022-07-31 12:08:11 +0200 | <tomsmeding> | Jade30: do you have the ghc package installed from the arch repos? |
2022-07-31 12:08:17 +0200 | <Jade30> | tomsmeding xmonad dependency |
2022-07-31 12:08:22 +0200 | <tomsmeding> | Ah rip |
2022-07-31 12:08:48 +0200 | <Jade30> | is that "bad"? |
2022-07-31 12:08:51 +0200 | <ggVGc> | tomsmeding: yeah, you couldn't use & for that, since you can't create a 2-ary function where you only use one argument using it. So, in that situation you'd just write it out as in haskell, just that you have fn and end instead of \... |
2022-07-31 12:08:53 +0200 | <tomsmeding> | The two installations _should_ not interfere as long as .ghcup/bin is before /usr/bin in your path |
2022-07-31 12:09:16 +0200 | <Jade30> | it is |
2022-07-31 12:09:27 +0200 | <tomsmeding> | Jade30: they should not interfere, but if your path is not as you expect it sometimes, then it might create confusing situations |
2022-07-31 12:09:43 +0200 | <Jade30> | ok I'll keep it in mind. |
2022-07-31 12:09:55 +0200 | <Jade30> | Now I can finally continue my bf interpreter on desktop |
2022-07-31 12:10:04 +0200 | <Jade30> | Coding on my phone for two weeks was a pain |
2022-07-31 12:10:15 +0200 | <tomsmeding> | Jade30: symptom: "there are files missing in package `...'" or something similar :) |
2022-07-31 12:10:15 +0200 | <Jade30> | haha |
2022-07-31 12:10:25 +0200 | <Jade30> | got it! |
2022-07-31 12:10:33 +0200 | <tomsmeding> | Jade30: what did you use for haskell on phone? |
2022-07-31 12:10:48 +0200 | <tomsmeding> | ggVGc: makes sense :) |
2022-07-31 12:10:51 +0200 | <Jade30> | Termux with a virtual arch installation that ran ghc as a native package |
2022-07-31 12:11:02 +0200 | <tomsmeding> | ggVGc: Not even necessarily a bad thing |
2022-07-31 12:11:03 +0200 | <Jade30> | it was barely working haha |
2022-07-31 12:11:10 +0200 | <tomsmeding> | Jade30: native termux now has a ghc package too! |
2022-07-31 12:11:16 +0200 | <tomsmeding> | Since a few months or so |
2022-07-31 12:11:17 +0200 | <Jade30> | oh, neat! |
2022-07-31 12:11:29 +0200 | <tomsmeding> | And cabal and friends |
2022-07-31 12:11:29 +0200 | <Jade30> | won't need it anymore thankfully |
2022-07-31 12:11:53 +0200 | <tomsmeding> | BF interpreter is top notch first project though :) |
2022-07-31 12:12:17 +0200 | <Jade30> | I'm basically done, I only need to parse the source into an AST |
2022-07-31 12:12:23 +0200 | <Jade30> | the evaluation thing is done |
2022-07-31 12:12:43 +0200 | <ggVGc> | after you write the BF interpreter you can drop all other languages and just use that |
2022-07-31 12:12:54 +0200 | sandydoo | (~sandydoo@185.209.196.136) |
2022-07-31 12:13:00 +0200 | Milan | (~Milan@46.245.111.222) (Quit: Client closed) |
2022-07-31 12:13:04 +0200 | <Jade30> | true |
2022-07-31 12:13:18 +0200 | <Jade30> | tomsmeding https://paste.tomsmeding.com/8e9rE9MR |
2022-07-31 12:13:31 +0200 | sandy_doo | (~sandydoo@185.209.196.136) (Ping timeout: 272 seconds) |
2022-07-31 12:13:53 +0200 | <ggVGc> | Jade30: disappointed it's not all at the type level |
2022-07-31 12:13:54 +0200 | <Jade30> | I'm a little proud for coming up with the `interpret'` function entirely without help |
2022-07-31 12:14:11 +0200 | <Jade30> | ggVGc hm? |
2022-07-31 12:14:18 +0200 | <ggVGc> | :) just joking |
2022-07-31 12:14:36 +0200 | <Jade30> | ok haha |
2022-07-31 12:14:37 +0200 | <ggVGc> | but, I think it'd be possible to implement a BF interpreter on the type-level in haskell |
2022-07-31 12:14:47 +0200 | <ggVGc> | e.g your BF proram would "run" at compile time |
2022-07-31 12:15:09 +0200 | <Jade30> | oh wow |
2022-07-31 12:15:15 +0200 | <Jade30> | that's interesting |
2022-07-31 12:15:32 +0200 | <ggVGc> | yes, but not necessarily good :) |
2022-07-31 12:15:32 +0200 | <Jade30> | that'd mean the compiler as a "language" is turing complete? |
2022-07-31 12:15:34 +0200 | <Jade30> | haha |
2022-07-31 12:15:43 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-07-31 12:15:48 +0200 | <ggVGc> | yeah, I think it is by now |
2022-07-31 12:15:56 +0200 | <Jade30> | damn that's interesting |
2022-07-31 12:15:59 +0200 | <ggVGc> | but I'm not expert enough to say for sure |
2022-07-31 12:16:13 +0200 | <ggVGc> | but, you can have type-level functions and type-level data so... |
2022-07-31 12:17:03 +0200 | <tomsmeding> | Jade30: looking good! |
2022-07-31 12:17:10 +0200 | <Jade30> | ok now I wanna set up HLS for neovim |
2022-07-31 12:17:18 +0200 | <Jade30> | that gave me trouble last time |
2022-07-31 12:17:28 +0200 | <Jade30> | after the installation it would always immediatly crash |
2022-07-31 12:18:01 +0200 | <ggVGc> | Jade30: https://www.reddit.com/r/haskell/comments/g6ea8j/a_brainfuck_interpreter_written_in_haskell/ |
2022-07-31 12:18:31 +0200 | <ggVGc> | not... as nice as on the value level |
2022-07-31 12:18:33 +0200 | <ggVGc> | :) |
2022-07-31 12:18:47 +0200 | <Jade30> | Jesus haha |
2022-07-31 12:19:08 +0200 | <tomsmeding> | Jade30: some minor suggestions https://paste.tomsmeding.com/choqRSjR |
2022-07-31 12:19:08 +0200 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) |
2022-07-31 12:19:25 +0200 | <tomsmeding> | Jade30: how long ago was that hls crashing issue? |
2022-07-31 12:19:35 +0200 | <Jade30> | hm? |
2022-07-31 12:19:37 +0200 | <tomsmeding> | There is a crashing issue that was resolved recently |
2022-07-31 12:19:51 +0200 | <Jade30> | Oh I didn't boot my desktop for over 14 days |
2022-07-31 12:19:55 +0200 | <Jade30> | It was before that+ |
2022-07-31 12:20:02 +0200 | <tomsmeding> | Oh not _that_ recently :p |
2022-07-31 12:20:07 +0200 | <tomsmeding> | A month or two or so |
2022-07-31 12:21:05 +0200 | <naso> | anyone familiar with using Gen.discard or Gen.filter in hedgehog? i'm trying to get an element from a list that can possibly be empty, using https://paste.tomsmeding.com/Bd6DBwtd , but it is not working -- sometimes it has an error that the list is empty |
2022-07-31 12:21:28 +0200 | <ggVGc> | I often wonder why we need a different set of stuff for type-level calculations, if the type system is turing complete anyway. Why not just write normal haskell in special blocks, using types as the values? |
2022-07-31 12:21:54 +0200 | <naso> | (that's not the actual code, just trying to demonstrarte the issue) |
2022-07-31 12:22:01 +0200 | <tomsmeding> | naso: if null xs then Gen.discard else Gen.element f ? |
2022-07-31 12:22:38 +0200 | <tomsmeding> | ggVGc: Have you ever tried programming in Idris or Agda :p |
2022-07-31 12:22:58 +0200 | <ggVGc> | no, only looked at it a little bit a long time ago. But, is that the case there? |
2022-07-31 12:23:06 +0200 | <tomsmeding> | Haakell's type system is turing complete only accidentally due to a bunch of extensions, I believe |
2022-07-31 12:23:34 +0200 | <ggVGc> | I don't think we need to go as far as dependent types to do what I suggested |
2022-07-31 12:23:37 +0200 | <tomsmeding> | ggVGc: The point of a dependently typed language is that the language of types is the same as the language of values |
2022-07-31 12:23:43 +0200 | <Jade30> | Thanks for the suggestions! I actually told my friend about just that, rewriting the `>>` using do-notation :D |
2022-07-31 12:23:44 +0200 | <Jade30> | Is there any case where manual monad operations should *not* be replaced with `do`? |
2022-07-31 12:23:48 +0200 | <tomsmeding> | Hence you have types of types, types of types of types, etc |
2022-07-31 12:24:05 +0200 | <ggVGc> | tomsmeding: well, it's more than that though. It's that you can influence typing based on runtime values, right? Which is more powerful than what I am talkin about |
2022-07-31 12:24:19 +0200 | <tomsmeding> | Jade30: it's equivalent, so in principle no |
2022-07-31 12:24:26 +0200 | <tomsmeding> | Except for style, which is subjective |
2022-07-31 12:24:32 +0200 | <ggVGc> | I just mean that instead of "type family" we can have a special block of haskell and say "Foo :: TypeA -> TypeB" |
2022-07-31 12:24:54 +0200 | <tomsmeding> | ggVGc: Can you partially apply a type family in your system? |
2022-07-31 12:24:54 +0200 | <Jade30> | Yeah I was referring to style |
2022-07-31 12:25:10 +0200 | <naso> | tomsmeding: thanks, sorry my example was too simple and i'm not sure how to apply your suggestion. this is more like it https://paste.tomsmeding.com/92hW7UUa |
2022-07-31 12:25:13 +0200 | <tomsmeding> | Jade30: asking 5 haskell programmers about style will give 6 different answers |
2022-07-31 12:25:30 +0200 | <Jade30> | hahaha |
2022-07-31 12:25:30 +0200 | <ggVGc> | tomsmeding: no, not initially, since I don't think current Haskell supports that? :) |
2022-07-31 12:25:34 +0200 | <Jade30> | yeah I see |
2022-07-31 12:25:40 +0200 | <tomsmeding> | ggVGc: indeed :p |
2022-07-31 12:25:54 +0200 | <ggVGc> | I am talking about having exactly the features we have now, but with the same syntax, just in different blocks |
2022-07-31 12:26:03 +0200 | <ggVGc> | and in this special block, there can be restrictions |
2022-07-31 12:26:08 +0200 | <ggVGc> | like no partial application |
2022-07-31 12:26:18 +0200 | <ggVGc> | it would still be easier to use than the current combination of stuff |
2022-07-31 12:26:24 +0200 | <ggVGc> | I think... |
2022-07-31 12:29:02 +0200 | Milan | (~Milan@46.245.111.222) |
2022-07-31 12:29:23 +0200 | <tomsmeding> | naso: two suggestions https://paste.tomsmeding.com/uSg01xns (when is from Control.Monad) |
2022-07-31 12:29:31 +0200 | Milan | (~Milan@46.245.111.222) (Client Quit) |
2022-07-31 12:29:38 +0200 | <tomsmeding> | ggVGc: probably |
2022-07-31 12:29:54 +0200 | <tomsmeding> | Probably too late for that now, though |
2022-07-31 12:30:06 +0200 | <ggVGc> | can be implemented in... Another extension! |
2022-07-31 12:30:33 +0200 | <tomsmeding> | :D |
2022-07-31 12:31:03 +0200 | <Jade30> | Is there an easier way to do default/starting args than defining `f` as `f' default_arg` where `f'` takes all args? |
2022-07-31 12:31:13 +0200 | radhika | (uid560836@id-560836.helmsley.irccloud.com) |
2022-07-31 12:31:35 +0200 | <naso> | tomsmeding: perfect! thank u |
2022-07-31 12:32:04 +0200 | <tomsmeding> | Jade30: not really, though you can put the f' in a where block on f; this is a common pattern, where that f' is then typically called "go" |
2022-07-31 12:32:32 +0200 | <Jade30> | I see, thanks |
2022-07-31 12:33:59 +0200 | <Jade30> | ok, maybe I did something wrong; running `stack run` is downloading `GHC` again (?) |
2022-07-31 12:34:12 +0200 | <tomsmeding> | Jade30: stack manages its own ghcs |
2022-07-31 12:34:20 +0200 | <tomsmeding> | Use cabal if you want to use the ghcup-installed ghc |
2022-07-31 12:34:38 +0200 | <tomsmeding> | Or use stack and remove the ghcup-installed ghcs to save disk space :p |
2022-07-31 12:34:41 +0200 | <Jade30> | oh ok, this is fine I think |
2022-07-31 12:34:52 +0200 | <tomsmeding> | (or use system-ghc: true in stack.yaml, but please don't) |
2022-07-31 12:34:59 +0200 | <Jade30> | I have plenty of disk space, this shouldn't be too bad haha |
2022-07-31 12:35:05 +0200 | <Jade30> | Do you think Stack or Cabal is better? |
2022-07-31 12:35:15 +0200 | <tomsmeding> | How to start a flame war in haskell land |
2022-07-31 12:35:25 +0200 | <maerwald> | :D |
2022-07-31 12:35:33 +0200 | <tomsmeding> | Stack was born out of frustration with cabal, but then cabal improved a lot |
2022-07-31 12:35:53 +0200 | <tomsmeding> | These days it doesn't matter all that much, details are different but overall preference is subjective |
2022-07-31 12:35:58 +0200 | <Jade30> | haha, looks like a lot of things make everything go up in flames in haskell land |
2022-07-31 12:36:24 +0200 | <tomsmeding> | I personally prefer cabal, but feel free to use stack if you wish |
2022-07-31 12:36:39 +0200 | <tomsmeding> | Getting started easily trumps ideological perfection |
2022-07-31 12:37:00 +0200 | <ggVGc> | I use stack still, but cabal build times are faster... |
2022-07-31 12:37:13 +0200 | <ggVGc> | there are somethings with stack I don't know how to do with cabal |
2022-07-31 12:37:19 +0200 | <ggVGc> | like 'stack ghci' |
2022-07-31 12:37:23 +0200 | <tomsmeding> | cabal repl |
2022-07-31 12:37:42 +0200 | malte | (~malte@mal.tc) |
2022-07-31 12:37:49 +0200 | <Jade30> | Ok, all the advantages of neovim aside, this is too much of a pain rn, I'll just use `vscode(ium)` |
2022-07-31 12:37:54 +0200 | <ggVGc> | I had some issues with that in the past if I remember correctly... relating to it not loading all the modules I wanted or something |
2022-07-31 12:38:01 +0200 | <ggVGc> | might look into making the switch again sometimes |
2022-07-31 12:38:03 +0200 | <ggVGc> | sometime* |
2022-07-31 12:38:05 +0200 | <tomsmeding> | Ah |
2022-07-31 12:38:21 +0200 | <Jade30> | Unless theres something better than vsc? some plugin for a jetbrains ide/something similar? |
2022-07-31 12:38:39 +0200 | <Jade30> | I think theres an IntelliJ plugin but idk how good it is |
2022-07-31 12:38:42 +0200 | <tomsmeding> | Vscode is the best in integration with hls currently |
2022-07-31 12:38:46 +0200 | <Jade30> | ok cool |
2022-07-31 12:38:53 +0200 | <tomsmeding> | I have neovim working, but if you can stand vscode... :) |
2022-07-31 12:38:57 +0200 | <ggVGc> | vim+coc+haskell-language-server works quite well for me |
2022-07-31 12:39:00 +0200 | <tomsmeding> | Probably easier |
2022-07-31 12:39:16 +0200 | <Jade30> | I'm rather new to vim so I need to get used to a lot of stuff |
2022-07-31 12:43:48 +0200 | misterfish | (~misterfis@87.215.131.98) |
2022-07-31 12:54:36 +0200 | Jade30 | (~Jade@ip-178-201-128-039.um46.pools.vodafone-ip.de) (Quit: Connection closed) |
2022-07-31 12:59:44 +0200 | sonologico | (~raphael@dhcp-077-251-118-129.chello.nl) |
2022-07-31 13:02:26 +0200 | <ggVGc> | tomsmeding: why can't I do this? :( https://gist.github.com/c42f38018667a78949e07da10ba7962b |
2022-07-31 13:04:46 +0200 | <ggVGc> | ah, wait... I need a type class also I guess? |
2022-07-31 13:06:29 +0200 | Milan | (~Milan@46.245.111.222) |
2022-07-31 13:09:41 +0200 | <tomsmeding> | ggVGc: not everything is a Range :p |
2022-07-31 13:09:59 +0200 | <tomsmeding> | In fact a Positive doesn't contain any data at all |
2022-07-31 13:10:48 +0200 | <tomsmeding> | ggVGc: Suggestion: data Range ty = Range Int Int |
2022-07-31 13:11:08 +0200 | <tomsmeding> | And then have `ty` be Positive, Nullable Negative, etc |
2022-07-31 13:11:32 +0200 | <tomsmeding> | And just make Positive etc. types without constructors (data Positive) |
2022-07-31 13:11:42 +0200 | MajorBiscuit | (~MajorBisc@86-88-79-148.fixed.kpn.net) |
2022-07-31 13:11:42 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-07-31 13:11:51 +0200 | chomwitt | (~chomwitt@2a02:587:dc12:b700:678b:e1a:f7b:532c) |
2022-07-31 13:11:59 +0200 | naso | (~naso@193-116-244-197.tpgi.com.au) (Read error: Connection reset by peer) |
2022-07-31 13:12:38 +0200 | <tomsmeding> | For more fanciness, with DataKinds: data Ty = Positive | NonNull Ty | ... ; data Range (ty :: Ty) = Range Int Int ; and then use `Range 1 2 :: Range ('NonNull 'Positive)` |
2022-07-31 13:12:46 +0200 | naso | (~naso@193-116-244-197.tpgi.com.au) |
2022-07-31 13:13:02 +0200 | <tomsmeding> | To ensure a troll can't make a `Range String` |
2022-07-31 13:13:51 +0200 | chomwitt | (~chomwitt@2a02:587:dc12:b700:678b:e1a:f7b:532c) (Remote host closed the connection) |
2022-07-31 13:14:10 +0200 | chomwitt | (~chomwitt@2a02:587:dc12:b700:3d3:74d8:b5ce:c91f) |
2022-07-31 13:15:52 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds) |
2022-07-31 13:17:57 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 245 seconds) |
2022-07-31 13:18:07 +0200 | naso | (~naso@193-116-244-197.tpgi.com.au) (Ping timeout: 272 seconds) |
2022-07-31 13:18:31 +0200 | <tomsmeding> | Alternative is indeed to make a type class HasRange r where getRange :: r -> Range; but then you still need to put some data in a Positive :p |
2022-07-31 13:28:22 +0200 | sonologico | (~raphael@dhcp-077-251-118-129.chello.nl) (Ping timeout: 245 seconds) |
2022-07-31 13:29:51 +0200 | chomwitt | (~chomwitt@2a02:587:dc12:b700:3d3:74d8:b5ce:c91f) (Ping timeout: 276 seconds) |
2022-07-31 13:29:52 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-07-31 13:30:47 +0200 | acidjnk | (~acidjnk@p200300d6e70586358424384a1bd111e9.dip0.t-ipconnect.de) |
2022-07-31 13:36:04 +0200 | sonologico | (~raphael@dhcp-077-251-118-129.chello.nl) |
2022-07-31 13:36:11 +0200 | <ggVGc> | tomsmeding: yeah, datakinds is probably what I want... Stuck again :( https://gist.github.com/c42f38018667a78949e07da10ba7962b |
2022-07-31 13:36:22 +0200 | <ggVGc> | I feel I'm missing a crucial piece of understanding |
2022-07-31 13:41:46 +0200 | Guest49 | (~Guest49@5.214.242.88) |
2022-07-31 13:41:48 +0200 | naso | (~naso@193-116-244-197.tpgi.com.au) |
2022-07-31 13:42:55 +0200 | Guest49 | (~Guest49@5.214.242.88) (Client Quit) |
2022-07-31 13:43:26 +0200 | yauhsien | (~yauhsien@118-167-41-184.dynamic-ip.hinet.net) |
2022-07-31 13:43:33 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) |
2022-07-31 13:45:11 +0200 | <tomsmeding> | ggVGc: What about: valueSubset :: RangeSubset a b ~ 'True => Range a -> Range b -> Bool |
2022-07-31 13:45:26 +0200 | <tomsmeding> | And then remove the Range from all your RangeSubset equations |
2022-07-31 13:46:18 +0200 | <ggVGc> | ahhh, that makes a lot more sense |
2022-07-31 13:46:22 +0200 | <ggVGc> | haha... thanks |
2022-07-31 13:47:17 +0200 | <tomsmeding> | ggVGc: why does AnyNumber have a constructor |
2022-07-31 13:47:31 +0200 | <ggVGc> | by accident :) |
2022-07-31 13:47:43 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-07-31 13:47:58 +0200 | <ggVGc> | nice, this is starting to get close to fulfilling my basic use-case, even if it can be implemented nicer |
2022-07-31 13:48:07 +0200 | <ggVGc> | thanks a lot for the help |
2022-07-31 13:50:44 +0200 | <tomsmeding> | ggVGc: This is how to restrict ty to just these things https://paste.tomsmeding.com/Jr374Yor |
2022-07-31 13:50:48 +0200 | <ggVGc> | ah... but I messed up, because I actually need to be able to have a list of [a, Range] or equivalent... |
2022-07-31 13:50:53 +0200 | Milan | (~Milan@46.245.111.222) (Quit: Client closed) |
2022-07-31 13:51:05 +0200 | <ggVGc> | of (a, Range), I mean |
2022-07-31 13:51:08 +0200 | <tomsmeding> | Oops typo on line 14 |
2022-07-31 13:51:47 +0200 | <tomsmeding> | ggVGc: What do you mean? What a? |
2022-07-31 13:51:49 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-07-31 13:52:12 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
2022-07-31 13:54:54 +0200 | naso | (~naso@193-116-244-197.tpgi.com.au) (Remote host closed the connection) |
2022-07-31 13:55:11 +0200 | tstat | (~tstat@user/tstat) |
2022-07-31 13:55:32 +0200 | Guest49 | (~Guest49@5.214.242.88) |
2022-07-31 13:55:44 +0200 | naso | (~naso@193-116-244-197.tpgi.com.au) |
2022-07-31 13:55:45 +0200 | Guest49 | (~Guest49@5.214.242.88) (Client Quit) |
2022-07-31 13:55:57 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds) |
2022-07-31 13:55:57 +0200 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 252 seconds) |
2022-07-31 13:56:25 +0200 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-07-31 13:59:11 +0200 | Guest49 | (~Guest49@5.214.242.88) |
2022-07-31 13:59:25 +0200 | Guest49 | (~Guest49@5.214.242.88) (Client Quit) |
2022-07-31 13:59:32 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2022-07-31 14:02:23 +0200 | yauhsien | (~yauhsien@118-167-41-184.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-07-31 14:03:27 +0200 | califax | (~califax@user/califx) (Ping timeout: 268 seconds) |
2022-07-31 14:03:39 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) (Ping timeout: 252 seconds) |
2022-07-31 14:04:30 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Read error: Connection reset by peer) |
2022-07-31 14:05:32 +0200 | califax | (~califax@user/califx) |
2022-07-31 14:06:50 +0200 | mikail | (~mikail@2a02:c7f:bc47:8c00:5aa7:b193:11e3:d108) (Remote host closed the connection) |
2022-07-31 14:08:54 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-07-31 14:11:38 +0200 | mikail | (~mikail@2a02:c7f:bc47:8c00:5aa7:b193:11e3:d108) |
2022-07-31 14:12:40 +0200 | yauhsien | (~yauhsien@118-167-41-184.dynamic-ip.hinet.net) |
2022-07-31 14:12:51 +0200 | Milan | (~Milan@46.245.111.222) |
2022-07-31 14:13:17 +0200 | Milan | (~Milan@46.245.111.222) (Client Quit) |
2022-07-31 14:20:36 +0200 | yauhsien | (~yauhsien@118-167-41-184.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-07-31 14:21:51 +0200 | yauhsien | (~yauhsien@118-167-41-184.dynamic-ip.hinet.net) |
2022-07-31 14:24:25 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Ping timeout: 268 seconds) |
2022-07-31 14:25:06 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-07-31 14:28:26 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-07-31 14:28:47 +0200 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2022-07-31 14:32:50 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-07-31 14:33:23 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-07-31 14:33:43 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 252 seconds) |
2022-07-31 14:34:45 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-07-31 14:36:28 +0200 | jargon | (~jargon@184.101.188.251) (Remote host closed the connection) |
2022-07-31 14:38:11 +0200 | sonologico | (~raphael@dhcp-077-251-118-129.chello.nl) (Ping timeout: 244 seconds) |
2022-07-31 14:38:38 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-07-31 14:40:20 +0200 | radhika | (uid560836@id-560836.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
2022-07-31 14:41:26 +0200 | yauhsien | (~yauhsien@118-167-41-184.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-07-31 14:42:00 +0200 | notzmv | (~zmv@user/notzmv) (Ping timeout: 276 seconds) |
2022-07-31 14:42:57 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds) |
2022-07-31 14:43:04 +0200 | yauhsien | (~yauhsien@118-167-41-184.dynamic-ip.hinet.net) |
2022-07-31 14:43:53 +0200 | <ggVGc> | tomsmeding: the usecase is basically this: data Thing = Thing {inputs :: [(String, Range)]} |
2022-07-31 14:44:30 +0200 | <ggVGc> | and the ranges are for checking of something can be connected to a certain input |
2022-07-31 14:45:37 +0200 | <tomsmeding> | ggVGc: is your problem that the various Range objects need to have different type tags? |
2022-07-31 14:46:26 +0200 | <ggVGc> | yeah, so I need to rethink how to model this I guess. Basically "input1" could have Positive range, and "input2" could have a Nullable (Range Int Int) |
2022-07-31 14:46:48 +0200 | <tomsmeding> | Right, then you can't model this in the type system |
2022-07-31 14:47:26 +0200 | Kikroz | (~Kikroz@5.214.242.88) |
2022-07-31 14:47:34 +0200 | <tomsmeding> | Well, what you could do is move Ty to the value level, but then make Ty a gadt so that pattern matching on a Ty can reconstruct the type-level info |
2022-07-31 14:48:10 +0200 | <ggVGc> | hm, yeah, that might work |
2022-07-31 14:49:32 +0200 | <mon_aaraj> | hello, i have something like: ``\x y z -> max (show x) (y <> z)``, but I want to write it in a point-free manner, and I distinctly remember some combinator similar to this |
2022-07-31 14:50:22 +0200 | <tomsmeding> | @pl \x y z -> max (show x) (y <> z) |
2022-07-31 14:50:22 +0200 | <lambdabot> | (. (<>)) . (.) . max . show |
2022-07-31 14:50:27 +0200 | <tomsmeding> | Useful! |
2022-07-31 14:50:35 +0200 | jmdaemon | (~jmdaemon@user/jmdaemon) (Ping timeout: 252 seconds) |
2022-07-31 14:50:42 +0200 | <mon_aaraj> | oh wow, thank you very much.. i wonder how much more readable that would be if blackbird was used |
2022-07-31 14:51:05 +0200 | <tomsmeding> | Well it's hard to be less readable than this |
2022-07-31 14:52:03 +0200 | <ggVGc> | Pointfree Considered Harmful |
2022-07-31 14:53:06 +0200 | <tomsmeding> | Pointfree style is like strong herbs, a little goes a long way |
2022-07-31 14:55:04 +0200 | <tomsmeding> | mon_aaraj: \x -> blackbird (max (show x)) (<>), if I'm not mistaken |
2022-07-31 14:55:39 +0200 | <tomsmeding> | @pl blackbird (max (show x)) (<>) |
2022-07-31 14:55:39 +0200 | <lambdabot> | blackbird (max (show x)) (<>) |
2022-07-31 14:56:03 +0200 | <tomsmeding> | @pl \x -> blackbird (max (show x)) (<>) |
2022-07-31 14:56:03 +0200 | <lambdabot> | flip blackbird (<>) . max . show |
2022-07-31 14:56:11 +0200 | <tomsmeding> | Which is inscrutable again |
2022-07-31 14:56:15 +0200 | <mon_aaraj> | well, i suppose blackbird just makes it ``((.: (<>)) . max . show)`` |
2022-07-31 14:56:26 +0200 | <tomsmeding> | Right |
2022-07-31 15:00:10 +0200 | Kikroz | (~Kikroz@5.214.242.88) (Ping timeout: 252 seconds) |
2022-07-31 15:00:27 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 245 seconds) |
2022-07-31 15:02:49 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-07-31 15:05:15 +0200 | <mon_aaraj> | oops, sorry, my last message arrived late |
2022-07-31 15:06:07 +0200 | yauhsien | (~yauhsien@118-167-41-184.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-07-31 15:06:59 +0200 | yauhsien | (~yauhsien@118-167-41-184.dynamic-ip.hinet.net) |
2022-07-31 15:10:23 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
2022-07-31 15:10:25 +0200 | <mon_aaraj> | anyways, it seems that the point-free code produces different output than ``(\x y z -> max (show x) (y <> z))`` somehow |
2022-07-31 15:11:09 +0200 | <mon_aaraj> | ah, wait, nope, only when i try to forcefully shove blackbird in |
2022-07-31 15:11:28 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) |
2022-07-31 15:12:05 +0200 | <geekosaur> | either you're doing ot wrong or you're running into something unrelated e.g. monomorphism restriction from removing an explicit parameter |
2022-07-31 15:14:04 +0200 | whatsupboy | (~whatsupbo@user/scobydoo) (Quit: WeeChat 2.8) |
2022-07-31 15:16:45 +0200 | <hasbae> | :t blackbird |
2022-07-31 15:16:46 +0200 | <lambdabot> | error: Variable not in scope: blackbird |
2022-07-31 15:18:04 +0200 | <geekosaur[m]> | Actually it wouldn't be MMR because that affects the type not the value, but there are other traps |
2022-07-31 15:18:13 +0200 | whatsupboy | (~whatsupbo@user/scobydoo) |
2022-07-31 15:18:36 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) (Ping timeout: 268 seconds) |
2022-07-31 15:19:15 +0200 | <hasbae> | whats the command for lambdabot to show the type of blackbird? |
2022-07-31 15:19:31 +0200 | <geekosaur[m]> | hasbae: it's not there. See the paper "To Mock a Mockingbird" iirc |
2022-07-31 15:19:31 +0200 | whatsupboy | (~whatsupbo@user/scobydoo) (Quit: brb) |
2022-07-31 15:19:32 +0200 | sonologico | (~raphael@dhcp-077-251-118-129.chello.nl) |
2022-07-31 15:20:00 +0200 | naso | (~naso@193-116-244-197.tpgi.com.au) () |
2022-07-31 15:20:17 +0200 | <mon_aaraj> | yeah, the first thing i stumbled into was ``(<>) .: max . show``, but.. well, it always appends the number to the 2nd string, so ``((<>) .: max . shohw) 5 "" "buzz"`` would result in ``5buzz`` |
2022-07-31 15:20:21 +0200 | <geekosaur[m]> | Someone collected a bunch of point-free combinators |
2022-07-31 15:20:30 +0200 | <hasbae> | ok. this disucssion came up the other day. blackbird is not in To Mock a Mockingbird, at least not in the index where all the birds are listed |
2022-07-31 15:20:32 +0200 | whatsupboy | (~whatsupbo@user/scobydoo) |
2022-07-31 15:21:00 +0200 | haritz | (~hrtz@user/haritz) (Remote host closed the connection) |
2022-07-31 15:21:25 +0200 | yauhsien | (~yauhsien@118-167-41-184.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-07-31 15:22:30 +0200 | yauhsien | (~yauhsien@118-167-41-184.dynamic-ip.hinet.net) |
2022-07-31 15:22:47 +0200 | <mon_aaraj> | in here http://revue.sesamath.net/IMG/pdf/mockingbird3.pdf it's number 6, but i don't know if that's what you guys are talking about |
2022-07-31 15:25:52 +0200 | sonologico | (~raphael@dhcp-077-251-118-129.chello.nl) (Ping timeout: 245 seconds) |
2022-07-31 15:28:22 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 245 seconds) |
2022-07-31 15:30:20 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-07-31 15:32:38 +0200 | <hasbae> | yes, that's the one |
2022-07-31 15:39:35 +0200 | Jade1 | (~Jade1@ip-178-201-128-039.um46.pools.vodafone-ip.de) |
2022-07-31 15:39:58 +0200 | <Jade1> | Hello, how can I utilize the autocomplete with vim, coc and HLS? |
2022-07-31 15:40:21 +0200 | <Jade1> | It shows me the suggestion with a `[A]` but I have no idea how to "use" it |
2022-07-31 15:41:09 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-07-31 15:43:09 +0200 | yauhsien | (~yauhsien@118-167-41-184.dynamic-ip.hinet.net) (Ping timeout: 272 seconds) |
2022-07-31 15:44:48 +0200 | <ggVGc> | tomsmeding: do you know how I could do this without UndecidableInstance? https://gist.github.com/77f1468484702783b1ea0176d1980304 |
2022-07-31 15:47:48 +0200 | <tomsmeding> | @hackage data-aviary |
2022-07-31 15:47:48 +0200 | <lambdabot> | https://hackage.haskell.org/package/data-aviary |
2022-07-31 15:47:53 +0200 | <tomsmeding> | hasbae: ^ |
2022-07-31 15:48:02 +0200 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) |
2022-07-31 15:49:01 +0200 | <tomsmeding> | ggVGc: Not |
2022-07-31 15:49:10 +0200 | <ggVGc> | hah... |
2022-07-31 15:49:31 +0200 | <tomsmeding> | Standard rules are quite conservative, and sufficient to guarantee convergence, if I remember correctly |
2022-07-31 15:49:49 +0200 | <tomsmeding> | But there are plenty of convergent things that aren't covered by those rules |
2022-07-31 15:50:07 +0200 | <tomsmeding> | Where with "convergent" I mean "doesn't loop indefinitely" |
2022-07-31 15:50:43 +0200 | <tomsmeding> | UndecidableInstances doesn't break semantics, it just allows inference to not terminate, possibly |
2022-07-31 15:50:56 +0200 | <tomsmeding> | If inference terminates, the result is still correct |
2022-07-31 15:51:01 +0200 | <tomsmeding> | So it's quite safe |
2022-07-31 15:53:11 +0200 | <merijn> | ggVGc: UndecidableInstances (despite the same) is safe in the sense that "code that finishes compiling will be correct" |
2022-07-31 15:53:17 +0200 | <merijn> | s/same/name |
2022-07-31 15:53:32 +0200 | <merijn> | (correct in a typing sense, not necessarily behaviour :p) |
2022-07-31 15:55:54 +0200 | <ggVGc> | ah, cool. Have to admit I never really fully understood the caveats of it |
2022-07-31 15:56:33 +0200 | <merijn> | ggVGc: By default GHC is very conservative in type level functions and typeclass tomfoolery, meaning it only allows things that provably always terminate |
2022-07-31 15:57:31 +0200 | <merijn> | ggVGc: UndecidableInstances allows things for which it is undecidable if they (the typeclass tomfoolery) terminates. So, hypothetically, you can end up with code which does not terminate and compilation never finishes |
2022-07-31 15:57:48 +0200 | <merijn> | (in practice, GHC has a maximum number of evaluation steps before it gives up and says "no") |
2022-07-31 15:58:08 +0200 | zebrag | (~chris@user/zebrag) |
2022-07-31 15:58:41 +0200 | <Jade1> | !paste |
2022-07-31 15:58:47 +0200 | <geekosaur> | @where paste |
2022-07-31 15:58:47 +0200 | <lambdabot> | Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com |
2022-07-31 15:58:51 +0200 | <Jade1> | thx |
2022-07-31 15:59:30 +0200 | <geekosaur> | I saw your question earlier but can't help with it; I only use nvim for quick edits and stick to vs code for HLS stuff |
2022-07-31 15:59:51 +0200 | <ggVGc> | merijn: right, thanks, that makes sense |
2022-07-31 16:00:34 +0200 | <ggVGc> | it's too bad about the compilation termination. That's what prevents us from writing all our software in type-level BF |
2022-07-31 16:01:16 +0200 | <Jade1> | https://paste.tomsmeding.com/OBy4d1Xh How can I write the `bf_parser`? |
2022-07-31 16:01:33 +0200 | <geekosaur> | enh. actually it's just making type leel as complete as value level by adding bottoms 🙂 |
2022-07-31 16:01:45 +0200 | <Jade1> | Parsers and Parser combinators are new to me so I'm struggling a littöe |
2022-07-31 16:03:11 +0200 | sonologico | (~raphael@dhcp-077-251-118-129.chello.nl) |
2022-07-31 16:04:12 +0200 | <ggVGc> | tomsmeding: I tried understanding you GADT suggestion, but I'm not sure I am able to apply it. How were you thinking I could reconstruct the types? :/ |
2022-07-31 16:07:36 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-07-31 16:08:04 +0200 | Vajb | (~Vajb@n1zigc3rgo9mpde2w-1.v6.elisa-mobile.fi) |
2022-07-31 16:09:41 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-07-31 16:12:41 +0200 | Kikroz | (~Kikroz@5.214.242.88) |
2022-07-31 16:13:19 +0200 | Kikroz | (~Kikroz@5.214.242.88) (Client Quit) |
2022-07-31 16:14:18 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 276 seconds) |
2022-07-31 16:16:54 +0200 | <tomsmeding> | ggVGc: data Ty = Positive | Nullable Ty | ... ; data STy ty where { SPositive :: STy 'Positive ; SNullable :: STy ty -> STy ('Nullable ty) ; ... } |
2022-07-31 16:17:16 +0200 | <tomsmeding> | data SomeSTy = forall ty. SomeSTy (STy ty) |
2022-07-31 16:18:06 +0200 | <tomsmeding> | Then use SomeSTy if you want to forget the type info; pattern matching on an STy, if you know in advance what it should be (but ghc doesn't), will allow you to prove your expectation |
2022-07-31 16:18:13 +0200 | zxx7529 | (~Thunderbi@user/zxx7529) (Ping timeout: 252 seconds) |
2022-07-31 16:18:22 +0200 | <tomsmeding> | S comes from "singleton" |
2022-07-31 16:19:08 +0200 | <tomsmeding> | The singletons library can generate STy from Ty for you, I think, but I've never used it and there is some more complexity to it due to the library's generality |
2022-07-31 16:22:58 +0200 | zxx7529 | (~Thunderbi@user/zxx7529) |
2022-07-31 16:25:33 +0200 | sonologico | (~raphael@dhcp-077-251-118-129.chello.nl) (Ping timeout: 252 seconds) |
2022-07-31 16:26:25 +0200 | kenran | (~kenran@200116b82b2ba400703212b2a68ff598.dip.versatel-1u1.de) |
2022-07-31 16:27:32 +0200 | yin | (~yin@user/zero) (Ping timeout: 245 seconds) |
2022-07-31 16:31:11 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2022-07-31 16:31:49 +0200 | <onosendi> | How is this function called? https://gist.github.com/onosendi/fa35bc76d43e57369cf2d6ba7041d76d |
2022-07-31 16:33:26 +0200 | <geekosaur> | `greet (Person aName anAge)` or `greet (Person {name = aName, age = anAge})` |
2022-07-31 16:33:42 +0200 | <geekosaur> | (the parentheses are actually unnecessary in the second one, but then it's more confusing) |
2022-07-31 16:34:04 +0200 | califax | (~califax@user/califx) (Remote host closed the connection) |
2022-07-31 16:35:04 +0200 | <onosendi> | Thank you. I feel like this Tutorial skipped over a bunch of stuff, heh. |
2022-07-31 16:35:37 +0200 | <geekosaur> | in general you create values the same way you declare them |
2022-07-31 16:35:57 +0200 | califax | (~califax@user/califx) |
2022-07-31 16:36:41 +0200 | <geekosaur> | so if you have `data Person = Person {name :: String, age :: Int}` then a value of type Person is `person {name = "Fred", age = 50}` |
2022-07-31 16:37:33 +0200 | <geekosaur> | and similarly for yesterday when you had `calc` and needed a value to go with it, and had it declared as `Add Int Int | Sub Int Int` |
2022-07-31 16:37:34 +0200 | vglfr | (~vglfr@194.9.14.33) (Read error: Connection reset by peer) |
2022-07-31 16:37:42 +0200 | vglfr | (~vglfr@194.9.14.33) |
2022-07-31 16:37:49 +0200 | <mon_aaraj> | well, i suppose i can show my little cancerous creation: |
2022-07-31 16:37:52 +0200 | <mon_aaraj> | ``(zipWith3 (\x y z -> max (show x) (y <> z)) [1..100] `on` cycle) ["","","Fizz"] ["","","","","Buzz"]`` |
2022-07-31 16:38:03 +0200 | <geekosaur> | but for that one you needed parentheses because `Add` and `Sub` can be used directly as values with function types |
2022-07-31 16:38:12 +0200 | <ggVGc> | tomsmeding: thanks, will have a crack |
2022-07-31 16:38:30 +0200 | <onosendi> | I think I need to go to another tutorial and learn more about types before I proceed. It's confusing why the second `Person` is there, `data Person = Person`. It's also confusing in the function declaration why `person` is at the end: `greet person = "Hi " ++ name person` |
2022-07-31 16:38:38 +0200 | <mon_aaraj> | i'm not quite sure how i'd make it shorter but still readable... but I think that's good enough for now |
2022-07-31 16:38:54 +0200 | machinedgod | (~machinedg@d172-219-86-154.abhsia.telus.net) |
2022-07-31 16:39:14 +0200 | sonologico | (~raphael@dhcp-077-251-118-129.chello.nl) |
2022-07-31 16:40:02 +0200 | raym | (~raym@user/raym) (Ping timeout: 245 seconds) |
2022-07-31 16:40:15 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-07-31 16:40:48 +0200 | Inst_ | (~Inst@2601:6c4:4080:3f80:d998:768b:c35b:a535) |
2022-07-31 16:40:54 +0200 | raym | (~raym@user/raym) |
2022-07-31 16:41:15 +0200 | vglfr | (~vglfr@194.9.14.33) (Remote host closed the connection) |
2022-07-31 16:41:55 +0200 | vglfr | (~vglfr@194.9.14.33) |
2022-07-31 16:43:44 +0200 | Inst | (~Inst@2601:6c4:4080:3f80:d998:768b:c35b:a535) (Ping timeout: 244 seconds) |
2022-07-31 16:44:37 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds) |
2022-07-31 16:45:36 +0200 | <ggVGc> | tomsmeding: man, that's great :) Thanks a lot! |
2022-07-31 16:45:47 +0200 | <ggVGc> | today has been a day of much learning |
2022-07-31 16:47:48 +0200 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-07-31 16:48:24 +0200 | <hasbae> | onosendi: terms and types have different namespaces, and therefore you can have the same name in both. Person on the left is a type, and Person on the right is a terml, which is an element of the type Person |
2022-07-31 16:48:40 +0200 | <hasbae> | s/terml/term |
2022-07-31 16:49:10 +0200 | <geekosaur> | especially when learning, it may be better to name the term and type level ones differently to help keep them separate |
2022-07-31 16:49:20 +0200 | gmg | (~user@user/gehmehgeh) |
2022-07-31 16:49:41 +0200 | <geekosaur> | especially since ghc has some fun type level stuff that is well beyond beginner, but which it will innocently suggest to you if you get the levels confused |
2022-07-31 16:50:05 +0200 | kenran | (~kenran@200116b82b2ba400703212b2a68ff598.dip.versatel-1u1.de) (Quit: WeeChat info:version) |
2022-07-31 16:50:32 +0200 | <onosendi> | So that's not considered recursive datatypes? A few videos before there was an example `data PeaNum = Succ PeaNum | Zero`, which was recursive? |
2022-07-31 16:51:00 +0200 | <geekosaur> | that one is recursive because `Succ PraNum` refers to the type, not a value |
2022-07-31 16:51:06 +0200 | sonologico | (~raphael@dhcp-077-251-118-129.chello.nl) (Ping timeout: 268 seconds) |
2022-07-31 16:51:09 +0200 | <onosendi> | Ah, okay. |
2022-07-31 16:51:25 +0200 | <geekosaur> | compare `Maybe Int` which refers to a type (data Maybe a = Nothing | Just a) |
2022-07-31 16:51:39 +0200 | notzmv | (~zmv@user/notzmv) |
2022-07-31 16:53:51 +0200 | <geekosaur> | so when you declare that PeaNum, the constructor Succ takes a type as a parameter which happens to be the same as the type you're declaring |
2022-07-31 16:54:23 +0200 | <geekosaur> | when you make a value, you use a value there instead (`(Succ (Succ Zero))` for example) |
2022-07-31 16:56:53 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-07-31 16:56:53 +0200 | vglfr | (~vglfr@194.9.14.33) (Read error: Connection reset by peer) |
2022-07-31 16:56:57 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-07-31 16:58:09 +0200 | vglfr | (~vglfr@194.9.14.33) |
2022-07-31 16:58:20 +0200 | <[itchyjunk]> | Can the bot remove sugar syntax? Like "a" -> Cons (a Nil) maybe? |
2022-07-31 16:59:25 +0200 | Jade1 | (~Jade1@ip-178-201-128-039.um46.pools.vodafone-ip.de) (Quit: Client closed) |
2022-07-31 16:59:34 +0200 | <tomsmeding> | [itchyjunk]: the desugared version of "a" would be 'a' : [] |
2022-07-31 16:59:55 +0200 | <[itchyjunk]> | I wanted to see it for ["a"], list of lists |
2022-07-31 17:00:09 +0200 | <tomsmeding> | > ('a' : []) : [] |
2022-07-31 17:00:11 +0200 | <lambdabot> | ["a"] |
2022-07-31 17:00:16 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
2022-07-31 17:00:20 +0200 | <[itchyjunk]> | I wanted to start with [[]] and get ["a"] , ["ab"], etc |
2022-07-31 17:00:28 +0200 | <geekosaur> | not generally. there are some commands which can add or remove specific kinds of syntax, but nothing general |
2022-07-31 17:00:31 +0200 | <[itchyjunk]> | but i seem to keep getting ["a","b"] and i am not sure why |
2022-07-31 17:01:15 +0200 | <[itchyjunk]> | > "b" : ["a"] |
2022-07-31 17:01:16 +0200 | <lambdabot> | ["b","a"] |
2022-07-31 17:01:20 +0200 | Milan | (~Milan@46.245.111.222) |
2022-07-31 17:01:24 +0200 | <tomsmeding> | > inits ['a'..] |
2022-07-31 17:01:26 +0200 | <lambdabot> | ["","a","ab","abc","abcd","abcde","abcdef","abcdefg","abcdefgh","abcdefghi",... |
2022-07-31 17:01:38 +0200 | Milan | (~Milan@46.245.111.222) (Client Quit) |
2022-07-31 17:01:59 +0200 | <[itchyjunk]> | hmm |
2022-07-31 17:02:24 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-07-31 17:02:28 +0200 | <tomsmeding> | [itchyjunk]: ["a"] == "a" : [], so "b" : ["a"] == "b" : "a" : [] == ["b", "a"] |
2022-07-31 17:02:50 +0200 | Inst_ | Inst |
2022-07-31 17:02:59 +0200 | <[itchyjunk]> | ah that makes sense |
2022-07-31 17:03:18 +0200 | <tomsmeding> | > map ('a' :) ["hi", "some", "text"] |
2022-07-31 17:03:19 +0200 | <lambdabot> | ["ahi","asome","atext"] |
2022-07-31 17:03:30 +0200 | <tomsmeding> | > map ("a" ++) ["hi", "some", "text"] |
2022-07-31 17:03:32 +0200 | <lambdabot> | ["ahi","asome","atext"] |
2022-07-31 17:03:46 +0200 | <[itchyjunk]> | so if i have `["a"]` i would want ` ('b' : 'a' : []) : []` ? |
2022-07-31 17:03:47 +0200 | <tomsmeding> | > ["a"] : ["hi", "some", "text"] |
2022-07-31 17:03:49 +0200 | <lambdabot> | error: |
2022-07-31 17:03:49 +0200 | <lambdabot> | • Couldn't match type ‘Char’ with ‘[Char]’ |
2022-07-31 17:03:49 +0200 | <lambdabot> | Expected type: [[Char]] |
2022-07-31 17:04:03 +0200 | <[itchyjunk]> | > ('b' : 'a' : []) : [] |
2022-07-31 17:04:03 +0200 | <tomsmeding> | > "a" : ["hi", "some", "text"] |
2022-07-31 17:04:05 +0200 | <lambdabot> | ["a","hi","some","text"] |
2022-07-31 17:04:05 +0200 | <lambdabot> | ["ba"] |
2022-07-31 17:04:19 +0200 | <[itchyjunk]> | hmmmmmm |
2022-07-31 17:12:41 +0200 | vglfr | (~vglfr@194.9.14.33) (Read error: Connection reset by peer) |
2022-07-31 17:12:54 +0200 | vglfr | (~vglfr@194.9.14.33) |
2022-07-31 17:13:10 +0200 | <[itchyjunk]> | if x is a char `x : []` should give me a string, y should be a string so ` (x:[]):y` should give in concated string and `((x:[]):y):ys` should give me [String] ? |
2022-07-31 17:13:12 +0200 | <[itchyjunk]> | https://bpa.st/R4LQ |
2022-07-31 17:13:47 +0200 | <[itchyjunk]> | i think i'll have to take care of g _ [[]] case at some point |
2022-07-31 17:14:30 +0200 | <merijn> | [itchyjunk]: "(x:[]):y" is a type error if y is a string |
2022-07-31 17:14:43 +0200 | <[itchyjunk]> | hmmmmm |
2022-07-31 17:14:56 +0200 | <[itchyjunk]> | > ('a':[]) : "b" |
2022-07-31 17:14:58 +0200 | <lambdabot> | error: |
2022-07-31 17:14:58 +0200 | <lambdabot> | • Couldn't match type ‘Char’ with ‘[Char]’ |
2022-07-31 17:14:58 +0200 | <lambdabot> | Expected type: [[Char]] |
2022-07-31 17:15:01 +0200 | <merijn> | [itchyjunk]: Pretty sure you just mean "(x:y)" |
2022-07-31 17:15:04 +0200 | <[itchyjunk]> | :( |
2022-07-31 17:15:18 +0200 | <merijn> | [itchyjunk]: : is "append" (or prepend, if you will), not concatenate |
2022-07-31 17:15:23 +0200 | <merijn> | :t (:) |
2022-07-31 17:15:24 +0200 | <lambdabot> | a -> [a] -> [a] |
2022-07-31 17:15:38 +0200 | <[itchyjunk]> | ah append, right |
2022-07-31 17:15:45 +0200 | <merijn> | so if "x :: Char" and "y :: String" you just want "x:y" to put x in front of y |
2022-07-31 17:15:46 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-07-31 17:16:03 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-07-31 17:16:20 +0200 | <[itchyjunk]> | right, makes sense |
2022-07-31 17:16:58 +0200 | <[itchyjunk]> | i also am not sure what do do when my y is [[]] |
2022-07-31 17:17:20 +0200 | <merijn> | [itchyjunk]: Don't you want [] as final case? |
2022-07-31 17:17:21 +0200 | <[itchyjunk]> | since i am trying to do (y:ys), i need to know what to do when (y:ys) is an empty list of string :< |
2022-07-31 17:17:33 +0200 | <merijn> | [[]] is "that last (empty) element of the ys list" |
2022-07-31 17:18:03 +0200 | <merijn> | I would also use guards instead of if/then/else |
2022-07-31 17:18:16 +0200 | <[itchyjunk]> | ah yes, i do want empty to append an empty list |
2022-07-31 17:18:27 +0200 | <[itchyjunk]> | i forgot syntax for guards but remembered them for if else xD |
2022-07-31 17:19:43 +0200 | <[itchyjunk]> | Hm, I am getting a non exhaustive pattern error. |
2022-07-31 17:19:43 +0200 | <[itchyjunk]> | https://bpa.st/S5OA |
2022-07-31 17:21:20 +0200 | Everything | (~Everythin@37.115.210.35) (Quit: leaving) |
2022-07-31 17:21:46 +0200 | <[itchyjunk]> | hmm i've 2 inputs and i've handled empty case for both |
2022-07-31 17:22:09 +0200 | <merijn> | [itchyjunk]: You're not handling the empty case for second argument |
2022-07-31 17:22:22 +0200 | <merijn> | [itchyjunk]: You're handling the "one element that is an empty list" case |
2022-07-31 17:22:44 +0200 | <[itchyjunk]> | oh, the case where it has no element would be [] ? |
2022-07-31 17:23:28 +0200 | <merijn> | [itchyjunk]: Something like: https://paste.tomsmeding.com/NOnl8dq2 |
2022-07-31 17:24:40 +0200 | <[itchyjunk]> | g _ [] = [] is an issue because my accumulator always starts as [] |
2022-07-31 17:24:42 +0200 | <[itchyjunk]> | oh maybe |
2022-07-31 17:24:50 +0200 | <tomsmeding> | [itchyjunk]: what function are you trying to implement |
2022-07-31 17:25:06 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds) |
2022-07-31 17:25:12 +0200 | <[itchyjunk]> | "hello world" -> ["hello","world"] |
2022-07-31 17:25:22 +0200 | <tomsmeding> | so, reimplementing 'words'? |
2022-07-31 17:25:39 +0200 | <[itchyjunk]> | ah, maybe. i don't remember which inbuilt one did it :D |
2022-07-31 17:25:44 +0200 | <tomsmeding> | > words "hello world" |
2022-07-31 17:25:46 +0200 | <lambdabot> | ["hello","world"] |
2022-07-31 17:25:50 +0200 | <[itchyjunk]> | ah! yes |
2022-07-31 17:25:56 +0200 | <[itchyjunk]> | g "hello world" [[]] |
2022-07-31 17:25:57 +0200 | <[itchyjunk]> | ["dlrowolleh"] |
2022-07-31 17:26:01 +0200 | <tomsmeding> | > unwords ["hello", "world"] |
2022-07-31 17:26:03 +0200 | <[itchyjunk]> | it's not doing what i want :x |
2022-07-31 17:26:04 +0200 | <lambdabot> | "hello world" |
2022-07-31 17:26:46 +0200 | <[itchyjunk]> | oh wait, maybe it's doing what i want |
2022-07-31 17:26:55 +0200 | <tomsmeding> | right, so you're saying: words s = g s [[]], right? |
2022-07-31 17:26:58 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-07-31 17:27:04 +0200 | <[itchyjunk]> | yes! |
2022-07-31 17:27:10 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-07-31 17:27:15 +0200 | <tomsmeding> | I'm not sure that's the right way to start |
2022-07-31 17:27:47 +0200 | <[itchyjunk]> | oh :( |
2022-07-31 17:27:53 +0200 | <[itchyjunk]> | i think i made progress though, in some way |
2022-07-31 17:28:03 +0200 | <[itchyjunk]> | g "hello world" [[]] |
2022-07-31 17:28:03 +0200 | <[itchyjunk]> | ["dlrow","olleh"] |
2022-07-31 17:28:41 +0200 | <tomsmeding> | right, except you're producing the result in reverse, somehow |
2022-07-31 17:28:51 +0200 | <tomsmeding> | which is very related to starting with [[]] :) |
2022-07-31 17:29:18 +0200 | <tomsmeding> | let's try writing the function directly, so let's write f :: String -> [String] |
2022-07-31 17:29:28 +0200 | <tomsmeding> | where f "hello world" == ["hello", "world"] |
2022-07-31 17:29:56 +0200 | <tomsmeding> | if we use recursion directly, we have to answer: what is f [], and what is f (x:xs)? |
2022-07-31 17:30:12 +0200 | <tomsmeding> | (your turn) |
2022-07-31 17:30:54 +0200 | <[itchyjunk]> | f [] = [], since you're just passing empty string, i think. unless it has to be [[]] list of empty string |
2022-07-31 17:31:17 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds) |
2022-07-31 17:31:35 +0200 | <tomsmeding> | it doesn't matter a whole lot which one you choose -- does "" have one empty word, or no words at all? |
2022-07-31 17:32:16 +0200 | <tomsmeding> | let's say it has no words at all, so f [] = [] |
2022-07-31 17:32:20 +0200 | <[itchyjunk]> | hmm, " " would be ' ' : []. but what would "" be i wonder |
2022-07-31 17:32:28 +0200 | <tomsmeding> | [] |
2022-07-31 17:32:33 +0200 | <tomsmeding> | > [] :: String |
2022-07-31 17:32:33 +0200 | <[itchyjunk]> | ah! |
2022-07-31 17:32:35 +0200 | <lambdabot> | "" |
2022-07-31 17:32:55 +0200 | <tomsmeding> | "hi" == ['h', 'i'] == 'h' : 'i' : [] |
2022-07-31 17:33:19 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-07-31 17:33:26 +0200 | <tomsmeding> | now that we have 'f [] = []', we look at 'f (x:xs) = ...' |
2022-07-31 17:33:52 +0200 | <tomsmeding> | now the trick is, we can already apply f to xs if we want |
2022-07-31 17:34:10 +0200 | <tomsmeding> | can you somehow express the desired word splitting of x:xs in terms of x and the word splitting of xs? |
2022-07-31 17:37:06 +0200 | <[itchyjunk]> | check if x /= ' ' then take that x, turn it into a string and attach it to the first string of xs if it's first char is not ' ' or somesuch |
2022-07-31 17:38:02 +0200 | <[itchyjunk]> | oh ohhh |
2022-07-31 17:38:14 +0200 | <[itchyjunk]> | f "hello world" |
2022-07-31 17:38:14 +0200 | <[itchyjunk]> | ["h","e","l","l","o","w","o","r","l","d"] |
2022-07-31 17:38:34 +0200 | <[itchyjunk]> | i guess i am not attaching it to the first charater like i wanted to |
2022-07-31 17:39:24 +0200 | <tomsmeding> | [itchyjunk]: "if its first char is not ' '" why that? |
2022-07-31 17:39:35 +0200 | <tomsmeding> | also, not xs but 'f xs', right? |
2022-07-31 17:39:43 +0200 | <tomsmeding> | xs is just the rest of the string |
2022-07-31 17:39:53 +0200 | <[itchyjunk]> | | x /= ' ' = (x : []) : (f xs) is what i used |
2022-07-31 17:39:56 +0200 | <tomsmeding> | 'f xs' is the word-splitted version of the rest of the string (assuming we implement f correctly) |
2022-07-31 17:40:13 +0200 | <[itchyjunk]> | if it's ' ', then i want to start a new word so i want to start appending it to [] maybe |
2022-07-31 17:40:13 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-07-31 17:40:17 +0200 | <tomsmeding> | (x : []) : (f xs) == [x] : f xs == [[x]] ++ f xs |
2022-07-31 17:40:34 +0200 | <tomsmeding> | right, if x == ' ' you want to start a new word: |
2022-07-31 17:40:42 +0200 | <tomsmeding> | f (x:xs) = if isSpace x then [] : f xs else ... |
2022-07-31 17:41:20 +0200 | <tomsmeding> | if x is _not_ a space, you want to prepend x to the first word in 'f xs', right? |
2022-07-31 17:41:43 +0200 | <tomsmeding> | '[x] : f xs' just adds a new word, containing just the single character x |
2022-07-31 17:41:43 +0200 | <[itchyjunk]> | right |
2022-07-31 17:41:48 +0200 | <tomsmeding> | so that's not what you want |
2022-07-31 17:41:57 +0200 | <tomsmeding> | in fact, what if 'f xs' is the empty list? |
2022-07-31 17:42:16 +0200 | <tomsmeding> | --> you need to look at the result of 'f xs', and based on whether it is empty or not, do something different |
2022-07-31 17:43:45 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-07-31 17:44:07 +0200 | califax | (~califax@user/califx) (Remote host closed the connection) |
2022-07-31 17:46:08 +0200 | <tomsmeding> | (indeed, if 'f xs' _is_ the empty list, then there is no such first word! Perhaps you have to create it) |
2022-07-31 17:46:09 +0200 | zxx7529 | (~Thunderbi@user/zxx7529) (Remote host closed the connection) |
2022-07-31 17:47:26 +0200 | <[itchyjunk]> | we did create "" in case the string was empty, now? |
2022-07-31 17:47:29 +0200 | califax | (~califax@user/califx) |
2022-07-31 17:47:30 +0200 | <[itchyjunk]> | f [] = [] |
2022-07-31 17:49:12 +0200 | Kikroz | (~Kikroz@5.214.161.240) |
2022-07-31 17:49:30 +0200 | Kikroz | (~Kikroz@5.214.161.240) (Client Quit) |
2022-07-31 17:49:48 +0200 | <merijn> | > [] == "" |
2022-07-31 17:49:50 +0200 | <lambdabot> | True |
2022-07-31 17:50:11 +0200 | <[itchyjunk]> | oh, maybe i want to use head to refer to first word of f xs |
2022-07-31 17:50:29 +0200 | <[itchyjunk]> | i can't think of a easy way to refer to first word in my f xs |
2022-07-31 17:50:45 +0200 | <merijn> | [itchyjunk]: You want the first chunk of non-spaces, yeah? |
2022-07-31 17:51:30 +0200 | <[itchyjunk]> | yes |
2022-07-31 17:52:08 +0200 | <merijn> | You probably want one of: |
2022-07-31 17:52:12 +0200 | <merijn> | :t takeWhile |
2022-07-31 17:52:13 +0200 | <lambdabot> | (a -> Bool) -> [a] -> [a] |
2022-07-31 17:52:15 +0200 | <merijn> | :t dropWhile |
2022-07-31 17:52:16 +0200 | <lambdabot> | (a -> Bool) -> [a] -> [a] |
2022-07-31 17:52:20 +0200 | <merijn> | :t span |
2022-07-31 17:52:21 +0200 | <lambdabot> | (a -> Bool) -> [a] -> ([a], [a]) |
2022-07-31 17:52:32 +0200 | <merijn> | > span (<5) [1..10] |
2022-07-31 17:52:33 +0200 | <lambdabot> | ([1,2,3,4],[5,6,7,8,9,10]) |
2022-07-31 17:52:46 +0200 | <merijn> | > span (/= |
2022-07-31 17:52:48 +0200 | <lambdabot> | <hint>:1:9: error: |
2022-07-31 17:52:48 +0200 | <lambdabot> | parse error (possibly incorrect indentation or mismatched brackets) |
2022-07-31 17:52:54 +0200 | <merijn> | > span (/=' ') "foo bar baz" |
2022-07-31 17:52:56 +0200 | <lambdabot> | ("foo"," bar baz") |
2022-07-31 17:55:08 +0200 | <monochrom> | You can use "case f xs of w : ws -> ... ; [] -> ..." to access the first word of f xs. |
2022-07-31 17:55:29 +0200 | <monochrom> | Bonus: You can also access the rest of the words! You can also access the no-words case! |
2022-07-31 17:55:31 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) |
2022-07-31 17:56:07 +0200 | <[itchyjunk]> | These are nice alternatives, but i felt like i was close to getting this done without additional functions |
2022-07-31 17:56:18 +0200 | <[itchyjunk]> | i'll make a note to try it with span after this |
2022-07-31 17:56:26 +0200 | <monochrom> | But mine is not an alternative. |
2022-07-31 17:56:38 +0200 | <[itchyjunk]> | oh |
2022-07-31 17:57:15 +0200 | <monochrom> | You wanna access the first word of f xs? Well first you have to address what happens if there is no first word. |
2022-07-31 17:57:32 +0200 | <monochrom> | Then the logical conclusion is you need pattern matching. |
2022-07-31 17:57:42 +0200 | <monochrom> | And cover all cases. |
2022-07-31 17:58:03 +0200 | acidjnk | (~acidjnk@p200300d6e70586358424384a1bd111e9.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
2022-07-31 17:58:41 +0200 | haritz | (~hrtz@82-69-11-11.dsl.in-addr.zen.co.uk) |
2022-07-31 17:58:41 +0200 | haritz | (~hrtz@82-69-11-11.dsl.in-addr.zen.co.uk) (Changing host) |
2022-07-31 17:58:41 +0200 | haritz | (~hrtz@user/haritz) |
2022-07-31 18:00:06 +0200 | jchia[m] | (~jchiamatr@2001:470:69fc:105::c50b) (Quit: You have been kicked for being idle) |
2022-07-31 18:00:17 +0200 | ereslibre[m] | (~ereslibre@2001:470:69fc:105::1:8f90) (Quit: You have been kicked for being idle) |
2022-07-31 18:00:17 +0200 | shiraeeshi[m] | (~shiraeesh@2001:470:69fc:105::1:77) (Quit: You have been kicked for being idle) |
2022-07-31 18:00:37 +0200 | <[itchyjunk]> | wouldn't f [] = [] one way of covering that case? i suppose i can drop that and go with case for the entire thing |
2022-07-31 18:03:03 +0200 | <onosendi> | Is there a way to print anything to stdout, so I can `runhaskell foo.hs` instead of having to `:l foo.hs; somefunc;` ? |
2022-07-31 18:03:04 +0200 | haritz | (~hrtz@user/haritz) (Remote host closed the connection) |
2022-07-31 18:03:16 +0200 | <[itchyjunk]> | `case f xs of w : ws` , so `case xs of []` says when xs is [] |
2022-07-31 18:03:39 +0200 | <[itchyjunk]> | but how is `case f xs of w : ws` looking at xs as (w:ws) ? hmm |
2022-07-31 18:04:08 +0200 | <[itchyjunk]> | onosendi, isn't that where you have to wrap you code around IO somesuch? |
2022-07-31 18:04:17 +0200 | <[itchyjunk]> | that was one thing that i was meant to learn :< |
2022-07-31 18:04:54 +0200 | <merijn> | onosendi: runhaskell will (like regular programs) run "main :: IO ()" |
2022-07-31 18:05:04 +0200 | <merijn> | onosendi: So, yes, if you call the printing code from main :p |
2022-07-31 18:05:17 +0200 | sandydoo | (~sandydoo@185.209.196.136) (Ping timeout: 252 seconds) |
2022-07-31 18:05:29 +0200 | <merijn> | onosendi: Simplest example would be having foo.hs with: main = putStrLn "Hello World!" |
2022-07-31 18:05:40 +0200 | <merijn> | onosendi: Which should, well, print hello world when you use runhaskell |
2022-07-31 18:05:48 +0200 | califax | (~califax@user/califx) (Ping timeout: 268 seconds) |
2022-07-31 18:07:37 +0200 | califax | (~califax@user/califx) |
2022-07-31 18:07:52 +0200 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2022-07-31 18:08:20 +0200 | hellwolf | (~hellwolf@7-41-50-84.sta.estpak.ee) (Remote host closed the connection) |
2022-07-31 18:08:30 +0200 | <ggVGc> | This is a great read :) https://aphyr.com/posts/342-typing-the-technical-interview |
2022-07-31 18:08:48 +0200 | jespada | (~jespada@181.80.249.105) (Ping timeout: 268 seconds) |
2022-07-31 18:09:12 +0200 | misterfish | (~misterfis@87.215.131.98) (Ping timeout: 245 seconds) |
2022-07-31 18:09:22 +0200 | <[itchyjunk]> | https://paste.tomsmeding.com/Kvmw35xE |
2022-07-31 18:09:24 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-07-31 18:09:45 +0200 | <[itchyjunk]> | it's not handeling the cases yet but i think that's what it might look like |
2022-07-31 18:11:03 +0200 | <[itchyjunk]> | oh wait |
2022-07-31 18:11:03 +0200 | Vajb | (~Vajb@n1zigc3rgo9mpde2w-1.v6.elisa-mobile.fi) (Read error: Connection reset by peer) |
2022-07-31 18:12:32 +0200 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2022-07-31 18:13:30 +0200 | jespada | (~jespada@45.162.228.187) |
2022-07-31 18:14:32 +0200 | <[itchyjunk]> | can i use guard inside a case? |
2022-07-31 18:14:36 +0200 | <merijn> | yes |
2022-07-31 18:15:00 +0200 | <[itchyjunk]> | https://paste.tomsmeding.com/bqnaDjnN |
2022-07-31 18:15:16 +0200 | <[itchyjunk]> | so my caes it lessing me know if there is a first word w or not |
2022-07-31 18:15:19 +0200 | Vajb | (~Vajb@n1zigc3rgo9mpde2w-1.v6.elisa-mobile.fi) |
2022-07-31 18:15:43 +0200 | <[itchyjunk]> | if there is, then check if the first char of (x:xs) is not ' ' then you can attach it to the first word w ? |
2022-07-31 18:21:24 +0200 | acidjnk | (~acidjnk@p200300d6e70586358424384a1bd111e9.dip0.t-ipconnect.de) |
2022-07-31 18:22:48 +0200 | <onosendi> | merijn: Yeah, but I can't print any type but a string, right? I'd like to https://gist.github.com/onosendi/cc23301dd780b75da9e53edfccadc7ff |
2022-07-31 18:24:04 +0200 | <merijn> | onosendi: print :) |
2022-07-31 18:24:08 +0200 | dcoutts | (~duncan@host86-151-44-186.range86-151.btcentralplus.com) |
2022-07-31 18:24:09 +0200 | <merijn> | % putStrLn 5 |
2022-07-31 18:24:10 +0200 | <yahb2> | <interactive>:78:10: error: ; • No instance for (Num String) arising from the literal ‘5’ ; • In the first argument of ‘putStrLn’, namely ‘5’ ; In the expression: putStrLn 5 ; I... |
2022-07-31 18:24:12 +0200 | <merijn> | % print 5 |
2022-07-31 18:24:13 +0200 | <yahb2> | 5 |
2022-07-31 18:24:25 +0200 | <merijn> | :t putStrLn |
2022-07-31 18:24:26 +0200 | <lambdabot> | String -> IO () |
2022-07-31 18:24:27 +0200 | <merijn> | :t print |
2022-07-31 18:24:29 +0200 | <lambdabot> | Show a => a -> IO () |
2022-07-31 18:25:59 +0200 | <onosendi> | merijn: I swear I tried that :/ lol, thanks. |
2022-07-31 18:27:22 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2022-07-31 18:27:33 +0200 | califax_ | (~califax@user/califx) |
2022-07-31 18:27:57 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-07-31 18:28:37 +0200 | califax | (~califax@user/califx) (Ping timeout: 268 seconds) |
2022-07-31 18:28:42 +0200 | califax_ | califax |
2022-07-31 18:36:33 +0200 | sandydoo | (~sandydoo@185.209.196.136) |
2022-07-31 18:41:03 +0200 | yauhsien | (~yauhsien@118-167-41-184.dynamic-ip.hinet.net) |
2022-07-31 18:42:07 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) (Ping timeout: 245 seconds) |
2022-07-31 18:42:33 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-07-31 18:43:13 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
2022-07-31 18:45:48 +0200 | yauhsien | (~yauhsien@118-167-41-184.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
2022-07-31 18:45:56 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2022-07-31 18:46:27 +0200 | <Inst> | also, a question |
2022-07-31 18:46:36 +0200 | <Inst> | what advantages would a wordpress clone written in Haskell have? |
2022-07-31 18:47:29 +0200 | <[exa]> | 0 exploits enabled by the sheer hackiness of PHP |
2022-07-31 18:47:54 +0200 | <monochrom> | None. |
2022-07-31 18:48:03 +0200 | <Inst> | I like monochrom's answer |
2022-07-31 18:48:11 +0200 | <[exa]> | unfortunately PHP is a feature of wordpress |
2022-07-31 18:48:33 +0200 | <[itchyjunk]> | the guard is breaking my function h i think |
2022-07-31 18:48:34 +0200 | <[itchyjunk]> | https://bpa.st/36BQ |
2022-07-31 18:48:38 +0200 | <Inst> | from what I've heard, apparently Warp/WAI is substantially faster than the PHP equivalent |
2022-07-31 18:48:46 +0200 | <[itchyjunk]> | when i try just span on my ghci, it seems to somewhat work |
2022-07-31 18:49:36 +0200 | <[itchyjunk]> | Prelude> fst (span (/= ' ') str) : snd (span (/= ' ') str) : [] |
2022-07-31 18:49:37 +0200 | <[itchyjunk]> | ["hello"," world"] |
2022-07-31 18:49:40 +0200 | <[exa]> | [itchyjunk]: why you have the same guard condition on lines 23 and 24? |
2022-07-31 18:49:51 +0200 | <[itchyjunk]> | oops! |
2022-07-31 18:50:00 +0200 | <Inst> | in reality IHP would supplant a Haskell wordpress clone, no? |
2022-07-31 18:50:02 +0200 | <Inst> | https://ihp.digitallyinduced.com |
2022-07-31 18:50:08 +0200 | <[itchyjunk]> | well, i fixed that |
2022-07-31 18:50:26 +0200 | <[itchyjunk]> | but that doesn't fix the gazillion errors :x |
2022-07-31 18:52:28 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-07-31 18:54:04 +0200 | <[exa]> | Inst: that's a bit more general IMO but you should be able to emulate wordpress in that pretty quickly |
2022-07-31 18:57:06 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds) |
2022-07-31 18:57:21 +0200 | machinedgod | (~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 252 seconds) |
2022-07-31 18:58:23 +0200 | <Inst> | hmmm |
2022-07-31 18:58:28 +0200 | <Inst> | actually, i thought about it |
2022-07-31 18:58:40 +0200 | <Inst> | I had a start-up idea, just need about 300k to execute and I don't have that in pocket ;_; |
2022-07-31 18:58:54 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-07-31 18:58:57 +0200 | <Inst> | I can change part of the set-up to adapt it to a wordpress clone and actually extend the features |
2022-07-31 18:59:13 +0200 | <Inst> | the start-up idea was intended as an attack on Upwork and FiveRR, which charge 20% |
2022-07-31 19:00:01 +0200 | <Inst> | i.e, decentralizing their model |
2022-07-31 19:00:06 +0200 | haritz | (~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) |
2022-07-31 19:00:06 +0200 | haritz | (~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) (Changing host) |
2022-07-31 19:00:06 +0200 | haritz | (~hrtz@user/haritz) |
2022-07-31 19:00:06 +0200 | <Inst> | a decentralized wordpress would fly |
2022-07-31 19:00:20 +0200 | <Inst> | "no content? Borrow other people's content instead!" |
2022-07-31 19:01:27 +0200 | <Inst> | I was originally thinking something lame like "Monadpress" or "Monado", but "Joinable" is a subtle reference to the Monad typeclass |
2022-07-31 19:01:34 +0200 | nate4 | (~nate@98.45.169.16) |
2022-07-31 19:01:40 +0200 | <Inst> | and also suggests the collaborative nature of the software |
2022-07-31 19:02:04 +0200 | <Rembane> | Sounds like a wiki hosted on many places |
2022-07-31 19:02:17 +0200 | <pavonia> | @pl \f g x y -> f (g x) (g y) (f g y x) |
2022-07-31 19:02:17 +0200 | <lambdabot> | ap (ap . (liftM2 ap .) . join . ((flip . ((.) .)) .) . (.)) (flip .) |
2022-07-31 19:02:22 +0200 | <pavonia> | onosendi: ^ |
2022-07-31 19:03:01 +0200 | <onosendi> | pavonia: I don't know what any of that is, lol. |
2022-07-31 19:03:41 +0200 | <Inst> | so this one would effectively be an attack on Medium |
2022-07-31 19:03:54 +0200 | <Inst> | say, you look up a specific topic, but we could make it "idealistic", i.e, allow people to break out of the bubble |
2022-07-31 19:04:22 +0200 | <Inst> | instead of merely seeing a conservative / leftist view on a subject, you'd see multiple subjects |
2022-07-31 19:04:37 +0200 | <Inst> | erm, multiple viewpoints |
2022-07-31 19:05:02 +0200 | <Rembane> | Sounds like the old blogosphere before the social networks/platforms ate the internet |
2022-07-31 19:05:18 +0200 | <Inst> | it's weird trying to save democracy when I don't believe in it, in the best case, Churchill's quip about democracy being the worst form of government except all the others invented |
2022-07-31 19:05:48 +0200 | econo | (uid147250@user/econo) |
2022-07-31 19:09:10 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-07-31 19:09:26 +0200 | benin0 | (~benin@183.82.177.174) (Quit: The Lounge - https://thelounge.chat) |
2022-07-31 19:09:33 +0200 | <[exa]> | Inst: can you instead believe in improving the world for free? |
2022-07-31 19:12:23 +0200 | <monochrom> | Ugh why is that conversation in this channel? |
2022-07-31 19:12:51 +0200 | <[exa]> | yeah it's at least for #-offtopic |
2022-07-31 19:14:46 +0200 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) |
2022-07-31 19:16:17 +0200 | motherfsck | (~motherfsc@user/motherfsck) (Ping timeout: 245 seconds) |
2022-07-31 19:21:48 +0200 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2022-07-31 19:21:57 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-07-31 19:28:03 +0200 | <Inst> | thanks |
2022-07-31 19:29:41 +0200 | motherfsck | (~motherfsc@user/motherfsck) |
2022-07-31 19:37:01 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-07-31 19:38:53 +0200 | Kikroz | (~Kikroz@5.214.144.252) |
2022-07-31 19:39:10 +0200 | Kikroz | (~Kikroz@5.214.144.252) (Client Quit) |
2022-07-31 19:39:33 +0200 | <Inst> | why don't you get nested lists, itchyjunk? |
2022-07-31 19:40:07 +0200 | <Inst> | the actual plan of the start-up idea, btw, is to allow companies to giggify their work environment in order to increase labor exploitation |
2022-07-31 19:40:14 +0200 | <Inst> | while being kosher with overtime laws |
2022-07-31 19:40:34 +0200 | <Inst> | also why do you even have nested lists |
2022-07-31 19:42:34 +0200 | <geekosaur> | lists of String are necessarily nested lists |
2022-07-31 19:43:05 +0200 | <Inst> | just as lists of Text are nested arrays? |
2022-07-31 19:43:32 +0200 | <geekosaur> | it's more direct than thatm since a String is literally just a list of Char |
2022-07-31 19:43:41 +0200 | <geekosaur> | s/thatm/that, |
2022-07-31 19:44:05 +0200 | <geekosaur> | whereas Text hides its internal array (which differs from a list) |
2022-07-31 19:44:53 +0200 | motherfsck | (~motherfsc@user/motherfsck) (Ping timeout: 255 seconds) |
2022-07-31 19:46:00 +0200 | <c_wraith> | Does anyone else feel like describing Haskell as "declarative" doesn't really make sense? |
2022-07-31 19:47:26 +0200 | <c_wraith> | I keep seeing people do that. It's confusing. Operational semantics are a huge part of writing good code. |
2022-07-31 19:47:28 +0200 | joo-_ | (~joo-_@172-105-65-159.ip.linodeusercontent.com) |
2022-07-31 19:47:28 +0200 | joo-_ | (~joo-_@172-105-65-159.ip.linodeusercontent.com) (Changing host) |
2022-07-31 19:47:28 +0200 | joo-_ | (~joo-_@fsf/member/joo--) |
2022-07-31 19:47:30 +0200 | joo-__ | (~joo-_@fsf/member/joo--) (Quit: leaving) |
2022-07-31 19:48:53 +0200 | jinsun__ | (~jinsun@user/jinsun) |
2022-07-31 19:48:54 +0200 | jinsun | Guest4466 |
2022-07-31 19:48:54 +0200 | Guest4466 | (~jinsun@user/jinsun) (Killed (sodium.libera.chat (Nickname regained by services))) |
2022-07-31 19:48:54 +0200 | jinsun__ | jinsun |
2022-07-31 19:53:28 +0200 | Guest3 | (~textual@pool-100-11-18-203.phlapa.fios.verizon.net) |
2022-07-31 19:54:06 +0200 | <[itchyjunk]> | Inst, i don't know why i don't get them. |
2022-07-31 19:54:21 +0200 | jinsun__ | (~jinsun@user/jinsun) |
2022-07-31 19:54:21 +0200 | jinsun | (~jinsun@user/jinsun) (Killed (tungsten.libera.chat (Nickname regained by services))) |
2022-07-31 19:54:21 +0200 | jinsun__ | jinsun |
2022-07-31 19:54:31 +0200 | <Inst> | think of a string as not a nested list |
2022-07-31 19:54:34 +0200 | <Inst> | even though it is |
2022-07-31 19:54:40 +0200 | <Inst> | think of a nested list as some other type within the list |
2022-07-31 19:54:42 +0200 | <Inst> | oh |
2022-07-31 19:54:44 +0200 | <Inst> | you don't get fmap |
2022-07-31 19:54:47 +0200 | <Inst> | no? |
2022-07-31 19:55:00 +0200 | <[itchyjunk]> | hmm i've used fmap and map once or twice |
2022-07-31 19:55:02 +0200 | <Inst> | you don't get higher order functions in the context of a functor (which you haven't learned it) |
2022-07-31 19:55:08 +0200 | ubert | (~Thunderbi@178.165.165.213.wireless.dyn.drei.com) |
2022-07-31 19:55:08 +0200 | <[itchyjunk]> | but i am not comfertable using them uet |
2022-07-31 19:55:24 +0200 | Guest3 | (~textual@pool-100-11-18-203.phlapa.fios.verizon.net) (Changing host) |
2022-07-31 19:55:24 +0200 | Guest3 | (~textual@user/polo) |
2022-07-31 19:55:27 +0200 | Guest3 | Gambino |
2022-07-31 19:55:29 +0200 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds) |
2022-07-31 19:55:30 +0200 | <[itchyjunk]> | higher order function as in functions taking functions as parameter? |
2022-07-31 19:55:43 +0200 | <Inst> | eventually you stop noticing that they're HOF |
2022-07-31 19:55:43 +0200 | <[itchyjunk]> | that i have some understanding of. not sure how well i can use it but. |
2022-07-31 19:55:46 +0200 | <Inst> | it's just natural |
2022-07-31 19:55:56 +0200 | <Inst> | with lists you want to map them all the time |
2022-07-31 19:56:04 +0200 | <Inst> | and if you're comfortable with foldr, you don't use manual recursion |
2022-07-31 19:56:11 +0200 | <Inst> | apparently with continuation passing style |
2022-07-31 19:56:29 +0200 | <Inst> | you can even operate on two lists, or operate on a single list, taking multiple elements as arguments |
2022-07-31 19:57:27 +0200 | <Inst> | does that make any sense to you? |
2022-07-31 19:57:52 +0200 | <Inst> | if you're not working on recursion, and just want to transform nested stuff within the list, get something that transforms nested stuff within the list and map / fmap onto the list |
2022-07-31 20:01:19 +0200 | misterfish | (~misterfis@ip214-130-173-82.adsl2.static.versatel.nl) |
2022-07-31 20:02:05 +0200 | Lycurgus | (~juan@user/Lycurgus) |
2022-07-31 20:03:10 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds) |
2022-07-31 20:03:21 +0200 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2022-07-31 20:03:43 +0200 | nate4 | (~nate@98.45.169.16) (Ping timeout: 252 seconds) |
2022-07-31 20:03:45 +0200 | Lycurgus | (~juan@user/Lycurgus) (Client Quit) |
2022-07-31 20:04:35 +0200 | Lord_of_Life_ | Lord_of_Life |
2022-07-31 20:08:02 +0200 | motherfsck | (~motherfsc@user/motherfsck) |
2022-07-31 20:08:29 +0200 | misterfish | (~misterfis@ip214-130-173-82.adsl2.static.versatel.nl) (Ping timeout: 252 seconds) |
2022-07-31 20:11:21 +0200 | jinsun__ | (~jinsun@user/jinsun) |
2022-07-31 20:11:21 +0200 | jinsun | Guest5051 |
2022-07-31 20:11:21 +0200 | Guest5051 | (~jinsun@user/jinsun) (Killed (molybdenum.libera.chat (Nickname regained by services))) |
2022-07-31 20:11:21 +0200 | jinsun__ | jinsun |
2022-07-31 20:11:27 +0200 | vglfr | (~vglfr@194.9.14.33) (Ping timeout: 244 seconds) |
2022-07-31 20:12:31 +0200 | dknite | (~dknite@223.176.55.39) (Ping timeout: 252 seconds) |
2022-07-31 20:12:49 +0200 | jinsun | (~jinsun@user/jinsun) (Client Quit) |
2022-07-31 20:13:37 +0200 | vglfr | (~vglfr@194.9.14.33) |
2022-07-31 20:16:39 +0200 | sonologico | (~raphael@dhcp-077-251-118-129.chello.nl) |
2022-07-31 20:17:57 +0200 | vglfr | (~vglfr@194.9.14.33) (Ping timeout: 245 seconds) |
2022-07-31 20:18:37 +0200 | zxx7529 | (~Thunderbi@user/zxx7529) |
2022-07-31 20:19:34 +0200 | Gambino | (~textual@user/polo) (Killed (zirconium.libera.chat (Nickname regained by services))) |
2022-07-31 20:21:49 +0200 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-07-31 20:22:56 +0200 | vglfr | (~vglfr@194.9.14.33) |
2022-07-31 20:23:48 +0200 | ystael | (~ystael@user/ystael) |
2022-07-31 20:24:21 +0200 | Igloo | (~ian@matrix.chaos.earth.li) (Ping timeout: 272 seconds) |
2022-07-31 20:24:31 +0200 | Igloo | (~ian@matrix.chaos.earth.li) |
2022-07-31 20:24:38 +0200 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2022-07-31 20:26:17 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 245 seconds) |
2022-07-31 20:26:58 +0200 | Pickchea | (~private@user/pickchea) |
2022-07-31 20:28:08 +0200 | vglfr | (~vglfr@194.9.14.33) (Read error: Connection reset by peer) |
2022-07-31 20:29:54 +0200 | vglfr | (~vglfr@194.9.14.33) |
2022-07-31 20:30:43 +0200 | hellwolf | (~hellwolf@7-41-50-84.sta.estpak.ee) |
2022-07-31 20:31:26 +0200 | hellwolf | (~hellwolf@7-41-50-84.sta.estpak.ee) (Remote host closed the connection) |
2022-07-31 20:32:01 +0200 | Guest3 | (~textual@pool-100-11-18-203.phlapa.fios.verizon.net) |
2022-07-31 20:32:01 +0200 | vglfr | (~vglfr@194.9.14.33) (Read error: Connection reset by peer) |
2022-07-31 20:32:28 +0200 | vglfr | (~vglfr@194.9.14.33) |
2022-07-31 20:32:44 +0200 | Guest3 | (~textual@pool-100-11-18-203.phlapa.fios.verizon.net) (Changing host) |
2022-07-31 20:32:44 +0200 | Guest3 | (~textual@user/polo) |
2022-07-31 20:32:46 +0200 | Guest3 | Gambino |
2022-07-31 20:35:01 +0200 | hellwolf | (~hellwolf@7-41-50-84.sta.estpak.ee) |
2022-07-31 20:36:21 +0200 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2022-07-31 20:37:57 +0200 | sonologico | (~raphael@dhcp-077-251-118-129.chello.nl) (Ping timeout: 245 seconds) |
2022-07-31 20:38:47 +0200 | vglfr | (~vglfr@194.9.14.33) (Ping timeout: 245 seconds) |
2022-07-31 20:39:03 +0200 | jinsun | (~jinsun@user/jinsun) |
2022-07-31 20:39:11 +0200 | vglfr | (~vglfr@194.9.14.33) |
2022-07-31 20:39:17 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2022-07-31 20:39:26 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-07-31 20:40:00 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-07-31 20:43:44 +0200 | Gambino | (~textual@user/polo) (Killed (tungsten.libera.chat (Nickname regained by services))) |
2022-07-31 20:43:59 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
2022-07-31 20:50:23 +0200 | Guest3 | (~textual@pool-100-11-18-203.phlapa.fios.verizon.net) |
2022-07-31 20:50:24 +0200 | Guest3 | (~textual@pool-100-11-18-203.phlapa.fios.verizon.net) (Changing host) |
2022-07-31 20:50:24 +0200 | Guest3 | (~textual@user/polo) |
2022-07-31 20:50:28 +0200 | Guest3 | Gambino |
2022-07-31 20:52:00 +0200 | gpncarl | (uid562772@id-562772.ilkley.irccloud.com) (Quit: Connection closed for inactivity) |
2022-07-31 20:52:55 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2022-07-31 20:54:24 +0200 | Gambino | SINH |
2022-07-31 20:55:53 +0200 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 244 seconds) |
2022-07-31 20:56:31 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-07-31 20:56:37 +0200 | SINH | Gambino |
2022-07-31 20:56:55 +0200 | z0k | (~z0k@206.84.140.97) (Quit: WeeChat 3.5) |
2022-07-31 20:58:20 +0200 | Gambino | (~textual@user/polo) (Quit: Textual IRC Client: www.textualapp.com) |
2022-07-31 20:58:27 +0200 | Milan | (~Milan@46.245.111.222) |
2022-07-31 20:59:39 +0200 | coot | (~coot@213.134.190.95) |
2022-07-31 21:03:58 +0200 | zxx7529 | (~Thunderbi@user/zxx7529) (Quit: zxx7529) |
2022-07-31 21:06:25 +0200 | kenran | (~kenran@200116b82b2ba4000565c63a08218b7b.dip.versatel-1u1.de) |
2022-07-31 21:07:53 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 252 seconds) |
2022-07-31 21:09:05 +0200 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-07-31 21:12:10 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2022-07-31 21:13:48 +0200 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds) |
2022-07-31 21:13:53 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-07-31 21:18:14 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-07-31 21:18:25 +0200 | Milan | (~Milan@46.245.111.222) (Quit: Client closed) |
2022-07-31 21:23:21 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-07-31 21:23:50 +0200 | Jeanne-Kamikaze | (~Jeanne-Ka@142.147.89.233) |
2022-07-31 21:24:56 +0200 | <monochrom> | c_wraith: I used to say that Haskell was declarative. Now I say that relatively it's a bit more declarative than let's say the Algol kind of languages, but of course compared to Prolog Haskell doesn't look declarative. |
2022-07-31 21:25:16 +0200 | <dolio> | Is prolog really declarative, though? |
2022-07-31 21:25:17 +0200 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) |
2022-07-31 21:25:31 +0200 | sandydoo | (~sandydoo@185.209.196.136) (Ping timeout: 268 seconds) |
2022-07-31 21:26:21 +0200 | <monochrom> | I'm tall when I stand next to someone 5-feet. And it's just because I'm like 1 or 2 inches taller. |
2022-07-31 21:26:39 +0200 | <monochrom> | Then when I stand next to a 6-feet person I'm not tall at all. |
2022-07-31 21:26:59 +0200 | <monochrom> | But is 6-feet really tall though? >:) |
2022-07-31 21:27:25 +0200 | <darkling> | Depends on whether you're Dutch or not. |
2022-07-31 21:27:26 +0200 | <dolio> | The argument above kind of applies to anything. |
2022-07-31 21:27:50 +0200 | <dolio> | Prolog is declarative, but if you want to write good programs, you need to care about its operational semantics. |
2022-07-31 21:28:06 +0200 | <c_wraith> | I was just thinking this morning - one of my favorite comedy groups had a former member who was like 6'9", but nobody realized it because everyone else in the group was also really tall, so he just looked a little tall relatively. |
2022-07-31 21:28:48 +0200 | <dolio> | Same with SQL. |
2022-07-31 21:29:55 +0200 | <c_wraith> | conclusion: you will always eventually care about performance, at which point operational concerns start showing up where you care about the "how" as much as the "what" |
2022-07-31 21:29:59 +0200 | Pickchea | (~private@user/pickchea) (Ping timeout: 244 seconds) |
2022-07-31 21:30:02 +0200 | vglfr | (~vglfr@194.9.14.33) (Ping timeout: 245 seconds) |
2022-07-31 21:30:22 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-07-31 21:30:24 +0200 | <dolio> | Yeah, I'm not sure we're anywhere close to "declarative" programming if that's the criteria. |
2022-07-31 21:31:33 +0200 | <dolio> | You need something like the Conor McBride dream, where you just write the types, and the computer is good enough to figure out a good program. |
2022-07-31 21:32:24 +0200 | <EvanR> | there's this niche area of programming where you write in dynamic webdev languages with terrible performance, with no possibility of making it perform better, and it somehow works xD |
2022-07-31 21:32:59 +0200 | <dolio> | Eventually you have to care even with those. |
2022-07-31 21:33:04 +0200 | <EvanR> | if they were simply declarative instead of imperative it would seem to defy this logic that you eventually need operational semantics |
2022-07-31 21:33:42 +0200 | <monochrom> | My dream exceeds that. In my dream, the type also includes time bounds. |
2022-07-31 21:34:01 +0200 | <dolio> | Sure, that's even better. |
2022-07-31 21:34:07 +0200 | dos__^^ | (~user@user/dos/x-1723657) (Ping timeout: 244 seconds) |
2022-07-31 21:34:31 +0200 | <monochrom> | 20 years ago I thought my dream would come true in my life time. Now I don't think so. :) |
2022-07-31 21:34:41 +0200 | <EvanR> | the type includes the time bounds, the space bounds, the whatever I care about this week bounds, ...? |
2022-07-31 21:34:53 +0200 | <monochrom> | But it's my fault! I procrastinated and didn't work on it! |
2022-07-31 21:35:12 +0200 | gmg | (~user@user/gehmehgeh) (Quit: Leaving) |
2022-07-31 21:35:36 +0200 | <dolio> | Some people right now probably think that it'll happen in your lifetime. But I think they're probably wrong. |
2022-07-31 21:36:28 +0200 | <monochrom> | EvanR: My dream stops at time and space bounds. One day someone will add electricity bounds and/or "no variation so side-channel attacks are eliminated". |
2022-07-31 21:36:53 +0200 | <monochrom> | Hell, I think I was wrong :) |
2022-07-31 21:37:38 +0200 | <EvanR> | yeah security bounds |
2022-07-31 21:38:05 +0200 | <EvanR> | which patents this does or does not infringe on bounds |
2022-07-31 21:38:18 +0200 | <EvanR> | DRM type system xD |
2022-07-31 21:38:37 +0200 | <EvanR> | compiler guarantees you never compute any illegal primes |
2022-07-31 21:38:38 +0200 | <Rembane> | There should be loads of money in it |
2022-07-31 21:40:19 +0200 | martin02 | (~silas@141.84.69.76) (Ping timeout: 244 seconds) |
2022-07-31 21:42:07 +0200 | <hpc> | thanks to relativity, sufficiently large electricity bounds are indistinguishable from time and space bounds :D |
2022-07-31 21:44:25 +0200 | causal | (~user@50.35.83.177) |
2022-07-31 21:44:33 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2022-07-31 21:44:59 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-07-31 21:45:01 +0200 | <monochrom> | hahaha |
2022-07-31 21:45:38 +0200 | <hololeap> | using parsec, when you run a parser inside a parser e.g. you parse some string fragment and want to run another parser on it, is there a way to throw any resulting ParseError inside the larger parser? |
2022-07-31 21:45:48 +0200 | <hololeap> | sorry if the question is confusing |
2022-07-31 21:45:51 +0200 | sandydoo | (~sandydoo@185.209.196.136) |
2022-07-31 21:46:47 +0200 | machinedgod | (~machinedg@d172-219-86-154.abhsia.telus.net) |
2022-07-31 21:47:20 +0200 | <hololeap> | it really boils down to: ? :: ParseError -> ParsecT s u m a |
2022-07-31 21:47:41 +0200 | <monochrom> | ParsecT is an instance of MonadError, so I guess throwError |
2022-07-31 21:48:04 +0200 | <monochrom> | Err no, I misread. |
2022-07-31 21:48:12 +0200 | <hololeap> | the best I have so far is `fail . show` |
2022-07-31 21:48:51 +0200 | azimut_ | (~azimut@gateway/tor-sasl/azimut) |
2022-07-31 21:50:02 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-07-31 21:50:16 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds) |
2022-07-31 21:53:16 +0200 | Henkru | (henkru@kapsi.fi) (Ping timeout: 268 seconds) |
2022-07-31 21:53:24 +0200 | martin02 | (~silas@141.84.69.76) |
2022-07-31 21:55:20 +0200 | yauhsien | (~yauhsien@118-167-41-184.dynamic-ip.hinet.net) |
2022-07-31 21:56:35 +0200 | Henkru | (henkru@kapsi.fi) |
2022-07-31 21:58:21 +0200 | <monochrom> | Given ParseError, you can make Reply s u a, then you can make Consumed (m (Reply s u a)), then you can use mkPT. "Low-level creation of the ParsecT type. You really shouldn't have to do this." >:) |
2022-07-31 21:58:47 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 245 seconds) |
2022-07-31 21:59:57 +0200 | yauhsien | (~yauhsien@118-167-41-184.dynamic-ip.hinet.net) (Ping timeout: 244 seconds) |
2022-07-31 22:00:55 +0200 | <hpc> | there's a more direct way with Text.Parsec.Prim - https://hackage.haskell.org/package/parsec-3.1.15.1/docs/src/Text.Parsec.Prim.html#parserFail |
2022-07-31 22:01:04 +0200 | <hpc> | write a function like that, but without all the "turn string into error" stuff |
2022-07-31 22:02:00 +0200 | <hpc> | \err -> ParsecT $ \_ _ _ h -> h err |
2022-07-31 22:02:07 +0200 | <hpc> | pretty sure that should work? |
2022-07-31 22:03:54 +0200 | <monochrom> | yeah |
2022-07-31 22:04:38 +0200 | pavonia | (~user@user/siracusa) |
2022-07-31 22:05:05 +0200 | ubert | (~Thunderbi@178.165.165.213.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
2022-07-31 22:06:46 +0200 | <hololeap> | ok, but where do I get an exported ParsecT constructor? |
2022-07-31 22:08:07 +0200 | Pickchea | (~private@user/pickchea) |
2022-07-31 22:08:50 +0200 | <monochrom> | Hrm, I think none. I guess back to the mkPT idea :) |
2022-07-31 22:09:17 +0200 | <hololeap> | haha, maybe there's a bug about this |
2022-07-31 22:11:14 +0200 | azimut_ | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds) |
2022-07-31 22:11:55 +0200 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 260 seconds) |
2022-07-31 22:14:10 +0200 | <sm> | switch to megaparsec ? |
2022-07-31 22:17:52 +0200 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2022-07-31 22:20:41 +0200 | <sm> | how would you debug this: "cabal: Failed to build hledger-1.26.1 ... The build process segfaulted (i.e. SIGSEGV).", on github actions ? |
2022-07-31 22:24:10 +0200 | Lycurgus | (~juan@user/Lycurgus) |
2022-07-31 22:24:47 +0200 | <Lycurgus> | identify what actually segfaulted? |
2022-07-31 22:25:38 +0200 | <Lycurgus> | btw if I hadn't looked at hledger in about 5 y what would be the bullet points? |
2022-07-31 22:26:01 +0200 | <Lycurgus> | also are you, sm, the author of haddock? |
2022-07-31 22:26:45 +0200 | <sm> | here's a log, https://github.com/simonmichael/hledger/runs/7599626109?check_suite_focus=true . There's no other error output. It fails on different packages at different times. |
2022-07-31 22:26:46 +0200 | <Lycurgus> | i don't really want stuff like build processes entangled with somebody else's shit |
2022-07-31 22:26:48 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-07-31 22:26:59 +0200 | <Lycurgus> | in this case microsoft i take it |
2022-07-31 22:27:03 +0200 | <sm> | no, I didn't write haddock |
2022-07-31 22:27:08 +0200 | <Lycurgus> | (the owner of github) |
2022-07-31 22:27:10 +0200 | <Lycurgus> | ah |
2022-07-31 22:27:19 +0200 | <Lycurgus> | another simon i think |
2022-07-31 22:27:24 +0200 | <sm> | and I deny all other allegations |
2022-07-31 22:27:39 +0200 | <sm> | Simon Marlow perhaps |
2022-07-31 22:27:48 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-07-31 22:27:57 +0200 | <Lycurgus> | who is not you |
2022-07-31 22:28:12 +0200 | <sm> | Lycurgus re hledger, what are you familiar with ? Ledger ? old hledger ? gnucash ? |
2022-07-31 22:28:18 +0200 | <Lycurgus> | being simon michael |
2022-07-31 22:28:38 +0200 | <Lycurgus> | hledger c. '2014/5 |
2022-07-31 22:29:07 +0200 | <Lycurgus> | and the cli ledger ecosys generally of that time |
2022-07-31 22:29:43 +0200 | <sm> | whew, 8 years.. summarising that is a bit of work |
2022-07-31 22:29:59 +0200 | <Lycurgus> | alpine looks like bad news |
2022-07-31 22:30:10 +0200 | <sm> | its like Ledger implemented in more depth, more robustly, with better UX |
2022-07-31 22:30:31 +0200 | <Lycurgus> | well i was running hledger-web at one point |
2022-07-31 22:30:45 +0200 | <Lycurgus> | it used to be a pain to build |
2022-07-31 22:30:55 +0200 | <Lycurgus> | well not a pain but not a snap either |
2022-07-31 22:31:05 +0200 | <sm> | building should be routine on non-exotic platforms |
2022-07-31 22:31:16 +0200 | <sm> | and there are more binaries these days |
2022-07-31 22:31:43 +0200 | <Lycurgus> | yesod based iirc |
2022-07-31 22:32:05 +0200 | <Lycurgus> | (the web part) |
2022-07-31 22:32:24 +0200 | <Lycurgus> | maybe misremember and it was just wai |
2022-07-31 22:32:27 +0200 | <sm> | back then building yesod was a bit scary probably, not today |
2022-07-31 22:32:34 +0200 | michalz | (~michalz@185.246.204.97) |
2022-07-31 22:33:46 +0200 | <Lycurgus> | anyway that's my guess base OS elements not playing nice with your build/ci intentions |
2022-07-31 22:34:40 +0200 | <sm> | thanks.. that doesn't narrow it down too much. It was building fine before of course |
2022-07-31 22:35:03 +0200 | <sm> | guess I'll try an older ghc |
2022-07-31 22:36:00 +0200 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-07-31 22:36:07 +0200 | <sm> | and indeed I don't know why it needs to be alpine, I could try changing that |
2022-07-31 22:37:05 +0200 | <monochrom> | If you didn't choose alpine but something/someone did, it's probably because alpine is reputed to be a very minimal and friendly-to-static-linking linux. |
2022-07-31 22:41:34 +0200 | <sm> | yes that sounds right monochrom |
2022-07-31 22:42:08 +0200 | <sm> | looking more carefully, it mostly does fail in the same place, Hledger.Cli.DocFiles, or another package, both of which probably involve TH/QQ. That could be a clue |
2022-07-31 22:42:30 +0200 | <sm> | more troubleshooting next time |
2022-07-31 22:49:34 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2022-07-31 22:49:34 +0200 | califax | (~califax@user/califx) (Remote host closed the connection) |
2022-07-31 22:49:34 +0200 | noteness | (~noteness@user/noteness) (Remote host closed the connection) |
2022-07-31 22:49:34 +0200 | stiell_ | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2022-07-31 22:49:34 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-07-31 22:50:14 +0200 | stiell_ | (~stiell@gateway/tor-sasl/stiell) |
2022-07-31 22:50:20 +0200 | califax | (~califax@user/califx) |
2022-07-31 22:50:25 +0200 | noteness | (~noteness@user/noteness) |
2022-07-31 22:50:38 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-07-31 22:50:44 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-07-31 22:51:51 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-07-31 22:54:42 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-07-31 22:55:09 +0200 | jpds1 | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2022-07-31 22:55:09 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Write error: Connection reset by peer) |
2022-07-31 22:55:09 +0200 | califax | (~califax@user/califx) (Write error: Connection reset by peer) |
2022-07-31 22:55:09 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Write error: Connection reset by peer) |
2022-07-31 22:55:42 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-07-31 22:55:45 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-07-31 22:55:53 +0200 | jpds1 | (~jpds@gateway/tor-sasl/jpds) |
2022-07-31 22:58:05 +0200 | califax | (~califax@user/califx) |
2022-07-31 23:00:54 +0200 | Inst | (~Inst@2601:6c4:4080:3f80:d998:768b:c35b:a535) (Ping timeout: 244 seconds) |
2022-07-31 23:00:57 +0200 | johnw | (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in) |
2022-07-31 23:02:26 +0200 | Pickchea | (~private@user/pickchea) (Quit: Leaving) |
2022-07-31 23:04:06 +0200 | michalz | (~michalz@185.246.204.97) (Remote host closed the connection) |
2022-07-31 23:08:09 +0200 | phma | (~phma@host-67-44-208-60.hnremote.net) (Read error: Connection reset by peer) |
2022-07-31 23:10:21 +0200 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds) |
2022-07-31 23:10:21 +0200 | kenran | (~kenran@200116b82b2ba4000565c63a08218b7b.dip.versatel-1u1.de) (Quit: WeeChat info:version) |
2022-07-31 23:13:17 +0200 | Jeanne-Kamikaze | (~Jeanne-Ka@142.147.89.233) (Quit: Leaving) |
2022-07-31 23:19:03 +0200 | hellwolf | (~hellwolf@7-41-50-84.sta.estpak.ee) (Remote host closed the connection) |
2022-07-31 23:19:18 +0200 | hellwolf | (~hellwolf@7-41-50-84.sta.estpak.ee) |
2022-07-31 23:20:27 +0200 | shriekingnoise | (~shrieking@186.137.167.202) |
2022-07-31 23:24:21 +0200 | <pavonia> | Is it worth optimizing Integer operations for bit operations (bitshifts etc.)? I'm not sure if they are even implemented efficiently for Integer or if the compiler optimizes them on its own |
2022-07-31 23:25:02 +0200 | phma | (phma@2001:5b0:2144:59f8:a0f0:98d:a9a7:a552) |
2022-07-31 23:25:18 +0200 | phma | (phma@2001:5b0:2144:59f8:a0f0:98d:a9a7:a552) (Read error: Connection reset by peer) |
2022-07-31 23:25:41 +0200 | sm | thinks it's probably https://gitlab.haskell.org/ghc/ghc/-/issues/20266 |
2022-07-31 23:25:46 +0200 | phma | (~phma@host-67-44-208-130.hnremote.net) |
2022-07-31 23:32:08 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
2022-07-31 23:38:03 +0200 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2022-07-31 23:40:14 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2022-07-31 23:42:43 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-07-31 23:43:47 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-07-31 23:46:22 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-07-31 23:50:36 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-07-31 23:52:58 +0200 | jpds1 | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2022-07-31 23:53:37 +0200 | jpds1 | (~jpds@gateway/tor-sasl/jpds) |
2022-07-31 23:59:12 +0200 | <dsal> | pavonia: Does the profiler tell you that you're spending enough time on these operations that optimizing them would yield a noticeable performance improvement to your user? |
2022-07-31 23:59:35 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |