2023-01-22 00:00:09 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2023-01-22 00:01:33 +0100 | _xor | (~xor@74.215.182.83) (Ping timeout: 260 seconds) |
2023-01-22 00:03:09 +0100 | _xor | (~xor@74.215.182.83) |
2023-01-22 00:03:43 +0100 | mechap1 | (~mechap@user/mechap) |
2023-01-22 00:06:37 +0100 | mechap | (~mechap@user/mechap) (Ping timeout: 252 seconds) |
2023-01-22 00:07:44 +0100 | _xor | (~xor@74.215.182.83) (Ping timeout: 260 seconds) |
2023-01-22 00:09:28 +0100 | _xor | (~xor@74.215.182.83) |
2023-01-22 00:14:39 +0100 | jbalint | (~jbalint@2600:6c44:117f:e98a:816a:9488:fb1:7b7) |
2023-01-22 00:17:24 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-176-241.46.114.pool.telefonica.de) (Ping timeout: 256 seconds) |
2023-01-22 00:19:04 +0100 | tremon | (~tremon@83-85-213-108.cable.dynamic.v4.ziggo.nl) (Quit: getting boxed in) |
2023-01-22 00:22:25 +0100 | hex_ | (~hex@cpc99326-croy26-2-0-cust216.19-2.cable.virginm.net) |
2023-01-22 00:23:55 +0100 | beteigeuze | (~Thunderbi@bl14-81-220.dsl.telepac.pt) |
2023-01-22 00:24:22 +0100 | Xeroine_ | (~Xeroine@user/xeroine) (Ping timeout: 272 seconds) |
2023-01-22 00:28:29 +0100 | Xeroine | (~Xeroine@user/xeroine) |
2023-01-22 00:29:35 +0100 | <voidzero> | is there a quick to capitalize the first letter of a sentence of type Data.Text? |
2023-01-22 00:30:24 +0100 | <voidzero> | afaik you can't use the `(c:cs) = T.upper c : cs` trick |
2023-01-22 00:31:00 +0100 | <voidzero> | I could use T.unpack and T.pack |
2023-01-22 00:33:18 +0100 | <voidzero> | but idk |
2023-01-22 00:34:31 +0100 | beteigeuze | (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Quit: beteigeuze) |
2023-01-22 00:35:16 +0100 | beteigeuze | (~Thunderbi@bl14-81-220.dsl.telepac.pt) |
2023-01-22 00:36:32 +0100 | <EvanR> | unwords . capitalize . words? |
2023-01-22 00:37:21 +0100 | <EvanR> | there is probably a lens for momentarily viewing a Text as a cons |
2023-01-22 00:38:10 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2023-01-22 00:38:12 +0100 | <voidzero> | Lens is beyond my skill level atm. I just need the very first word capitalized |
2023-01-22 00:38:25 +0100 | <voidzero> | although, honestly, for my usecase I could just use String |
2023-01-22 00:39:01 +0100 | <voidzero> | just curious how people would do this |
2023-01-22 00:39:02 +0100 | <hpc> | might as well get in the habit of using Text, imo |
2023-01-22 00:39:11 +0100 | <voidzero> | yeah that's what my books say, too |
2023-01-22 00:40:29 +0100 | <voidzero> | so right now I have a var 'event' that contains a Text string, and to do this I am doing this: where event' = T.pack (toUpper (T.head event) : tail (T.unpack event)) |
2023-01-22 00:40:59 +0100 | <voidzero> | it works but meh |
2023-01-22 00:41:32 +0100 | <voidzero> | meh unless experienced ppl say this is fine |
2023-01-22 00:42:44 +0100 | pagnol | (~user@213-205-209-87.ftth.glasoperator.nl) (Ping timeout: 272 seconds) |
2023-01-22 00:43:02 +0100 | <voidzero> | it's a simple tool that lets me enter an event on the console using TIO.getLine and generates a few sentences that contain this event. |
2023-01-22 00:43:12 +0100 | <voidzero> | event being a scheduled event IRL |
2023-01-22 00:43:47 +0100 | <voidzero> | making it easier to tweet these text, scheduled, using tweetdeck |
2023-01-22 00:43:55 +0100 | <voidzero> | texts* |
2023-01-22 00:45:04 +0100 | <voidzero> | "Tomorrow at 11am: " <> event -- is one of them (requiring the lower cased version, and -- event starts in 10 minutes, be there! -- as the other one. I want the second one to start capitalized. |
2023-01-22 00:45:33 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2023-01-22 00:47:14 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2023-01-22 00:47:23 +0100 | <sm> | that seems to be a missing feature at text > Case conversion |
2023-01-22 00:47:23 +0100 | <sm> | https://hackage.haskell.org/package/text-2.0.1/docs/Data-Text.html#g:9 |
2023-01-22 00:48:45 +0100 | <voidzero> | yeah. T.head has T.Text -> Char. |
2023-01-22 00:48:57 +0100 | <sm> | I would be tempted to T.pack . GHC.Utils.Misc.capitalise . T.unpack |
2023-01-22 00:49:11 +0100 | <voidzero> | T.toUpper has Text -> Text, but, that'd capitalize everything |
2023-01-22 00:49:22 +0100 | <voidzero> | aye so that's similar to my way of doing it |
2023-01-22 00:50:58 +0100 | <sm> | ah, right. Yes that's fine in my book |
2023-01-22 00:52:32 +0100 | <voidzero> | cool cool |
2023-01-22 00:53:39 +0100 | <sm> | get your console tweeter working, it'll be an easy localised optimisation in future when OpenAmaBoogler Inc is running it a billion times a second |
2023-01-22 00:54:18 +0100 | <voidzero> | haha well first we gotta see what Twitter's plans are re API usage. I think they want to get rid of all these options |
2023-01-22 00:54:48 +0100 | <voidzero> | it ain't what it used to be. Even before Musk it wasn't what it used to be. |
2023-01-22 00:55:09 +0100 | <sm> | I think so too, I hope your work can be reused for fediverse |
2023-01-22 00:58:35 +0100 | sm | checks, finds only https://hackage.haskell.org/package/Hastodon 2018 |
2023-01-22 00:59:00 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
2023-01-22 01:03:38 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds) |
2023-01-22 01:12:59 +0100 | infinity0 | (~infinity0@pwned.gg) (Remote host closed the connection) |
2023-01-22 01:14:04 +0100 | acidjnk | (~acidjnk@p200300d6e715c424c4be665c85703a1b.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
2023-01-22 01:16:10 +0100 | infinity0 | (~infinity0@pwned.gg) |
2023-01-22 01:18:49 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5) |
2023-01-22 01:20:25 +0100 | eggplantade | (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2023-01-22 01:25:24 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.) |
2023-01-22 01:25:57 +0100 | oldfashionedcow | (~Rahul_San@user/oldfashionedcow) (Quit: WeeChat 3.7.1) |
2023-01-22 01:26:12 +0100 | oldfashionedcow | (~Rahul_San@user/oldfashionedcow) |
2023-01-22 01:36:22 +0100 | infinity0 | (~infinity0@pwned.gg) (Remote host closed the connection) |
2023-01-22 01:39:35 +0100 | infinity0 | (~infinity0@pwned.gg) |
2023-01-22 01:45:00 +0100 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2023-01-22 01:45:16 +0100 | mizlan | (~mizlan@169.150.203.65) |
2023-01-22 01:46:10 +0100 | P1RATEZ | (piratez@user/p1ratez) (Remote host closed the connection) |
2023-01-22 01:47:57 +0100 | img | (~img@user/img) |
2023-01-22 01:49:49 +0100 | mizlan | (~mizlan@169.150.203.65) (Ping timeout: 260 seconds) |
2023-01-22 01:50:40 +0100 | mizlan | (~mizlan@169.150.203.64) |
2023-01-22 02:04:54 +0100 | <dsal> | > "some words thats should be capped" & worded . _head %~ toUpper |
2023-01-22 02:04:56 +0100 | <lambdabot> | "Some Words Thats Should Be Capped" |
2023-01-22 02:06:38 +0100 | <geekosaur> | but is that Text? |
2023-01-22 02:08:20 +0100 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Ping timeout: 255 seconds) |
2023-01-22 02:10:39 +0100 | CiaoSen | (~Jura@p200300c9572d4e002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2023-01-22 02:10:51 +0100 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection) |
2023-01-22 02:10:56 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2023-01-22 02:11:10 +0100 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
2023-01-22 02:13:54 +0100 | mizlan | (~mizlan@169.150.203.64) (Read error: Connection reset by peer) |
2023-01-22 02:15:05 +0100 | CiaoSen | (~Jura@p200300c9572d4e002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
2023-01-22 02:17:02 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2023-01-22 02:19:13 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:71a5:b1e9:85a5:f360) |
2023-01-22 02:19:45 +0100 | mizlan | (~mizlan@169.150.203.59) |
2023-01-22 02:21:35 +0100 | perrierjouet | (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.8) |
2023-01-22 02:28:50 +0100 | mizlan_ | (~mizlan@89.46.114.182) |
2023-01-22 02:29:46 +0100 | mizlan | (~mizlan@169.150.203.59) (Ping timeout: 272 seconds) |
2023-01-22 02:33:34 +0100 | mizlan_ | (~mizlan@89.46.114.182) (Ping timeout: 272 seconds) |
2023-01-22 02:36:57 +0100 | harveypwca | (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) |
2023-01-22 02:43:02 +0100 | unit73e | (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) (Ping timeout: 256 seconds) |
2023-01-22 02:44:18 +0100 | infinity0 | (~infinity0@pwned.gg) (Remote host closed the connection) |
2023-01-22 02:49:16 +0100 | mizlan | (~mizlan@169.150.203.59) |
2023-01-22 02:50:30 +0100 | infinity0 | (~infinity0@pwned.gg) |
2023-01-22 02:53:03 +0100 | <ddellacosta> | how do I actually use/install the tasty test runner described here? https://github.com/UnkindPartition/tasty#runtime I have tasty installed as a dependency in my test section of my cabal config, but I'm missing something obvious I think. I can run tests with `cabal test` and that works, but it's kind of minimal |
2023-01-22 02:53:17 +0100 | razetime | (~Thunderbi@117.193.4.9) |
2023-01-22 02:53:50 +0100 | mizlan | (~mizlan@169.150.203.59) (Ping timeout: 272 seconds) |
2023-01-22 02:57:23 +0100 | perrierjouet | (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
2023-01-22 02:58:14 +0100 | <Axman6> | ddellacosta: have you put anything in the Main.hs (or Test or whatever) to run the tests? It's bee a while since I've used tasty to just looking things up for you now |
2023-01-22 02:58:59 +0100 | <Axman6> | I believe I've used tasty-discover before, which takes some of the pain of maintaining the plumbing of your testsuite away |
2023-01-22 02:59:16 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
2023-01-22 02:59:21 +0100 | <ddellacosta> | Axman6: yes, I can run them with cabal test |
2023-01-22 02:59:34 +0100 | <Axman6> | ah ok - so what are you missing? |
2023-01-22 03:01:04 +0100 | <ddellacosta> | the doc I linked to implies there is a command-line test runner packaged with the tasty package by default, I'm just curious if I'm missing something because I don't have that |
2023-01-22 03:01:13 +0100 | <ddellacosta> | as far as I can tell |
2023-01-22 03:02:00 +0100 | <Axman6> | ah, yeah you can get cabal to pass arguments to the test executable - it will have been compiled somewhere and cabal is running it. one sec I'll find the args |
2023-01-22 03:03:22 +0100 | <Axman6> | cabal test --help mentions --test-options and --test-option which let you pass things to the executable. this is particularly for quickcheck tests which tell you the seed it used so you can re-run previously failing tests |
2023-01-22 03:03:38 +0100 | elevenkb | (~elevenkb@105.224.34.126) |
2023-01-22 03:03:40 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 260 seconds) |
2023-01-22 03:03:40 +0100 | <ddellacosta> | huh okay, I guess I misunderstood because I suppose that's what I'm already doing, just without those args. Thanks Axman6 |
2023-01-22 03:03:57 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2023-01-22 03:05:02 +0100 | <Axman6> | I have to look it up every time I start a new project |
2023-01-22 03:05:17 +0100 | _xor | (~xor@74.215.182.83) (Quit: brb) |
2023-01-22 03:05:50 +0100 | <Axman6> | I would love it if it had something more like stack's stack exec -- --args-for --the-executable |
2023-01-22 03:06:18 +0100 | <ddellacosta> | related: do folks use anything to look for changes and re-run tests, other than just e.g. watch in linux or whatever? |
2023-01-22 03:06:37 +0100 | <ddellacosta> | I guess stack includes this by default |
2023-01-22 03:07:23 +0100 | gmg | (~user@user/gehmehgeh) (Ping timeout: 255 seconds) |
2023-01-22 03:07:25 +0100 | <Axman6> | I think you can use ghcid to do that |
2023-01-22 03:07:36 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2023-01-22 03:07:40 +0100 | <Axman6> | not sure if HLS can do something similar inline |
2023-01-22 03:08:18 +0100 | <ddellacosta> | oh good points both--will take a look and see what I can figure out. Thanks for all the help Axman6 |
2023-01-22 03:09:20 +0100 | <Axman6> | All good, goos luck |
2023-01-22 03:09:23 +0100 | <Axman6> | good* |
2023-01-22 03:13:28 +0100 | elevenkb | (~elevenkb@105.224.34.126) (Ping timeout: 260 seconds) |
2023-01-22 03:13:35 +0100 | theproffesor | (~theproffe@user/theproffesor) (Ping timeout: 260 seconds) |
2023-01-22 03:14:54 +0100 | _xor | (~xor@74.215.182.83) |
2023-01-22 03:16:09 +0100 | beteigeuze | (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 260 seconds) |
2023-01-22 03:18:36 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Remote host closed the connection) |
2023-01-22 03:18:57 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2023-01-22 03:20:16 +0100 | theproffesor | (~theproffe@user/theproffesor) |
2023-01-22 03:25:54 +0100 | <sm> | yeah, stack test --file-watch --fast or some variant of stack exec -- ghci -T ... are both good |
2023-01-22 03:26:08 +0100 | <sm> | * yeah, stack test --file-watch --fast or some variant of stack exec -- ghcid -T ... are both good |
2023-01-22 03:26:36 +0100 | <sm> | as is watchexec -- CMD |
2023-01-22 03:30:10 +0100 | harveypwca | (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving) |
2023-01-22 03:31:57 +0100 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2023-01-22 03:31:57 +0100 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2023-01-22 03:31:57 +0100 | wroathe | (~wroathe@user/wroathe) |
2023-01-22 03:32:08 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2023-01-22 03:33:44 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds) |
2023-01-22 03:34:17 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2023-01-22 03:37:26 +0100 | barzo | (~hd@31.223.41.44) (Ping timeout: 256 seconds) |
2023-01-22 03:54:43 +0100 | <ddellacosta> | watchexec looks nice |
2023-01-22 03:55:24 +0100 | <ddellacosta> | yeah this is trivially easy with ghcid, `ghcid -c cabal repl my-test-suite -T Main.main` |
2023-01-22 04:04:58 +0100 | shon | (~shon@gateway/tor-sasl/shon) |
2023-01-22 04:11:37 +0100 | thongpv | (~thongpv87@2001:ee0:5577:f0d0:73e4:4002:4782:e47b) (Remote host closed the connection) |
2023-01-22 04:16:10 +0100 | iteratee | (~kyle@162.218.222.107) (Read error: Connection reset by peer) |
2023-01-22 04:16:27 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2023-01-22 04:17:13 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Client Quit) |
2023-01-22 04:17:36 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2023-01-22 04:23:55 +0100 | oldfashionedcow | username235 |
2023-01-22 04:24:04 +0100 | username235 | oldfashionedcow |
2023-01-22 04:26:09 +0100 | iteratee | (~kyle@162.218.222.107) |
2023-01-22 04:28:54 +0100 | thongpv | (~thongpv87@2001:ee0:5577:f0d0:b436:353d:3a0c:35f3) |
2023-01-22 04:29:36 +0100 | oldfashionedcow | burp |
2023-01-22 04:29:59 +0100 | burp | oldfashionedcow |
2023-01-22 04:34:00 +0100 | accord | (uid568320@id-568320.hampstead.irccloud.com) |
2023-01-22 04:35:09 +0100 | hex_ | (~hex@cpc99326-croy26-2-0-cust216.19-2.cable.virginm.net) (Quit: leaving) |
2023-01-22 04:37:50 +0100 | kimjetwav | (~user@2607:fea8:235e:b600:2d68:2d7e:6ecb:730c) |
2023-01-22 04:40:36 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2023-01-22 04:41:39 +0100 | terrorjack | (~terrorjac@2a01:4f8:1c1e:4e8c::) (Quit: The Lounge - https://thelounge.chat) |
2023-01-22 04:42:41 +0100 | terrorjack | (~terrorjac@2a01:4f8:1c1e:4e8c::) |
2023-01-22 04:47:41 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2023-01-22 04:47:41 +0100 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2023-01-22 04:47:41 +0100 | finn_elija | FinnElija |
2023-01-22 04:51:14 +0100 | td_ | (~td@83.135.9.44) (Ping timeout: 260 seconds) |
2023-01-22 04:52:51 +0100 | td_ | (~td@83.135.9.13) |
2023-01-22 04:54:32 +0100 | ddellacosta | (~ddellacos@143.244.47.100) (Ping timeout: 265 seconds) |
2023-01-22 04:58:28 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 256 seconds) |
2023-01-22 04:58:33 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2023-01-22 04:59:11 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2023-01-22 04:59:43 +0100 | razetime | (~Thunderbi@117.193.4.9) (Quit: See You Space Cowboy) |
2023-01-22 05:00:47 +0100 | mizlan | (~mizlan@169.150.203.60) |
2023-01-22 05:05:14 +0100 | mizlan | (~mizlan@169.150.203.60) (Ping timeout: 260 seconds) |
2023-01-22 05:05:35 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2023-01-22 05:06:05 +0100 | dsrt^ | (~dsrt@c-24-30-76-89.hsd1.ga.comcast.net) |
2023-01-22 05:06:30 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2023-01-22 05:07:09 +0100 | abhixec | (~abhinav@c-67-169-139-16.hsd1.ca.comcast.net) |
2023-01-22 05:07:49 +0100 | <Axman6> | > let h' *^ c = (h' * 16777619) + c in a ^* x ^* y ^* z :: Expr |
2023-01-22 05:07:52 +0100 | <lambdabot> | error: |
2023-01-22 05:07:52 +0100 | <lambdabot> | • Variable not in scope: (^*) :: Expr -> Expr -> t1 |
2023-01-22 05:07:52 +0100 | <lambdabot> | • Perhaps you meant one of these: |
2023-01-22 05:07:54 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
2023-01-22 05:08:03 +0100 | <Axman6> | > let h' ^* c = (h' * 16777619) + c in a ^* x ^* y ^* z :: Expr |
2023-01-22 05:08:05 +0100 | <lambdabot> | ((a * 16777619 + x) * 16777619 + y) * 16777619 + z |
2023-01-22 05:08:46 +0100 | <Axman6> | > 16777619^2 |
2023-01-22 05:08:47 +0100 | <lambdabot> | 281488499309161 |
2023-01-22 05:08:55 +0100 | <Axman6> | > 16777619^2 :: Int |
2023-01-22 05:08:57 +0100 | <lambdabot> | 281488499309161 |
2023-01-22 05:09:43 +0100 | <EvanR> | > 2^24 |
2023-01-22 05:09:45 +0100 | <lambdabot> | 16777216 |
2023-01-22 05:10:33 +0100 | <Axman6> | > 16777619^3 :: Int |
2023-01-22 05:10:35 +0100 | <lambdabot> | 340311421221253963 |
2023-01-22 05:10:40 +0100 | <Axman6> | > 16777619^3 :: Integer |
2023-01-22 05:10:42 +0100 | <lambdabot> | 4722706794290866467659 |
2023-01-22 05:11:08 +0100 | <EvanR> | > 2^72 |
2023-01-22 05:11:10 +0100 | <lambdabot> | 4722366482869645213696 |
2023-01-22 05:12:11 +0100 | <Axman6> | ah, interesting - the next thing I was going to do was look at the bits. thanks for that |
2023-01-22 05:14:20 +0100 | <Axman6> | @check \x -> `shiftL` 24 == x * 16777216 |
2023-01-22 05:14:20 +0100 | <lambdabot> | <unknown>.hs:1:7:Parse error: ` |
2023-01-22 05:14:29 +0100 | <Axman6> | @check \x -> x `shiftL` 24 == x * 16777216 |
2023-01-22 05:14:30 +0100 | <lambdabot> | +++ OK, passed 100 tests. |
2023-01-22 05:17:51 +0100 | mizlan | (~mizlan@89.46.114.17) |
2023-01-22 05:18:32 +0100 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection) |
2023-01-22 05:18:51 +0100 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
2023-01-22 05:22:16 +0100 | mizlan | (~mizlan@89.46.114.17) (Ping timeout: 256 seconds) |
2023-01-22 05:27:29 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2023-01-22 05:28:15 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2023-01-22 05:30:22 +0100 | <Inst> | what's wrong with the assertion: "A while loop is a recursion scheme"? |
2023-01-22 05:30:50 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
2023-01-22 05:31:03 +0100 | <Inst> | also, just curious, has scoping types ever been discussed? |
2023-01-22 05:32:59 +0100 | <Inst> | i.e, right now, we can only data / type / newtype at the top level |
2023-01-22 05:37:13 +0100 | mizlan | (~mizlan@169.150.203.45) |
2023-01-22 05:38:35 +0100 | xff0x_ | (~xff0x@2405:6580:b080:900:5aaf:7af0:29ef:e5fa) (Ping timeout: 260 seconds) |
2023-01-22 05:40:30 +0100 | xff0x_ | (~xff0x@178.255.149.135) |
2023-01-22 05:41:51 +0100 | mizlan | (~mizlan@169.150.203.45) (Ping timeout: 260 seconds) |
2023-01-22 05:49:47 +0100 | azimut_ | (~azimut@gateway/tor-sasl/azimut) |
2023-01-22 05:49:52 +0100 | <anatta> | why can only types with kind * -> * be members of Foldable? |
2023-01-22 05:49:55 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Quit: ZNC - https://znc.in) |
2023-01-22 05:50:08 +0100 | <anatta> | it doesn't make sense to me |
2023-01-22 05:50:40 +0100 | <anatta> | I want to be able to fold everything :@ |
2023-01-22 05:54:20 +0100 | xff0x_ | (~xff0x@178.255.149.135) (Ping timeout: 272 seconds) |
2023-01-22 05:55:45 +0100 | xff0x_ | (~xff0x@2405:6580:b080:900:21ca:a6c1:60fa:34e7) |
2023-01-22 05:56:14 +0100 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 272 seconds) |
2023-01-22 05:56:36 +0100 | <Axman6> | anatta: how would you tell the compiler that you want to fold over the first parameter of an Either? |
2023-01-22 05:56:58 +0100 | <Axman6> | this is also basically a problem that lens solves |
2023-01-22 05:59:03 +0100 | <anatta> | Axman6: To be fair, "I want to be able to fold everything" was more a "I want to be allowed to define Foldable instances for everything I think I *can* write a reasonable Foldable instance for" |
2023-01-22 06:00:25 +0100 | <anatta> | I saw something about lens when I googled, but unfortunately I know nothing about optics |
2023-01-22 06:00:47 +0100 | <anatta> | and it looks difficult at a glance so I haven't really looked into it in depth |
2023-01-22 06:03:58 +0100 | <Axman6> | they literally exist to solve the problem you have |
2023-01-22 06:04:28 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds) |
2023-01-22 06:05:11 +0100 | <Axman6> | > sumOf (traverse . _1) $ zip [1..10] "Hello, world!" |
2023-01-22 06:05:13 +0100 | <lambdabot> | 55 |
2023-01-22 06:05:47 +0100 | <Axman6> | > zip [1..10] "Hello, world!" ^.. traverse |
2023-01-22 06:05:49 +0100 | <lambdabot> | [(1,'H'),(2,'e'),(3,'l'),(4,'l'),(5,'o'),(6,','),(7,' '),(8,'w'),(9,'o'),(10... |
2023-01-22 06:05:54 +0100 | <Axman6> | > zip [1..10] "Hello, world!" ^.. traverse . _1 |
2023-01-22 06:05:56 +0100 | <lambdabot> | [1,2,3,4,5,6,7,8,9,10] |
2023-01-22 06:06:33 +0100 | mizlan | (~mizlan@89.46.114.143) |
2023-01-22 06:09:10 +0100 | <anatta> | so you can do like |
2023-01-22 06:09:24 +0100 | <anatta> | @let newtype IList = IL [Int] deriving (Show, Eq) |
2023-01-22 06:09:26 +0100 | <lambdabot> | Defined. |
2023-01-22 06:09:38 +0100 | <Axman6> | > ("Hello", ("there", ["are","several"]),Left "Strings", "in", "here") & partsOf template %~ (reverse :: [String] -> [String]) |
2023-01-22 06:09:39 +0100 | <lambdabot> | ("here",("in",["Strings","several"]),Left "are","there","Hello") |
2023-01-22 06:09:45 +0100 | <anatta> | > (IL [1..10]) ^.. traverse |
2023-01-22 06:09:47 +0100 | <lambdabot> | error: |
2023-01-22 06:09:47 +0100 | <lambdabot> | • Couldn't match type ‘t0 b’ with ‘IList’ |
2023-01-22 06:09:47 +0100 | <lambdabot> | Expected type: Getting (Endo [b]) IList b |
2023-01-22 06:09:48 +0100 | <Axman6> | > ("Hello", ("there", ["are","several"]),Left "Strings", "in", "here") & partsOf template %~ (reverse :: String -> String) |
2023-01-22 06:09:51 +0100 | <lambdabot> | ("erehn",("isgni",["rtS","lareves"]),Left "eraereh","to","lleH") |
2023-01-22 06:09:58 +0100 | <Axman6> | Lens is crazy powerful |
2023-01-22 06:10:30 +0100 | <Axman6> | no, you'd need an Iso between IL and [Int] |
2023-01-22 06:10:37 +0100 | <anatta> | yeah, but crazy complicated as well :( |
2023-01-22 06:10:52 +0100 | <anatta> | I see |
2023-01-22 06:10:57 +0100 | <Axman6> | it's really not, once you understand the pieces. |
2023-01-22 06:11:13 +0100 | <Axman6> | (that particular example is complicated by the use of Data.Data, not lens) |
2023-01-22 06:11:26 +0100 | mizlan | (~mizlan@89.46.114.143) (Ping timeout: 272 seconds) |
2023-01-22 06:11:53 +0100 | <anatta> | to be fair, I thought parser combinators were impossible to understand before learning them as well |
2023-01-22 06:12:13 +0100 | <anatta> | so I guess it's possible that I'll be able to use lenses as well some day |
2023-01-22 06:12:52 +0100 | <anatta> | or lens, if there is a difference between lenses and lens |
2023-01-22 06:12:53 +0100 | <Axman6> | they're quite a simple idea, and the implementation is actually quite understandable if you sit down and work though it a bit |
2023-01-22 06:13:46 +0100 | <anatta> | if I were to do so, what version of lenses is considered the better one nowadays? |
2023-01-22 06:15:03 +0100 | <energizer> | what is a killer app of lenses? |
2023-01-22 06:15:05 +0100 | <Axman6> | they're all just functions of the form (a -> f b) -> (s -> f t), so a concrete example: fstL :: Functor f => (a -> f b) -> ((a,c) -> f (b,c)); fstL aToFb (a,c) -> (\b -> (b,c)) <$> f a |
2023-01-22 06:15:11 +0100 | <Axman6> | energizer: all apps |
2023-01-22 06:15:43 +0100 | haritz | (~hrtz@user/haritz) (Read error: Connection reset by peer) |
2023-01-22 06:16:01 +0100 | <Axman6> | I wrote a program that converted GeoJSON into CZML (a similar JSON based geospatial format) using lens, and it was only 20 or so lines and ran in constant memory |
2023-01-22 06:16:30 +0100 | <Axman6> | lens is a DSL for talking about data, extracting, modifying and transforming it |
2023-01-22 06:17:03 +0100 | <anatta> | when I said "what version" I meant that I've heard that there are profunctor and some other kind(?) |
2023-01-22 06:17:17 +0100 | <anatta> | or I think I have heard |
2023-01-22 06:17:21 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2023-01-22 06:17:45 +0100 | <anatta> | as I said I haven't really read a lot about optics in general, except to see that they look scary :p |
2023-01-22 06:18:11 +0100 | <Axman6> | I still like the lens library because I know it inside out, but optics can provide a much nicer beginner experience at the cost of needing to have optics as a dependency when defining your own optics |
2023-01-22 06:18:28 +0100 | <anatta> | Van Laarhoven was the other one |
2023-01-22 06:19:23 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Remote host closed the connection) |
2023-01-22 06:19:51 +0100 | <Axman6> | yes, that's what lens uses. there's (probably?) some advangages to using profunctor optics over van laarhoven, but most of lens can be implemented using things defined in base and you don't need to rely on the lens library at all |
2023-01-22 06:20:15 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2023-01-22 06:20:18 +0100 | <anatta> | I see |
2023-01-22 06:20:36 +0100 | haritz | (~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) |
2023-01-22 06:20:36 +0100 | haritz | (~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) (Changing host) |
2023-01-22 06:20:36 +0100 | haritz | (~hrtz@user/haritz) |
2023-01-22 06:21:04 +0100 | <anatta> | I generally try a bit of both (using a library and implementing on your own) - I like to have working examples before experimenting |
2023-01-22 06:21:49 +0100 | <anatta> | so maybe I'll try using the library until I see how stuff are supposed to work, and then I can start implementing larger and larger parts on my own |
2023-01-22 06:21:55 +0100 | <Axman6> | optics give you a language for talking about sub parts of data, a Lens a b lets you "focus" on a b within an a - this focusing allows you to extract that b from the a, replace that b within the a, or apply a function to the b within the a to get a new a |
2023-01-22 06:22:34 +0100 | <anatta> | I had mostly heard about it in the context of "records are unwieldy in Haskell" :p |
2023-01-22 06:22:42 +0100 | <Axman6> | optics can be composed, so if you have Lens a b and Lens b c then you can create a Lens a c that lets you focus on a c with the a (where that c was within a b that was within the a) |
2023-01-22 06:23:01 +0100 | <Axman6> | well, it's useful for that, but it's also much much more than that |
2023-01-22 06:23:14 +0100 | <Axman6> | you can do jq like things on JSON data for example |
2023-01-22 06:23:59 +0100 | <anatta> | it sounds really useful in general |
2023-01-22 06:24:18 +0100 | <Axman6> | the example I showed above let me say "find all the strings anywhere in this arbitrary data, and let me deal with them as a collection, regardless of the shape of that original data" |
2023-01-22 06:24:21 +0100 | <Axman6> | it us |
2023-01-22 06:24:23 +0100 | <Axman6> | is* |
2023-01-22 06:24:37 +0100 | <anatta> | that's what the usecase I had for wanting to fold through a custom datatype :p |
2023-01-22 06:25:03 +0100 | <anatta> | I wanted to find a certain type of leaf in a tree |
2023-01-22 06:25:57 +0100 | <anatta> | (I have an AST of expressions with constants and variables, and I wanted to extract all variables) |
2023-01-22 06:27:19 +0100 | <Axman6> | sounds like a Data.Data sort of thing |
2023-01-22 06:29:45 +0100 | <anatta> | in what sense? I barely have encountered Data.Data (I ran into it when making a quasiquoter, but only tangentially) |
2023-01-22 06:30:13 +0100 | <[Leary]> | anatta: You might just want `data YourAST c a = Const c | Var a | ... deriving (..., Foldable)`. |
2023-01-22 06:30:46 +0100 | <anatta> | [Leary]: Problem is that my type has kind * |
2023-01-22 06:30:59 +0100 | <[Leary]> | It doesn't need to. |
2023-01-22 06:33:13 +0100 | <anatta> | to be fair, I guess I could add a type variable just to be able to derive Foldable |
2023-01-22 06:34:17 +0100 | <Axman6> | You'll be using Tree that Grow in no time |
2023-01-22 06:34:55 +0100 | mizlan | (~mizlan@89.46.114.182) |
2023-01-22 06:35:49 +0100 | <anatta> | what is that? |
2023-01-22 06:36:02 +0100 | oldfashionedcow | (~Rahul_San@user/oldfashionedcow) (Quit: WeeChat 3.7.1) |
2023-01-22 06:39:35 +0100 | <anatta> | I probably should go to bed though. But my conclusion is that I probably should start reading about optics/lenses soon, but that I might get away with just adding type parameters to the tree in this particular case. |
2023-01-22 06:39:44 +0100 | <anatta> | thanks for the advice, and good night =) |
2023-01-22 06:39:56 +0100 | mizlan | (~mizlan@89.46.114.182) (Ping timeout: 272 seconds) |
2023-01-22 06:39:56 +0100 | <[Leary]> | anatta: More polymorphic types are usually more useful, and that especially holds when the type parameter gives you all of Functor, Foldable, Traversable, Applicative and Monad. It doesn't really matter that you only /intend/ to use it at one type. The polymorphism also means you can give your operations more restrictive type signatures that prevent you from writing stupid bugs. |
2023-01-22 06:40:29 +0100 | <anatta> | that makes a lot of sense |
2023-01-22 06:40:55 +0100 | <Axman6> | Trees that Grow: https://www.jucs.org/jucs_23_1/trees_that_grow/jucs_23_01_0042_0062_najd.pdf |
2023-01-22 06:41:11 +0100 | <Axman6> | I'm sure there's a talk about it from SPJ, but I can't find it |
2023-01-22 06:41:16 +0100 | <[Leary]> | E.g. it's much easier to write `mapT :: forall a b. (a -> b) -> T a -> T b` correctly than `mapT :: forall a. (a -> a) -> T a -> T a` or `mapT :: (Foo -> Foo) -> T -> T`. |
2023-01-22 06:43:12 +0100 | <Axman6> | how good is parametricity |
2023-01-22 06:50:24 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-01-22 06:51:24 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit) |
2023-01-22 07:04:54 +0100 | mizlan | (~mizlan@169.150.203.65) |
2023-01-22 07:09:07 +0100 | shon | (~shon@gateway/tor-sasl/shon) (Quit: WeeChat 3.8) |
2023-01-22 07:09:22 +0100 | mizlan | (~mizlan@169.150.203.65) (Ping timeout: 256 seconds) |
2023-01-22 07:19:26 +0100 | wroathe | (~wroathe@user/wroathe) (Quit: leaving) |
2023-01-22 07:20:10 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 252 seconds) |
2023-01-22 07:21:06 +0100 | finsternis | (~X@23.226.237.192) (Ping timeout: 272 seconds) |
2023-01-22 07:21:16 +0100 | heartburn | (~gass@2a00:d880:3:1::b1e4:b241) (Ping timeout: 256 seconds) |
2023-01-22 07:21:42 +0100 | finsternis | (~X@23.226.237.192) |
2023-01-22 07:21:58 +0100 | heartburn | (~gass@2a00:d880:3:1::b1e4:b241) |
2023-01-22 07:25:59 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2023-01-22 07:26:56 +0100 | abhixec | (~abhinav@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
2023-01-22 07:33:26 +0100 | mizlan | (~mizlan@89.46.114.82) |
2023-01-22 07:33:35 +0100 | razetime | (~Thunderbi@117.193.4.9) |
2023-01-22 07:37:42 +0100 | mizlan | (~mizlan@89.46.114.82) (Ping timeout: 256 seconds) |
2023-01-22 07:38:17 +0100 | azimut_ | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
2023-01-22 07:39:07 +0100 | Inst_ | (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) |
2023-01-22 07:39:50 +0100 | razetime | (~Thunderbi@117.193.4.9) (Quit: See You Space Cowboy) |
2023-01-22 07:42:14 +0100 | Inst | (~Inst@2601:6c4:4081:54f0:7987:1b39:7203:fc61) (Ping timeout: 256 seconds) |
2023-01-22 07:54:31 +0100 | accord | (uid568320@id-568320.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2023-01-22 07:59:21 +0100 | trev | (~trev@user/trev) |
2023-01-22 08:02:29 +0100 | mizlan | (~mizlan@169.150.203.59) |
2023-01-22 08:05:01 +0100 | biberu\ | (~biberu@user/biberu) |
2023-01-22 08:05:34 +0100 | Sgeo_ | (~Sgeo@user/sgeo) |
2023-01-22 08:05:52 +0100 | razetime | (~Thunderbi@117.193.4.9) |
2023-01-22 08:06:12 +0100 | trev_ | (~trev@109-252-35-99.nat.spd-mgts.ru) |
2023-01-22 08:06:18 +0100 | razetime | (~Thunderbi@117.193.4.9) (Client Quit) |
2023-01-22 08:06:21 +0100 | dgb83 | (~dgb@astra4961.startdedicated.net) |
2023-01-22 08:06:43 +0100 | ell8 | (~ellie@user/ellie) |
2023-01-22 08:06:45 +0100 | shapr` | (~user@68.54.166.125) |
2023-01-22 08:06:48 +0100 | monochrm | (trebla@216.138.220.146) |
2023-01-22 08:07:02 +0100 | remexre_ | (~remexre@mail.sift.net) |
2023-01-22 08:07:14 +0100 | mizlan | (~mizlan@169.150.203.59) (Ping timeout: 260 seconds) |
2023-01-22 08:07:30 +0100 | gabiruh | (~gabiruh@vps19177.publiccloud.com.br) |
2023-01-22 08:07:31 +0100 | danso_o | (danso@danso.ca) |
2023-01-22 08:07:44 +0100 | kraftwerk28_ | (~kraftwerk@178.62.210.83) |
2023-01-22 08:07:44 +0100 | Philonous_ | (~Philonous@user/philonous) |
2023-01-22 08:07:51 +0100 | koz_ | (~koz@121.99.240.58) |
2023-01-22 08:08:10 +0100 | __xor | (~xor@74.215.182.83) |
2023-01-22 08:08:29 +0100 | urdh_ | (~urdh@user/urdh) |
2023-01-22 08:08:40 +0100 | leeb- | (~leeb@tk2-243-31079.vs.sakura.ne.jp) |
2023-01-22 08:08:43 +0100 | avpx_ | (~nick@ec2-54-214-223-1.us-west-2.compute.amazonaws.com) |
2023-01-22 08:08:56 +0100 | kimiamania8 | (~65804703@user/kimiamania) |
2023-01-22 08:09:08 +0100 | dextaa5 | (~DV@user/dextaa) |
2023-01-22 08:09:12 +0100 | hololeap_ | (~quassel@user/hololeap) |
2023-01-22 08:09:15 +0100 | kitzman | (~kitzman@user/dekenevs) |
2023-01-22 08:09:26 +0100 | lbseale_ | (~quassel@user/ep1ctetus) |
2023-01-22 08:09:34 +0100 | shriekingnoise_ | (~shrieking@186.137.175.87) |
2023-01-22 08:09:45 +0100 | micro_ | (~micro@user/micro) |
2023-01-22 08:09:49 +0100 | Patternm1ster | (~georg@li1192-118.members.linode.com) |
2023-01-22 08:10:02 +0100 | aweinsto1k | (~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com) |
2023-01-22 08:10:04 +0100 | kjak_ | (~kjak@pool-72-66-75-40.washdc.fios.verizon.net) |
2023-01-22 08:10:07 +0100 | _koolazer | (~koo@user/koolazer) |
2023-01-22 08:10:09 +0100 | ridcully_ | (~ridcully@p508acd69.dip0.t-ipconnect.de) |
2023-01-22 08:10:13 +0100 | td__ | (~td@83.135.9.13) |
2023-01-22 08:10:26 +0100 | gnyeki_ | (~gnyeki@user/gnyeki) |
2023-01-22 08:10:29 +0100 | ezzieygu1wuf | (~Unknown@user/ezzieyguywuf) |
2023-01-22 08:10:35 +0100 | Momentum_ | (momentum@tilde.team) |
2023-01-22 08:10:42 +0100 | pi1 | (~pi@173.209.64.74) |
2023-01-22 08:10:47 +0100 | opqdonut_ | (opqdonut@pseudo.fixme.fi) |
2023-01-22 08:10:57 +0100 | johnw | (~johnw@2600:1700:cf00:db0:217d:20b2:d1d1:18a9) |
2023-01-22 08:11:14 +0100 | root | (~m-mzmz6l@vmi833741.contaboserver.net) |
2023-01-22 08:11:38 +0100 | root | Guest3728 |
2023-01-22 08:12:49 +0100 | sudden | (~cat@user/sudden) (Read error: Connection reset by peer) |
2023-01-22 08:12:53 +0100 | Alex_test_ | (~al_test@178.34.160.228) |
2023-01-22 08:13:19 +0100 | sudden | (~cat@user/sudden) |
2023-01-22 08:13:39 +0100 | Square2 | (~a@user/square) |
2023-01-22 08:14:55 +0100 | trev | (~trev@user/trev) (*.net *.split) |
2023-01-22 08:14:55 +0100 | td_ | (~td@83.135.9.13) (*.net *.split) |
2023-01-22 08:14:55 +0100 | _xor | (~xor@74.215.182.83) (*.net *.split) |
2023-01-22 08:14:55 +0100 | perrierjouet | (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (*.net *.split) |
2023-01-22 08:14:55 +0100 | Xeroine | (~Xeroine@user/xeroine) (*.net *.split) |
2023-01-22 08:14:55 +0100 | remexre | (~remexre@user/remexre) (*.net *.split) |
2023-01-22 08:14:55 +0100 | Sgeo | (~Sgeo@user/sgeo) (*.net *.split) |
2023-01-22 08:14:55 +0100 | shapr | (~user@68.54.166.125) (*.net *.split) |
2023-01-22 08:14:55 +0100 | biberu | (~biberu@user/biberu) (*.net *.split) |
2023-01-22 08:14:55 +0100 | micro | (~micro@user/micro) (*.net *.split) |
2023-01-22 08:14:55 +0100 | Square | (~a@user/square) (*.net *.split) |
2023-01-22 08:14:55 +0100 | johnjaye | (~pi@173.209.64.74) (*.net *.split) |
2023-01-22 08:14:55 +0100 | shriekingnoise | (~shrieking@186.137.175.87) (*.net *.split) |
2023-01-22 08:14:55 +0100 | ell | (~ellie@user/ellie) (*.net *.split) |
2023-01-22 08:14:55 +0100 | kjak | (~kjak@pool-72-66-75-40.washdc.fios.verizon.net) (*.net *.split) |
2023-01-22 08:14:55 +0100 | Alex_test | (~al_test@178.34.160.228) (*.net *.split) |
2023-01-22 08:14:55 +0100 | Philonous | (~Philonous@user/philonous) (*.net *.split) |
2023-01-22 08:14:55 +0100 | ridcully | (~ridcully@p508acd69.dip0.t-ipconnect.de) (*.net *.split) |
2023-01-22 08:14:55 +0100 | urdh | (~urdh@user/urdh) (*.net *.split) |
2023-01-22 08:14:55 +0100 | gabiruh_ | (~gabiruh@vps19177.publiccloud.com.br) (*.net *.split) |
2023-01-22 08:14:55 +0100 | tdammers | (~tdammers@77.109.72.175.res.static.edpnet.net) (*.net *.split) |
2023-01-22 08:14:56 +0100 | monochrom | (trebla@216.138.220.146) (*.net *.split) |
2023-01-22 08:14:56 +0100 | lbseale | (~quassel@user/ep1ctetus) (*.net *.split) |
2023-01-22 08:14:56 +0100 | koala_man | (~vidar@157.146.251.23.bc.googleusercontent.com) (*.net *.split) |
2023-01-22 08:14:56 +0100 | titibandit | (7efad7d72e@jabberfr.org) (*.net *.split) |
2023-01-22 08:14:56 +0100 | hololeap | (~quassel@user/hololeap) (*.net *.split) |
2023-01-22 08:14:56 +0100 | koz | (~koz@121.99.240.58) (*.net *.split) |
2023-01-22 08:14:56 +0100 | kimiamania | (~65804703@user/kimiamania) (*.net *.split) |
2023-01-22 08:14:56 +0100 | dextaa | (~DV@user/dextaa) (*.net *.split) |
2023-01-22 08:14:56 +0100 | avpx | (~nick@ec2-54-214-223-1.us-west-2.compute.amazonaws.com) (*.net *.split) |
2023-01-22 08:14:56 +0100 | esph | (~weechat@user/esph) (*.net *.split) |
2023-01-22 08:14:56 +0100 | aweinstock | (~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com) (*.net *.split) |
2023-01-22 08:14:56 +0100 | dgb8 | (~dgb@astra4961.startdedicated.net) (*.net *.split) |
2023-01-22 08:14:56 +0100 | Profpatsch | (~Profpatsc@static.88-198-193-255.clients.your-server.de) (*.net *.split) |
2023-01-22 08:14:56 +0100 | koolazer | (~koo@user/koolazer) (*.net *.split) |
2023-01-22 08:14:56 +0100 | Guest5476 | (~m-mzmz6l@vmi833741.contaboserver.net) (*.net *.split) |
2023-01-22 08:14:56 +0100 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) (*.net *.split) |
2023-01-22 08:14:56 +0100 | wz1000 | (~zubin@static.11.113.47.78.clients.your-server.de) (*.net *.split) |
2023-01-22 08:14:56 +0100 | danso | (~danso@danso.ca) (*.net *.split) |
2023-01-22 08:14:56 +0100 | kraftwerk28 | (~kraftwerk@178.62.210.83) (*.net *.split) |
2023-01-22 08:14:56 +0100 | Patternmaster | (~georg@user/Patternmaster) (*.net *.split) |
2023-01-22 08:14:56 +0100 | byorgey | (~byorgey@155.138.238.211) (*.net *.split) |
2023-01-22 08:14:56 +0100 | nisstyre | (~wes@user/nisstyre) (*.net *.split) |
2023-01-22 08:14:56 +0100 | gnyeki | (~gnyeki@user/gnyeki) (*.net *.split) |
2023-01-22 08:14:56 +0100 | opqdonut | (opqdonut@pseudo.fixme.fi) (*.net *.split) |
2023-01-22 08:14:56 +0100 | Momentum | (momentum@tilde.team) (*.net *.split) |
2023-01-22 08:14:56 +0100 | kitzman_ | (~kitzman@user/dekenevs) (*.net *.split) |
2023-01-22 08:14:56 +0100 | leeb | (~leeb@tk2-243-31079.vs.sakura.ne.jp) (*.net *.split) |
2023-01-22 08:14:56 +0100 | monochrm | monochrom |
2023-01-22 08:14:56 +0100 | urdh_ | urdh |
2023-01-22 08:14:56 +0100 | ell8 | ell |
2023-01-22 08:14:56 +0100 | dgb83 | dgb8 |
2023-01-22 08:14:56 +0100 | leeb- | leeb |
2023-01-22 08:15:01 +0100 | burakcan- | burakcank |
2023-01-22 08:15:02 +0100 | biberu\ | biberu |
2023-01-22 08:15:03 +0100 | remexre_ | remexre |
2023-01-22 08:15:03 +0100 | kimiamania8 | kimiamania |
2023-01-22 08:15:03 +0100 | dextaa5 | dextaa |
2023-01-22 08:15:19 +0100 | koala_man | (~vidar@157.146.251.23.bc.googleusercontent.com) |
2023-01-22 08:16:47 +0100 | Xeroine | (~Xeroine@user/xeroine) |
2023-01-22 08:19:45 +0100 | byorgey | (~byorgey@155.138.238.211) |
2023-01-22 08:21:16 +0100 | wz1000 | (~zubin@static.11.113.47.78.clients.your-server.de) |
2023-01-22 08:21:50 +0100 | nisstyre | (wes@user/nisstyre) |
2023-01-22 08:21:55 +0100 | esph | (~weechat@user/esph) |
2023-01-22 08:22:15 +0100 | tdammers | (~tdammers@77.109.72.175.res.static.edpnet.net) |
2023-01-22 08:22:31 +0100 | perrierjouet | (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
2023-01-22 08:22:43 +0100 | Profpatsch | (~Profpatsc@static.88-198-193-255.clients.your-server.de) |
2023-01-22 08:29:52 +0100 | mizlan | (~mizlan@89.46.114.100) |
2023-01-22 08:33:29 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 260 seconds) |
2023-01-22 08:33:59 +0100 | mizlan | (~mizlan@89.46.114.100) (Ping timeout: 246 seconds) |
2023-01-22 08:41:38 +0100 | mei_ | (~mei@user/mei) |
2023-01-22 08:43:39 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
2023-01-22 08:43:42 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2023-01-22 08:46:49 +0100 | mei_ | (~mei@user/mei) (Quit: mei_) |
2023-01-22 08:54:33 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-01-22 08:57:15 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Remote host closed the connection) |
2023-01-22 09:00:05 +0100 | shriekingnoise_ | (~shrieking@186.137.175.87) (Ping timeout: 260 seconds) |
2023-01-22 09:02:24 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2023-01-22 09:04:10 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 260 seconds) |
2023-01-22 09:07:52 +0100 | Guest75 | (~Guest75@178.141.138.233) (Quit: Ping timeout (120 seconds)) |
2023-01-22 09:09:56 +0100 | mizlan | (~mizlan@89.46.114.129) |
2023-01-22 09:18:01 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds) |
2023-01-22 09:19:20 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2023-01-22 09:24:41 +0100 | mizlan | (~mizlan@89.46.114.129) (Ping timeout: 252 seconds) |
2023-01-22 09:38:11 +0100 | mizlan | (~mizlan@169.150.203.65) |
2023-01-22 09:41:35 +0100 | Patternm1ster | (~georg@li1192-118.members.linode.com) (Quit: leaving) |
2023-01-22 09:41:50 +0100 | Patternmaster | (~georg@user/Patternmaster) |
2023-01-22 09:56:48 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
2023-01-22 10:00:03 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:71a5:b1e9:85a5:f360) (Remote host closed the connection) |
2023-01-22 10:03:17 +0100 | mechap1 | (~mechap@user/mechap) (Quit: WeeChat 3.8) |
2023-01-22 10:03:31 +0100 | mechap | (~mechap@user/mechap) |
2023-01-22 10:09:48 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
2023-01-22 10:15:47 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
2023-01-22 10:17:28 +0100 | titibandit | (7efad7d72e@2a00:c70:1:178:170:40:189:1) |
2023-01-22 10:20:49 +0100 | kenran | (~user@user/kenran) |
2023-01-22 10:20:53 +0100 | kenran | (~user@user/kenran) (Remote host closed the connection) |
2023-01-22 10:21:24 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2023-01-22 10:22:59 +0100 | Sciencentistguy | (~sciencent@hacksoc/ordinary-member) (Quit: o/) |
2023-01-22 10:23:38 +0100 | Square2 | Square |
2023-01-22 10:37:38 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) |
2023-01-22 10:39:35 +0100 | mizlan | (~mizlan@169.150.203.65) (Ping timeout: 260 seconds) |
2023-01-22 10:42:24 +0100 | shapr` | (~user@68.54.166.125) (Ping timeout: 260 seconds) |
2023-01-22 10:43:59 +0100 | acidjnk | (~acidjnk@p200300d6e715c45184a61eb831583be7.dip0.t-ipconnect.de) |
2023-01-22 10:49:05 +0100 | eruditass | (uid248673@id-248673.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
2023-01-22 10:54:20 +0100 | mizlan | (~mizlan@89.46.114.51) |
2023-01-22 10:58:43 +0100 | mizlan | (~mizlan@89.46.114.51) (Ping timeout: 260 seconds) |
2023-01-22 11:00:33 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:5d38:2665:17cb:f4aa) |
2023-01-22 11:00:43 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds) |
2023-01-22 11:03:29 +0100 | zer0bitz | (~zer0bitz@2001:2003:f443:d600:a4e6:fd8f:f654:94ad) |
2023-01-22 11:04:55 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:5d38:2665:17cb:f4aa) (Ping timeout: 256 seconds) |
2023-01-22 11:07:31 +0100 | mizlan | (~mizlan@169.150.203.66) |
2023-01-22 11:20:08 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
2023-01-22 11:27:49 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2023-01-22 11:28:03 +0100 | Sciencentistguy | (~sciencent@hacksoc/ordinary-member) |
2023-01-22 11:30:56 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2023-01-22 11:38:24 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-01-22 11:40:50 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds) |
2023-01-22 11:42:30 +0100 | Sgeo_ | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2023-01-22 11:56:16 +0100 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 252 seconds) |
2023-01-22 12:04:50 +0100 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2023-01-22 12:09:33 +0100 | mizlan | (~mizlan@169.150.203.66) (Ping timeout: 260 seconds) |
2023-01-22 12:10:15 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2023-01-22 12:13:56 +0100 | enoq | (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) |
2023-01-22 12:24:07 +0100 | mechap | (~mechap@user/mechap) (Quit: WeeChat 3.8) |
2023-01-22 12:24:28 +0100 | mechap | (~mechap@user/mechap) |
2023-01-22 12:26:30 +0100 | ozkutuk53 | (~ozkutuk@176.240.174.60) |
2023-01-22 12:29:24 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-176-241.46.114.pool.telefonica.de) |
2023-01-22 12:30:50 +0100 | haskl | (~haskl@user/haskl) (Read error: Connection reset by peer) |
2023-01-22 12:32:39 +0100 | haskl | (~haskl@user/haskl) |
2023-01-22 12:34:20 +0100 | mizlan | (~mizlan@169.150.203.43) |
2023-01-22 12:43:21 +0100 | CiaoSen | (~Jura@p200300c9572d4e002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2023-01-22 12:45:54 +0100 | CiaoSen | (~Jura@p200300c9572d4e002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Client Quit) |
2023-01-22 12:56:53 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
2023-01-22 13:07:21 +0100 | Ranhir | (~Ranhir@157.97.53.139) (Remote host closed the connection) |
2023-01-22 13:09:56 +0100 | Ranhir | (~Ranhir@157.97.53.139) |
2023-01-22 13:12:18 +0100 | theproffesor | (~theproffe@user/theproffesor) (Ping timeout: 252 seconds) |
2023-01-22 13:14:55 +0100 | enoq | (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq) |
2023-01-22 13:22:28 +0100 | mechap | (~mechap@user/mechap) (Ping timeout: 260 seconds) |
2023-01-22 13:24:05 +0100 | mechap | (~mechap@user/mechap) |
2023-01-22 13:31:25 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds) |
2023-01-22 13:32:27 +0100 | n0den1te | (~n0den1te@223.178.85.186) |
2023-01-22 13:40:12 +0100 | cheater_ | (~Username@user/cheater) |
2023-01-22 13:42:49 +0100 | mizlan | (~mizlan@169.150.203.43) (Ping timeout: 265 seconds) |
2023-01-22 13:43:00 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 260 seconds) |
2023-01-22 13:43:08 +0100 | cheater_ | cheater |
2023-01-22 13:43:31 +0100 | OscarZ | (~oscarz@95.175.104.39) (Quit: Leaving) |
2023-01-22 13:46:43 +0100 | tremon | (~tremon@83-85-213-108.cable.dynamic.v4.ziggo.nl) |
2023-01-22 13:54:09 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Quit: ChaiTRex) |
2023-01-22 13:56:47 +0100 | enoq | (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) |
2023-01-22 14:04:12 +0100 | mizlan | (~mizlan@169.150.203.45) |
2023-01-22 14:07:18 +0100 | cheater_ | (~Username@user/cheater) |
2023-01-22 14:09:55 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2023-01-22 14:11:02 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 255 seconds) |
2023-01-22 14:11:03 +0100 | cheater_ | cheater |
2023-01-22 14:12:11 +0100 | acidjnk | (~acidjnk@p200300d6e715c45184a61eb831583be7.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
2023-01-22 14:14:38 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-01-22 14:21:44 +0100 | cheater_ | (~Username@user/cheater) |
2023-01-22 14:24:14 +0100 | Guest75 | (~Guest75@178.141.138.233) |
2023-01-22 14:24:46 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 252 seconds) |
2023-01-22 14:24:49 +0100 | cheater_ | cheater |
2023-01-22 14:29:15 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
2023-01-22 14:41:34 +0100 | Homer_Simpson | (uid550301@id-550301.uxbridge.irccloud.com) |
2023-01-22 14:42:31 +0100 | <Homer_Simpson> | I'm trying to learn haskell but the stuff that the tutorial is showing isnt working in onlinedgb.com |
2023-01-22 14:43:24 +0100 | <Homer_Simpson> | if I remove main I get an error, if I try to in any obvious way add more code after main print "hi" I get more errors |
2023-01-22 14:44:08 +0100 | <Homer_Simpson> | https://www.tutorialspoint.com/haskell/haskell_basic_data_models.htm |
2023-01-22 14:47:45 +0100 | <darkling> | Can you show us the code you've written that doesn't work? |
2023-01-22 14:48:06 +0100 | unit73e | (~emanuel@184.37.249.5.rev.vodafone.pt) |
2023-01-22 14:48:48 +0100 | <darkling> | (There's a pastebin linked in the channel /topic |
2023-01-22 14:48:51 +0100 | <Axman6> | what's onlinedgb.com? |
2023-01-22 14:48:57 +0100 | <Axman6> | @where paste |
2023-01-22 14:48:57 +0100 | <lambdabot> | Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com |
2023-01-22 14:51:23 +0100 | <Homer_Simpson> | https://paste.tomsmeding.com/73xsSZiX |
2023-01-22 14:51:37 +0100 | <Homer_Simpson> | im coming from C/raku here |
2023-01-22 14:51:38 +0100 | <int-e> | Axman6: https://www.onlinegdb.com/ (doesn't work without the www.) |
2023-01-22 14:54:01 +0100 | CiaoSen | (~Jura@p200300c9572d4e002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2023-01-22 14:54:57 +0100 | <fendor[m]> | Not sure whether somebody already said it, but please, never use tutorialspoint, especially for haskell learning |
2023-01-22 14:55:36 +0100 | <Axman6> | Homer_Simpson: well, the reason those don't work is because they're not valid Haskell |
2023-01-22 14:55:51 +0100 | <Homer_Simpson> | i tired youtube too |
2023-01-22 14:56:01 +0100 | <Homer_Simpson> | tried* |
2023-01-22 14:56:10 +0100 | <Homer_Simpson> | they all go too fast for me |
2023-01-22 14:56:26 +0100 | <Axman6> | main = print "hi"; 2+2; doesn't mean anything in Haskell. main = dp {print "hi"; 2+2; } _might_ mean something, it's syntactically ok, but it actually doesn't make any sense either |
2023-01-22 14:56:31 +0100 | <Homer_Simpson> | they just throw examples examples examples |
2023-01-22 14:56:40 +0100 | <Homer_Simpson> | and dont teach the grammar |
2023-01-22 14:56:43 +0100 | <Axman6> | do, not dp* |
2023-01-22 14:56:46 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-176-241.46.114.pool.telefonica.de) (Ping timeout: 265 seconds) |
2023-01-22 14:57:25 +0100 | <Axman6> | A friend shared this with me the other day, it might be useful for deciding on a source to learn from: https://bitemyapp.com/blog/functional-education/ |
2023-01-22 14:57:49 +0100 | <Axman6> | I might be a bit biased by the recommendations, I used to work at NICTA and teach the NICTA course in person |
2023-01-22 14:58:11 +0100 | darkling | wonders if that's a shiny metal app. |
2023-01-22 14:58:20 +0100 | <Homer_Simpson> | • No instance for (Num (IO t0)) arising from a use of ‘+’ • In a stmt of a 'do' block: 2 + 2 In the expression: do print "hi" 2 + 2 |
2023-01-22 14:58:34 +0100 | <Axman6> | Homer_Simpson: yeah, that expression doesn't really make any sense |
2023-01-22 14:59:28 +0100 | <Axman6> | you could try something like: main = do { putStrLn "Hello, what's your name?"; name <- getLine; putStrLn ("Nice to meet you, " ++ name) } |
2023-01-22 14:59:30 +0100 | <Homer_Simpson> | well how do I simply print "hi\n" and then print the result of adding 2 numbers |
2023-01-22 15:00:01 +0100 | <Axman6> | main = do {putStrLn "hi"; print (2+2) } |
2023-01-22 15:00:15 +0100 | <Axman6> | % do {putStrLn "hi"; print (2+2) } |
2023-01-22 15:00:16 +0100 | <yahb2> | hi ; 4 |
2023-01-22 15:00:30 +0100 | elkcl_ | (~elkcl@broadband-188-255-19-11.ip.moscow.rt.ru) |
2023-01-22 15:00:31 +0100 | <Axman6> | (; means new line in yahb2's output) |
2023-01-22 15:01:18 +0100 | <int-e> | looks like onlinegdb uses ghc 8.6.5... that's impressively old. |
2023-01-22 15:01:23 +0100 | <Homer_Simpson> | ok thats what I was wondering, how to add a block of statement to main |
2023-01-22 15:01:27 +0100 | <Homer_Simpson> | that worked |
2023-01-22 15:02:34 +0100 | elkcl | (~elkcl@broadband-188-255-19-11.ip.moscow.rt.ru) (Ping timeout: 260 seconds) |
2023-01-22 15:02:34 +0100 | elkcl_ | elkcl |
2023-01-22 15:02:34 +0100 | <Homer_Simpson> | I only use onlinegdb for running small bits of code cause it keeps losing internet connection and sometimes it fails to flush errors from stdout |
2023-01-22 15:03:14 +0100 | <Axman6> | why not install ghci? |
2023-01-22 15:03:24 +0100 | <Homer_Simpson> | I will |
2023-01-22 15:03:36 +0100 | <Homer_Simpson> | can haskell parse strings |
2023-01-22 15:03:42 +0100 | <Homer_Simpson> | from a file |
2023-01-22 15:03:58 +0100 | <Axman6> | Homer_Simpson: https://www.haskell.org/ghcup/ is the place to start |
2023-01-22 15:04:01 +0100 | <Homer_Simpson> | in C we use fscanf |
2023-01-22 15:04:19 +0100 | <Axman6> | probably the domain Haskell is most well known for is in parsing |
2023-01-22 15:04:37 +0100 | <Homer_Simpson> | cool. |
2023-01-22 15:04:55 +0100 | <Axman6> | in Haskell, we use parser combinators, which are fastly more flexible than really anything C has to offer, but you're a long way from learning about that |
2023-01-22 15:06:23 +0100 | Inst_ | (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) (Ping timeout: 255 seconds) |
2023-01-22 15:09:19 +0100 | mizlan | (~mizlan@169.150.203.45) (Ping timeout: 252 seconds) |
2023-01-22 15:09:38 +0100 | <Axman6> | anyway, I would strongly recommend finding a different way to learn Haskell, tutorialspoint as fendor[m]points out is a horrible resource. https://www.seas.upenn.edu/~cis1940/spring13/ is generally a great introduction, and will start you out on things that are important to learn early. maing able to write a main isn't particularly important |
2023-01-22 15:09:51 +0100 | <Homer_Simpson> | ok thx |
2023-01-22 15:17:12 +0100 | <Axman6> | Good lord, that tutorial is almost criminally bad, it's just bizarrely about trivially simple things |
2023-01-22 15:18:07 +0100 | <Axman6> | wrong* |
2023-01-22 15:23:49 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
2023-01-22 15:27:49 +0100 | acidjnk | (~acidjnk@p200300d6e715c45184a61eb831583be7.dip0.t-ipconnect.de) |
2023-01-22 15:28:01 +0100 | razetime | (~Thunderbi@117.193.4.9) |
2023-01-22 15:28:27 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds) |
2023-01-22 15:37:17 +0100 | harveypwca | (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) |
2023-01-22 15:39:19 +0100 | <n0den1te> | speaking of tutorials, is there a rewrite of RWH coming any time? |
2023-01-22 15:39:21 +0100 | <fendor[m]> | also, uses a compiler from 2012 or something like that |
2023-01-22 15:39:54 +0100 | <n0den1te> | I vaguely recall seeing some community efforts around RWH, but can't find it anymore |
2023-01-22 15:42:49 +0100 | <n0den1te> | hmm, found it here: https://github.com/tssm/up-to-date-real-world-haskell (dormant since 2020) |
2023-01-22 15:42:51 +0100 | <geekosaur> | there's a wiki |
2023-01-22 15:43:10 +0100 | razetime | (~Thunderbi@117.193.4.9) (Quit: See You Space Cowboy) |
2023-01-22 15:43:19 +0100 | <geekosaur> | no idea whether dons and company plan to update it at some point |
2023-01-22 15:53:27 +0100 | Guest|15 | (~Guest|15@46.97.170.59) |
2023-01-22 15:53:32 +0100 | Guest|15 | (~Guest|15@46.97.170.59) (Client Quit) |
2023-01-22 15:54:09 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
2023-01-22 16:00:07 +0100 | acidjnk_new | (~acidjnk@p200300d6e715c4514d89378e6d7ee9ff.dip0.t-ipconnect.de) |
2023-01-22 16:01:07 +0100 | acidjnk | (~acidjnk@p200300d6e715c45184a61eb831583be7.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2023-01-22 16:05:09 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:5d38:2665:17cb:f4aa) |
2023-01-22 16:06:51 +0100 | cyphase | (~cyphase@user/cyphase) (Ping timeout: 248 seconds) |
2023-01-22 16:07:05 +0100 | mizlan | (~mizlan@169.150.203.45) |
2023-01-22 16:09:49 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:5d38:2665:17cb:f4aa) (Ping timeout: 252 seconds) |
2023-01-22 16:12:03 +0100 | cyphase | (~cyphase@user/cyphase) |
2023-01-22 16:12:09 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2023-01-22 16:13:09 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2023-01-22 16:13:52 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2023-01-22 16:15:43 +0100 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
2023-01-22 16:24:17 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2023-01-22 16:25:37 +0100 | mizlan | (~mizlan@169.150.203.45) (Ping timeout: 252 seconds) |
2023-01-22 16:28:40 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
2023-01-22 16:30:20 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2023-01-22 16:31:39 +0100 | Homer_Simpson | (uid550301@id-550301.uxbridge.irccloud.com) () |
2023-01-22 16:33:36 +0100 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2023-01-22 16:41:48 +0100 | mizlan | (~mizlan@89.46.114.156) |
2023-01-22 16:43:08 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-01-22 16:46:24 +0100 | underlap | (~underlap@229.171.115.87.dyn.plus.net) |
2023-01-22 16:48:32 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) |
2023-01-22 16:49:21 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) (Max SendQ exceeded) |
2023-01-22 16:49:47 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) |
2023-01-22 16:51:48 +0100 | pi1 | (~pi@173.209.64.74) (Read error: No route to host) |
2023-01-22 17:04:07 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2023-01-22 17:05:56 +0100 | underlap | (~underlap@229.171.115.87.dyn.plus.net) (Quit: Client closed) |
2023-01-22 17:07:40 +0100 | Momentum_ | Momentum |
2023-01-22 17:09:09 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
2023-01-22 17:09:47 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2023-01-22 17:09:49 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2023-01-22 17:13:16 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-01-22 17:17:39 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2023-01-22 17:18:51 +0100 | acidjnk_new | (~acidjnk@p200300d6e715c4514d89378e6d7ee9ff.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
2023-01-22 17:23:02 +0100 | enoq | (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq) |
2023-01-22 17:25:32 +0100 | shapr | (~user@68.54.166.125) |
2023-01-22 17:26:23 +0100 | kimiamania | (~65804703@user/kimiamania) (Quit: PegeLinux) |
2023-01-22 17:27:37 +0100 | kimiamania | (~65804703@user/kimiamania) |
2023-01-22 17:34:03 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
2023-01-22 17:36:09 +0100 | mechap | (~mechap@user/mechap) (Quit: WeeChat 3.8) |
2023-01-22 17:37:57 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2023-01-22 17:40:16 +0100 | mechap | (~mechap@user/mechap) |
2023-01-22 17:44:04 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2023-01-22 17:44:11 +0100 | mizlan | (~mizlan@89.46.114.156) (Ping timeout: 246 seconds) |
2023-01-22 17:48:10 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
2023-01-22 17:50:22 +0100 | use-value1 | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
2023-01-22 17:51:24 +0100 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Ping timeout: 256 seconds) |
2023-01-22 17:51:24 +0100 | use-value1 | use-value |
2023-01-22 17:51:25 +0100 | econo | (uid147250@user/econo) |
2023-01-22 17:52:36 +0100 | emmanuelux | (~emmanuelu@user/emmanuelux) (Quit: au revoir) |
2023-01-22 17:58:56 +0100 | Alex_test_ | (~al_test@178.34.160.228) (Quit: ;-) |
2023-01-22 17:59:03 +0100 | mizlan | (~mizlan@169.150.203.43) |
2023-01-22 17:59:16 +0100 | AlexZenon | (~alzenon@178.34.160.228) (Quit: ;-) |
2023-01-22 17:59:46 +0100 | AlexNoo | (~AlexNoo@178.34.160.228) (Quit: Leaving) |
2023-01-22 18:01:19 +0100 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2023-01-22 18:03:34 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:5d38:2665:17cb:f4aa) |
2023-01-22 18:08:38 +0100 | jwiegley | (~jwiegley@76-234-69-149.lightspeed.frokca.sbcglobal.net) |
2023-01-22 18:08:38 +0100 | AlexNoo | (~AlexNoo@178.34.160.228) |
2023-01-22 18:09:33 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2023-01-22 18:09:44 +0100 | beteigeuze | (~Thunderbi@bl14-81-220.dsl.telepac.pt) |
2023-01-22 18:09:55 +0100 | hololeap_ | hololeap |
2023-01-22 18:10:35 +0100 | AlexZenon | (~alzenon@178.34.160.228) |
2023-01-22 18:13:33 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2023-01-22 18:16:55 +0100 | Alex_test | (~al_test@178.34.160.228) |
2023-01-22 18:18:13 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2023-01-22 18:20:08 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-01-22 18:21:17 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds) |
2023-01-22 18:22:25 +0100 | enoq | (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) |
2023-01-22 18:25:58 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
2023-01-22 18:29:11 +0100 | perrierjouet | (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.8) |
2023-01-22 18:33:53 +0100 | perrierjouet | (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
2023-01-22 18:42:26 +0100 | harveypwca | (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving) |
2023-01-22 18:48:13 +0100 | wombat8756 | (~wombat875@2600:4041:5bea:f800:83f2:bf42:de49:b596) |
2023-01-22 18:48:42 +0100 | beteigeuze | (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Quit: beteigeuze) |
2023-01-22 18:50:34 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer) |
2023-01-22 18:52:23 +0100 | beteigeuze | (~Thunderbi@bl14-81-220.dsl.telepac.pt) |
2023-01-22 18:54:56 +0100 | ddellacosta | (~ddellacos@89.45.224.130) |
2023-01-22 19:05:58 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2023-01-22 19:06:22 +0100 | thongpv | (~thongpv87@2001:ee0:5577:f0d0:b436:353d:3a0c:35f3) (Ping timeout: 252 seconds) |
2023-01-22 19:07:49 +0100 | danso_o | danso |
2023-01-22 19:10:25 +0100 | thongpv | (~thongpv87@2001:ee0:5577:f0d0:da9e:3b7a:e545:4b37) |
2023-01-22 19:12:05 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2023-01-22 19:13:49 +0100 | emmanuelux | (~emmanuelu@user/emmanuelux) |
2023-01-22 19:14:42 +0100 | thongpv | (~thongpv87@2001:ee0:5577:f0d0:da9e:3b7a:e545:4b37) (Ping timeout: 256 seconds) |
2023-01-22 19:22:07 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2023-01-22 19:24:17 +0100 | oats | (~thomas@user/oats) (Quit: until later, my friends) |
2023-01-22 19:25:01 +0100 | oats | (~thomas@user/oats) |
2023-01-22 19:30:47 +0100 | remexre | (~remexre@mail.sift.net) (Remote host closed the connection) |
2023-01-22 19:30:54 +0100 | remexre | (~remexre@user/remexre) |
2023-01-22 19:44:08 +0100 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) |
2023-01-22 19:46:37 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-01-22 19:47:34 +0100 | trev_ | (~trev@109-252-35-99.nat.spd-mgts.ru) (Remote host closed the connection) |
2023-01-22 19:48:01 +0100 | <hololeap> | > Any list like [1,2,3,4,5,a,b,c,d,e,f] will produce an error. |
2023-01-22 19:48:04 +0100 | <lambdabot> | <hint>:1:61: error: |
2023-01-22 19:48:04 +0100 | <lambdabot> | parse error (possibly incorrect indentation or mismatched brackets) |
2023-01-22 19:48:07 +0100 | <hololeap> | yeah, that's pretty bad |
2023-01-22 19:48:34 +0100 | <hololeap> | they're trying to show not to put Chars in a list of Ints, but fail to do even that |
2023-01-22 19:49:07 +0100 | <hololeap> | and then say the "not in scope" errors are because lists need to be homogonous |
2023-01-22 19:49:45 +0100 | <c_wraith> | > [1,2,3,a,b,c] :: [Expr] |
2023-01-22 19:49:47 +0100 | <lambdabot> | [1,2,3,a,b,c] |
2023-01-22 19:50:07 +0100 | <c_wraith> | It even works if you have the right libraries in scope! |
2023-01-22 19:50:29 +0100 | mizlan | (~mizlan@169.150.203.43) (Ping timeout: 246 seconds) |
2023-01-22 19:51:34 +0100 | <hololeap> | A Tuple is an immutable data type, as we cannot modify the number of elements at runtime, whereas a List is a mutable data type. |
2023-01-22 19:51:36 +0100 | <hololeap> | >_> |
2023-01-22 19:52:03 +0100 | <c_wraith> | someone mistook Haskell for python? |
2023-01-22 19:52:45 +0100 | <hololeap> | those poor people trying to learn the basics from that... |
2023-01-22 19:54:49 +0100 | briandaed | (~briandaed@185.234.210.211.r.toneticgroup.pl) |
2023-01-22 20:07:19 +0100 | mizlan | (~mizlan@169.150.203.53) |
2023-01-22 20:15:39 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
2023-01-22 20:19:02 +0100 | <hololeap> | speaking of tutorials, is there anything that attempts to teach the ... thing between Applicative and Monad? |
2023-01-22 20:19:25 +0100 | <hololeap> | Selective? |
2023-01-22 20:19:41 +0100 | <hololeap> | I never used it because I didn't understand it |
2023-01-22 20:21:01 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds) |
2023-01-22 20:22:10 +0100 | <c_wraith> | I'm not sure it's actually useful |
2023-01-22 20:22:30 +0100 | <glguy> | the only reason to really learn about it would be if you were using a library that happened to use it. in that case you'd just learn about the library |
2023-01-22 20:23:26 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
2023-01-22 20:23:34 +0100 | <hololeap> | is there a big example of something that happens to be a Selective but not a Monad? |
2023-01-22 20:24:08 +0100 | CiaoSen | (~Jura@p200300c9572d4e002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2023-01-22 20:24:10 +0100 | opqdonut_ | opqdonut |
2023-01-22 20:25:45 +0100 | <c_wraith> | You can use Selective to construct something that looks a whole lot like (>>=) but only if you can enumerate the values of `a' in `(a -> m b) -> m a -> m b' |
2023-01-22 20:26:16 +0100 | <glguy> | I have my config-schema package that has specs that are applicative but not monad, so you can inspect them and produce documentation. Currently the way I handle inspecting schemas with alternatives is just a list of alternatives, but with selective I could expose a selection operation that could have documentation generated about it |
2023-01-22 20:26:28 +0100 | <c_wraith> | This means you can introspect the data |
2023-01-22 20:27:19 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:5d38:2665:17cb:f4aa) (Remote host closed the connection) |
2023-01-22 20:27:20 +0100 | <glguy> | (I don't need to use a typeclass to do that, but in that case I'd be able to instantiate the typeclass were I don't want to rely on monad |
2023-01-22 20:28:01 +0100 | <glguy> | the benefit of using Applicative for me is I get to use ApplicativeDo . I don't know what hte benefit of making the Selective instance would be, though |
2023-01-22 20:29:35 +0100 | <xerox> | what is Selective? |
2023-01-22 20:29:48 +0100 | <monochrom> | I have only read the original Selective paper. And only the introductory parts of it. |
2023-01-22 20:29:55 +0100 | <c_wraith> | xerox: https://hackage.haskell.org/package/selective-0.5/docs/Control-Selective.html#t:Selective |
2023-01-22 20:30:07 +0100 | <monochrom> | I understand it because I was asking myself the same question already. :) |
2023-01-22 20:30:40 +0100 | <c_wraith> | It's a way to preserve Applicative introspection while allowing something resembling monadic effect selection |
2023-01-22 20:33:17 +0100 | <c_wraith> | I'm not sure if there's any type that can be a Selective that *can't* be a Monad. But as in glguy's case, sometimes you don't want to make it a Monad because the whole purpose of the type is introspection |
2023-01-22 20:33:21 +0100 | <monochrom> | I was looking at eg "satisfy p = do { c <- anyChar; if p c then pure c else empty }" and wondering: It shouldn't need the full power of Monad, but Alternative falls short by just a little bit. Is there something that gives "foo >>= \c -> if then else" but no more than that? |
2023-01-22 20:34:02 +0100 | <hololeap> | c_wraith: it looks like this might be an example of one: https://github.com/kowainik/validation-selective |
2023-01-22 20:34:38 +0100 | <hololeap> | also, what is "introspection" in the context of Applicative? |
2023-01-22 20:35:06 +0100 | <c_wraith> | hololeap: no, that's exactly what I was talking about. That can be made a Monad trivially, like Either. But doing so prevents introspection. |
2023-01-22 20:35:55 +0100 | aweinsto1k | aweinstock |
2023-01-22 20:36:00 +0100 | <c_wraith> | hololeap: introspection in this context is examining the effect structure without actually performing the "result" computations |
2023-01-22 20:37:28 +0100 | seriously_guest | (~seriously@2001:1c06:2715:c200:8531:d289:8f72:ead3) |
2023-01-22 20:39:17 +0100 | <hololeap> | The Validation data type is isomorphic to Either, but has an instance of Applicative that accumulates on the error side. That is to say, if two (or more) errors are encountered, they are appended using a Semigroup operation. |
2023-01-22 20:39:18 +0100 | <c_wraith> | hololeap: it's not a property every instance supports. For instance, the [] instance for Applicative doesn't let you do any introspection. The important part is that Applicative doesn't prevent it. |
2023-01-22 20:39:23 +0100 | <hololeap> | As a consequence of this Applicative instance, there is no corresponding Bind or Monad instance. Validation is an example of, "An applicative functor that is not a monad." |
2023-01-22 20:40:13 +0100 | <hololeap> | ok, so Validation doesn't have a valid Monad instance, sort of like ZipList doesn't, because of the way their Applicative is set up |
2023-01-22 20:40:13 +0100 | iteratee | (~kyle@162.218.222.107) (Read error: Connection reset by peer) |
2023-01-22 20:40:14 +0100 | <glguy> | hololeap: this is my example of using an Applicative interface to making schemas https://glguy.net/config-demo/ |
2023-01-22 20:40:31 +0100 | iteratee | (~kyle@162.218.222.107) |
2023-01-22 20:40:36 +0100 | <glguy> | then from the same code you can generate documentation and schema checkers, but still get the restricted applicative-do notation when defining things |
2023-01-22 20:40:54 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2023-01-22 20:41:05 +0100 | <hololeap> | yeah, glguy, I've had my eye on your config-schemas lib for a while, but I still haven't used it yet |
2023-01-22 20:41:17 +0100 | <hololeap> | I assumed it was similar to optparse-applicative in the way it functions |
2023-01-22 20:41:31 +0100 | <hololeap> | although I don't know how the internals of optparse-applicative works |
2023-01-22 20:42:04 +0100 | barzo | (~hd@31.223.41.44) |
2023-01-22 20:42:24 +0100 | <c_wraith> | side question: how well does ApplicativeDo work these days? I seem to recall it was documented as a best effort sort of thing, instead of actually having guarantees |
2023-01-22 20:42:58 +0100 | <c_wraith> | But that was the very first version, and I know it's been improved. |
2023-01-22 20:43:07 +0100 | <glguy> | it works fine, you just have to avoid the things that make something use Monad |
2023-01-22 20:43:45 +0100 | <hololeap> | I use it all the time for parser libraries, I also turn on -foptimal-applicative-do and never noticed any problems |
2023-01-22 20:44:23 +0100 | <hololeap> | but, yeah it's sometimes a mystery if it's using the Monadic do instead. there should be a way to force Applicative other than trying to make a non-monadic version of whatever it is |
2023-01-22 20:45:07 +0100 | <glguy> | You get a type error if you used monadic do and your type didnt' support it, so it's not a complete mystery |
2023-01-22 20:45:13 +0100 | <glguy> | and if your type does support Monad it doesn't matter |
2023-01-22 20:45:36 +0100 | <hololeap> | true, so it's not a mystery for optparse-applicative, but for instance attoparsec has a Monad instance for its parser, so it's harder to tell for that one |
2023-01-22 20:45:47 +0100 | <hololeap> | I guess it might not matter in the latter case |
2023-01-22 20:46:03 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:5d38:2665:17cb:f4aa) |
2023-01-22 20:46:27 +0100 | seriously_guest | (~seriously@2001:1c06:2715:c200:8531:d289:8f72:ead3) (Quit: Client closed) |
2023-01-22 20:47:43 +0100 | <hololeap> | I remember hearing something about parsers being faster if you can stick to their Applicative instance, but that might have been complete nonsense |
2023-01-22 20:48:17 +0100 | <c_wraith> | It... depends. |
2023-01-22 20:48:39 +0100 | <hololeap> | I noticed that the parser-combinators library says to use the Monad versions because they are faster |
2023-01-22 20:48:51 +0100 | <hololeap> | it's all pretty mysterious to me... |
2023-01-22 20:49:05 +0100 | <glguy> | If performance matters at that level of detail you're probably not using parser combinators |
2023-01-22 20:52:06 +0100 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection) |
2023-01-22 20:52:25 +0100 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
2023-01-22 20:52:56 +0100 | <hololeap> | Due to the nature of the Applicative and Alternative abstractions, they are prone to memory leaks and not as efficient as their monadic counterparts. Although all the combinators we provide in this module are perfectly expressible in terms of Applicative and Alternative, please prefer Control.Monad.Combinators instead when possible. |
2023-01-22 20:54:27 +0100 | <hololeap> | so, some like me is like "I don't memory leaks! I want efficiency!" and I do what it says without really understanding why |
2023-01-22 20:55:59 +0100 | shriekingnoise | (~shrieking@186.137.175.87) |
2023-01-22 20:56:23 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2023-01-22 20:57:03 +0100 | <c_wraith> | There are some cases where it really does matter |
2023-01-22 20:57:12 +0100 | jero98772 | (~jero98772@2800:484:1d80:d8ce:3490:26c5:1782:da8c) |
2023-01-22 20:57:24 +0100 | <EvanR> | I thought due to the nature of the Applicative you can form a compiler to an arbitrary better form |
2023-01-22 20:58:04 +0100 | <c_wraith> | Like with permutation parsing. Doing it efficiently with only Applicative requires a certain amount of laziness in the parser that not all will have - and that laziness isn't compatible with introspection, for instance. |
2023-01-22 20:58:28 +0100 | <c_wraith> | The monadic interface for permutation parsing has much better memory use guarantees |
2023-01-22 20:59:15 +0100 | briandaed | (~briandaed@185.234.210.211.r.toneticgroup.pl) (Remote host closed the connection) |
2023-01-22 21:00:19 +0100 | <c_wraith> | I like the Earley parser library, but permutation parsing is awkward for it. It works by introspecting parsers to build its transition tables. |
2023-01-22 21:00:47 +0100 | <hololeap> | I was hoping for more discussion here: https://github.com/mrkkrp/parser-combinators/pull/8 |
2023-01-22 21:00:47 +0100 | <c_wraith> | permutation parsers will always be large in that representation |
2023-01-22 21:04:27 +0100 | <hololeap> | c_wraith: it's interesting you say that, because Control.Monad.Permutations wasn't added until later |
2023-01-22 21:04:40 +0100 | <hololeap> | so I wonder what the initial motivation was |
2023-01-22 21:11:22 +0100 | <hololeap> | does anyone know of something that could generate a man page from an optparse-applicative ParserInfo? |
2023-01-22 21:12:33 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2023-01-22 21:13:12 +0100 | hololeap | found this: https://github.com/pcapriotti/optparse-applicative/issues/176 |
2023-01-22 21:13:24 +0100 | <hololeap> | but nothing linking to existing solutions at this point |
2023-01-22 21:15:01 +0100 | <Clint> | i believe the existing solution is to pipe --help output to help2man |
2023-01-22 21:15:23 +0100 | <hololeap> | would that work with subcommands? |
2023-01-22 21:15:50 +0100 | pavonia | (~user@user/siracusa) |
2023-01-22 21:16:37 +0100 | Sgeo | (~Sgeo@user/sgeo) |
2023-01-22 21:16:41 +0100 | __xor | _xor |
2023-01-22 21:23:27 +0100 | oldfashionedcow | (~Rahul_San@user/oldfashionedcow) |
2023-01-22 21:24:38 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
2023-01-22 21:26:36 +0100 | <Clint> | well, you could run help2man for each subcommand |
2023-01-22 21:31:15 +0100 | Guest|20 | (~Guest|20@c-73-176-81-178.hsd1.il.comcast.net) |
2023-01-22 21:32:20 +0100 | <Guest|20> | I get this error when trying to install on macos. curl: (60) SSL certificate problem: certificate has expired |
2023-01-22 21:33:07 +0100 | <glguy> | What day does the date commands say it is? |
2023-01-22 21:33:29 +0100 | <Guest|20> | Sun Jan 22 14:33:16 CST 2023 |
2023-01-22 21:33:36 +0100 | <glguy> | And what command are you running to install something? |
2023-01-22 21:33:55 +0100 | <Guest|20> | curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh |
2023-01-22 21:34:53 +0100 | <Guest|20> | from https://www.haskell.org/ghcup/ |
2023-01-22 21:36:31 +0100 | <glguy> | Are you on a network that replaces TLS certificates perhaps requiring you to install their own local CA? Like school, work? |
2023-01-22 21:36:38 +0100 | <Guest|20> | no |
2023-01-22 21:37:11 +0100 | <Guest|20> | unless comcast does that |
2023-01-22 21:38:11 +0100 | <Guest|20> | older os, macos 10.14 |
2023-01-22 21:38:53 +0100 | <geekosaur> | https://stackoverflow.com/questions/69521959/ssl-certificate-problem-certificate-has-expire-in-macos |
2023-01-22 21:39:11 +0100 | mizlan | (~mizlan@169.150.203.53) (Ping timeout: 264 seconds) |
2023-01-22 21:39:35 +0100 | <geekosaur> | especially with an older macos which would mean apple's not updating certs any more and probably has expired ISRG /; Let's Encrypt certs |
2023-01-22 21:42:45 +0100 | <Guest|20> | seems reasonable, "Another possible solution is to use curl's -k/--insecure flag" this seems like the easiest solution. |
2023-01-22 21:43:06 +0100 | <geekosaur> | easy but not one I'd suggest getting used to; security is for a reason |
2023-01-22 21:44:35 +0100 | <Guest|20> | understood, thanks for the help! |
2023-01-22 21:45:56 +0100 | remedan | (~remedan@ip-89-177-74-251.bb.vodafone.cz) (Quit: Bye!) |
2023-01-22 21:46:30 +0100 | <Guest|20> | perhaps brew install ghcup is a more secure option, I think I'll try that first |
2023-01-22 21:46:46 +0100 | remedan | (~remedan@ip-89-177-74-251.bb.vodafone.cz) |
2023-01-22 21:47:29 +0100 | jumper149 | (~jumper149@base.felixspringer.xyz) |
2023-01-22 21:48:34 +0100 | <Guest|20> | damn brew's ghcup requires higher than 10.14 |
2023-01-22 21:50:46 +0100 | abhixec | (~abhinav@c-67-169-139-16.hsd1.ca.comcast.net) |
2023-01-22 21:51:48 +0100 | <Guest|20> | looks like i've got to update the certificates on this machine, thanks again |
2023-01-22 21:52:38 +0100 | <geekosaur> | hm, I wonder if it'll work though. brew may be telling you indirectly that there's no working ghc binaries for 10.14 |
2023-01-22 21:54:24 +0100 | <geekosaur> | I know the minimum OS X version has been bumped a few times due to missing OS features needed by ghc's runtime |
2023-01-22 21:56:29 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2023-01-22 21:59:02 +0100 | acidjnk_new | (~acidjnk@p200300d6e715c429699c669626622ebf.dip0.t-ipconnect.de) |
2023-01-22 21:59:02 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds) |
2023-01-22 22:01:54 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-183-023.46.114.pool.telefonica.de) |
2023-01-22 22:03:05 +0100 | <Guest|20> | I updated the cert and it is installing using curl |
2023-01-22 22:03:22 +0100 | <Guest|20> | the macos minimum right now is 10.13 |
2023-01-22 22:04:19 +0100 | <Guest|20> | thanks again! |
2023-01-22 22:12:27 +0100 | <jumper149> | geekosaur: Yeah, I guess you're right. Should've probably posted here, sorry. But no I don't want to support old library versions. |
2023-01-22 22:15:04 +0100 | <geekosaur> | `#if !MIN_VERSION_FOO(...)\n# error "foo package too old"\n#endif`… although that's probably best done with a cabal dependency. I'm not sure what you get with a flag unless the dependency is part of the flag |
2023-01-22 22:17:15 +0100 | <jumper149> | Yeah, I just use regular cabal version boundaries. I think that suffices. |
2023-01-22 22:17:43 +0100 | <jumper149> | I do have another question though: Is there a way for cabal flags to imply other cabal flags? |
2023-01-22 22:23:20 +0100 | <geekosaur> | that might be a #hackage question |
2023-01-22 22:23:48 +0100 | <geekosaur> | doesn't look like it to me, though; you can't set (or clear) a flag in a cabal file |
2023-01-22 22:24:21 +0100 | <geekosaur> | might be possible to put a `default:` for a flag definition in a conditional involving another flag, though |
2023-01-22 22:25:36 +0100 | <c_wraith> | the main reason I use MIN_VERSION CPP is when I'm creating instances when the type or class is owned by another library, and they tend to change. |
2023-01-22 22:26:39 +0100 | <c_wraith> | Like, I've added some instances to lens that work differently with different versions of base, because base only added a type recently, or Foldable used to not have that function, or whatever |
2023-01-22 22:27:07 +0100 | <sclv> | by design flags don’t imply other flags |
2023-01-22 22:27:24 +0100 | <sclv> | flags are not supposed to change the surface api of a package |
2023-01-22 22:27:34 +0100 | <c_wraith> | And as much visual noise as it is, it's easier to use those CPP macros than to conditionally include extra files that define those instances. |
2023-01-22 22:28:05 +0100 | <jumper149> | sclv: I think it's fine for optional orphan instances. |
2023-01-22 22:28:29 +0100 | <sclv> | i’m not saying an opinion. i’m saying the design and the reason |
2023-01-22 22:28:49 +0100 | Lycurgus | (~juan@user/Lycurgus) |
2023-01-22 22:29:25 +0100 | <jumper149> | sclv: Ok, let me rephrase. Are optional orphan instances part of the surface API? |
2023-01-22 22:29:42 +0100 | <sclv> | yes |
2023-01-22 22:29:48 +0100 | <c_wraith> | haddock documents them! |
2023-01-22 22:30:25 +0100 | <c_wraith> | (that's a relatively new feature of haddock. It's only been around for a few years. But it's very nice to actually have now.) |
2023-01-22 22:30:38 +0100 | <geekosaur> | jumper149, consider that Hackage would be unmanageable and unreliable if packages' APIs changed depending on flags |
2023-01-22 22:31:39 +0100 | <jumper149> | geekosaur: I see. You would have to build the docs for every combination of flags. |
2023-01-22 22:32:16 +0100 | <geekosaur> | you might have to build dependent packages for every combination of flags as well |
2023-01-22 22:32:19 +0100 | <c_wraith> | jumper149: and every combination of flags for all dependnecies |
2023-01-22 22:32:56 +0100 | <jumper149> | Yeah that doesn't sound good. |
2023-01-22 22:35:19 +0100 | theproffesor | (~theproffe@2601:282:8800:3f30::b942) |
2023-01-22 22:35:19 +0100 | theproffesor | (~theproffe@2601:282:8800:3f30::b942) (Changing host) |
2023-01-22 22:35:19 +0100 | theproffesor | (~theproffe@user/theproffesor) |
2023-01-22 22:41:31 +0100 | ddellacosta | (~ddellacos@89.45.224.130) (Ping timeout: 260 seconds) |
2023-01-22 22:41:58 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds) |
2023-01-22 22:42:59 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2023-01-22 22:44:20 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
2023-01-22 22:45:40 +0100 | remedan | (~remedan@ip-89-177-74-251.bb.vodafone.cz) (Quit: Bye!) |
2023-01-22 22:47:02 +0100 | theproffesor | (~theproffe@user/theproffesor) (Remote host closed the connection) |
2023-01-22 22:47:02 +0100 | remedan | (~remedan@ip-89-177-74-251.bb.vodafone.cz) |
2023-01-22 22:49:28 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds) |
2023-01-22 22:50:34 +0100 | Lycurgus | (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz) |
2023-01-22 22:51:13 +0100 | theproffesor | (~theproffe@2601:282:8800:3f30::b942) |
2023-01-22 22:51:13 +0100 | theproffesor | (~theproffe@2601:282:8800:3f30::b942) (Changing host) |
2023-01-22 22:51:13 +0100 | theproffesor | (~theproffe@user/theproffesor) |
2023-01-22 22:54:27 +0100 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection) |
2023-01-22 22:54:47 +0100 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
2023-01-22 22:55:30 +0100 | ddellacosta | (~ddellacos@86.106.143.117) |
2023-01-22 23:02:36 +0100 | mizlan | (~mizlan@169.150.203.43) |
2023-01-22 23:03:10 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2023-01-22 23:10:46 +0100 | enoq | (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq) |
2023-01-22 23:23:44 +0100 | n0den1te | (~n0den1te@223.178.85.186) (Quit: leaving) |
2023-01-22 23:25:22 +0100 | biberu | (~biberu@user/biberu) (Read error: Connection reset by peer) |
2023-01-22 23:29:59 +0100 | biberu | (~biberu@user/biberu) |
2023-01-22 23:37:02 +0100 | mizlan | (~mizlan@169.150.203.43) (Ping timeout: 268 seconds) |
2023-01-22 23:44:04 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2023-01-22 23:48:03 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
2023-01-22 23:49:20 +0100 | Feuermagier | (~Feuermagi@user/feuermagier) |
2023-01-22 23:49:59 +0100 | Feuermagier | (~Feuermagi@user/feuermagier) (Remote host closed the connection) |