2021/01/02

2021-01-02 00:08:07 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f) (Remote host closed the connection)
2021-01-02 00:10:06 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f)
2021-01-02 00:11:35 +0100ransom(~c4264035@70-59-22-250.hlrn.qwest.net)
2021-01-02 00:13:00 +0100ransom(~c4264035@70-59-22-250.hlrn.qwest.net) (Client Quit)
2021-01-02 00:13:18 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
2021-01-02 00:13:43 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
2021-01-02 00:14:13 +0100ransom(~c4264035@70-59-22-250.hlrn.qwest.net)
2021-01-02 00:15:25 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
2021-01-02 00:15:49 +0100dfeuer(~dfeuer@pool-108-18-223-60.washdc.fios.verizon.net) (Ping timeout: 264 seconds)
2021-01-02 00:18:30 +0100HarveyPwca(~HarveyPwc@c-98-220-98-201.hsd1.il.comcast.net)
2021-01-02 00:18:36 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:507e:67a8:8e33:6ee2) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-02 00:19:36 +0100nhs_(~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
2021-01-02 00:20:01 +0100ransom(~c4264035@70-59-22-250.hlrn.qwest.net) (Ping timeout: 264 seconds)
2021-01-02 00:20:27 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f) (Remote host closed the connection)
2021-01-02 00:21:23 +0100nhs_(~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Remote host closed the connection)
2021-01-02 00:26:36 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-01-02 00:27:28 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2021-01-02 00:27:36 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 240 seconds)
2021-01-02 00:28:11 +0100christo(~chris@81.96.113.213)
2021-01-02 00:32:15 +0100son0p(~son0p@181.136.122.143) (Quit: Lost terminal)
2021-01-02 00:32:44 +0100christo(~chris@81.96.113.213) (Ping timeout: 256 seconds)
2021-01-02 00:37:43 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Ping timeout: 240 seconds)
2021-01-02 00:39:36 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 240 seconds)
2021-01-02 00:40:15 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2021-01-02 00:40:23 +0100dfeuer(~dfeuer@pool-108-18-223-60.washdc.fios.verizon.net)
2021-01-02 00:45:05 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-01-02 00:47:02 +0100knupfer(~Thunderbi@200116b82c90ff003c203efffe389899.dip.versatel-1u1.de)
2021-01-02 00:47:44 +0100knupfer(~Thunderbi@200116b82c90ff003c203efffe389899.dip.versatel-1u1.de) (Remote host closed the connection)
2021-01-02 00:48:00 +0100knupfer(~Thunderbi@200116b82c90ff009d83bf767b64260e.dip.versatel-1u1.de)
2021-01-02 00:49:54 +0100bartholin(~bartholin@unaffiliated/bartholin) (Quit: Leaving)
2021-01-02 00:52:26 +0100halbGefressen(~halbGefre@2a02:810d:f40:2a9c:a4fe:2adc:248b:466f)
2021-01-02 00:52:50 +0100carthia(~carthia@gateway/tor-sasl/carthia)
2021-01-02 00:53:33 +0100Jeanne-Kamikaze(~Jeanne-Ka@static-198-54-134-148.cust.tzulo.com)
2021-01-02 00:54:30 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-02 00:54:32 +0100 <phaazon> anyone using haskell-mode on emacs?
2021-01-02 00:54:34 +0100 <phaazon> I’m becoming crazy
2021-01-02 00:54:53 +0100 <phaazon> I keep having messaging stating that my “haskell app has died; restart?” when I move my cursor around
2021-01-02 00:55:01 +0100 <halbGefressen> How would I get all two-partitions of a List that fulfills the Set invariant? E.g I have a list [0,1,2,3], it would return a list of lists. Those lists contain the two partitions of the original list and form the original list.
2021-01-02 00:55:43 +0100 <halbGefressen> (dunno why i put the example in, retardation)
2021-01-02 00:55:47 +0100dyamon(~dyamon@cpc69058-oxfd26-2-0-cust662.4-3.cable.virginm.net) (Quit: WeeChat 2.9)
2021-01-02 00:58:54 +0100 <dsal> halbGefressen: what do you mean by "two partitions"?
2021-01-02 00:59:07 +0100 <dsal> > partition odd [0..3]
2021-01-02 00:59:09 +0100 <lambdabot> ([1,3],[0,2])
2021-01-02 00:59:28 +0100 <halbGefressen> that would be two partitions yes
2021-01-02 00:59:59 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-01-02 01:00:01 +0100 <halbGefressen> and I look for a function that returns every possibility to partition a list into two lists
2021-01-02 01:01:35 +0100 <dsal> You want to know every possible way to partition numbers? That sounds a little XY -- what are you trying to accomplish?
2021-01-02 01:03:26 +0100 <halbGefressen> Let's say I have an instance Finite which defines a function that enumerates all options of a type, e.g. enumerated :: bool = [True, False].
2021-01-02 01:03:42 +0100Jeanne-Kamikaze(~Jeanne-Ka@static-198-54-134-148.cust.tzulo.com) (Quit: Leaving)
2021-01-02 01:04:05 +0100 <halbGefressen> By assuming that a is instance of Finite, I want to implement Finite for Trees of a.
2021-01-02 01:04:47 +0100 <halbGefressen> This means listing every possible tree that contains every element of the original enumeration of a exactly once.
2021-01-02 01:05:40 +0100 <dsal> :t enumFrom minBound
2021-01-02 01:05:41 +0100 <lambdabot> (Enum a, Bounded a) => [a]
2021-01-02 01:06:14 +0100knupfer(~Thunderbi@200116b82c90ff009d83bf767b64260e.dip.versatel-1u1.de) (Ping timeout: 268 seconds)
2021-01-02 01:06:55 +0100 <dsal> If it's an Enum and Bounded, it's just that. That sounds a lot like what you're asking, but I'm sure I'm missing something. It'd be easier to see your type and what you are hoping to get from it.
2021-01-02 01:07:41 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2021-01-02 01:08:20 +0100 <dmwit> Trees are almost certainly not Enum and Bounded.
2021-01-02 01:08:42 +0100 <dmwit> (They're almost certainly neither.)
2021-01-02 01:09:14 +0100 <dsal> Sure, similar to lists. I just don't quite understand what it means to produce a list of all possible lists any more than I would for trees.
2021-01-02 01:09:19 +0100 <dmwit> That said, I don't understand how partitioning is related to enumerating trees. Doesn't sound right to me.
2021-01-02 01:09:55 +0100 <dmwit> dsal: You can produce the list of all finite lists fairly easily.
2021-01-02 01:10:08 +0100 <dmwit> The list of all finite trees seems pretty plausible, too.
2021-01-02 01:10:47 +0100 <halbGefressen> The intuition I had is to first pick an element from the enumeration. Then partition the rest of numbers into two partitions and for each subtree, those are the possible values that can be in a subtree.
2021-01-02 01:11:06 +0100 <dmwit> halbGefressen: You might like the functions in http://hackage.haskell.org/package/universe-base-1.1.1/docs/Data-Universe-Helpers.html
2021-01-02 01:11:30 +0100 <dmwit> halbGefressen: But an element from the enumeration is a Bool.
2021-01-02 01:12:05 +0100 <dmwit> I'll be honest, I'm a bit surprised we don't have a Universe instance for Tree lying around.
2021-01-02 01:12:08 +0100 <dmwit> Seems super doable.
2021-01-02 01:12:53 +0100 <dmwit> instance Finite a => Universe (Tree a) where universe = cartesianProduct Node universe universe -- seems like it should be enough?
2021-01-02 01:13:18 +0100 <dmwit> Might... might even work for `Universe a => Universe (Tree a)`. I'd have to ponder more than 0 seconds to be sure.
2021-01-02 01:13:31 +0100 <halbGefressen> For bool, it is pretty trivial as there are only 4 possible combinations: Node Leaf True (Node Leaf False Leaf), Node (Leaf False Leaf) True Leaf and the same with True and False exchanged
2021-01-02 01:13:51 +0100ahhhhhhhhhhh(6c3548b1@pool-108-53-72-177.nwrknj.fios.verizon.net)
2021-01-02 01:13:55 +0100 <dmwit> What about Node True Leaf Leaf?
2021-01-02 01:14:10 +0100 <dmwit> That's a perfectly cromulent Tree Bool, isn't it?
2021-01-02 01:14:33 +0100 <halbGefressen> This is a valid tree, but it does not contain every possible value of Bool
2021-01-02 01:14:40 +0100 <dmwit> Sure.
2021-01-02 01:14:46 +0100 <dmwit> Anyway, the answer to the question as asked looks like this:
2021-01-02 01:16:00 +0100 <dmwit> :t map (partition snd) . mapM (\x -> [(x, False), (x, True)])
2021-01-02 01:16:02 +0100 <lambdabot> [a] -> [([(a, Bool)], [(a, Bool)])]
2021-01-02 01:16:11 +0100 <dmwit> Oh, strip out the Bools, too, I guess.
2021-01-02 01:16:32 +0100ahhhhhhhhhhh(6c3548b1@pool-108-53-72-177.nwrknj.fios.verizon.net) (Remote host closed the connection)
2021-01-02 01:16:55 +0100 <halbGefressen> https://www21.in.tum.de/teaching/fpv/WS20/assets/ex07.pdf
2021-01-02 01:16:56 +0100 <dmwit> :t map ((\(ls, rs) -> (map fst ls, map fst rs)) . partition snd) . mapM (\x -> [(x, False), (x, True)])
2021-01-02 01:16:58 +0100 <lambdabot> [b] -> [([b], [b])]
2021-01-02 01:17:12 +0100 <dmwit> > map ((\(ls, rs) -> (map fst ls, map fst rs)) . partition snd) . mapM (\x -> [(x, False), (x, True)]) $ "abcd"
2021-01-02 01:17:15 +0100 <lambdabot> [("","abcd"),("d","abc"),("c","abd"),("cd","ab"),("b","acd"),("bd","ac"),("b...
2021-01-02 01:17:31 +0100 <dmwit> There are probably more efficient (read: lazy) ways.
2021-01-02 01:17:54 +0100 <halbGefressen> H7.2e) is my problem. Maybe I am too stupid to formulate it correctly.
2021-01-02 01:18:24 +0100 <dmwit> https://hackage.haskell.org/package/combinatorial-0.1.0.1/docs/Combinatorics.html#v:partitions has it
2021-01-02 01:19:07 +0100 <halbGefressen> Looks interesting. I'll read through that
2021-01-02 01:19:27 +0100 <dmwit> Oh, you're solving a homework. Then the task isn't obligated to make sense, and I am at peace again.
2021-01-02 01:20:50 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f)
2021-01-02 01:22:17 +0100 <halbGefressen> Yes, it probably does not have a real-world use. I already have acquired enough points to get the check mark for this sheet. But I still want to solve this challenge because I really think it is an interesting problem.
2021-01-02 01:22:33 +0100 <dmwit> Great attitude. ^_^
2021-01-02 01:22:43 +0100teardown(~user@gateway/tor-sasl/mrush) (Ping timeout: 240 seconds)
2021-01-02 01:22:46 +0100 <dmwit> That is a good way to grow quickly.
2021-01-02 01:23:10 +0100 <halbGefressen> well, why study computer science if you don't care about it? if you're in for the money you aint gonna last long
2021-01-02 01:23:37 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net) (Ping timeout: 260 seconds)
2021-01-02 01:23:43 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
2021-01-02 01:24:13 +0100 <halbGefressen> also I kinda prefer haskell over almost everything I used before and want to learn stuff about it haha
2021-01-02 01:24:37 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 246 seconds)
2021-01-02 01:24:41 +0100 <dmwit> There's a lot to like about it. ^_^
2021-01-02 01:24:48 +0100teardown(~user@gateway/tor-sasl/mrush)
2021-01-02 01:25:57 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f) (Ping timeout: 260 seconds)
2021-01-02 01:27:03 +0100frankdmartinez(~frankdmar@5.181.234.188)
2021-01-02 01:27:59 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
2021-01-02 01:28:56 +0100cheater(~user@unaffiliated/cheater) (Ping timeout: 240 seconds)
2021-01-02 01:29:04 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-02 01:29:06 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-02 01:29:56 +0100teardown_(~user@gateway/tor-sasl/mrush)
2021-01-02 01:30:46 +0100 <dmwit> :t foldM
2021-01-02 01:30:47 +0100 <lambdabot> (Foldable t, Monad m) => (b -> a -> m b) -> b -> t a -> m b
2021-01-02 01:30:53 +0100teardown(~user@gateway/tor-sasl/mrush) (Remote host closed the connection)
2021-01-02 01:31:27 +0100 <dmwit> > foldM (\(ts, fs) a -> [(a:ts, fs), (ts, a:fs)]) ([],[]) "abcd"
2021-01-02 01:31:30 +0100 <lambdabot> [("dcba",""),("cba","d"),("dba","c"),("ba","dc"),("dca","b"),("ca","db"),("d...
2021-01-02 01:31:35 +0100 <dmwit> Oh that is much comfier to read.
2021-01-02 01:31:54 +0100 <dmwit> And doesn't require you to install any libraries!
2021-01-02 01:34:57 +0100 <halbGefressen> ohh, this looks promising!
2021-01-02 01:35:40 +0100 <Squarism> in a pattern match of a constructor. If you capture the "identifier@Constructor", I assume the capture gets the type of the constructors type and no nice direct access to the constructor?
2021-01-02 01:35:58 +0100justsomeguy(~justsomeg@216.186.218.241)
2021-01-02 01:35:58 +0100justsomeguy(~justsomeg@216.186.218.241) (Changing host)
2021-01-02 01:35:58 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2021-01-02 01:36:30 +0100 <Squarism> I'd need that language extension thingy for that ? CAnt recall its name
2021-01-02 01:36:49 +0100 <glguy> What is "direct access to the constructor"?
2021-01-02 01:37:05 +0100 <Squarism> wishful thinking?
2021-01-02 01:37:29 +0100 <dmwit> But like, if your wishes came true, what would the world look like?
2021-01-02 01:37:33 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f)
2021-01-02 01:38:31 +0100 <Squarism> I mean if constructor Boo has field "baz" I cannot do : case someVal of ; capt @ Boo {} -> baz capt
2021-01-02 01:38:49 +0100 <dmwit> Sure, you can do that.
2021-01-02 01:39:33 +0100 <dmwit> It will probably even get optimized into a single pattern match instead of the two that the naive compilation would do.
2021-01-02 01:40:00 +0100 <monochrom> Yes.
2021-01-02 01:40:03 +0100t3xp4t(~texinwien@213162073014.public.t-mobile.at) (Remote host closed the connection)
2021-01-02 01:40:31 +0100t3xp4t(~texinwien@213162073014.public.t-mobile.at)
2021-01-02 01:40:41 +0100 <dmwit> If someVal is just a variable you don't even need the @ pattern. `case someVal of Boo{} -> baz someVal`.
2021-01-02 01:41:07 +0100alx741(~alx741@186.178.110.198) (Ping timeout: 260 seconds)
2021-01-02 01:41:15 +0100 <monochrom> https://mail.haskell.org/pipermail/haskell-cafe/2013-April/107775.html
2021-01-02 01:41:17 +0100 <Squarism> hmm, need to look at my code again
2021-01-02 01:41:17 +0100kam1(~kam1@24.231.108.143)
2021-01-02 01:41:38 +0100 <monochrom> It is the easier half of stream fusion in text and vector.
2021-01-02 01:42:25 +0100 <dmwit> lmao ghc 2gud
2021-01-02 01:44:25 +0100zaquest(~notzaques@5.128.210.178) (Quit: Leaving)
2021-01-02 01:44:47 +0100Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2021-01-02 01:45:34 +0100t3xp4t(~texinwien@213162073014.public.t-mobile.at) (Ping timeout: 272 seconds)
2021-01-02 01:45:54 +0100zaquest(~notzaques@5.128.210.178)
2021-01-02 01:48:41 +0100jacks2(~bc815220@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout))
2021-01-02 01:49:21 +0100t3xp4t(~texinwien@213162073014.public.t-mobile.at)
2021-01-02 01:50:56 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2021-01-02 01:53:25 +0100dfeuer(~dfeuer@pool-108-18-223-60.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
2021-01-02 01:54:51 +0100alx741(~alx741@181.196.69.173)
2021-01-02 01:58:50 +0100knupfer(~Thunderbi@200116b82c90ff001c8dbffffefdf880.dip.versatel-1u1.de)
2021-01-02 01:59:32 +0100knupfer(~Thunderbi@200116b82c90ff001c8dbffffefdf880.dip.versatel-1u1.de) (Remote host closed the connection)
2021-01-02 01:59:45 +0100knupfer(~Thunderbi@200116b82c90ff008ddd7d0fb380906e.dip.versatel-1u1.de)
2021-01-02 02:01:32 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-02 02:01:55 +0100matryoshka(~matryoshk@184.75.223.227)
2021-01-02 02:03:24 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-01-02 02:03:31 +0100matryoshka`(~matryoshk@184.75.223.227)
2021-01-02 02:03:42 +0100matryoshka(~matryoshk@184.75.223.227) (Remote host closed the connection)
2021-01-02 02:03:53 +0100Feuermagier(~Feuermagi@213.178.26.41) (Remote host closed the connection)
2021-01-02 02:04:32 +0100spopejoy(~stuart@ool-44c5f8c9.dyn.optonline.net)
2021-01-02 02:05:11 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya) (Remote host closed the connection)
2021-01-02 02:07:17 +0100knupfer(~Thunderbi@200116b82c90ff008ddd7d0fb380906e.dip.versatel-1u1.de) (Quit: knupfer)
2021-01-02 02:07:29 +0100knupfer(~Thunderbi@200116b82c90ff008ddd7d0fb380906e.dip.versatel-1u1.de)
2021-01-02 02:07:59 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya)
2021-01-02 02:08:25 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2021-01-02 02:09:38 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit)
2021-01-02 02:09:53 +0100matryoshka`(~matryoshk@184.75.223.227) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-02 02:10:13 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2021-01-02 02:10:36 +0100dfeuer(~dfeuer@pool-108-18-223-60.washdc.fios.verizon.net)
2021-01-02 02:11:02 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-02 02:13:25 +0100Rudd0(~Rudd0@185.189.115.103) (Ping timeout: 264 seconds)
2021-01-02 02:14:27 +0100Ishutin(~Ishutin@80-95-69-205.pool.digikabel.hu)
2021-01-02 02:14:37 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 264 seconds)
2021-01-02 02:14:52 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Client Quit)
2021-01-02 02:15:01 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) ()
2021-01-02 02:15:12 +0100matryoshka(~matryoshk@184.75.223.227)
2021-01-02 02:17:17 +0100matryoshka(~matryoshk@184.75.223.227) (Client Quit)
2021-01-02 02:17:35 +0100matryoshka(~matryoshk@184.75.223.227)
2021-01-02 02:19:05 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-02 02:19:11 +0100usr25(~usr25@unaffiliated/usr25) (Read error: Connection reset by peer)
2021-01-02 02:19:12 +0100matryoshka(~matryoshk@184.75.223.227) (Client Quit)
2021-01-02 02:19:35 +0100matryoshka(~matryoshk@184.75.223.227)
2021-01-02 02:20:50 +0100matryoshka(~matryoshk@184.75.223.227) (Read error: Connection reset by peer)
2021-01-02 02:21:00 +0100b5er(~b5er_@91.193.4.138)
2021-01-02 02:21:04 +0100matryoshka(~matryoshk@184.75.223.227)
2021-01-02 02:21:53 +0100b4er(~b5er_@91.193.4.138) (Read error: Connection reset by peer)
2021-01-02 02:22:27 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:143:c475:d20e:3db4:7e5b)
2021-01-02 02:22:40 +0100b5er(~b5er_@91.193.4.138) (Client Quit)
2021-01-02 02:22:45 +0100matryoshka`(~matryoshk@184.75.223.227)
2021-01-02 02:22:49 +0100matryoshka(~matryoshk@184.75.223.227) (Client Quit)
2021-01-02 02:23:18 +0100b4er(~b4er@91.193.4.138)
2021-01-02 02:23:42 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2021-01-02 02:23:54 +0100 <phaazon> anyone used to pandoc?
2021-01-02 02:24:01 +0100 <phaazon> https://github.com/jgm/pandoc/blob/master/src/Text/Pandoc/Readers/Org/Inlines.hs#L25
2021-01-02 02:24:15 +0100matryoshka`(~matryoshk@184.75.223.227) (Read error: Connection reset by peer)
2021-01-02 02:24:16 +0100 <phaazon> I can’t find the module imported from here (Text.Pandoc.Builder)
2021-01-02 02:24:19 +0100 <phaazon> what kind of magic is this again :D
2021-01-02 02:24:38 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2021-01-02 02:25:03 +0100knupfer(~Thunderbi@200116b82c90ff008ddd7d0fb380906e.dip.versatel-1u1.de) (Quit: knupfer)
2021-01-02 02:25:11 +0100knupfer(~Thunderbi@200116b82c90ff00dd065b5b3de4f5c0.dip.versatel-1u1.de)
2021-01-02 02:25:52 +0100 <phaazon> http://hackage.haskell.org/package/pandoc-types-1.22/docs/Text-Pandoc-Builder.html nevermind, it was defined here…
2021-01-02 02:25:54 +0100Tario(~Tario@201.192.165.173)
2021-01-02 02:26:08 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:143:c475:d20e:3db4:7e5b) (Client Quit)
2021-01-02 02:26:09 +0100dansho(~dansho@ec2-18-179-39-119.ap-northeast-1.compute.amazonaws.com)
2021-01-02 02:26:19 +0100 <yushyin> hoogle can be helpful!
2021-01-02 02:26:37 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 260 seconds)
2021-01-02 02:26:48 +0100 <phaazon> yeah currently my editor’s LSP is a bit in holidays
2021-01-02 02:26:51 +0100 <phaazon> I need to fix that :D
2021-01-02 02:27:03 +0100 <phaazon> I think I’ll make a PR to pandoc tomorrow
2021-01-02 02:27:25 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Client Quit)
2021-01-02 02:27:45 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2021-01-02 02:28:27 +0100ces1(~ces@fsf/member/ces)
2021-01-02 02:29:26 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Read error: Connection reset by peer)
2021-01-02 02:29:30 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-02 02:30:32 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2021-01-02 02:31:02 +0100jedws(~jedws@121.209.189.201)
2021-01-02 02:31:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-02 02:33:58 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-02 02:34:24 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds)
2021-01-02 02:34:40 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-02 02:36:13 +0100columbarius(~columbari@mue-88-130-54-094.dsl.tropolys.de) (Ping timeout: 264 seconds)
2021-01-02 02:36:40 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-01-02 02:38:21 +0100columbarius(~columbari@87.123.198.45)
2021-01-02 02:39:00 +0100wei2912(~wei2912@unaffiliated/wei2912)
2021-01-02 02:42:45 +0100knupfer1(~Thunderbi@87.123.206.117)
2021-01-02 02:42:48 +0100Jeanne-Kamikaze(~Jeanne-Ka@static-198-54-134-148.cust.tzulo.com)
2021-01-02 02:43:38 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2021-01-02 02:44:25 +0100GuerrillaMonkey(~Jeanne-Ka@86.106.143.186)
2021-01-02 02:44:54 +0100knupfer(~Thunderbi@200116b82c90ff00dd065b5b3de4f5c0.dip.versatel-1u1.de) (Ping timeout: 268 seconds)
2021-01-02 02:44:54 +0100knupfer1knupfer
2021-01-02 02:45:38 +0100FreeBirdLjj(~freebirdl@101.87.175.26)
2021-01-02 02:47:45 +0100dfeuer(~dfeuer@pool-108-18-223-60.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
2021-01-02 02:48:16 +0100Jeanne-Kamikaze(~Jeanne-Ka@static-198-54-134-148.cust.tzulo.com) (Ping timeout: 240 seconds)
2021-01-02 02:49:22 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:507e:67a8:8e33:6ee2)
2021-01-02 02:49:52 +0100FreeBirdLjj(~freebirdl@101.87.175.26) (Ping timeout: 256 seconds)
2021-01-02 02:50:10 +0100Jeanne-Kamikaze(~Jeanne-Ka@static-198-54-134-100.cust.tzulo.com)
2021-01-02 02:51:43 +0100Ariakenom(~Ariakenom@2001:9b1:efb:fc00:5c08:7b47:1b0:b77) (Quit: Leaving)
2021-01-02 02:51:51 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:507e:67a8:8e33:6ee2) (Client Quit)
2021-01-02 02:52:25 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 264 seconds)
2021-01-02 02:52:42 +0100GuerrillaMonkey(~Jeanne-Ka@86.106.143.186) (Ping timeout: 256 seconds)
2021-01-02 02:53:04 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2021-01-02 02:53:36 +0100knupfer(~Thunderbi@87.123.206.117) (Ping timeout: 240 seconds)
2021-01-02 02:53:49 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:cde2:1e79:768c:58ea)
2021-01-02 02:56:59 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-02 02:57:27 +0100ces1(~ces@fsf/member/ces) (Quit: WeeChat 3.0)
2021-01-02 02:59:04 +0100argento(~argent0@168.227.96.51)
2021-01-02 02:59:45 +0100kam1(~kam1@24.231.108.143)
2021-01-02 03:01:37 +0100 <halbGefressen> dmwit: I did it! My solution is probably in O(yes), but idc, it works and all automated tests pass!
2021-01-02 03:02:37 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 264 seconds)
2021-01-02 03:02:37 +0100 <dsal> Is O(yes) like O(MG)?
2021-01-02 03:03:15 +0100 <halbGefressen> yes
2021-01-02 03:03:45 +0100 <ephemient> there's 2^n partitions to return; as long as you're O(2^n) overall it seems reasonable?
2021-01-02 03:03:56 +0100 <halbGefressen> alright, for a list with 3 elements, there are 30 possibilities. For 4 elements, it's already 336 and for 5 it's 5040.
2021-01-02 03:05:14 +0100 <halbGefressen> it would be much easier if I would just have to find out the number of distinct trees, but I guess that would be too trivial since it is an easy problem of combinatorics
2021-01-02 03:05:23 +0100dansho(~dansho@ec2-18-179-39-119.ap-northeast-1.compute.amazonaws.com) (Quit: Leaving)
2021-01-02 03:05:47 +0100dansho(~dansho@ec2-18-179-39-119.ap-northeast-1.compute.amazonaws.com)
2021-01-02 03:05:56 +0100MrMuffles[m](mrmufflesm@gateway/shell/matrix.org/x-xyejpsqzvzaqmmkc)
2021-01-02 03:06:47 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2021-01-02 03:06:47 +0100 <halbGefressen> The only exercise left is the enumeration of all possible surjective functions from finite sets a to b. but I guess I'll just go to sleep now.
2021-01-02 03:08:19 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-02 03:08:33 +0100argentohave you tried list's monad instance?
2021-01-02 03:08:44 +0100dandart(~Thunderbi@home.dandart.co.uk) (Remote host closed the connection)
2021-01-02 03:09:00 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-02 03:10:06 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-02 03:13:34 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 260 seconds)
2021-01-02 03:14:36 +0100cwj1(~cwj@s91904426.blix.com) (Remote host closed the connection)
2021-01-02 03:15:46 +0100t3xp4t(~texinwien@213162073014.public.t-mobile.at) (Remote host closed the connection)
2021-01-02 03:16:46 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f) (Remote host closed the connection)
2021-01-02 03:17:48 +0100frankdmartinez(~frankdmar@5.181.234.188) (Quit: frankdmartinez)
2021-01-02 03:18:11 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2021-01-02 03:19:32 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-02 03:20:44 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f)
2021-01-02 03:22:02 +0100frankdmartinez(~frankdmar@5.181.234.188)
2021-01-02 03:22:59 +0100pjb(~t@2a01cb04063ec5007877dab9a3fb2e14.ipv6.abo.wanadoo.fr) (Ping timeout: 272 seconds)
2021-01-02 03:23:44 +0100kam1(~kam1@24.231.108.143)
2021-01-02 03:26:06 +0100jb55(~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection)
2021-01-02 03:26:28 +0100jb55(~jb55@gateway/tor-sasl/jb55)
2021-01-02 03:26:54 +0100Entertainment(~entertain@104.246.132.210) (Ping timeout: 272 seconds)
2021-01-02 03:32:04 +0100 <b4er> What is an efficient representation of something like STLC? De Bruijn is nice for alpha-equivalence I guess but it doesn't help with "free variable checks" does it?
2021-01-02 03:33:33 +0100Tops21(~Tobias@dyndsl-095-033-090-103.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2021-01-02 03:33:37 +0100 <b4er> If I have `Lambda (Lambda (App 3 (App 0 1)))` then I have 3 as a fee variable and 0,1 bound. But if I want to query for 3 being free, I still need to walk the structure hmm
2021-01-02 03:34:21 +0100 <b4er> Would it be sound to use smart-constructors and carry the depth of Lambdas at each Lambda?
2021-01-02 03:34:59 +0100 <b4er> So I'd have `Lambda 2 (Lambda 1 ...)` and then if I ask with 3, I just check (3>2)?
2021-01-02 03:35:25 +0100 <b4er> Ah, but then `App` etc. need that stuff too
2021-01-02 03:36:26 +0100sgibber2018(~arch-gibb@2600:6c55:6d80:3243:c2cb:38ff:fe8d:b46f)
2021-01-02 03:37:18 +0100 <koz_> b4er: Check out 'bound'.
2021-01-02 03:37:28 +0100 <b4er> In hackage?
2021-01-02 03:37:53 +0100 <koz_> Yes.
2021-01-02 03:38:00 +0100 <b4er> * We represent the target language itself as an ideal monad supplied by the user, and provide a Scope monad transformer for introducing bound variables in user supplied terms.
2021-01-02 03:38:16 +0100 <b4er> Sounds good I'll check that out, ty!
2021-01-02 03:38:22 +0100halbGefressen(~halbGefre@2a02:810d:f40:2a9c:a4fe:2adc:248b:466f) (Quit: halbGefressen)
2021-01-02 03:38:51 +0100 <b4er> The first slide in that presentation though...
2021-01-02 03:39:03 +0100nhs_(~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
2021-01-02 03:40:41 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-01-02 03:41:28 +0100halbGefressen(~halbGefre@ipbcc14379.dynamic.kabel-deutschland.de)
2021-01-02 03:41:32 +0100dansho(~dansho@ec2-18-179-39-119.ap-northeast-1.compute.amazonaws.com) (Quit: Leaving)
2021-01-02 03:42:33 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2021-01-02 03:44:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-01-02 03:47:18 +0100halbGefressen(~halbGefre@ipbcc14379.dynamic.kabel-deutschland.de) (Quit: halbGefressen)
2021-01-02 03:47:42 +0100xff0x_(~fox@2001:1a81:53cd:600:4280:8eb:d6d7:f299) (Ping timeout: 260 seconds)
2021-01-02 03:48:42 +0100plutoniix(~q@184.82.206.66)
2021-01-02 03:49:23 +0100xff0x_(~fox@2001:1a81:5204:2a00:adb6:cba:f871:aaef)
2021-01-02 03:50:30 +0100jmchael(~jmchael@81.174.205.210) (Ping timeout: 256 seconds)
2021-01-02 03:50:37 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 260 seconds)
2021-01-02 03:54:03 +0100CoolMa7(~ColMa7@2a02:8109:9d40:14ea:9c11:93da:85f4:5b67) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-02 03:55:13 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-02 03:55:17 +0100sgibber2018(~arch-gibb@2600:6c55:6d80:3243:c2cb:38ff:fe8d:b46f) (Ping timeout: 272 seconds)
2021-01-02 03:55:36 +0100lawid(~quassel@dslb-178-005-075-009.178.005.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
2021-01-02 03:55:44 +0100lawid(~quassel@dslb-090-186-035-082.090.186.pools.vodafone-ip.de)
2021-01-02 03:55:59 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-02 03:56:43 +0100Varis(~Tadas@unaffiliated/varis)
2021-01-02 03:58:16 +0100quinn(~quinn@c-73-223-224-163.hsd1.ca.comcast.net)
2021-01-02 04:00:14 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-02 04:01:07 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2021-01-02 04:04:47 +0100Varis(~Tadas@unaffiliated/varis) (Read error: Connection reset by peer)
2021-01-02 04:05:52 +0100Varis(~Tadas@unaffiliated/varis)
2021-01-02 04:08:16 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 240 seconds)
2021-01-02 04:09:23 +0100xirhtogal(~lagothrix@unaffiliated/lagothrix)
2021-01-02 04:09:23 +0100lagothrixGuest23977
2021-01-02 04:09:23 +0100xirhtogallagothrix
2021-01-02 04:11:52 +0100Varis(~Tadas@unaffiliated/varis) (Read error: Connection reset by peer)
2021-01-02 04:12:11 +0100kam1(~kam1@24.231.108.143)
2021-01-02 04:12:29 +0100Guest23977(~lagothrix@unaffiliated/lagothrix) (Ping timeout: 260 seconds)
2021-01-02 04:12:56 +0100Varis(~Tadas@unaffiliated/varis)
2021-01-02 04:13:20 +0100 <koz_> b4er: Lol.
2021-01-02 04:13:35 +0100 <koz_> The title of the presentation is literally 'how to make de Bruijn succ less'.
2021-01-02 04:13:44 +0100petersen(~petersen@redhat/juhp)
2021-01-02 04:13:51 +0100 <koz_> And there are multiple references to something 'succing a lot', etc.
2021-01-02 04:16:06 +0100frankdmartinez(~frankdmar@5.181.234.188) (Quit: frankdmartinez)
2021-01-02 04:16:25 +0100Varis(~Tadas@unaffiliated/varis) (Read error: Connection reset by peer)
2021-01-02 04:16:56 +0100Varis(~Tadas@unaffiliated/varis)
2021-01-02 04:18:23 +0100drbean(~drbean@TC210-63-209-163.static.apol.com.tw)
2021-01-02 04:19:33 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-02 04:22:41 +0100carthia(~carthia@gateway/tor-sasl/carthia) (Quit: carthia)
2021-01-02 04:24:27 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-02 04:24:48 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2021-01-02 04:25:10 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-01-02 04:26:19 +0100jedws(~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-02 04:29:07 +0100petersen(~petersen@redhat/juhp) (Ping timeout: 260 seconds)
2021-01-02 04:30:12 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-02 04:30:33 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2021-01-02 04:31:04 +0100Tario(~Tario@201.192.165.173)
2021-01-02 04:31:27 +0100dandart(~Thunderbi@home.dandart.co.uk) (Ping timeout: 260 seconds)
2021-01-02 04:32:32 +0100frankdmartinez(~frankdmar@5.181.234.188)
2021-01-02 04:33:54 +0100petersen(~petersen@redhat/juhp)
2021-01-02 04:34:38 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:143:c475:d20e:3db4:7e5b)
2021-01-02 04:35:23 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-02 04:36:23 +0100denisse_(~spaceCat@gateway/tor-sasl/alephzer0) (Ping timeout: 240 seconds)
2021-01-02 04:36:23 +0100hexo(~hexo@gateway/tor-sasl/hexo) (Ping timeout: 240 seconds)
2021-01-02 04:37:05 +0100denisse(~spaceCat@gateway/tor-sasl/alephzer0)
2021-01-02 04:37:08 +0100justsomeguy(~justsomeg@216.186.218.241)
2021-01-02 04:37:08 +0100justsomeguy(~justsomeg@216.186.218.241) (Changing host)
2021-01-02 04:37:08 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2021-01-02 04:37:23 +0100srk(~sorki@gateway/tor-sasl/sorki) (Ping timeout: 240 seconds)
2021-01-02 04:37:25 +0100xelxebar_(~xelxebar@gateway/tor-sasl/xelxebar) (Quit: ZNC 1.7.2+deb3 - https://znc.in)
2021-01-02 04:37:37 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar)
2021-01-02 04:37:49 +0100solonarv(~solonarv@astrasbourg-653-1-252-231.w92-161.abo.wanadoo.fr) (Ping timeout: 246 seconds)
2021-01-02 04:37:52 +0100 <monochrom> Yes, "data N = Z | S N" succs a lot.
2021-01-02 04:38:15 +0100hexo(~hexo@gateway/tor-sasl/hexo)
2021-01-02 04:38:23 +0100Varis(~Tadas@unaffiliated/varis) (Read error: Connection reset by peer)
2021-01-02 04:38:33 +0100srk(~sorki@gateway/tor-sasl/sorki)
2021-01-02 04:38:43 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex) (Ping timeout: 240 seconds)
2021-01-02 04:38:58 +0100Varis(~Tadas@unaffiliated/varis)
2021-01-02 04:39:23 +0100andreas303(~andreas@gateway/tor-sasl/andreas303) (Ping timeout: 240 seconds)
2021-01-02 04:40:13 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f) (Remote host closed the connection)
2021-01-02 04:40:26 +0100jedws(~jedws@121.209.189.201)
2021-01-02 04:40:48 +0100laen_(~laen_@195.140.213.38)
2021-01-02 04:42:14 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex)
2021-01-02 04:42:23 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f)
2021-01-02 04:44:37 +0100Varis(~Tadas@unaffiliated/varis) (Quit: Leaving)
2021-01-02 04:48:29 +0100 <spopejoy> "I am not a number, I am a free monad!"
2021-01-02 04:48:44 +0100 <spopejoy> https://hackage.haskell.org/package/bound-2.0.2/docs/Bound-Var.html
2021-01-02 04:48:55 +0100andreas303(~andreas@gateway/tor-sasl/andreas303)
2021-01-02 04:48:59 +0100GuerrillaMonkey(~Jeanne-Ka@86.106.143.10)
2021-01-02 04:49:04 +0100codeAlways(uid272474@gateway/web/irccloud.com/x-wmlqjaxzgcivyywk) (Quit: Connection closed for inactivity)
2021-01-02 04:50:06 +0100 <b4er> The code from Bird & Paterson was what cracked me up the most
2021-01-02 04:50:21 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:cde2:1e79:768c:58ea) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-02 04:51:17 +0100theDon(~td@muedsl-82-207-238-228.citykom.de) (Ping timeout: 260 seconds)
2021-01-02 04:52:16 +0100 <b4er> spopejoy, it's a play on "I am not a Number—I am a Free Variable"
2021-01-02 04:52:31 +0100Jeanne-Kamikaze(~Jeanne-Ka@static-198-54-134-100.cust.tzulo.com) (Ping timeout: 246 seconds)
2021-01-02 04:52:59 +0100 <spopejoy> which originates from ... Elephant Man?
2021-01-02 04:53:08 +0100theDon(~td@muedsl-82-207-238-216.citykom.de)
2021-01-02 04:53:42 +0100Jeanne-Kamikaze(~Jeanne-Ka@static-198-54-134-132.cust.tzulo.com)
2021-01-02 04:56:16 +0100GuerrillaMonkey(~Jeanne-Ka@86.106.143.10) (Ping timeout: 240 seconds)
2021-01-02 04:57:13 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 264 seconds)
2021-01-02 04:58:23 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-02 04:58:29 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-uagwkmdlrotoupds) ()
2021-01-02 04:58:46 +0100jb55(~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection)
2021-01-02 04:59:14 +0100jb55(~jb55@gateway/tor-sasl/jb55)
2021-01-02 04:59:45 +0100 <nshepperd> it's from _The Prisoner_ iirc
2021-01-02 04:59:57 +0100GuerrillaMonkey(~Jeanne-Ka@static-198-54-134-164.cust.tzulo.com)
2021-01-02 05:00:52 +0100jb55(~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection)
2021-01-02 05:01:19 +0100 <nshepperd> so
2021-01-02 05:01:21 +0100jb55(~jb55@gateway/tor-sasl/jb55)
2021-01-02 05:02:01 +0100petersen(~petersen@redhat/juhp) (Ping timeout: 264 seconds)
2021-01-02 05:02:08 +0100 <spopejoy> lol I was thinking of "I am not an animal, I am a human being" but it's def the Prisoner
2021-01-02 05:03:32 +0100Jeanne-Kamikaze(~Jeanne-Ka@static-198-54-134-132.cust.tzulo.com) (Ping timeout: 260 seconds)
2021-01-02 05:03:39 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:cde2:1e79:768c:58ea)
2021-01-02 05:05:07 +0100Anthaas(~Anthaas@unaffiliated/anthaas) (Ping timeout: 246 seconds)
2021-01-02 05:05:16 +0100Rudd0(~Rudd0@185.189.115.103)
2021-01-02 05:06:13 +0100Anthaas(~Anthaas@unaffiliated/anthaas)
2021-01-02 05:13:26 +0100cheater(~user@unaffiliated/cheater)
2021-01-02 05:16:55 +0100Eelis(~Eelis@unaffiliated/eelis)
2021-01-02 05:17:00 +0100jb55(~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection)
2021-01-02 05:17:23 +0100jb55(~jb55@gateway/tor-sasl/jb55)
2021-01-02 05:17:26 +0100GuerrillaMonkey(~Jeanne-Ka@static-198-54-134-164.cust.tzulo.com) (Quit: Leaving)
2021-01-02 05:17:35 +0100Jeanne-Kamikaze(~Jeanne-Ka@static-198-54-134-164.cust.tzulo.com)
2021-01-02 05:17:44 +0100 <Eelis> is there a nicer way (perhaps using some extension) to write case () of { _ | pred1 -> res1 | pred2 -> res2 | pred3 -> res3 | otherwise -> res4 } ?
2021-01-02 05:18:56 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
2021-01-02 05:20:38 +0100 <Eelis> ah i found MultiWayIf, nvm
2021-01-02 05:21:43 +0100zebrag(~inkbottle@aaubervilliers-654-1-73-208.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-02 05:21:55 +0100christo(~chris@81.96.113.213)
2021-01-02 05:22:29 +0100zebrag(~inkbottle@aaubervilliers-654-1-73-208.w86-212.abo.wanadoo.fr)
2021-01-02 05:25:26 +0100jb55(~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection)
2021-01-02 05:25:52 +0100jb55(~jb55@gateway/tor-sasl/jb55)
2021-01-02 05:29:22 +0100zebrag(~inkbottle@aaubervilliers-654-1-73-208.w86-212.abo.wanadoo.fr) (Remote host closed the connection)
2021-01-02 05:30:41 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-01-02 05:32:59 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-01-02 05:34:09 +0100zebrag(~inkbottle@aaubervilliers-654-1-73-208.w86-212.abo.wanadoo.fr)
2021-01-02 05:39:11 +0100 <jle`> Eelis: -XMultiWayIf
2021-01-02 05:42:14 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:143:c475:d20e:3db4:7e5b) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-02 05:42:43 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
2021-01-02 05:43:29 +0100cads(~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 260 seconds)
2021-01-02 05:45:51 +0100kderme(2eb0d7c7@ppp046176215199.access.hol.gr) (Remote host closed the connection)
2021-01-02 05:46:18 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-02 05:48:56 +0100Jeanne-Kamikaze(~Jeanne-Ka@static-198-54-134-164.cust.tzulo.com) (Quit: Leaving)
2021-01-02 05:50:11 +0100frankdmartinez(~frankdmar@5.181.234.188) (Quit: frankdmartinez)
2021-01-02 05:50:55 +0100ransom(~c4264035@8.47.12.52)
2021-01-02 05:52:07 +0100 <c_wraith> I find that almost any time I'd want to use multiway if, I can just use guards on a non-function local binding...
2021-01-02 05:52:47 +0100frankdmartinez(~frankdmar@5.181.234.188)
2021-01-02 05:55:20 +0100 <ephemient> > let x | False = 0 | otherwise = 1 in x
2021-01-02 05:55:23 +0100 <lambdabot> 1
2021-01-02 05:55:37 +0100zebrag(~inkbottle@aaubervilliers-654-1-73-208.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-02 05:55:53 +0100ransom(~c4264035@8.47.12.52) (Read error: Connection reset by peer)
2021-01-02 05:56:14 +0100zebrag(~inkbottle@aaubervilliers-654-1-73-208.w86-212.abo.wanadoo.fr)
2021-01-02 05:56:55 +0100ransom(~c4264035@2a09:bac0:72::82f:c34)
2021-01-02 05:59:43 +0100dandart(~Thunderbi@home.dandart.co.uk) (Quit: dandart)
2021-01-02 06:02:13 +0100argento(~argent0@168.227.96.51) (Remote host closed the connection)
2021-01-02 06:03:57 +0100zebrag(~inkbottle@aaubervilliers-654-1-73-208.w86-212.abo.wanadoo.fr) (Remote host closed the connection)
2021-01-02 06:04:22 +0100jb55(~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection)
2021-01-02 06:04:47 +0100jb55(~jb55@gateway/tor-sasl/jb55)
2021-01-02 06:04:55 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) ()
2021-01-02 06:05:55 +0100frankdmartinez(~frankdmar@5.181.234.188) (Quit: frankdmartinez)
2021-01-02 06:06:13 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-02 06:06:46 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-02 06:08:04 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-01-02 06:08:21 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-01-02 06:09:16 +0100dandart(~Thunderbi@home.dandart.co.uk) (Remote host closed the connection)
2021-01-02 06:09:35 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-02 06:10:53 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2021-01-02 06:12:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-01-02 06:15:16 +0100frankdmartinez(~frankdmar@5.181.234.188)
2021-01-02 06:16:24 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-02 06:16:37 +0100jamm(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2021-01-02 06:19:05 +0100rekahsoft(~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 240 seconds)
2021-01-02 06:19:43 +0100notzmv(~user@unaffiliated/zmv) (Remote host closed the connection)
2021-01-02 06:19:52 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:143:c475:d20e:3db4:7e5b)
2021-01-02 06:20:21 +0100CMCDragonkai1(~Thunderbi@120.17.23.213)
2021-01-02 06:20:51 +0100notzmv(~user@unaffiliated/zmv)
2021-01-02 06:24:44 +0100notzmv(~user@unaffiliated/zmv) (Remote host closed the connection)
2021-01-02 06:25:13 +0100frankdmartinez(~frankdmar@5.181.234.188) (Quit: frankdmartinez)
2021-01-02 06:25:36 +0100notzmv(~user@unaffiliated/zmv)
2021-01-02 06:25:38 +0100CMCDragonkai1(~Thunderbi@120.17.23.213) (Remote host closed the connection)
2021-01-02 06:25:43 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-02 06:26:17 +0100hiroaki(~hiroaki@2a02:908:4b18:8c40::ee4f) (Ping timeout: 268 seconds)
2021-01-02 06:26:27 +0100frankdmartinez(~frankdmar@5.181.234.188)
2021-01-02 06:26:27 +0100frankdmartinez(~frankdmar@5.181.234.188) (Remote host closed the connection)
2021-01-02 06:26:35 +0100Tario(~Tario@201.192.165.173)
2021-01-02 06:27:20 +0100frankdmartinez(~frankdmar@5.181.234.188)
2021-01-02 06:28:02 +0100notzmv(~user@unaffiliated/zmv) (Remote host closed the connection)
2021-01-02 06:29:22 +0100notzmv(~user@unaffiliated/zmv)
2021-01-02 06:29:41 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-01-02 06:37:17 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-02 06:38:34 +0100hiroaki(~hiroaki@2a02:908:4b18:8c40::1d01)
2021-01-02 06:42:07 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
2021-01-02 06:43:53 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-02 06:44:04 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-02 06:48:22 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:25e9:81:81d6:bd54) (Remote host closed the connection)
2021-01-02 06:49:56 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-01-02 06:50:12 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 272 seconds)
2021-01-02 06:55:27 +0100laen_(~laen_@195.140.213.38) (Remote host closed the connection)
2021-01-02 06:58:14 +0100kam1(~kam1@24.231.108.143)
2021-01-02 07:01:22 +0100pacak(~pacak@bb116-14-220-91.singnet.com.sg) (Remote host closed the connection)
2021-01-02 07:03:00 +0100pacak(~pacak@bb116-14-220-91.singnet.com.sg)
2021-01-02 07:04:34 +0100frankdmartinez(~frankdmar@5.181.234.188) (Ping timeout: 260 seconds)
2021-01-02 07:06:13 +0100dandart(~Thunderbi@home.dandart.co.uk) (Ping timeout: 246 seconds)
2021-01-02 07:09:36 +0100bitmagie(~Thunderbi@200116b80642150055a14958a21bc79e.dip.versatel-1u1.de)
2021-01-02 07:10:27 +0100Saukk(~Saukk@83-148-239-3.dynamic.lounea.fi)
2021-01-02 07:18:28 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-01-02 07:19:05 +0100ransom(~c4264035@2a09:bac0:72::82f:c34) (Quit: Textual IRC Client: www.textualapp.com)
2021-01-02 07:19:16 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2021-01-02 07:26:01 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Read error: Connection reset by peer)
2021-01-02 07:27:50 +0100amueller(~amueller@185.103.96.147)
2021-01-02 07:31:42 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 260 seconds)
2021-01-02 07:36:56 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:b1ad:809d:33ad:d747)
2021-01-02 07:39:53 +0100urodna(~urodna@unaffiliated/urodna) (Quit: urodna)
2021-01-02 07:41:37 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:b1ad:809d:33ad:d747) (Ping timeout: 260 seconds)
2021-01-02 07:46:10 +0100gioyik_(~gioyik@179.32.228.107)
2021-01-02 07:48:37 +0100gioyik(~gioyik@179.32.228.107) (Ping timeout: 260 seconds)
2021-01-02 07:51:31 +0100 <VarikValefor[m]> PROTIP: When in a bind, use `>>=`.
2021-01-02 07:54:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-02 07:59:41 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-01-02 08:09:55 +0100wei2912(~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
2021-01-02 08:11:06 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:143:c475:d20e:3db4:7e5b) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-02 08:12:37 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:143:c475:d20e:3db4:7e5b)
2021-01-02 08:13:00 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:143:c475:d20e:3db4:7e5b) (Client Quit)
2021-01-02 08:13:35 +0100 <koz_> VarikValefor[m]: PROTIP: If you're lost, just `return`.
2021-01-02 08:15:43 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:b1ad:809d:33ad:d747)
2021-01-02 08:23:27 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2021-01-02 08:24:04 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2021-01-02 08:24:13 +0100christo(~chris@81.96.113.213)
2021-01-02 08:24:54 +0100kupi(uid212005@gateway/web/irccloud.com/x-pwwljkdtgciejnte) (Quit: Connection closed for inactivity)
2021-01-02 08:25:24 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-02 08:26:10 +0100bitmagie(~Thunderbi@200116b80642150055a14958a21bc79e.dip.versatel-1u1.de) (Quit: bitmagie)
2021-01-02 08:28:28 +0100christo(~chris@81.96.113.213) (Ping timeout: 246 seconds)
2021-01-02 08:29:57 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-02 08:30:02 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds)
2021-01-02 08:31:13 +0100chambln(~user@2.31.230.114)
2021-01-02 08:33:22 +0100b4er(~b4er@91.193.4.138) (Ping timeout: 246 seconds)
2021-01-02 08:36:29 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-01-02 08:41:06 +0100zangi(~azure@36.79.200.71) (Read error: Connection reset by peer)
2021-01-02 08:41:27 +0100zangi(~azure@103.154.230.250)
2021-01-02 08:46:47 +0100rmk236(~lcampos@ip-37-201-211-236.hsi13.unitymediagroup.de)
2021-01-02 08:51:18 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:b1ad:809d:33ad:d747) (Ping timeout: 260 seconds)
2021-01-02 08:51:19 +0100rmk236(~lcampos@ip-37-201-211-236.hsi13.unitymediagroup.de) (Ping timeout: 260 seconds)
2021-01-02 08:51:47 +0100rmk236(~lcampos@2a02:908:3616:b100:5d3c:3ea2:9142:e850)
2021-01-02 08:52:37 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:cde2:1e79:768c:58ea) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-02 08:58:46 +0100tomku(~tomku@unaffiliated/tomku) (Ping timeout: 272 seconds)
2021-01-02 09:04:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-01-02 09:06:27 +0100tomku(~tomku@unaffiliated/tomku)
2021-01-02 09:10:55 +0100tomku(~tomku@unaffiliated/tomku) (Client Quit)
2021-01-02 09:12:13 +0100tomku(~tomku@unaffiliated/tomku)
2021-01-02 09:15:29 +0100jrm(~jrm@freebsd/developer/jrm) (Quit: ciao)
2021-01-02 09:15:54 +0100jrm(~jrm@freebsd/developer/jrm)
2021-01-02 09:20:11 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-02 09:22:28 +0100Saukk(~Saukk@83-148-239-3.dynamic.lounea.fi) (Remote host closed the connection)
2021-01-02 09:25:22 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
2021-01-02 09:33:02 +0100bitmagie(~Thunderbi@200116b80642150055a14958a21bc79e.dip.versatel-1u1.de)
2021-01-02 09:34:14 +0100andreas303(~andreas@gateway/tor-sasl/andreas303) (Quit: andreas303)
2021-01-02 09:37:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-02 09:38:26 +0100bitmagie(~Thunderbi@200116b80642150055a14958a21bc79e.dip.versatel-1u1.de) (Quit: bitmagie)
2021-01-02 09:39:12 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net)
2021-01-02 09:40:10 +0100 <idnar> @pl \f -> f a b c
2021-01-02 09:40:10 +0100 <lambdabot> flip (flip ($ a) b) c
2021-01-02 09:42:27 +0100amueller(~amueller@185.103.96.147) (Remote host closed the connection)
2021-01-02 09:42:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-01-02 09:43:37 +0100rmk236(~lcampos@2a02:908:3616:b100:5d3c:3ea2:9142:e850) (Ping timeout: 272 seconds)
2021-01-02 09:45:25 +0100andreas303(~andreas@gateway/tor-sasl/andreas303)
2021-01-02 09:49:06 +0100christo(~chris@81.96.113.213)
2021-01-02 10:00:10 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-02 10:05:16 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2021-01-02 10:16:38 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-01-02 10:16:45 +0100drbean(~drbean@TC210-63-209-163.static.apol.com.tw) (Ping timeout: 240 seconds)
2021-01-02 10:18:46 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
2021-01-02 10:20:55 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-02 10:24:36 +0100Franciman(~francesco@host-95-250-152-231.retail.telecomitalia.it)
2021-01-02 10:26:01 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2021-01-02 10:31:06 +0100andreas303(~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection)
2021-01-02 10:33:33 +0100aenesidemus_(~aenesidem@c-73-53-247-25.hsd1.fl.comcast.net)
2021-01-02 10:34:59 +0100andreas303(~andreas@gateway/tor-sasl/andreas303)
2021-01-02 10:35:16 +0100chambln(~user@2.31.230.114) (Ping timeout: 240 seconds)
2021-01-02 10:36:49 +0100aenesidemus(~aenesidem@c-73-53-247-25.hsd1.fl.comcast.net) (Ping timeout: 264 seconds)
2021-01-02 10:37:08 +0100Anthaas(~Anthaas@unaffiliated/anthaas) (Ping timeout: 256 seconds)
2021-01-02 10:38:11 +0100Anthaas(~Anthaas@unaffiliated/anthaas)
2021-01-02 10:40:57 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-01-02 10:43:43 +0100larsan1(~larsan@217.146.82.202)
2021-01-02 10:44:30 +0100 <gentauro> @:t fix
2021-01-02 10:44:30 +0100 <lambdabot> Maybe you meant: wn v rc pl let id do bf @ ? .
2021-01-02 10:44:41 +0100 <gentauro> @:t Data.Function.fix
2021-01-02 10:44:41 +0100 <lambdabot> Maybe you meant: wn v rc pl let id do bf @ ? .
2021-01-02 10:46:12 +0100 <gentauro> lambdabot: nope
2021-01-02 10:48:06 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2021-01-02 10:50:02 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-02 10:51:33 +0100 <xerox_> gentauro: either @ or :
2021-01-02 10:54:32 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 268 seconds)
2021-01-02 10:57:50 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-bphofpilzzzitilm) (Quit: Connection closed for inactivity)
2021-01-02 10:59:16 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 240 seconds)
2021-01-02 11:01:07 +0100perdent(~perdent@101.175.79.103)
2021-01-02 11:02:37 +0100 <ski> @type fix
2021-01-02 11:02:39 +0100 <lambdabot> (a -> a) -> a
2021-01-02 11:03:51 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-01-02 11:11:45 +0100kritzefitz(~kritzefit@212.86.56.80)
2021-01-02 11:12:20 +0100olligobber(~olligobbe@unaffiliated/olligobber)
2021-01-02 11:18:43 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2021-01-02 11:24:44 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:b1ad:809d:33ad:d747)
2021-01-02 11:29:07 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:b1ad:809d:33ad:d747) (Ping timeout: 260 seconds)
2021-01-02 11:33:48 +0100rmk236(~lcampos@2a02:908:3616:b100:5d3c:3ea2:9142:e850)
2021-01-02 11:37:47 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya) (Remote host closed the connection)
2021-01-02 11:39:02 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-02 11:40:29 +0100bartholin(~bartholin@unaffiliated/bartholin)
2021-01-02 11:40:32 +0100 <bartholin> guys
2021-01-02 11:40:40 +0100 <bartholin> how do I install sdl
2021-01-02 11:41:14 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f) (Remote host closed the connection)
2021-01-02 11:41:25 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya)
2021-01-02 11:42:15 +0100 <xerox_> bartholin: depends on what system you're running
2021-01-02 11:42:23 +0100 <bartholin> xerox_: linux
2021-01-02 11:42:32 +0100 <xerox_> which flavor of linux
2021-01-02 11:42:53 +0100 <bartholin> archlinux
2021-01-02 11:43:08 +0100 <bartholin> xerox_: I have tried cabal install --lib sdl2, but I get https://p.teknik.io/ThSub
2021-01-02 11:44:02 +0100 <xerox_> archlinux has got its own package manager I think it's called pacman through which you can get libsdl2 on your system
2021-01-02 11:44:12 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:143:c475:d20e:3db4:7e5b)
2021-01-02 11:44:32 +0100 <bartholin> xerox_: but what about the haskell module
2021-01-02 11:44:38 +0100 <xerox_> hmm
2021-01-02 11:50:23 +0100vicfred(vicfred@gateway/vpn/mullvad/vicfred) (Quit: Leaving)
2021-01-02 11:51:33 +0100pjb(~t@2a01cb04063ec500d400c5fa56f501d7.ipv6.abo.wanadoo.fr)
2021-01-02 11:51:40 +0100plutoniix(~q@184.82.206.66) (Ping timeout: 272 seconds)
2021-01-02 11:55:11 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-01-02 11:55:52 +0100 <xerox_> bartholin: if I make a new empty project with cabal init and add sdl2 to the build-deps it does seem to work correctly for me https://i.imgur.com/lCVZzaw.png
2021-01-02 11:56:37 +0100tsrt^(tsrt@ip98-184-89-2.mc.at.cox.net) (Ping timeout: 264 seconds)
2021-01-02 11:57:25 +0100tsrt^(~hph@ip98-184-89-2.mc.at.cox.net)
2021-01-02 11:58:04 +0100 <bartholin> xerox_: I have cabal 3.2
2021-01-02 11:58:13 +0100 <xerox_> I think I got 3.4
2021-01-02 11:58:27 +0100 <xerox_> yes ✔✔ cabal 3.4.0.0-rc4
2021-01-02 11:58:39 +0100 <xerox_> (using ghcup to manage ghc, cabal & friends)
2021-01-02 11:59:12 +0100 <xerox_> I'm on 8.10.2 tho I should try .3 and see if things break, that's the version you're on
2021-01-02 11:59:16 +0100 <bartholin> xerox_: what is the point of .cabal files
2021-01-02 11:59:16 +0100Ishutin(~Ishutin@80-95-69-205.pool.digikabel.hu) (Ping timeout: 240 seconds)
2021-01-02 11:59:43 +0100 <xerox_> bartholin: it's how you make haskell packages, just like the sdl2 one
2021-01-02 11:59:49 +0100fendor(~fendor@77.119.129.8.wireless.dyn.drei.com)
2021-01-02 11:59:56 +0100 <xerox_> they can be either binaries or libraries (or both, or multiple of each, etc)
2021-01-02 12:00:15 +0100olban(~olban@213.152.161.20)
2021-01-02 12:01:24 +0100olban(~olban@213.152.161.20) (Remote host closed the connection)
2021-01-02 12:02:15 +0100Ishutin(~Ishutin@80-95-69-205.pool.digikabel.hu)
2021-01-02 12:03:11 +0100 <xerox_> old cabal install would put stuff in the global (to your user) registry of packages but recent ones (backed by v2-* commands) do the build of all the dependencies in place, right there in the "dist-newstyle" directory of the package
2021-01-02 12:03:56 +0100 <xerox_> then you use cabal build, cabal run, cabal ghci, etc to interact with your code and its dependencies
2021-01-02 12:04:13 +0100plutoniix(~q@ppp-223-24-93-108.revip6.asianet.co.th)
2021-01-02 12:04:23 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya) (Ping timeout: 240 seconds)
2021-01-02 12:06:03 +0100kyali(~kyali@APN-123-252-106-gprs.simobil.net)
2021-01-02 12:06:57 +0100Ariakenom(~Ariakenom@2001:9b1:efb:fc00:ad76:8f15:d0f4:d04e)
2021-01-02 12:09:19 +0100sunrise_(~sunrise_@51.194.80.91) (Ping timeout: 246 seconds)
2021-01-02 12:10:42 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net) (Read error: Connection reset by peer)
2021-01-02 12:10:54 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya)
2021-01-02 12:12:26 +0100madjestic(~Android@89-200-4-179.mobile.kpn.net)
2021-01-02 12:13:10 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-01-02 12:13:15 +0100 <bartholin> xerox_: comonad doesn't compile, because of tagged
2021-01-02 12:13:48 +0100 <xerox_> bartholin: ah we do have a difference, I'm on 8.10.2 not .3
2021-01-02 12:14:10 +0100 <xerox_> I'll try switching to that and see
2021-01-02 12:14:24 +0100 <bartholin> I have the error Could not find module ‘Data.Tagged’
2021-01-02 12:15:46 +0100p-core(~Thunderbi@koleje-wifi-0045.koleje.cuni.cz) (Quit: p-core)
2021-01-02 12:15:49 +0100 <bartholin> but if I do import Data.Tagged in ghci, it werks
2021-01-02 12:16:03 +0100p-core(~Thunderbi@koleje-wifi-0045.koleje.cuni.cz)
2021-01-02 12:17:26 +0100jneira(501e6579@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.101.121) (Ping timeout: 264 seconds)
2021-01-02 12:18:46 +0100 <xerox_> bartholin: it works for me, builds and installs (locally to the test package I made) comonad-5.0.8
2021-01-02 12:19:04 +0100 <xerox_> there might be something funny going on with your setup
2021-01-02 12:20:07 +0100 <bartholin> xerox_: I have erased my ~/.cabal and ~/.ghc folders multiple times
2021-01-02 12:20:29 +0100ADG1089__(~aditya@223.235.213.117)
2021-01-02 12:21:08 +0100 <bartholin> and ghc-pkg check gives me nothing but lots of warning lines such as Warning: haddock-interfaces: /usr/share/doc/haskell-haddock-library/html/haddock-library.haddock doesn't exist or isn't a file
2021-01-02 12:21:18 +0100 <xerox_> bartholin: I think if you use ghcup and get ghc and cabal 3.4 installed through it, then make an empty project with cabal init and add sdl2 to the build deps, then you should remove a lot of guessing from the problem
2021-01-02 12:21:53 +0100 <xerox_> it might even just work, if libsdl2 is installed, just as it did for me
2021-01-02 12:21:55 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:143:c475:d20e:3db4:7e5b) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-02 12:24:38 +0100rmk236(~lcampos@2a02:908:3616:b100:5d3c:3ea2:9142:e850) (Quit: Leaving.)
2021-01-02 12:24:51 +0100 <xerox_> bartholin: https://pastebin.com/raw/mD8LVS0f
2021-01-02 12:26:05 +0100 <xerox_> bartholin: and these are the tools via ghcup: https://pastebin.com/raw/4ysC8FZ3
2021-01-02 12:28:25 +0100kyali(~kyali@APN-123-252-106-gprs.simobil.net) (Ping timeout: 240 seconds)
2021-01-02 12:32:45 +0100v_m_v(~vm_v@2a02:aa12:3200:6480:5db7:7326:4789:d9fc)
2021-01-02 12:32:46 +0100madjestic(~Android@89-200-4-179.mobile.kpn.net) (Read error: Connection reset by peer)
2021-01-02 12:35:56 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net)
2021-01-02 12:37:34 +0100 <bartholin> xerox_: I don't understand https://p.teknik.io/r5LId
2021-01-02 12:38:13 +0100 <xerox_> bartholin: ghcup installs everything under ~/.ghcup and then lets you pick what you want to use
2021-01-02 12:38:46 +0100 <xerox_> bartholin: you installed the "recommended" version, see "ghcup list"
2021-01-02 12:39:09 +0100 <xerox_> you want to ghcup install ghc 8.10.3 and then ghcup set ghc 8.10.3 to install and use the lastest
2021-01-02 12:39:12 +0100spopejoy(~stuart@ool-44c5f8c9.dyn.optonline.net) (Ping timeout: 256 seconds)
2021-01-02 12:39:38 +0100spopejoy(~stuart@ool-44c5f8c9.dyn.optonline.net)
2021-01-02 12:39:46 +0100 <xerox_> then do the same with cabal 3.4.0.0-rc4
2021-01-02 12:40:12 +0100 <xerox_> when a tool is 'set', its binaries are brought into $PATH so you can run them
2021-01-02 12:40:18 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-02 12:40:19 +0100 <bartholin> xerox_: I have ✓ ghc 8.10.3 latest,base-4.14.1.0
2021-01-02 12:40:25 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net) (Ping timeout: 240 seconds)
2021-01-02 12:40:30 +0100 <xerox_> the single tick means it's installed, but not set
2021-01-02 12:40:41 +0100 <bartholin> oh ok
2021-01-02 12:40:58 +0100 <xerox_> e.g. I have ✓ ghc 8.10.2 and then ✔✔ ghc 8.10.3
2021-01-02 12:41:30 +0100madjestic(~Android@89-200-4-179.mobile.kpn.net)
2021-01-02 12:41:46 +0100 <xerox_> you can also ghcup uninstall ghc 8.8.4 to not waste that space
2021-01-02 12:42:03 +0100 <xerox_> sorry, 'rm' not uninstall
2021-01-02 12:42:08 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f)
2021-01-02 12:43:26 +0100 <maerwald> xerox_: you can also use `ghcup tui` to do those things interactively
2021-01-02 12:43:26 +0100madjestic(~Android@89-200-4-179.mobile.kpn.net) (Read error: Connection reset by peer)
2021-01-02 12:43:39 +0100 <xerox_> forgot about that (:
2021-01-02 12:45:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-01-02 12:45:38 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net)
2021-01-02 12:45:40 +0100kyali(~kyali@APN-123-252-106-gprs.simobil.net)
2021-01-02 12:48:02 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f) (Ping timeout: 264 seconds)
2021-01-02 12:48:17 +0100 <bartholin> xerox_: it works now
2021-01-02 12:48:34 +0100 <bartholin> \o/
2021-01-02 12:50:16 +0100 <bartholin> xerox_: wait, where is the executable now
2021-01-02 12:50:37 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca)
2021-01-02 12:50:53 +0100plutoniix(~q@ppp-223-24-93-108.revip6.asianet.co.th) (Quit: Leaving)
2021-01-02 12:52:03 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca) (Client Quit)
2021-01-02 12:52:28 +0100 <xerox_> bartholin: you run it through cabal run
2021-01-02 12:52:43 +0100 <xerox_> and you get to ghci thrugh cabal repl
2021-01-02 12:53:01 +0100 <bartholin> ok
2021-01-02 12:53:03 +0100 <bartholin> thanks
2021-01-02 12:53:10 +0100 <xerox_> the cabal commands set everything up to use the locally built dependencies and binaries
2021-01-02 12:53:14 +0100 <xerox_> np (:
2021-01-02 12:53:24 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 260 seconds)
2021-01-02 12:55:00 +0100jchia1(~jchia@45.32.62.73)
2021-01-02 12:56:01 +0100jchia1(~jchia@45.32.62.73) (Remote host closed the connection)
2021-01-02 12:56:19 +0100kyali(~kyali@APN-123-252-106-gprs.simobil.net) (Ping timeout: 260 seconds)
2021-01-02 12:56:30 +0100lambda(~xiretza@mail.xiretza.xyz) (Quit: WeeChat 3.0)
2021-01-02 12:56:36 +0100jchia(~jchia@58.32.71.163) (Ping timeout: 256 seconds)
2021-01-02 12:57:06 +0100jchia(~jchia@58.32.37.71)
2021-01-02 12:57:35 +0100 <phaazon> hm, is there a way with cabal to override a dependency by specifying a git repository, or a path? I’m currently trying to make a change to a dependency and I need to test it
2021-01-02 12:57:52 +0100lambda(~xiretza@mail.xiretza.xyz)
2021-01-02 12:58:00 +0100Varis(~Tadas@unaffiliated/varis)
2021-01-02 12:58:14 +0100 <phaazon> maybe in the cabal.project file, which I have never used :D
2021-01-02 12:58:58 +0100 <phaazon> I fear I’ll have to override all the dependencies my dependency uses too, because I’m basically editing a transitive package of my dep :/
2021-01-02 13:01:52 +0100__monty__(~toonn@unaffiliated/toonn)
2021-01-02 13:02:43 +0100 <xerox_> phaazon: exactly
2021-01-02 13:02:57 +0100 <phaazon> well actually not a transitive dep
2021-01-02 13:03:07 +0100 <phaazon> my website depends on pandoc, and I have a small fix on it
2021-01-02 13:03:13 +0100 <phaazon> so I should be fine just depending on my git fork
2021-01-02 13:07:35 +0100v_m_v(~vm_v@2a02:aa12:3200:6480:5db7:7326:4789:d9fc) (Remote host closed the connection)
2021-01-02 13:07:53 +0100v_m_v(~vm_v@2a02:aa12:3200:6480:5db7:7326:4789:d9fc)
2021-01-02 13:09:11 +0100jedws(~jedws@121.209.189.201) (Remote host closed the connection)
2021-01-02 13:09:51 +0100jedws(~jedws@121.209.189.201)
2021-01-02 13:10:32 +0100ADG1089__(~aditya@223.235.213.117) (Remote host closed the connection)
2021-01-02 13:12:38 +0100v_m_v(~vm_v@2a02:aa12:3200:6480:5db7:7326:4789:d9fc) (Ping timeout: 264 seconds)
2021-01-02 13:12:41 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2021-01-02 13:14:01 +0100ADG1089__(~aditya@223.235.213.117)
2021-01-02 13:15:58 +0100v_m_v(~vm_v@2a02:aa12:3200:6480:5db7:7326:4789:d9fc)
2021-01-02 13:16:01 +0100Feuermagier(~Feuermagi@213.178.26.41)
2021-01-02 13:17:37 +0100ADG1089__(~aditya@223.235.213.117) (Remote host closed the connection)
2021-01-02 13:18:44 +0100ADG1089__(~aditya@223.235.213.117)
2021-01-02 13:19:23 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-02 13:21:32 +0100jedws(~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-02 13:23:43 +0100jneira(5127ac9c@gateway/web/cgi-irc/kiwiirc.com/ip.81.39.172.156)
2021-01-02 13:23:54 +0100ADG1089__(~aditya@223.235.213.117) (Remote host closed the connection)
2021-01-02 13:25:09 +0100ADG1089__(~aditya@223.235.213.117)
2021-01-02 13:26:19 +0100jedws(~jedws@121.209.189.201)
2021-01-02 13:27:17 +0100 <phaazon> xerox_: hm, looks like that’s not really the way to go
2021-01-02 13:27:31 +0100 <phaazon> it doesn’t look like cabal is using the git repository, but install it still picks the dep from hackage
2021-01-02 13:27:35 +0100 <xerox_> phaazon: I did that in the past, stuck a line in the project file to use my own git fork
2021-01-02 13:27:45 +0100 <xerox_> I forget the syntax I always have to copy it from somewhere else
2021-01-02 13:27:59 +0100 <phaazon> https://cabal.readthedocs.io/en/3.4/cabal-project.html#specifying-packages-from-remote-version-con… I mean I just did that
2021-01-02 13:28:09 +0100 <phaazon> but maybe there’s something to do to tell cabal to update its cache?
2021-01-02 13:28:16 +0100 <phaazon> I tried removing the already generated .project.local file
2021-01-02 13:28:20 +0100 <phaazon> didn’t change it
2021-01-02 13:28:56 +0100 <xerox_> :(
2021-01-02 13:30:23 +0100ADG1089__(~aditya@223.235.213.117) (Remote host closed the connection)
2021-01-02 13:30:49 +0100 <xerox_> yeah that's what I'd done too: https://pastebin.com/raw/bdNakMFb
2021-01-02 13:30:50 +0100ADG1089__(~aditya@223.235.213.117)
2021-01-02 13:31:05 +0100 <xerox_> so that it finds the packages in that subdir
2021-01-02 13:32:57 +0100 <phaazon> ah, that’s not what I’m doing
2021-01-02 13:33:00 +0100 <phaazon> I’ll try that way, thanks
2021-01-02 13:33:04 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2021-01-02 13:33:04 +0100 <phaazon> did you change your .cabal file?
2021-01-02 13:33:53 +0100 <xerox_> no
2021-01-02 13:35:12 +0100 <phaazon> I’m still using the hackage version…
2021-01-02 13:35:21 +0100 <xerox_> meep.
2021-01-02 13:35:38 +0100 <phaazon> how did you reconfigure your build?
2021-01-02 13:35:41 +0100 <phaazon> cabal configure --reinstall?
2021-01-02 13:35:45 +0100Entertainment(~entertain@104.246.132.210)
2021-01-02 13:35:49 +0100 <xerox_> I forget >_<
2021-01-02 13:36:05 +0100 <xerox_> but I think I just kept on running cabal build after deleting dist-newstyle nothing else
2021-01-02 13:37:06 +0100jedws(~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-02 13:38:17 +0100 <phaazon> yep, well, it doesn’t work on my side
2021-01-02 13:38:47 +0100usr25(~usr25@unaffiliated/usr25)
2021-01-02 13:39:08 +0100 <__monty__> Maybe install has different behavior?
2021-01-02 13:40:18 +0100Guest87408(~textual@2603-7000-3040-0000-05ee-0552-d472-c8f7.res6.spectrum.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-02 13:40:45 +0100 <phaazon> how do people do this kind of things most of the time?
2021-01-02 13:41:03 +0100safinaskar(6dfc5ba3@109-252-91-163.nat.spd-mgts.ru)
2021-01-02 13:41:17 +0100jedws(~jedws@121.209.189.201)
2021-01-02 13:41:26 +0100 <phaazon> in Rust, it’s super simple: you simply add a [patch] / [override] section in your config.toml to override the dependency everywhere in the build tree
2021-01-02 13:42:45 +0100ADG1089__(~aditya@223.235.213.117) (Remote host closed the connection)
2021-01-02 13:42:50 +0100 <xerox_> that's what I *thought* this project file thing did
2021-01-02 13:43:02 +0100geekosaur(ac3a8b8b@172.58.139.139)
2021-01-02 13:43:03 +0100 <phaazon> well it seems it’s made for that
2021-01-02 13:43:11 +0100ADG1089__(~aditya@223.235.213.117)
2021-01-02 13:43:17 +0100 <phaazon> but clearly it’s either not working properly, or the documentation misses something
2021-01-02 13:43:37 +0100 <phaazon> I tried lots of things: removing the dist-newstyle, cabal install --only-dependencies --reinstall --force-reinstalls
2021-01-02 13:43:42 +0100 <phaazon> lots of other similar command
2021-01-02 13:43:50 +0100 <phaazon> I still build pandoc from hackage and not from my fork
2021-01-02 13:44:29 +0100 <xerox_> do you depend directly on it or is it a dep of a dep
2021-01-02 13:44:50 +0100 <phaazon> direct dep
2021-01-02 13:45:20 +0100 <phaazon> https://github.com/phaazon/phaazon.net/blob/master/phaazon-net.cabal#L36
2021-01-02 13:46:10 +0100 <xerox_> is it building something in that range or could it be building a dep of a dep that asks for a different one? I'm out of ideas
2021-01-02 13:46:35 +0100 <phaazon> it doesn’t do anything
2021-01-02 13:46:51 +0100 <phaazon> it just rebuild my app without seeing any change about the deps
2021-01-02 13:47:02 +0100tsrt^(~hph@ip98-184-89-2.mc.at.cox.net) ()
2021-01-02 13:47:09 +0100 <phaazon> I just added the packages: pkg-overrides/pandoc
2021-01-02 13:47:15 +0100 <xerox_> even if you don't have a dist-newstyle and ask it to build?
2021-01-02 13:47:17 +0100 <phaazon> and sym-linked pkg-overrides/pandoc to my ~/dev/pandoc
2021-01-02 13:47:21 +0100 <phaazon> yep
2021-01-02 13:47:34 +0100 <phaazon> it uses the globally installed pandoc, looks like
2021-01-02 13:47:41 +0100 <xerox_> hide it >:)
2021-01-02 13:48:10 +0100 <phaazon> I don’t even know where it is
2021-01-02 13:48:12 +0100vs^(vs@ip98-184-89-2.mc.at.cox.net)
2021-01-02 13:48:39 +0100ADG1089__(~aditya@223.235.213.117) (Remote host closed the connection)
2021-01-02 13:48:44 +0100 <xerox_> ghc-pkg --help
2021-01-02 13:49:16 +0100pavonia(~user@unaffiliated/siracusa) (Quit: Bye!)
2021-01-02 13:49:44 +0100 <phaazon> I updated ghc
2021-01-02 13:49:52 +0100 <phaazon> cabal configure --reinstall now shows me lots of things
2021-01-02 13:50:04 +0100 <xerox_> love things!
2021-01-02 13:50:05 +0100 <phaazon> and I see pandoc, but it looks like there’s nothing indicating it’s from my pkg-overrides
2021-01-02 13:50:10 +0100 <phaazon> - pandoc-2.11.3.2 (exe:pandoc) (requires build)
2021-01-02 13:50:29 +0100 <sm[m]> maybe cabal exec -- ghc-pkg list is helpful
2021-01-02 13:50:35 +0100Saukk(~Saukk@83-148-239-3.dynamic.lounea.fi)
2021-01-02 13:50:37 +0100jedws(~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-02 13:51:25 +0100 <phaazon> /home/phaazon/.ghcup/ghc/8.8.4/lib/ghc-8.8.4/package.conf.d
2021-01-02 13:53:54 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-01-02 13:53:58 +0100 <safinaskar> how to do reversible parsing? not necessary in Haskell. i already searched Haskage and found some packages, but none of them guarantee reversible parsing. (I. e. you can easily fool this libraries.) There is project http://augeas.net/ for C language. It actually guarantee reversible parsing unlike hackage libs. But augeas doesn't handle arbitrary
2021-01-02 13:53:58 +0100 <safinaskar> context-free grammars. So, it seems, augeas will be unable to parse, say, Pascal. There is very good project for reversible parsing any language into xml https://www.brics.dk/xsugar.html . but it is in java (i interested in c, c++ and haskell). are there other solutions?
2021-01-02 13:55:15 +0100kyali(~kyali@APN-123-252-106-gprs.simobil.net)
2021-01-02 13:56:36 +0100Eelis(~Eelis@unaffiliated/eelis) ()
2021-01-02 13:56:52 +0100Entertainment(~entertain@104.246.132.210) ()
2021-01-02 13:57:41 +0100Entertainment(~entertain@104.246.132.210)
2021-01-02 13:58:03 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
2021-01-02 13:58:07 +0100kam1(~kam1@24.231.108.143)
2021-01-02 14:00:49 +0100ADG1089__(~aditya@223.235.213.117)
2021-01-02 14:05:45 +0100b4er(~b4er@91.193.4.138)
2021-01-02 14:06:25 +0100Rey(uid478328@gateway/web/irccloud.com/x-iriinvqvnkeykojw)
2021-01-02 14:06:43 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
2021-01-02 14:08:39 +0100jedws(~jedws@121.209.189.201)
2021-01-02 14:09:32 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2021-01-02 14:09:49 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 264 seconds)
2021-01-02 14:10:08 +0100ADG1089__(~aditya@223.235.213.117) (Remote host closed the connection)
2021-01-02 14:11:33 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
2021-01-02 14:11:57 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
2021-01-02 14:12:55 +0100 <Kronic> If I have a string is there a method I'm not seeing to convert it to a member of Data.Word ? http://hackage.haskell.org/package/base-4.14.1.0/docs/src/GHC.Word.html#Word64 ?
2021-01-02 14:13:16 +0100 <Clint> a string of what?
2021-01-02 14:13:38 +0100 <Kronic> A string representation of a word - I guess I can just read it as one right?
2021-01-02 14:14:05 +0100 <Clint> using Read is one way
2021-01-02 14:14:45 +0100 <Kronic> Ah, yes, I should learn to use :i more - I was reading the source and it uses all of those weird macro looking things so it was hard for me to see that
2021-01-02 14:15:26 +0100ADG1089__(~aditya@223.235.213.117)
2021-01-02 14:15:27 +0100 <[exa]> macro-looking things?
2021-01-02 14:16:00 +0100 <Kronic> data {-# CTYPE "HsWord8" #-} Word8 = W8# Word#
2021-01-02 14:16:06 +0100 <Kronic> For example, not sure how to read that
2021-01-02 14:18:41 +0100 <[exa]> yeah that's compiler-specific annotations and primitive types, not really interesting
2021-01-02 14:19:12 +0100 <[exa]> the {-#....#-} is a special comment used for compiler pragmas, and the types with # are just "special" in some way that I don't remember
2021-01-02 14:19:24 +0100 <geekosaur> unboxed
2021-01-02 14:19:53 +0100 <[exa]> oh thanks
2021-01-02 14:20:07 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-02 14:20:29 +0100 <[exa]> Kronic: to your original question, how would you convert a String (which is a list of characters) to Word64 (which is a fixed-size integer)?
2021-01-02 14:21:12 +0100 <[exa]> more precisely, what should it do with a string like "fooooooooo" ?
2021-01-02 14:22:10 +0100son0p(~son0p@181.136.122.143)
2021-01-02 14:22:20 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-01-02 14:22:48 +0100 <Kronic> I'm using it in a parser, so it's something that will fail some of the time
2021-01-02 14:22:58 +0100 <Kronic> So, no worries on that note. I have what I need now anyway
2021-01-02 14:23:10 +0100 <Kronic> I was just a little lost inside that haskell file, never seen much of the stuff in there before
2021-01-02 14:23:48 +0100 <geekosaur> you don't care about it, it's internal implementation details
2021-01-02 14:24:13 +0100ezzieyguywuf(~Unknown@unaffiliated/ezzieyguywuf) (Ping timeout: 264 seconds)
2021-01-02 14:24:32 +0100kyali(~kyali@APN-123-252-106-gprs.simobil.net) (Quit: leaving)
2021-01-02 14:24:56 +0100kyali(~kyali@APN-123-252-106-gprs.simobil.net)
2021-01-02 14:25:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-01-02 14:25:23 +0100 <[exa]> Kronic: ooh you wanted to parse it, I got confused by the "convert" :]
2021-01-02 14:25:24 +0100 <Rey> Huh
2021-01-02 14:25:34 +0100Franciman(~francesco@host-95-250-152-231.retail.telecomitalia.it) (Quit: Leaving)
2021-01-02 14:26:33 +0100 <Kronic> Yea, I should really be more specific in future, sorry [exa]
2021-01-02 14:27:59 +0100ADG1089__(~aditya@223.235.213.117) (Remote host closed the connection)
2021-01-02 14:28:27 +0100ADG1089__(~aditya@223.235.213.117)
2021-01-02 14:28:33 +0100Rey(uid478328@gateway/web/irccloud.com/x-iriinvqvnkeykojw) (Quit: Updating details, brb)
2021-01-02 14:28:48 +0100Goldio(uid478328@gateway/web/irccloud.com/x-qxzjoosyubzfyxzm)
2021-01-02 14:30:26 +0100kyali(~kyali@APN-123-252-106-gprs.simobil.net) (Quit: leaving)
2021-01-02 14:30:28 +0100b4er(~b4er@91.193.4.138) (Remote host closed the connection)
2021-01-02 14:30:32 +0100larsan1(~larsan@217.146.82.202) (Remote host closed the connection)
2021-01-02 14:34:04 +0100jedws(~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-02 14:34:53 +0100 <itai33[m]> how does one load extra modules from within `cabal repl`?
2021-01-02 14:35:06 +0100 <itai33[m]> if i try `:l Foo.hs` then it replaces the loaded stuff
2021-01-02 14:35:46 +0100Seran1(~Seran@178.162.204.214)
2021-01-02 14:36:49 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection)
2021-01-02 14:38:16 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2021-01-02 14:38:24 +0100Tops2(~Tobias@dyndsl-095-033-022-018.ewe-ip-backbone.de)
2021-01-02 14:39:17 +0100b4er(~b4er@91.193.4.138)
2021-01-02 14:41:15 +0100Entertainment(~entertain@104.246.132.210) ()
2021-01-02 14:41:26 +0100Entertainment(~entertain@104.246.132.210)
2021-01-02 14:43:18 +0100b4er(~b4er@91.193.4.138) (Client Quit)
2021-01-02 14:43:31 +0100b4er(~b4er@91.193.4.138)
2021-01-02 14:43:34 +0100 <Kronic> I've never used cabal repl but I do use ghci, and in ghci it's :m <module name>
2021-01-02 14:44:26 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f)
2021-01-02 14:45:03 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:143:c475:d20e:3db4:7e5b)
2021-01-02 14:45:08 +0100 <Uniaika> itai33[m]: yes, it is indeed unfortuante. Do you wish to "load" them, or merely import them?
2021-01-02 14:45:15 +0100 <Uniaika> *unfortunate
2021-01-02 14:45:28 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:b1ad:809d:33ad:d747)
2021-01-02 14:46:24 +0100 <itai33[m]> Uniaika: I'm not sure what the difference is. My specific usecase is that i want to manually run some of the tests in a library to understand them better, so i need to do `cabal repl` and then also load some of the helper functions defined in `test/Foo.hs`
2021-01-02 14:47:14 +0100 <Uniaika> 'cabal repl' will load (compile+import in your repl) the modules of a Cabal project
2021-01-02 14:47:27 +0100 <Uniaika> might even import them in the current scope
2021-01-02 14:47:30 +0100 <itai33[m]> right but it doesn't load the test modules
2021-01-02 14:47:52 +0100Alleria(~textual@mskresolve-a.mskcc.org)
2021-01-02 14:47:54 +0100 <itai33[m]> unless i do `cabal repl test` and then it doesn't load the regular modules
2021-01-02 14:48:16 +0100AlleriaGuest84404
2021-01-02 14:48:26 +0100jmchael(~jmchael@81.174.205.210)
2021-01-02 14:49:12 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f) (Ping timeout: 260 seconds)
2021-01-02 14:49:16 +0100ADG1089__(~aditya@223.235.213.117) (Quit: Konversation terminated!)
2021-01-02 14:51:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-02 14:53:18 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2021-01-02 14:56:06 +0100Entertainment(~entertain@104.246.132.210) (Ping timeout: 256 seconds)
2021-01-02 14:58:16 +0100 <Uniaika> itai33[m]: Indeed, that's a problem. You can work around that by re-exporting the library modules from your test suite
2021-01-02 14:58:49 +0100 <tomsmeding> itai33[m]: ghci can only load one package at the foreground at a time
2021-01-02 14:59:14 +0100 <tomsmeding> you can't have modules from a library and a test suite, which are two different packages from ghc's perspective, in ghci at the same time
2021-01-02 14:59:39 +0100 <tomsmeding> at least, if that is possible, I would very much like to know how :p
2021-01-02 14:59:41 +0100sunrise(~sunrise@51.194.80.91)
2021-01-02 15:02:00 +0100 <itai33[m]> Uniaika: when you say re-export, do you mean copy paste them into e.g. `src/` and use the functions from there, or is there a better way to do that?
2021-01-02 15:03:09 +0100 <Uniaika> itai33[m]: have your testsuite depend on your library (which you normally do, if you're testing the lib :P), and then in your testsuite's Main module
2021-01-02 15:03:13 +0100 <Uniaika> import MyLib
2021-01-02 15:03:21 +0100 <Uniaika> and have 'module MyLib' in its export list
2021-01-02 15:04:17 +0100 <itai33[m]> i see
2021-01-02 15:04:45 +0100 <itai33[m]> thanks Uniaika and tomsmeding
2021-01-02 15:05:00 +0100 <Uniaika> thank me when you've fixed your problem :P
2021-01-02 15:08:36 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2021-01-02 15:11:04 +0100 <sm[m]> g'day all, happy 2021
2021-01-02 15:11:26 +0100 <sm[m]> has anyone got a quick trick for seeing changes to exports in git commit(s) ?
2021-01-02 15:12:27 +0100 <Uniaika> sm[m]: curse you, I'm trying you regexes as we speak :(
2021-01-02 15:12:32 +0100 <Uniaika> *trying out
2021-01-02 15:12:34 +0100 <Uniaika> grr
2021-01-02 15:12:36 +0100 <Uniaika> bad fingers
2021-01-02 15:15:43 +0100 <sm[m]> thanks Uniaika . git diff master..thebranch | grep :: shows promise
2021-01-02 15:16:15 +0100 <sm[m]> to see api changes, which is really what I mean
2021-01-02 15:16:44 +0100 <sm[m]> I mean, I'd like to be able to see both of these things
2021-01-02 15:18:07 +0100 <sm[m]> hmm, but exports changes would be better. I mostly declare exports and there are lots of changes to internal helpers which I don't care about
2021-01-02 15:20:39 +0100 <tomsmeding> sm[m]: git diff -U10000 | sed '/LANGUAGE/d; /^diff/,/where$/!d'
2021-01-02 15:20:59 +0100 <tomsmeding> hacks abound though
2021-01-02 15:21:22 +0100 <tomsmeding> also assumes that your export list doesn't contain a comment including the word 'where' :D
2021-01-02 15:22:22 +0100 <tomsmeding> also happy 2021!
2021-01-02 15:22:56 +0100 <Uniaika> happy 2021 tomsmeding and sm[m] :)
2021-01-02 15:24:05 +0100jrqc(~rofl@96.78.87.197) (Read error: Connection reset by peer)
2021-01-02 15:24:31 +0100 <juri_> bah, humbug. :)
2021-01-02 15:25:47 +0100halbGefressen(~halbGefre@2a02:810d:f40:2a9c:a4fe:2adc:248b:466f)
2021-01-02 15:26:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-01-02 15:27:55 +0100 <halbGefressen> Let's say I have two finite lists xs :: [a] and ys :: [b], each with distinct elements. How would I create a list of all surjective functions a -> b from those two lists?
2021-01-02 15:28:19 +0100Lycurgus(~niemand@cpe-45-46-139-165.buffalo.res.rr.com)
2021-01-02 15:29:42 +0100Saukk(~Saukk@83-148-239-3.dynamic.lounea.fi) (Remote host closed the connection)
2021-01-02 15:33:39 +0100 <sm[m]> oh.. and of course, changes in exports list doesn't show changes of type signature. I need both additiona/removals/renames, and type changes
2021-01-02 15:33:51 +0100 <sm[m]> I guess this isn't going to be a quick text job
2021-01-02 15:34:08 +0100frankdmartinez(~frankdmar@138.199.52.27)
2021-01-02 15:36:19 +0100 <__monty__> halbGefressen: Something like zip the shorter list with all the combinations of 1 to minLength of the other list?
2021-01-02 15:38:26 +0100 <halbGefressen> sounds good, I'll try that
2021-01-02 15:38:32 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2021-01-02 15:39:04 +0100 <__monty__> halbGefressen: I do wonder what you need those for though?
2021-01-02 15:39:47 +0100 <halbGefressen> It's a uni homework, bonus exercise. I already have the coin for that sheet, but I need my sweet little 100% flex
2021-01-02 15:39:58 +0100 <halbGefressen> and also I want to know the solution haha
2021-01-02 15:40:18 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-01-02 15:40:32 +0100 <__monty__> Ah, darn. Should've realised this sounds like homework.
2021-01-02 15:42:55 +0100geekosaur(ac3a8b8b@172.58.139.139) (Remote host closed the connection)
2021-01-02 15:43:32 +0100worc3131(~quassel@2a02:c7f:dcc4:6500:cf0e:3346:8766:ab20)
2021-01-02 15:45:08 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f)
2021-01-02 15:46:17 +0100halbGefressen(~halbGefre@2a02:810d:f40:2a9c:a4fe:2adc:248b:466f) (Quit: halbGefressen)
2021-01-02 15:47:29 +0100ezzieyguywuf(~Unknown@unaffiliated/ezzieyguywuf)
2021-01-02 15:49:14 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:b1ad:809d:33ad:d747) (Ping timeout: 264 seconds)
2021-01-02 15:49:55 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f) (Ping timeout: 268 seconds)
2021-01-02 15:51:52 +0100sparsity(5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145)
2021-01-02 15:52:04 +0100 <__monty__> Ah, I made a mistake anyway because surjection isn't symmetric.
2021-01-02 15:54:05 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-02 15:54:07 +0100 <sm[m]> https://github.com/blitzcode/hackage-diff seems to be what I want, if I can prepare the inputs it wants
2021-01-02 15:54:59 +0100 <sm[m]> doesn't build; drat
2021-01-02 16:02:06 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-02 16:07:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-01-02 16:07:46 +0100juuandyy(~juuandyy@90.166.144.65)
2021-01-02 16:10:44 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta)
2021-01-02 16:13:01 +0100jitwit(~user@bras-base-mtrlpq4381w-grc-34-174-93-238-71.dsl.bell.ca)
2021-01-02 16:15:11 +0100 <ezzieyguywuf> sm[m]: last commit was years ago, you can probably tweak some version bounds to make it work
2021-01-02 16:15:42 +0100 <sm[m]> thanks ezzieyguywuf, I pinged the issue tracker
2021-01-02 16:16:39 +0100 <ezzieyguywuf> good luck!
2021-01-02 16:17:11 +0100 <ezzieyguywuf> with stack too ypu may be able to just use a super old snapshot or whatever
2021-01-02 16:17:27 +0100 <sm[m]> you're right
2021-01-02 16:17:45 +0100 <ezzieyguywuf> i thought it was kind of the point of stack, "if builds now, it ahould always build"
2021-01-02 16:18:20 +0100 <__monty__> If it has proper bounds you can always build it with cabal too.
2021-01-02 16:18:37 +0100 <sm[m]> it is. But you have to be motivated enough (to reinstall an old ghc version and rebuild the world)
2021-01-02 16:18:53 +0100 <sm[m]> and this package might even build with cabal right now, I haven't tried
2021-01-02 16:19:00 +0100 <__monty__> Stack only hides the "getting an old ghc version" part.
2021-01-02 16:19:03 +0100 <sm[m]> I simply reported the bug and moved on
2021-01-02 16:20:11 +0100 <sm[m]> getting an old ghc version is still costly even with stack (takes ages and 2G of disk)
2021-01-02 16:20:46 +0100DavidEichmann(~david@98.27.93.209.dyn.plus.net)
2021-01-02 16:21:05 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:b1ad:809d:33ad:d747)
2021-01-02 16:21:15 +0100 <sm[m]> with luck https://github.com/blitzcode/hackage-diff/issues/13 will reawaken
2021-01-02 16:21:45 +0100 <__monty__> Yes. All I said was cabal builds old packages just as stack does, stack doesn't add any longevity magic.
2021-01-02 16:21:52 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2021-01-02 16:22:56 +0100fendor_(~fendor@178.115.129.22.wireless.dyn.drei.com)
2021-01-02 16:23:05 +0100 <sm[m]> not usuall true __monty__. If you set up cabal to mimic stack (using a freeze file or whatever), then perhaps
2021-01-02 16:23:38 +0100 <__monty__> Like I said, if the bounds are setup properyl.
2021-01-02 16:23:41 +0100 <__monty__> *properly
2021-01-02 16:23:45 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-01-02 16:24:21 +0100 <sm[m]> ie, the main "magic" stack adds is a stable install plan that's fixed for all time. Normal cabal bounds only set a range of versions, and cabal-install is free to pick any dep versions within those ranges at any time
2021-01-02 16:25:27 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:b1ad:809d:33ad:d747) (Ping timeout: 260 seconds)
2021-01-02 16:25:32 +0100fendor(~fendor@77.119.129.8.wireless.dyn.drei.com) (Ping timeout: 265 seconds)
2021-01-02 16:25:45 +0100 <__monty__> I'm not saying it doesn't. All I meant is that it's not as if old versions are removed from hackage so with proper bounds old things build fine.
2021-01-02 16:25:50 +0100sacereda(~user@124.red-88-16-15.dynamicip.rima-tde.net)
2021-01-02 16:26:20 +0100pera(~pera@unaffiliated/pera)
2021-01-02 16:26:52 +0100 <yushyin> afaik you can pin the index state with cabal
2021-01-02 16:27:04 +0100 <sm[m]> __monty__: when you say "proper bounds", if you mean "lock down the ghc version and every package version", then I agree with you
2021-01-02 16:27:30 +0100 <yushyin> and so have the same install-plan every time
2021-01-02 16:27:33 +0100 <sm[m]> (we'll ignore externals like C library versions)
2021-01-02 16:27:51 +0100 <__monty__> I don't mean lock down to single versions like stackage does, no.
2021-01-02 16:28:03 +0100 <sm[m]> then you don't have a reliable build plan
2021-01-02 16:28:19 +0100 <sm[m]> it'll work almost all the time.. until it doesn't
2021-01-02 16:28:24 +0100 <__monty__> Well, you do as soon as you time rolls past your upper bounds.
2021-01-02 16:28:32 +0100 <__monty__> s/you//
2021-01-02 16:28:34 +0100 <yushyin> https://cabal.readthedocs.io/en/3.4/cabal-project.html#cfg-field-index-state
2021-01-02 16:29:33 +0100 <__monty__> Proper bounds means any combination cabal selects that satisfies the constraints works. Good approximations thereof are acceptable.
2021-01-02 16:29:44 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2021-01-02 16:35:21 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-02 16:35:35 +0100sparsity(5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) (Quit: Connection closed)
2021-01-02 16:37:12 +0100zangi(~azure@103.154.230.250) (Ping timeout: 256 seconds)
2021-01-02 16:37:40 +0100zangi(~azure@36.79.200.71)
2021-01-02 16:37:51 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-tmfywdizfrmonpis)
2021-01-02 16:39:34 +0100pera(~pera@unaffiliated/pera) (Quit: leaving)
2021-01-02 16:41:28 +0100sacereda(~user@124.red-88-16-15.dynamicip.rima-tde.net) (Quit: ERC (IRC client for Emacs 27.1))
2021-01-02 16:42:10 +0100shf(~sheaf@2a01:cb19:80cc:7e00:d481:af4c:bf9f:f9c)
2021-01-02 16:43:23 +0100frankdmartinez(~frankdmar@138.199.52.27) (Quit: frankdmartinez)
2021-01-02 16:45:52 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f)
2021-01-02 16:46:38 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:b1ad:809d:33ad:d747)
2021-01-02 16:48:32 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2021-01-02 16:50:06 +0100machinedgod(~machinedg@24.105.81.50)
2021-01-02 16:50:17 +0100Franciman(~francesco@host-95-250-152-231.retail.telecomitalia.it)
2021-01-02 16:51:02 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f) (Ping timeout: 264 seconds)
2021-01-02 16:51:18 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:b1ad:809d:33ad:d747) (Ping timeout: 258 seconds)
2021-01-02 16:51:52 +0100halbGefressen(~halbGefre@ipbcc14379.dynamic.kabel-deutschland.de)
2021-01-02 16:58:54 +0100halbGefressen(~halbGefre@ipbcc14379.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2021-01-02 16:59:03 +0100halbGefressen(~halbGefre@2a02:810d:f40:2a9c:a4fe:2adc:248b:466f)
2021-01-02 16:59:54 +0100Entertainment(~entertain@104.246.132.210)
2021-01-02 17:00:33 +0100halbGefressen(~halbGefre@2a02:810d:f40:2a9c:a4fe:2adc:248b:466f) (Client Quit)
2021-01-02 17:00:43 +0100urodna(~urodna@unaffiliated/urodna)
2021-01-02 17:00:48 +0100unlink2(~unlink2@p200300ebcf259600e4593ff5d42812d3.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-01-02 17:02:52 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:b1ad:809d:33ad:d747)
2021-01-02 17:02:55 +0100unlink2(~unlink2@p200300ebcf259600e4593ff5d42812d3.dip0.t-ipconnect.de)
2021-01-02 17:06:19 +0100hiroaki(~hiroaki@2a02:908:4b18:8c40::1d01) (Ping timeout: 272 seconds)
2021-01-02 17:06:42 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-02 17:08:43 +0100halbGefressen(~halbGefre@ipbcc14379.dynamic.kabel-deutschland.de)
2021-01-02 17:09:08 +0100dfeuer(~dfeuer@pool-108-18-223-60.washdc.fios.verizon.net)
2021-01-02 17:09:50 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-01-02 17:11:01 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 264 seconds)
2021-01-02 17:13:04 +0100halbGefressen(~halbGefre@ipbcc14379.dynamic.kabel-deutschland.de) (Client Quit)
2021-01-02 17:15:56 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:cde2:1e79:768c:58ea)
2021-01-02 17:15:56 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-01-02 17:18:26 +0100hiroaki(~hiroaki@2a02:908:4b18:8c40::4b02)
2021-01-02 17:18:54 +0100Tario(~Tario@201.192.165.173)
2021-01-02 17:23:31 +0100juuandyy(~juuandyy@90.166.144.65) (Ping timeout: 256 seconds)
2021-01-02 17:27:04 +0100TMA(tma@twin.jikos.cz) (Ping timeout: 256 seconds)
2021-01-02 17:28:25 +0100Entertainment(~entertain@104.246.132.210) (Ping timeout: 264 seconds)
2021-01-02 17:28:53 +0100Entertainment(~entertain@104.246.132.210)
2021-01-02 17:33:25 +0100cheater(~user@unaffiliated/cheater) (Ping timeout: 246 seconds)
2021-01-02 17:33:45 +0100juuandyy(~juuandyy@90.166.144.65)
2021-01-02 17:38:47 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-01-02 17:39:18 +0100 <shinobi> Shiranai, monochrom: Thanks for the link to the fp course material. Exactly what I need!
2021-01-02 17:40:25 +0100dfeuer(~dfeuer@pool-108-18-223-60.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
2021-01-02 17:40:34 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:143:c475:d20e:3db4:7e5b) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-02 17:40:48 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-02 17:41:11 +0100kam1(~kam1@24.231.108.143)
2021-01-02 17:41:34 +0100 <ij> Can I have mutable sets within pure code via ST? I'm looking to traverse and store visited elements in a set
2021-01-02 17:42:30 +0100 <ij> Sorry, STM
2021-01-02 17:43:49 +0100 <shinobi> What is the difference between: Num a => a -> a and Num (a -> a) ?
2021-01-02 17:45:05 +0100 <tomsmeding> shinobi: 'Num a => a -> a' is a type that denotes a function from type 'a' to type 'a', with the constraint that 'a' must be numeric
2021-01-02 17:45:19 +0100 <ij> shinobi, Num (a -> a) is a probably a type constraint which requires a -> a to be a numeric value, which it isn't, so that probably indicates a programming error
2021-01-02 17:45:23 +0100 <tomsmeding> 'Num (a -> a)' is a constraint, not a type, specifying that the type 'a -> a' must be numeric
2021-01-02 17:45:33 +0100FreeBirdLjj(~freebirdl@101.87.175.26)
2021-01-02 17:45:40 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-01-02 17:45:42 +0100 <tomsmeding> (unless you're talking about a different Num than is defined in the Prelude)
2021-01-02 17:46:05 +0100 <[exa]> ij: there is no notion of "action happens after another action" in pure code, you need to pull the STM through to get the action ordering
2021-01-02 17:46:22 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 246 seconds)
2021-01-02 17:47:10 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f)
2021-01-02 17:47:43 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:b1ad:809d:33ad:d747) (Remote host closed the connection)
2021-01-02 17:47:58 +0100 <ij> ah, ok. you can only run it through atomically, which returns an IO
2021-01-02 17:48:01 +0100 <[exa]> shinobi: a constructive example, function (+1) is of type `Num a => a -> a` because it works on all numeric a's, for example it can be Int->Int. The second would require that all 1param functions can act as numbers, e.g. you'd be able to do `f+f` if `f` was of type `Num (a->a) => a->a`
2021-01-02 17:48:06 +0100geekosaur(ac3a8f5d@172.58.143.93)
2021-01-02 17:48:14 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:b1ad:809d:33ad:d747)
2021-01-02 17:48:34 +0100 <[exa]> ij: runST ?
2021-01-02 17:49:05 +0100hekkaidekapus{(~tchouri@gateway/tor-sasl/hekkaidekapus)
2021-01-02 17:49:16 +0100 <bartholin> how do I save png pictures? (preferably in sdl)
2021-01-02 17:50:02 +0100FreeBirdLjj(~freebirdl@101.87.175.26) (Ping timeout: 260 seconds)
2021-01-02 17:51:02 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2021-01-02 17:51:03 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2021-01-02 17:51:38 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f) (Ping timeout: 264 seconds)
2021-01-02 17:51:52 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:b1ad:809d:33ad:d747) (Remote host closed the connection)
2021-01-02 17:52:04 +0100 <[exa]> bartholin: very likely the most painless way will be using JuicyPixels
2021-01-02 17:52:06 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:b1ad:809d:33ad:d747)
2021-01-02 17:52:11 +0100 <bitmapper> hmm
2021-01-02 17:53:28 +0100Guest84404(~textual@mskresolve-a.mskcc.org) (Ping timeout: 256 seconds)
2021-01-02 17:53:29 +0100 <[exa]> (well at least I can't find any SDL_image wrap for haskell... perhaps there may be other ways)
2021-01-02 17:54:15 +0100 <shinobi> [exa] So does Num (a->a) mean (a -> Num)?
2021-01-02 17:54:37 +0100 <shinobi> :t (+3) $ (*100)
2021-01-02 17:54:38 +0100 <lambdabot> (Num a, Num (a -> a)) => a -> a
2021-01-02 17:54:51 +0100 <[exa]> shinobi: no, it means that (a->a) is a thing that behaves like numbers, i.e. has + and *
2021-01-02 17:55:04 +0100 <geekosaur> Num (a -> a) means you've somehow claimed that functions can be numbers
2021-01-02 17:55:05 +0100 <[exa]> shinobi: your example is, after some rewriting: 3+(*100)
2021-01-02 17:55:48 +0100 <shinobi> Yes, I'm just confused by the type
2021-01-02 17:55:51 +0100 <[exa]> shinobi: addition of (*100) to 3 triggers that the function needs to have the "numeric interface"
2021-01-02 17:56:03 +0100 <shinobi> I would have thought it to be Num a->a
2021-01-02 17:56:16 +0100 <[exa]> shinobi: anyway perhaps you meant `(+3) . (*100)` ?
2021-01-02 17:56:47 +0100 <shinobi> [exa] Yes, I thougth that applying a function to another function would compose them
2021-01-02 17:57:04 +0100 <[exa]> one takeaway is that you'll usually get a constraint like `Num (x->y)` when you accidentally try to add functions not numbers :]
2021-01-02 17:57:04 +0100 <shinobi> But + expects a num
2021-01-02 17:57:30 +0100 <dminuoso> What is „num“
2021-01-02 17:58:22 +0100 <dminuoso> % :t 1
2021-01-02 17:58:22 +0100 <yahb> dminuoso: Num p => p
2021-01-02 17:58:30 +0100 <shinobi> I think I see it now... The +3 exepcts a number and thus he passed fuction must have the number interface.
2021-01-02 17:58:48 +0100 <dminuoso> shinobi: Roughly the intuition is this:
2021-01-02 17:58:53 +0100 <dminuoso> % :t (+)
2021-01-02 17:58:53 +0100 <yahb> dminuoso: Num a => a -> a -> a
2021-01-02 17:59:33 +0100 <shinobi> So you can't compose by shoving a function as the input to a function even if the return type of the first matches the input type of the second.
2021-01-02 17:59:40 +0100 <dminuoso> For a polymorphic value, like (+), the caller/user/consumer has the obligation to pick a type for every type variable. You can choose anything you want, really.
2021-01-02 17:59:55 +0100 <dminuoso> Under the constraint that your choice has an instance Num
2021-01-02 18:00:43 +0100 <dminuoso> Choosing (Int -> String) for a above is fine by itself, it just causes GHC to check whether an instance Num exists for that choice.
2021-01-02 18:00:56 +0100Entertainment(~entertain@104.246.132.210) (Ping timeout: 240 seconds)
2021-01-02 18:01:20 +0100 <[exa]> shinobi: the "+ expects a num" is what a less flexible language would tell you as an error; in Haskell it just expects that functions can be in Num (which will likely fail later...or you just supply the instance for numeric-like functions)
2021-01-02 18:01:37 +0100Goldio(uid478328@gateway/web/irccloud.com/x-qxzjoosyubzfyxzm) (Quit: Connection closed for inactivity)
2021-01-02 18:01:42 +0100Seran1(~Seran@178.162.204.214) (Remote host closed the connection)
2021-01-02 18:01:46 +0100 <dminuoso> Note, the type class/polymorphism mechanism isn’t specialized to numbers. It’s a generic overloading feature.
2021-01-02 18:02:38 +0100solonarv(~solonarv@astrasbourg-653-1-252-231.w92-161.abo.wanadoo.fr)
2021-01-02 18:02:42 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
2021-01-02 18:02:53 +0100 <[exa]> _how_ precisely would you like to compose the functions though? Perhaps you want `(+) <$> (+3) <*> (*100)` ? :]
2021-01-02 18:03:02 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
2021-01-02 18:04:51 +0100 <shinobi> I'm just learning about applicatives and was trying to see if I understand them. The example you give with addition makes sense to me. It was when I changed the + to . that I went sideways
2021-01-02 18:05:05 +0100 <shinobi> [exa] ^
2021-01-02 18:06:59 +0100 <shinobi> The applicative is (->) r and thought I should be able to compose those functions with (.) <$> (+3) <*> (*100)
2021-01-02 18:07:03 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta)
2021-01-02 18:08:31 +0100 <[exa]> shinobi: that doesn't make much semantic sense though
2021-01-02 18:08:44 +0100 <shinobi> that's what I'm trying to work through
2021-01-02 18:08:48 +0100 <[exa]> what result would you expect if the composed function receives 1 ?
2021-01-02 18:10:00 +0100 <shinobi> Either 400 or 103 depending on order of operations. (Which is what led to this whole rabbit hole)
2021-01-02 18:10:10 +0100 <[exa]> oh okay, you just want a normal .
2021-01-02 18:10:40 +0100 <[exa]> > let f = (+3) . (*100) in f 1
2021-01-02 18:10:42 +0100 <lambdabot> 103
2021-01-02 18:11:03 +0100 <shinobi> I'm trying to figure out how Haskell interprets <$> and <*> on (->) r
2021-01-02 18:11:22 +0100 <dminuoso> Look at their respective implementations in the type classes Functor and Applicative
2021-01-02 18:11:31 +0100 <dminuoso> Or better yet, try to derive them yourself
2021-01-02 18:12:00 +0100 <[exa]> the ((->) r) instance is called a reader, basically imagine that everything has an extra same global "environment" parameter which gets supplied last.
2021-01-02 18:12:02 +0100 <b4er> (<$>) is (.) and (<*>) is S
2021-01-02 18:12:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-02 18:12:26 +0100halbGefressen(~halbGefre@ipbcc14379.dynamic.kabel-deutschland.de)
2021-01-02 18:13:08 +0100 <b4er> Wait, is it a coincidence: (<*>) is S and pure is K
2021-01-02 18:13:21 +0100 <[exa]> b4er: hardly a coincidence
2021-01-02 18:13:25 +0100 <b4er> So Applicative has S and K which are a complete basis
2021-01-02 18:13:46 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2021-01-02 18:14:10 +0100 <[exa]> gives a whole new meaning to applicative-style programming right? :D
2021-01-02 18:14:42 +0100 <shinobi> like a vector space basis?
2021-01-02 18:15:41 +0100 <b4er> No like a basis for the λ-calculus
2021-01-02 18:16:25 +0100 <ski> `I' is `ask'
2021-01-02 18:17:09 +0100halbGefressen(~halbGefre@ipbcc14379.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
2021-01-02 18:17:23 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
2021-01-02 18:17:29 +0100madjest47(~Android@89-200-3-15.mobile.kpn.net)
2021-01-02 18:17:42 +0100 <ski> and `W' is `join'. what's `(=<<)' ?
2021-01-02 18:18:11 +0100skiusually calls it "environment", rather than "input"/"reader"
2021-01-02 18:19:43 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2021-01-02 18:19:54 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net) (Ping timeout: 272 seconds)
2021-01-02 18:19:59 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-02 18:20:53 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit)
2021-01-02 18:22:05 +0100r4d1x(~r4d1x@185.163.110.125)
2021-01-02 18:23:18 +0100rmk236(~lcampos@2a02:908:3616:b100:5d3c:3ea2:9142:e850)
2021-01-02 18:25:13 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:cde2:1e79:768c:58ea) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-02 18:27:36 +0100madjest47(~Android@89-200-3-15.mobile.kpn.net) (Read error: Connection reset by peer)
2021-01-02 18:29:38 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2021-01-02 18:30:07 +0100 <ij> I've always wanted to understand what's ski calculus about
2021-01-02 18:30:16 +0100mikail_(~mikail@2a02:c7f:bced:2900:73ae:8683:c80c:23b5)
2021-01-02 18:30:24 +0100 <tomsmeding> so if S and K are <*> and pure from ((->) r), then what happens if you interpret a program in the SKI calculus with a different Applicative instance
2021-01-02 18:31:01 +0100 <tomsmeding> ij: point-free programming to the max
2021-01-02 18:31:46 +0100 <tomsmeding> hence lambdabot's tendency to use ((->) r) for point-free tricks :p
2021-01-02 18:32:09 +0100 <ij> should I just read the wikipedia page about it and I'll figure it out?
2021-01-02 18:32:44 +0100 <tomsmeding> I think so, yes
2021-01-02 18:33:08 +0100mikail_(~mikail@2a02:c7f:bced:2900:73ae:8683:c80c:23b5) (Client Quit)
2021-01-02 18:33:41 +0100 <ski> not a calculus
2021-01-02 18:33:47 +0100rmk236(~lcampos@2a02:908:3616:b100:5d3c:3ea2:9142:e850) (Quit: Leaving.)
2021-01-02 18:33:48 +0100nbloomf(~nbloomf@76.217.43.73)
2021-01-02 18:33:52 +0100dandart(~Thunderbi@home.dandart.co.uk) (Remote host closed the connection)
2021-01-02 18:34:04 +0100 <ij> what qualifies as a calculus?
2021-01-02 18:34:09 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-02 18:34:09 +0100 <tomsmeding> wikipedia calls it a calculus hence it is a calculus
2021-01-02 18:34:16 +0100 <ski> it should have bound variables, imho
2021-01-02 18:34:21 +0100 <tomsmeding> notwithstanding the fact that someone in #haskell is also named that
2021-01-02 18:34:42 +0100 <tomsmeding> ski: combinator calculus?
2021-01-02 18:34:59 +0100 <ij> S looks more like distribute not substitute
2021-01-02 18:35:01 +0100 <ski> (like the integral sign binding the integration variable. or the Leibniz derivative notation rebinding the variable wrt one is differentiating)
2021-01-02 18:35:03 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
2021-01-02 18:35:23 +0100 <ski> ij,tomsmeding : <http://lambda-the-ultimate.org/node/533#comment-7712>
2021-01-02 18:35:43 +0100 <ski> ij : "substitute into an application"
2021-01-02 18:35:55 +0100 <ij> alright, suppose so
2021-01-02 18:36:38 +0100 <ski> ij : you might have fun reading "To Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction" by David C. Keenan in 1996-08-27 - 2014-04-12 at <http://dkeenan.com/Lambda/> ?
2021-01-02 18:36:58 +0100 <tomsmeding> interesting
2021-01-02 18:37:05 +0100 <nshepperd> a calculus is anything which involves moving stones about
2021-01-02 18:37:16 +0100notzmv(~user@unaffiliated/zmv) (Remote host closed the connection)
2021-01-02 18:38:05 +0100 <MarcelineVQ> is an algebra anything that involved moving pretend stones about?
2021-01-02 18:39:57 +0100 <ij> ski, horrible formatting, but the content is interesting
2021-01-02 18:40:03 +0100 <nshepperd> xD
2021-01-02 18:40:03 +0100notzmv(~user@unaffiliated/zmv)
2021-01-02 18:40:36 +0100 <ij> (the formatting fits expectations, however)
2021-01-02 18:40:38 +0100 <nshepperd> calculus : stones :: algebra : pictures of stones
2021-01-02 18:42:56 +0100juuandyy(~juuandyy@90.166.144.65) (Ping timeout: 240 seconds)
2021-01-02 18:44:40 +0100 <ski> ij : that's one of the pages from which i learned lambda-calculus and SKI combinators from
2021-01-02 18:45:10 +0100 <ij> nice
2021-01-02 18:46:24 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-01-02 18:47:53 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f)
2021-01-02 18:48:38 +0100 <ph88_> is there some debug function that i can drop into pure code that just stops execution after its been hit x amount of times ?
2021-01-02 18:49:42 +0100 <xerox_> ph88_: the closest I can think of is adding an explicit counter and trace/traceShow/traceShowId it and ^C
2021-01-02 18:51:46 +0100 <MarcelineVQ> or making your own trace and using an ioref to count+die
2021-01-02 18:51:54 +0100 <b4er> :t \f -> (f (<*>)) pure
2021-01-02 18:51:55 +0100 <lambdabot> (Applicative f1, Applicative f2) => ((f1 (a1 -> b) -> f1 a1 -> f1 b) -> (a2 -> f2 a2) -> t) -> t
2021-01-02 18:52:33 +0100rowbee(~augh@theguntretort.com) (Quit: ZNC - https://znc.in)
2021-01-02 18:52:44 +0100 <b4er> :t let iota f = f (<*>) pure in iota iota
2021-01-02 18:52:46 +0100 <lambdabot> error:
2021-01-02 18:52:46 +0100 <lambdabot> • Occurs check: cannot construct the infinite type:
2021-01-02 18:52:46 +0100 <lambdabot> f0 ~ (->) (a -> f0 a)
2021-01-02 18:52:46 +0100rowbee(~augh@theguntretort.com)
2021-01-02 18:52:50 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f) (Ping timeout: 264 seconds)
2021-01-02 18:52:50 +0100 <b4er> :(
2021-01-02 18:53:26 +0100rmk236(~lcampos@2a02:908:3616:b100:ad41:f5e6:8b3a:bfc3)
2021-01-02 18:54:45 +0100p-core(~Thunderbi@koleje-wifi-0045.koleje.cuni.cz) (Ping timeout: 256 seconds)
2021-01-02 18:54:45 +0100 <tomsmeding> MarcelineVQ: have to take care that it doesn't get lifted out, so you'll have to give it a different argument each time, and prevent inlining (where "different" means "ghc can't prove it's the same")
2021-01-02 18:55:12 +0100 <tomsmeding> oh
2021-01-02 18:55:20 +0100 <tomsmeding> let it be semantically id
2021-01-02 18:55:23 +0100 <tomsmeding> thanks brain, that does work
2021-01-02 18:55:29 +0100notzmv(~user@unaffiliated/zmv) (Remote host closed the connection)
2021-01-02 18:56:17 +0100 <b4er> Yeah, I was trying to build "Applicative" from a single combinator like iota can be used to express S and K
2021-01-02 18:56:20 +0100notzmv(~user@unaffiliated/zmv)
2021-01-02 18:56:54 +0100 <tomsmeding> will only work for the ((->) r) type, not for most (any?) other Applicative
2021-01-02 18:57:17 +0100 <tomsmeding> my hopeful suggestion 27 minutes ago made no sense I fear
2021-01-02 18:57:54 +0100carthia(~carthia@gateway/tor-sasl/carthia)
2021-01-02 18:58:49 +0100 <b4er> Wait, how do you get it to work for ((->)r)
2021-01-02 18:59:01 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com)
2021-01-02 18:59:18 +0100 <b4er> :t let id = (\f -> f (<*>) const) (\f -> f (<*>) const) in id
2021-01-02 18:59:20 +0100 <lambdabot> error:
2021-01-02 18:59:20 +0100 <lambdabot> • Occurs check: cannot construct the infinite type:
2021-01-02 18:59:20 +0100 <lambdabot> b0 ~ a1 -> b0 -> a1
2021-01-02 19:00:56 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net)
2021-01-02 19:02:23 +0100Alleria(~textual@2603-7000-3040-0000-5d20-1671-5668-2bd6.res6.spectrum.com)
2021-01-02 19:02:40 +0100 <ph88_> MarcelineVQ, how can i check if that IOref already exists for when i call the function again ?
2021-01-02 19:02:47 +0100AlleriaGuest99171
2021-01-02 19:03:51 +0100 <dsal> ph88_: What do you mean? You have the IOref or not. There's no unknown state.
2021-01-02 19:04:06 +0100 <tomsmeding> b4er: okay I think that doesn't work due to lack of impredicativity
2021-01-02 19:04:58 +0100 <ph88_> dsal, i wanted a function that stops executions after it has been hit x amount of times. MarcelineVQ suggested using IOref .. so i can create a new IOref on the first time this function gets called, but how do i know its the second time ?
2021-01-02 19:05:26 +0100 <dsal> ph88_: you have to hold the reference in some way.
2021-01-02 19:06:08 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-02 19:06:13 +0100 <c_wraith> Is there a term for a relationship between a grammar and a data type where the data type can be constructed in ways the parser can't ever produce?
2021-01-02 19:06:33 +0100 <b4er> tomsmeding, possible. It'd not be a very useful thing anyway, SK(I) is only fun in the untyped setting
2021-01-02 19:06:51 +0100 <b4er> Or iota and friends for that matter
2021-01-02 19:07:22 +0100 <hpc> c_wraith: the type has invalid states?
2021-01-02 19:07:37 +0100 <hpc> that's the closest terminoligy i know of
2021-01-02 19:07:58 +0100 <c_wraith> hpc: not invalid - they have perfectly adequate meanings. Just not represented in the surface syntax.
2021-01-02 19:08:56 +0100oats(~hurr@durr/im/a/sheep) (Quit: until later, my friends)
2021-01-02 19:09:20 +0100oats(~hurr@durr/im/a/sheep)
2021-01-02 19:09:27 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f)
2021-01-02 19:10:07 +0100 <hpc> unrepresented?
2021-01-02 19:10:33 +0100 <hpc> if you consider what's parsed to be a representation of the data
2021-01-02 19:10:36 +0100olligobber(~olligobbe@unaffiliated/olligobber) (Ping timeout: 240 seconds)
2021-01-02 19:11:04 +0100 <MarcelineVQ> ph88_: https://www.reddit.com/r/haskell/comments/ddse92/using_unsafeperformio_to_count_operations/
2021-01-02 19:13:12 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
2021-01-02 19:13:14 +0100 <MarcelineVQ> the 'counter' there is a common pattern of defining a top level IORef that's accessible at any time in the program, this can often comes up when people want unique id's and the like without needing to thread State and such
2021-01-02 19:13:54 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
2021-01-02 19:16:01 +0100 <ph88_> oki thank you
2021-01-02 19:17:22 +0100 <MarcelineVQ> Allthough I'm not entirely certain it's safe for that exact purpose without knowing exactly what optomizations are happening/prevented, ghc is still mysterious to me :X A the very least you'll want {-# NOINLINE counter #-} and {-# NOINLINE mytrace #-}
2021-01-02 19:18:00 +0100 <MarcelineVQ> Where mytrace is the trace function you're defining
2021-01-02 19:18:27 +0100 <MarcelineVQ> it'd be a good idea to go over these once to see how they've set it up https://hackage.haskell.org/package/base-4.12.0.0/docs/src/Debug.Trace.html
2021-01-02 19:18:45 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-02 19:19:26 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-01-02 19:19:42 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2021-01-02 19:19:52 +0100 <ph88_> curious how that is not a baked in functionality
2021-01-02 19:20:42 +0100notzmv(~user@unaffiliated/zmv) (Remote host closed the connection)
2021-01-02 19:21:28 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection)
2021-01-02 19:21:40 +0100notzmv(~user@unaffiliated/zmv)
2021-01-02 19:22:56 +0100 <sm[m]> Using unsafeperformio there means that code will never be thread-safe, right ?
2021-01-02 19:23:31 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2021-01-02 19:23:34 +0100notzmv(~user@unaffiliated/zmv) (Remote host closed the connection)
2021-01-02 19:23:40 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-01-02 19:23:44 +0100jamm_(~jamm@unaffiliated/jamm)
2021-01-02 19:24:59 +0100 <exarkun> Failing to use Crypto.Hash.Types from cryptonite in my stack project even though cryptonite is in my dependencies list ... "it is a hidden module in the package ‘cryptonite-0.26’"
2021-01-02 19:25:04 +0100 <exarkun> What's up with "hidden modules"?
2021-01-02 19:25:21 +0100 <sm[m]> I have a similar need today - give up on a search after N recursions (across all branches)
2021-01-02 19:25:45 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 268 seconds)
2021-01-02 19:26:12 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:b1ad:809d:33ad:d747) (Remote host closed the connection)
2021-01-02 19:26:15 +0100 <sm[m]> exarkun: you probably need to add it to package.yaml or the .cabal file somewhere
2021-01-02 19:26:51 +0100 <exarkun> It is in my package.yaml dependency list already. It is not a "hidden package" but a "hidden module".
2021-01-02 19:27:17 +0100 <exarkun> I can't find much online about this -- everyone seems freely interchanges "package" and "module" but it seems stack or ghc thinks they're different kinds of things
2021-01-02 19:27:18 +0100 <sm[m]> Oh, sorry
2021-01-02 19:27:37 +0100 <sm[m]> They are, module is a file essentially
2021-01-02 19:28:49 +0100 <exarkun> So ... a package doesn't have to make all of its modules public? Or something?
2021-01-02 19:29:08 +0100 <sm[m]> exarkun: correct. you can see on hackage what's public
2021-01-02 19:29:10 +0100 <exarkun> is this an indirect way of cryptonite saying "Crypto.Hash.Types is not for you"
2021-01-02 19:29:17 +0100 <exarkun> :/
2021-01-02 19:29:21 +0100 <sm[m]> Yes
2021-01-02 19:29:36 +0100 <exarkun> So I can't implement my own hash algorithm that fits into cryptonite, because HashAlgorithm's internals aren't public
2021-01-02 19:29:41 +0100 <exarkun> now I'm sad
2021-01-02 19:31:36 +0100 <exarkun> Hm. Or cryptonite exposes it somewhere else public, like Crypto.Hash.IO, and I shouldn't have followed the source link and then tried to import it from the module where the source code lives
2021-01-02 19:31:49 +0100renzhi(~renzhi@modemcable070.17-177-173.mc.videotron.ca) (Ping timeout: 260 seconds)
2021-01-02 19:31:56 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:b1ad:809d:33ad:d747)
2021-01-02 19:33:39 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net)
2021-01-02 19:35:13 +0100tabemann_(~tabemann@2600:1700:7990:24e0:3ba2:fef5:1410:7dbb) (Remote host closed the connection)
2021-01-02 19:35:27 +0100tabemann_(~tabemann@2600:1700:7990:24e0:10cb:8914:2144:7a48)
2021-01-02 19:36:26 +0100Entertainment(~entertain@104.246.132.210)
2021-01-02 19:37:39 +0100 <tomsmeding> exarkun: Crypto.Hash.Algorithms?
2021-01-02 19:41:20 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta) (Read error: Connection reset by peer)
2021-01-02 19:41:23 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2021-01-02 19:41:53 +0100superstar64(6ccefa7c@108-206-250-124.lightspeed.miamfl.sbcglobal.net)
2021-01-02 19:41:59 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta)
2021-01-02 19:42:11 +0100 <superstar64> is there a version of `Void` that takes a parameter?
2021-01-02 19:42:37 +0100thebnq(~bnq@herrokitty.com) (Ping timeout: 260 seconds)
2021-01-02 19:43:29 +0100 <superstar64> ahh wait, `Const Void` works
2021-01-02 19:44:12 +0100notzmv(~user@unaffiliated/zmv)
2021-01-02 19:44:40 +0100HenryCH(~henry@5.81.254.84.ftth.as8758.net)
2021-01-02 19:45:27 +0100 <exarkun> tomsmeding: does not export the whole class, as far as I can tell
2021-01-02 19:46:28 +0100 <tomsmeding> hah, you're right
2021-01-02 19:47:23 +0100 <Melanie> superstar64: also, Void1 from generic-lens-core
2021-01-02 19:47:32 +0100elliott_(~elliott@pool-108-51-101-42.washdc.fios.verizon.net)
2021-01-02 19:47:57 +0100 <Melanie> but Const Void is probably just as well :D
2021-01-02 19:50:29 +0100rmk236(~lcampos@2a02:908:3616:b100:ad41:f5e6:8b3a:bfc3) (Quit: Leaving.)
2021-01-02 19:50:56 +0100kritzefitz(~kritzefit@212.86.56.80) (Ping timeout: 240 seconds)
2021-01-02 19:51:53 +0100justsomeguy(~justsomeg@107-144-102-166.biz.spectrum.com)
2021-01-02 19:51:53 +0100justsomeguy(~justsomeg@107-144-102-166.biz.spectrum.com) (Changing host)
2021-01-02 19:51:53 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2021-01-02 19:52:06 +0100Lord_of_Life_(~Lord@unaffiliated/lord-of-life/x-0885362)
2021-01-02 19:52:33 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 256 seconds)
2021-01-02 19:53:16 +0100thebnq(~bnq@herrokitty.com)
2021-01-02 19:54:19 +0100jamm_(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2021-01-02 19:54:56 +0100Lord_of_Life_Lord_of_Life
2021-01-02 19:55:10 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-02 19:55:12 +0100 <justsomeguy> I'm writing a stack project that uses FlexibleInstances in one of the files, but if I include a language pragma directly in the file and do “stack build” I get an error. I only need this pragma for the one module. Do I need to specify this in package.yaml? What's the right way to do this?
2021-01-02 19:55:15 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-02 19:55:31 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-pggmrnaelsyxiuyq)
2021-01-02 19:56:00 +0100 <sm[m]> justsomeguy: that normally works fine
2021-01-02 19:56:06 +0100 <Uniaika> justsomeguy: what is the error?
2021-01-02 19:56:12 +0100 <Uniaika> are you using the proper syntax for pragmas?
2021-01-02 19:56:50 +0100 <geekosaur> and is it before the module declaration?
2021-01-02 19:58:38 +0100 <justsomeguy> I'll link to a github repo and a pastebin of the error in a moment. Uploading...
2021-01-02 19:59:01 +0100dandart(~Thunderbi@home.dandart.co.uk) (Ping timeout: 264 seconds)
2021-01-02 19:59:31 +0100andi-(~andi-@NixOS/user/andi-) (Quit: WeeChat 2.8)
2021-01-02 20:00:02 +0100DTZUZU(~DTZUZU@205.ip-149-56-132.net)
2021-01-02 20:00:07 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
2021-01-02 20:00:54 +0100 <exarkun> Some of HashAlgorithm's methods involve `Ptr (Digest a)` or `Ptr (Context a)`
2021-01-02 20:01:18 +0100 <exarkun> is there any way to work with the pointed-to value from Haskell (rather than a C library and FFI)?
2021-01-02 20:01:39 +0100 <exarkun> I don't see a Storable instance for Digest or Context
2021-01-02 20:03:25 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-02 20:03:36 +0100berberman(~berberman@unaffiliated/berberman)
2021-01-02 20:04:14 +0100berberman_(~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds)
2021-01-02 20:05:00 +0100 <superstar64> i remember seeing this trick, of having a lambda calculus without free variables, `data Term x = Variable x | Call (Term x) (Term x) | Lambda (Maybe x)`
2021-01-02 20:05:03 +0100 <superstar64> who came up with this?
2021-01-02 20:05:08 +0100andi-(~andi-@NixOS/user/andi-)
2021-01-02 20:05:40 +0100nbloomf(~nbloomf@76.217.43.73) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-02 20:05:40 +0100 <dolio> Nicolaas Govert de Bruijn.
2021-01-02 20:05:43 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar) (Ping timeout: 240 seconds)
2021-01-02 20:05:48 +0100 <justsomeguy> sm[m], Uniaika: You can find the error in error.txt. I was surprised that it wouldn't build.
2021-01-02 20:06:20 +0100 <justsomeguy> The file under consideration is src/Lib.hs, and I think the syntax is correct.
2021-01-02 20:06:35 +0100 <exarkun> seems like all of the hashes in cryptonite are implemented via FFI
2021-01-02 20:07:03 +0100 <exarkun> so maybe a haskell-implemented hash is still not possible
2021-01-02 20:07:10 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
2021-01-02 20:07:29 +0100 <Uniaika> justsomeguy: ping me when the repo is up!
2021-01-02 20:07:48 +0100 <justsomeguy> Uniaika: Here it is https://github.com/kingparra/logicgoats
2021-01-02 20:08:23 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar)
2021-01-02 20:08:28 +0100 <sm[m]> you didn't hear geekosaur's tip
2021-01-02 20:08:56 +0100 <justsomeguy> Ah, you're right. Thanks for pointing that out. I'll try that now.
2021-01-02 20:09:19 +0100ph88_(~ph88@2a02:8109:9e00:7e5c:71b8:bbed:4abf:19c2) (Remote host closed the connection)
2021-01-02 20:09:31 +0100Rudd0(~Rudd0@185.189.115.103) (Ping timeout: 246 seconds)
2021-01-02 20:09:45 +0100ph88_(~ph88@ip5f5af6cd.dynamic.kabel-deutschland.de)
2021-01-02 20:12:40 +0100 <tomsmeding> superstar64: how does the data type you gave not have free variables?
2021-01-02 20:12:51 +0100tomsmedingis stupid
2021-01-02 20:13:00 +0100 <tomsmeding> that's an interesting encoding of De Bruijn indices
2021-01-02 20:13:03 +0100 <justsomeguy> Hmm... It still doesn't build. I get the same error “Illegal instance declaration for ‘TooMany (Int, String)’ ... Use FlexibleInstances if you want to disable this.”
2021-01-02 20:13:04 +0100 <superstar64> if `a` is `Void`, then you can't construct variables
2021-01-02 20:13:26 +0100 <superstar64> but inside lambdas you can construct, `Maybe Void`
2021-01-02 20:13:36 +0100 <tomsmeding> yes I see, quite neat
2021-01-02 20:13:43 +0100 <tomsmeding> but yes, De Bruijn indices
2021-01-02 20:14:06 +0100 <superstar64> yea, i saw it on one of edward kmett's videos
2021-01-02 20:14:18 +0100 <superstar64> not sure where he got it from
2021-01-02 20:14:41 +0100 <tomsmeding> they are faaaaairly well known in certain areas of computer science
2021-01-02 20:14:56 +0100 <MrMuffles[m]> How is Maybe defined? Are some and none terms?
2021-01-02 20:15:00 +0100 <tomsmeding> it makes alpha-equivalence trivial :)
2021-01-02 20:15:13 +0100 <tomsmeding> MrMuffles[m]: data Maybe a = Nothing | Just a
2021-01-02 20:15:44 +0100 <tomsmeding> MrMuffles[m]: https://hackage.haskell.org/package/base-4.14.0.0/docs/src/GHC.Maybe.html
2021-01-02 20:15:59 +0100 <MrMuffles[m]> But in terms of the lambda calculus, what is nothing?
2021-01-02 20:16:20 +0100geekosaur(ac3a8f5d@172.58.143.93) (Ping timeout: 245 seconds)
2021-01-02 20:16:31 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) ()
2021-01-02 20:16:46 +0100 <tomsmeding> these are De Bruijn indices (https://en.wikipedia.org/wiki/De_Bruijn_index), where 1 is Nothing, 2 is Just Nothing, 3 is Just (Just Nothing), etc
2021-01-02 20:17:02 +0100 <tomsmeding> these are of type Maybe Void, Maybe (Maybe Void), Maybe (Maybe (Maybe Void)), etc
2021-01-02 20:17:10 +0100 <tomsmeding> where a closed expression is of type Term Void
2021-01-02 20:17:43 +0100 <tomsmeding> assuming you're talking about superstar64's Term thing
2021-01-02 20:18:11 +0100rsoeldner_(~rsoeldner@2a02:8108:973f:eb38:5b7:e16e:247:b5fe)
2021-01-02 20:19:01 +0100 <tomsmeding> the syntax under "Formal definition" on the wiki page even has the constructors in the same order as Term :)
2021-01-02 20:19:20 +0100benjamingr__(uid23465@gateway/web/irccloud.com/x-jmrkejpitddinbuk)
2021-01-02 20:19:25 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 264 seconds)
2021-01-02 20:21:00 +0100 <MrMuffles[m]> Oh ok I think I see, so the Maybe is just the haskell way to encode de Bruijn indices. Need to understand them better
2021-01-02 20:22:06 +0100 <rsoeldner_> Someone using eglot with hls ?
2021-01-02 20:22:52 +0100 <gentauro> 20:13 < tomsmeding> that's an interesting encoding of De Bruijn indices
2021-01-02 20:22:56 +0100 <gentauro> what code?
2021-01-02 20:23:09 +0100 <tomsmeding> gentauro: https://ircbrowse.tomsmeding.com/browse/haskell?id=231924&timestamp=1609614300#t1609614300
2021-01-02 20:23:30 +0100 <tomsmeding> though that should be Lambda (Term (Maybe x))
2021-01-02 20:24:12 +0100 <b4er> Wait, what's with the Maybe in that type?
2021-01-02 20:25:06 +0100 <tomsmeding> it's irregular recursion :)
2021-01-02 20:25:41 +0100 <b4er> If you use `Maybe (... Maybe Void)..)` should it not be a GADT?
2021-01-02 20:25:51 +0100 <gentauro> tomsmeding: why the `maybe` in `Lambda`?
2021-01-02 20:25:57 +0100 <tomsmeding> well this works and is not a GADT
2021-01-02 20:26:01 +0100 <b4er> I don't see how App works in this case
2021-01-02 20:26:06 +0100 <tomsmeding> gentauro: read Lambda (Term (Maybe x)), not Lambda (Maybe x)
2021-01-02 20:26:14 +0100 <tomsmeding> b4er: App?
2021-01-02 20:26:24 +0100 <b4er> s/App/Call
2021-01-02 20:26:45 +0100 <gentauro> 20:07 < exarkun> so maybe a haskell-implemented hash is still not possible
2021-01-02 20:26:52 +0100 <gentauro> exarkun: it is, but it's slower that the FFI
2021-01-02 20:27:02 +0100 <gentauro> if you want to write a paper, you might go for the `pure` version
2021-01-02 20:27:13 +0100 <tomsmeding> '\f. \x. f x' would be written Lambda (Lambda (Call (Variable (Just Nothing)) (Variable Nothing)))
2021-01-02 20:27:16 +0100 <gentauro> but if you need to `hash` million of strings, you might want to use the FFI
2021-01-02 20:27:39 +0100 <tomsmeding> if you understand de bruijn indices, that should enlighten :)
2021-01-02 20:27:48 +0100 <gentauro> 20:26 < tomsmeding> gentauro: read Lambda (Term (Maybe x)), not Lambda (Maybe x)
2021-01-02 20:27:51 +0100 <gentauro> got it
2021-01-02 20:28:05 +0100 <b4er> Ok, I'm not exactly sure what I was thinking, yeah
2021-01-02 20:29:35 +0100Goldio(uid478328@gateway/web/irccloud.com/x-nzbyntkcrovquvlb)
2021-01-02 20:29:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-01-02 20:30:11 +0100geekosaur(ac3a8f5d@172.58.143.93)
2021-01-02 20:30:40 +0100 <superstar64> i also remember it being possible to define a monad instance for term, but i can't remember what it does
2021-01-02 20:30:42 +0100 <tomsmeding> this models the untyped lambda calculus; if you want the typed lambda calculus, then you'll have to use a GADT with some kind of type-level list for the environment
2021-01-02 20:31:36 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-02 20:31:44 +0100kam1(~kam1@24.231.108.143)
2021-01-02 20:33:39 +0100 <b4er> superstar64, substitution which is capture-avoiding iirc
2021-01-02 20:33:58 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 265 seconds)
2021-01-02 20:34:52 +0100 <b4er> This talk reminds me... I should still be reading *de Bruijn notation as a nested datatype* from y'day
2021-01-02 20:34:53 +0100Entertainment(~entertain@104.246.132.210) ()
2021-01-02 20:35:03 +0100Entertainment(~entertain@104.246.132.210)
2021-01-02 20:35:08 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89)
2021-01-02 20:35:21 +0100 <boxscape> which do you suppose is the more common abbreviation for a lambda abstraction, Abs or Lam?
2021-01-02 20:35:35 +0100 <b4er> Abs
2021-01-02 20:35:39 +0100 <merijn> b4er: Pedantic side-note: The proper capitalisation without a first name is De Bruijn :p
2021-01-02 20:35:47 +0100 <boxscape> okay
2021-01-02 20:36:41 +0100 <b4er> merijn, are you sure? I have the paper open and the title is that way :S
2021-01-02 20:36:59 +0100 <b4er> boxscape, it might depend on the demographic though.
2021-01-02 20:37:05 +0100 <boxscape> that makes sense
2021-01-02 20:37:14 +0100 <merijn> b4er: I'm on a quixotic quest to correct every computer scientist that keeps citing it as "de Bruijn" :p
2021-01-02 20:37:29 +0100 <tomsmeding> b4er: author of the paper is probably not Dutch
2021-01-02 20:37:36 +0100 <gentauro> merijn: is that some "Spanish heritage"?
2021-01-02 20:37:38 +0100 <tomsmeding> or perhaps they are, even Dutch people get this wrong :p
2021-01-02 20:37:42 +0100 <gentauro> the "De …" part?
2021-01-02 20:37:47 +0100 <gentauro> like "De la Vega"?
2021-01-02 20:37:50 +0100howdoi(uid224@gateway/web/irccloud.com/x-mualtkqzycyradrx)
2021-01-02 20:37:54 +0100 <__monty__> Dutch capitalization rules for names are weird.
2021-01-02 20:37:57 +0100 <tomsmeding> I think it's French, but then both come from Latin :p
2021-01-02 20:37:58 +0100 <merijn> b4er: That's because in a "full" name like "N. de Bruijn" on papers it's lowercase, but in Dutch orthography first letters of names are always capitalised :p
2021-01-02 20:38:10 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2021-01-02 20:38:21 +0100rowbee(~augh@theguntretort.com) (Remote host closed the connection)
2021-01-02 20:38:29 +0100 <merijn> __monty__: They're perfectly consistent! It's not our fault you weird Flemish guys get confused! :p
2021-01-02 20:38:43 +0100 <gentauro> iirc my history lessons from school/highschool both Belgium and The Netherlands were under Spain for a long period right?
2021-01-02 20:38:49 +0100 <gentauro> so maybe something stook :)
2021-01-02 20:38:55 +0100 <b4er> merijn, do you have a Wikipedia account because there you'll need to change quite a few articles
2021-01-02 20:38:56 +0100 <merijn> gentauro: "de" is just "the" in Dutch :p
2021-01-02 20:39:02 +0100 <gentauro> merijn: xD
2021-01-02 20:39:20 +0100 <merijn> b4er: Oh, I know. Almost every non-Dutch computer scientist in programmaning languages gets it wrong :p
2021-01-02 20:39:23 +0100 <b4er> The whole list of "De Bruijn" people are all spelled "Xyz de Bruijn"
2021-01-02 20:39:26 +0100 <boxscape> so it's like "Nick the Brown" but "The Brown" without Nick?
2021-01-02 20:39:55 +0100 <merijn> boxscape: Pretty much
2021-01-02 20:39:58 +0100 <boxscape> I see
2021-01-02 20:40:10 +0100 <exarkun> gentauro: Let's say I'm prototyping something and I don't want to write any C yet
2021-01-02 20:40:41 +0100 <merijn> boxscape: In Flanders they tend to capitalise it always, so "Nick The Brown", in Dutch it's lowercase but the "first letter of names are capitalised" rule trumps that
2021-01-02 20:40:44 +0100 <__monty__> gentauro: While true, we never spoke Spanish, as opposed to French which was the fancy rich people language. In Flemish the "de" is only lowercase if it's part of a noble family name.
2021-01-02 20:40:51 +0100 <boxscape> okay
2021-01-02 20:40:51 +0100 <gentauro> exarkun: which hashes are you aiming at?
2021-01-02 20:41:22 +0100 <gentauro> iirc most modern processors have some instructions that normally FFI libs just call
2021-01-02 20:41:23 +0100 <exarkun> gentauro: SHA256d
2021-01-02 20:41:30 +0100 <gentauro> it's pretty diffucult to beat that …
2021-01-02 20:41:33 +0100 <merijn> boxscape: Incidentally you can see the Dutch early immigrants to the US from names like "van der Bilt" turning into "Vanderbilt"
2021-01-02 20:41:58 +0100 <gentauro> exarkun: and trust me, I tried ;) http://blog.stermon.com/articles/2018/08/10/haskell-safe-sha1-only-depending-on-prelude.html
2021-01-02 20:42:00 +0100 <boxscape> hm ok
2021-01-02 20:42:12 +0100gentauroit's almost trivial to got from SHA-1 to SHA-2 ;)
2021-01-02 20:42:20 +0100 <merijn> This was your annual scheduled class on Dutch naming ;)
2021-01-02 20:42:42 +0100 <boxscape> I already look forward to 2022-01-02
2021-01-02 20:42:43 +0100 <b4er> The Wikipedia article on De Bruijn indices is not even consistent :S
2021-01-02 20:42:53 +0100 <merijn> exarkun: cryptonite has implementations of basically every hash you know and a whole bunch you don't ;)
2021-01-02 20:43:00 +0100 <gentauro> exarkun: remember to use these test cases with your implementation -> https://csrc.nist.gov/projects/cryptographic-algorithm-validation-program/secure-hashing
2021-01-02 20:43:05 +0100 <exarkun> merijn: I didn't see sha256d
2021-01-02 20:43:06 +0100 <tomsmeding> b4er: lol true
2021-01-02 20:43:15 +0100 <merijn> exarkun: I'm pretty sure that's in there
2021-01-02 20:43:37 +0100 <b4er> Consistently get it wrong (x)or right, not both that's even worse imo
2021-01-02 20:43:44 +0100 <merijn> exarkun: https://hackage.haskell.org/package/cryptonite-0.27/docs/Crypto-Hash-Algorithms.html#t:SHA256
2021-01-02 20:43:47 +0100 <exarkun> merijn: if you have a link that would be really helpful, thanks
2021-01-02 20:43:49 +0100 <__monty__> gentauro: Nitpick, base and the prelude aren't equivalent.
2021-01-02 20:44:00 +0100 <gentauro> exarkun: isn't `sha256d` just `sha256 . sha256`?
2021-01-02 20:44:09 +0100 <exarkun> merijn: That's SHA256. I was planning to use that for SHA256d, for sure.
2021-01-02 20:44:23 +0100 <gentauro> __monty__: good point ;)
2021-01-02 20:44:25 +0100 <exarkun> gentauro: It isn't "just" that but it's awfully cloes, sure
2021-01-02 20:44:28 +0100 <exarkun> close
2021-01-02 20:44:51 +0100 <exarkun> gentauro: `hash xs :: Digest SHA256d` would be a very convenient way to spell it
2021-01-02 20:44:58 +0100 <merijn> exarkun: ah, I missed that the d would be part of the name
2021-01-02 20:45:14 +0100 <exarkun> gentauro: instead of breaking the pattern and needing two codepaths to support "any other hash" and "sha256d".
2021-01-02 20:45:47 +0100 <merijn> exarkun: If you have an existing C FFI it should be fairly trivial to implement your own bindings that work with that API
2021-01-02 20:45:49 +0100 <exarkun> Also half the point is just to help me learn more stuff about haskell. Getting as far as I did so far, I used `forall` for the first time, which was a useful end in itself.
2021-01-02 20:45:56 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 240 seconds)
2021-01-02 20:45:56 +0100 <exarkun> merijn: I don't
2021-01-02 20:46:10 +0100 <exarkun> merijn: but I have cryptonite's sha256
2021-01-02 20:46:41 +0100 <exarkun> But I don't see how to implement hashInternalFinalize from Haskell
2021-01-02 20:46:58 +0100 <exarkun> because I can't take the (Digest SHA256) out of the (Ptr (Digest SHA256)
2021-01-02 20:47:00 +0100 <exarkun> )
2021-01-02 20:47:05 +0100 <merijn> Sure you can
2021-01-02 20:47:13 +0100 <merijn> Well, maybe
2021-01-02 20:47:17 +0100 <merijn> is Digest Storable?
2021-01-02 20:47:24 +0100 <exarkun> ghc tells me no.
2021-01-02 20:47:36 +0100 <exarkun> I naively tried peek and poke already
2021-01-02 20:47:38 +0100 <merijn> hmm, it's not
2021-01-02 20:48:47 +0100 <tomsmeding> ByteArrayAccess seems to allow reading the thing with arbitrary type punning?
2021-01-02 20:48:59 +0100 <merijn> tomsmeding: You need a Digest for that
2021-01-02 20:49:04 +0100 <merijn> Not a Ptr to a Digest
2021-01-02 20:49:18 +0100 <tomsmeding> that's the third time I fuck up today
2021-01-02 20:49:34 +0100 <exarkun> tomsmeding: Only third? What is it, 1am there?
2021-01-02 20:49:40 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta)
2021-01-02 20:49:42 +0100 <exarkun> otherwise I'm envious
2021-01-02 20:49:50 +0100 <tomsmeding> 20:49, I'm Dutch ;)
2021-01-02 20:50:03 +0100 <tomsmeding> but with "third time" I meant in this channel
2021-01-02 20:52:06 +0100Hamid(907a6cf6@907a6cf6.drm.metu.edu.tr)
2021-01-02 20:52:17 +0100 <Hamid> Hello
2021-01-02 20:52:30 +0100HamidGuest91844
2021-01-02 20:52:33 +0100 <boxscape> hi
2021-01-02 20:52:57 +0100 <Guest91844> Can you recommend me a nice and friendly IDE for haskell?
2021-01-02 20:53:02 +0100p-core(~Thunderbi@koleje-wifi-0045.koleje.cuni.cz)
2021-01-02 20:54:03 +0100 <boxscape> as far as I know the most friendly setup is VSCode + Haskell Language server, but I haven't tried it myself https://medium.com/@dogwith1eye/setting-up-haskell-in-vs-code-with-stack-and-the-ide-engine-81d49e…
2021-01-02 20:54:06 +0100Guest91844(907a6cf6@907a6cf6.drm.metu.edu.tr) (Remote host closed the connection)
2021-01-02 20:54:18 +0100 <tomsmeding> heh
2021-01-02 20:57:28 +0100Entertainment(~entertain@104.246.132.210) (Ping timeout: 246 seconds)
2021-01-02 20:59:07 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Read error: Connection reset by peer)
2021-01-02 20:59:40 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-01-02 21:00:59 +0100rowbee(~augh@theguntretort.com)
2021-01-02 21:01:27 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta) (Read error: Connection reset by peer)
2021-01-02 21:01:46 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta)
2021-01-02 21:02:21 +0100 <merijn> Personally I just recommend "whatever text editor you currently prefer"
2021-01-02 21:03:44 +0100 <dsal> That's also my preference.
2021-01-02 21:03:51 +0100knupfer(~Thunderbi@200116b824cbdc00c813c0fffe26bde0.dip.versatel-1u1.de)
2021-01-02 21:04:17 +0100 <Rembane> Same here
2021-01-02 21:04:25 +0100Franciman(~francesco@host-95-250-152-231.retail.telecomitalia.it) (Ping timeout: 265 seconds)
2021-01-02 21:04:26 +0100 <tomsmeding> unless you want a "nice and friendly IDE"
2021-01-02 21:04:33 +0100knupfer(~Thunderbi@200116b824cbdc00c813c0fffe26bde0.dip.versatel-1u1.de) (Client Quit)
2021-01-02 21:04:40 +0100Varis(~Tadas@unaffiliated/varis) (Ping timeout: 256 seconds)
2021-01-02 21:04:45 +0100knupfer(~Thunderbi@200116b824cbdc0061816201305a90f6.dip.versatel-1u1.de)
2021-01-02 21:04:46 +0100 <aplainzetakind> ghcid is a thing, so it may need mentioning.
2021-01-02 21:04:49 +0100 <tomsmeding> or is your point that you can't get that anyway currently :p
2021-01-02 21:04:58 +0100 <tomsmeding> aplainzetakind: that _is_ true
2021-01-02 21:05:21 +0100 <merijn> tomsmeding: My point is that there is no "easy" way to get an IDE, even VSCode is kind of a hassle (judging by the number of questions)
2021-01-02 21:05:45 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 240 seconds)
2021-01-02 21:05:54 +0100 <tomsmeding> (in case any ghcide/hls/... people are reading: the software is amazing, but newcomers from Java expect something different)
2021-01-02 21:05:58 +0100 <merijn> So *if* you already have an established editor preference, I'd recommend just sticking with that (and maybe trying to get ghcide/hls working with your current editors LSP support)
2021-01-02 21:06:12 +0100 <tomsmeding> fair
2021-01-02 21:06:18 +0100vs^(vs@ip98-184-89-2.mc.at.cox.net) ()
2021-01-02 21:06:35 +0100 <merijn> If you don't have a preference, sure maybe try VSCode or something
2021-01-02 21:06:59 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
2021-01-02 21:08:06 +0100 <b4er> If you don't have a favourite editor let me suggest `ed`, while it doesn't do syntax highlighting it is super convenient
2021-01-02 21:09:11 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving)
2021-01-02 21:09:38 +0100 <Melanie> I use VSCode and the precompiled HLS binaries, it works fine on most OSes but older ones you may need to compile the lanserv yourself
2021-01-02 21:10:07 +0100Varis(~Tadas@unaffiliated/varis)
2021-01-02 21:10:07 +0100 <b4er> On a more serious note, I'd make sure that you have at least `hlint` some way or another integrated in your editor. Its suggestions are quite useful
2021-01-02 21:13:53 +0100Franciman(~francesco@host-95-250-152-231.retail.telecomitalia.it)
2021-01-02 21:13:54 +0100 <ph88_> hey guys i used this command: stack build --executable-profiling and then stack exec -- myprogram +RTS -xc ... but i get an error that i didnt build with prof flag .. how can i fix this situation ?
2021-01-02 21:14:03 +0100cads(~cads@ip-64-72-99-232.lasvegas.net)
2021-01-02 21:15:02 +0100 <tomsmeding> stack run --profile myprogram -- +RTS -xc
2021-01-02 21:15:20 +0100 <tomsmeding> I think
2021-01-02 21:15:50 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-01-02 21:15:53 +0100 <shinobi> I think I see where my problem is for understanding applicative ((->) r). I can perform [(+100)] <*> [200] and get a result of [300], as expected. However, (+3) <*> (5) yields an error. I don't understand why.
2021-01-02 21:15:59 +0100Jeanne-Kamikaze(~Jeanne-Ka@static-198-54-134-164.cust.tzulo.com)
2021-01-02 21:16:12 +0100tsrt^(tsrt@ip98-184-89-2.mc.at.cox.net)
2021-01-02 21:16:34 +0100 <tomsmeding> shinobi: what are the types of (+3) and of 5? What is, then, type type of <*>?
2021-01-02 21:16:34 +0100 <boxscape> % :t (<*>)
2021-01-02 21:16:34 +0100 <yahb> boxscape: Applicative f => f (a -> b) -> f a -> f b
2021-01-02 21:16:46 +0100 <tomsmeding> does that match what boxscape just got out of yahb? :)
2021-01-02 21:16:52 +0100pragma-(~chaos@unaffiliated/pragmatic-chaos) ("Bye!")
2021-01-02 21:18:13 +0100 <b4er> :t (<*>) @[]
2021-01-02 21:18:15 +0100 <lambdabot> error:
2021-01-02 21:18:15 +0100 <lambdabot> Pattern syntax in expression context: (<*>)@[]
2021-01-02 21:18:15 +0100 <lambdabot> Did you mean to enable TypeApplications?
2021-01-02 21:18:23 +0100 <b4er> :t (<*>) @((->) _)
2021-01-02 21:18:24 +0100 <lambdabot> error: parse error on input ‘->’
2021-01-02 21:18:27 +0100 <boxscape> you'll need yahb for TypeApplications
2021-01-02 21:18:30 +0100 <tomsmeding> % :t (<*>) @[]
2021-01-02 21:18:31 +0100 <yahb> tomsmeding: [a -> b] -> [a] -> [b]
2021-01-02 21:18:40 +0100 <merijn> b4er: Use `asAppliedTo` :p
2021-01-02 21:18:47 +0100 <b4er> Why does lambdabot not have TypeApplications :S
2021-01-02 21:18:53 +0100 <merijn> :t (<*>) `asAppliedTo` []
2021-01-02 21:18:54 +0100 <lambdabot> [a -> b] -> [a] -> [b]
2021-01-02 21:19:50 +0100 <boxscape> shinobi can you see what a, b, and f are in <*>'s type signature for [(+100)] <*> [200]?
2021-01-02 21:20:47 +0100 <shinobi> :t (+3)
2021-01-02 21:20:49 +0100 <lambdabot> Num a => a -> a
2021-01-02 21:20:56 +0100 <shinobi> that is what I expect
2021-01-02 21:21:03 +0100p3n(~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-02 21:21:04 +0100 <shinobi> :t (5)
2021-01-02 21:21:06 +0100 <lambdabot> Num p => p
2021-01-02 21:21:29 +0100 <shinobi> I was hoping this would be a function
2021-01-02 21:21:36 +0100 <tomsmeding> => does not indicate a function
2021-01-02 21:21:37 +0100 <boxscape> a function from what to what?
2021-01-02 21:21:50 +0100 <tomsmeding> it indicates that the thing on the left of the => is a constraint on the type to the right of the =>
2021-01-02 21:22:06 +0100p3n(~p3n@217.198.124.246)
2021-01-02 21:22:06 +0100 <shinobi> \_ -> 5
2021-01-02 21:22:24 +0100 <shinobi> I just want the constant function 5
2021-01-02 21:22:24 +0100 <tomsmeding> 'Num p => p' means "the type 'p', for all 'p' that have an instance of Num"
2021-01-02 21:22:30 +0100 <tomsmeding> :t const 5
2021-01-02 21:22:31 +0100 <lambdabot> Num a => b -> a
2021-01-02 21:22:35 +0100 <merijn> shinobi: Why would it be a function?
2021-01-02 21:22:42 +0100 <dminuoso>  A function is actually one interpretation that matches what GHC does internally. Num p => p could be thought of “taking a dictionary of Num p”
2021-01-02 21:22:53 +0100 <merijn> dminuoso: That is...almost certainly not helpful :p
2021-01-02 21:23:01 +0100dminuososhrugs
2021-01-02 21:23:03 +0100 <tomsmeding> it is, but that doesn't really help when trying to understand Applicative ((->) r) :p
2021-01-02 21:23:12 +0100merijnsmells "everything is a function"-fallacy :)
2021-01-02 21:23:41 +0100 <tomsmeding> makes one think, what would a "reader monad" over a particular constraint even mean
2021-01-02 21:23:45 +0100 <shinobi> I thought putting the 5 in () would make it \_ -> 5
2021-01-02 21:23:49 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-02 21:24:06 +0100 <dminuoso> tomsmeding: You could make that happen with ‘constraints’ easily :)
2021-01-02 21:24:12 +0100 <tomsmeding> shinobi: that's an effect specific to operators: https://wiki.haskell.org/Section_of_an_infix_operator
2021-01-02 21:24:28 +0100Tario(~Tario@201.192.165.173)
2021-01-02 21:24:31 +0100 <boxscape> though for operators it doesn't produce a constant function
2021-01-02 21:24:51 +0100 <boxscape> (+5) == \x -> x + 5
2021-01-02 21:25:06 +0100 <shinobi> :t (\_ -> 5)
2021-01-02 21:25:08 +0100 <lambdabot> Num p1 => p2 -> p1
2021-01-02 21:25:21 +0100 <shinobi> this seems like it could work with the above
2021-01-02 21:25:23 +0100 <dminuoso> tomsmeding: arguably, that’d be just a different way to encode tag less final, no?
2021-01-02 21:25:41 +0100 <tomsmeding> possibly, I'm afraid I have no idea :)
2021-01-02 21:26:01 +0100 <boxscape> shinobi "the above" being?
2021-01-02 21:26:52 +0100 <shinobi> A side question: Do the letters ghci chooses for types have any meaning? E.g. is a -> a different from p2 -> p1?
2021-01-02 21:27:02 +0100 <boxscape> tomsmeding since (I'm pretty sure) there's an equivalence between `c => t` and `Dict c -> t`, I suppose you should be able to think of it as a reader monad over Dict c
2021-01-02 21:27:24 +0100 <tomsmeding> boxscape: from briefly looking at the 'constraints' haddocks, yes that makes sense
2021-01-02 21:27:25 +0100 <hpc> they're just variable names
2021-01-02 21:27:33 +0100 <merijn> shinobi: 'a -> a' is different from 'p2 -> p1', but not from 'p1 -> p1'
2021-01-02 21:27:34 +0100 <shinobi> (+3) <*> (\_ -> 5) doesn't work either
2021-01-02 21:27:43 +0100 <shinobi> what do the letters mean?
2021-01-02 21:28:02 +0100 <merijn> shinobi: Letters have no meaning besides "same variable names correspond to same type"
2021-01-02 21:28:07 +0100 <monochrom> They mean nothing. Arbitrary choice.
2021-01-02 21:28:13 +0100 <b4er> You might wanna expand (<*>)'s definition to see what you're actually doing
2021-01-02 21:28:26 +0100 <shinobi> b4er: how do I do that
2021-01-02 21:28:28 +0100 <hpc> shinobi: there are some conventions, but it's like how a generic function in math is called 'f'
2021-01-02 21:28:30 +0100 <merijn> shinobi: It *tries* to use letters based on the variable names in source code (or derived from them) but it's ultimately arbitrary
2021-01-02 21:29:04 +0100 <carter> sooo, when are teh Reverse and backwards Applicatives different?
2021-01-02 21:29:15 +0100 <b4er> You go to hackage, look up Applicative, find the instance you're working with and click the #-sign for source,
2021-01-02 21:29:18 +0100 <monochrom> "a" means arbitrary
2021-01-02 21:29:27 +0100 <monochrom> "b" means arbitary
2021-01-02 21:29:31 +0100 <hpc> well, you click "source" for source
2021-01-02 21:29:37 +0100 <hpc> "#" is a permalink
2021-01-02 21:29:39 +0100 <carter> (trying to figure out which one is correct for my needs)
2021-01-02 21:30:11 +0100 <boxscape> shinobi also try to look at the type of <*> and see what you would expect f, a, and b to be in that case, maybe that let's you see why it doesn't work
2021-01-02 21:30:22 +0100 <b4er> shinobi, here you go: https://hackage.haskell.org/package/base-4.14.1.0/docs/src/GHC.Base.html#line-973
2021-01-02 21:31:39 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2021-01-02 21:32:01 +0100 <carter> ohhh traverse f (Reverse t) =
2021-01-02 21:32:01 +0100 <carter> fmap Reverse . forwards $ traverse (Backwards . f) t
2021-01-02 21:32:11 +0100 <carter> Reverse uses Backwards for its traverse
2021-01-02 21:32:17 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Quit: vfaronov)
2021-01-02 21:32:33 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
2021-01-02 21:36:38 +0100b4er(~b4er@91.193.4.138) (Quit: bye!)
2021-01-02 21:36:47 +0100ces(~ces@fsf/member/ces)
2021-01-02 21:36:55 +0100b4er(~b4er@91.193.4.138)
2021-01-02 21:37:25 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Client Quit)
2021-01-02 21:37:29 +0100juuandyy(~juuandyy@90.166.144.65)
2021-01-02 21:37:42 +0100juuandyy(~juuandyy@90.166.144.65) (Client Quit)
2021-01-02 21:37:45 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
2021-01-02 21:38:48 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:ccd9:595d:1bc6:b87f)
2021-01-02 21:38:59 +0100 <shinobi> (<*>) f g x = f x (g x) It looks like x and (g x) is being applied to f. Am I reading this correctly?
2021-01-02 21:39:04 +0100v_m_v(~vm_v@2a02:aa12:3200:6480:5db7:7326:4789:d9fc) (Remote host closed the connection)
2021-01-02 21:39:16 +0100 <b4er> Yep.
2021-01-02 21:39:22 +0100v_m_v(~vm_v@2a02:aa12:3200:6480:5db7:7326:4789:d9fc)
2021-01-02 21:39:30 +0100 <c_wraith> Though usually we say functions are applied to arguments, rather than vice versa
2021-01-02 21:39:34 +0100 <shinobi> What if f only has 1 parameter
2021-01-02 21:39:39 +0100 <c_wraith> then it's a type error
2021-01-02 21:40:17 +0100 <c_wraith> :t negate
2021-01-02 21:40:19 +0100 <lambdabot> Num a => a -> a
2021-01-02 21:40:26 +0100 <c_wraith> Oh, too polymorphic. blah.
2021-01-02 21:40:41 +0100 <c_wraith> :t show <*> (+1)
2021-01-02 21:40:43 +0100 <lambdabot> error:
2021-01-02 21:40:43 +0100 <lambdabot> • Couldn't match type ‘[Char]’ with ‘a -> b’
2021-01-02 21:40:43 +0100 <lambdabot> Expected type: a -> a -> b
2021-01-02 21:40:48 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:ccd9:595d:1bc6:b87f) (Client Quit)
2021-01-02 21:40:49 +0100 <c_wraith> see? type error
2021-01-02 21:41:05 +0100 <monochrom> f x (g x) = (f x) (g x), too
2021-01-02 21:41:27 +0100ces(~ces@fsf/member/ces) (Client Quit)
2021-01-02 21:41:50 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Client Quit)
2021-01-02 21:43:57 +0100 <shinobi> monochrom: fair enough but what is the operation between (f x) (g x)?
2021-01-02 21:44:11 +0100 <monochrom> function application
2021-01-02 21:44:21 +0100 <monochrom> It's function applications all the way down.
2021-01-02 21:44:23 +0100 <ph88_> thanks tomsmeding
2021-01-02 21:45:30 +0100tp47(1f0a80ba@31-10-128-186.cgn.dynamic.upc.ch)
2021-01-02 21:48:35 +0100HenryCH(~henry@5.81.254.84.ftth.as8758.net) ()
2021-01-02 21:48:47 +0100Aloui(~Username@13.84.157.132)
2021-01-02 21:49:03 +0100Aloui(~Username@13.84.157.132) (Read error: Connection reset by peer)
2021-01-02 21:49:24 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-02 21:49:56 +0100superstar64(6ccefa7c@108-206-250-124.lightspeed.miamfl.sbcglobal.net) (Remote host closed the connection)
2021-01-02 21:49:57 +0100vfaronov(~Srain@broadband-95-84-210-78.ip.moscow.rt.ru)
2021-01-02 21:51:52 +0100vfaronov(~Srain@broadband-95-84-210-78.ip.moscow.rt.ru) (Remote host closed the connection)
2021-01-02 21:52:12 +0100kritzefitz(~kritzefit@212.86.56.80)
2021-01-02 21:57:16 +0100 <shinobi> Let me go back a bit. ((->) r) is an applicative. <*> has the type of: Applicative f => f (a -> b) -> f a -> f b. So I would expect ((->) r1) to have a value of a function of type (a -> b) and ((->) r2) to have a value of a. Am I correct so far?
2021-01-02 21:57:46 +0100recon_-(~quassel@208.87.96.9) (Quit: No Ping reply in 180 seconds.)
2021-01-02 21:58:53 +0100usr25(~usr25@unaffiliated/usr25) (Quit: Leaving)
2021-01-02 21:59:02 +0100recon_-(~quassel@2602:febc:0:b6::6ca2)
2021-01-02 21:59:52 +0100 <dminuoso> This reads quite confused.
2021-01-02 22:00:20 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2021-01-02 22:00:34 +0100 <shinobi> That's me right now
2021-01-02 22:00:43 +0100 <boxscape> I'm not quite sure what it means for ((->) r1) to have a value - The important takeaway is that for the ((->) r) instance, f is ((->) r), which means the type of (<*>) is (r -> (a -> b)) -> (r -> a) -> (r -> b)
2021-01-02 22:00:57 +0100 <b4er> Where do you get r1 and r2 from?
2021-01-02 22:01:31 +0100 <boxscape> (I just substituted f with (r ->), which would be the same as ((->) r) if it were valid syntax)
2021-01-02 22:01:39 +0100 <b4er> Once you use (<*>) for ((->)r) r is fix, you can use r, r1 etc. but they must be equivalent
2021-01-02 22:01:48 +0100vfaronov(~Srain@broadband-95-84-210-78.ip.moscow.rt.ru)
2021-01-02 22:01:48 +0100 <dminuoso> shinobi: In the type of <*> we have two arguments f (a -> b) and f a. If we set f ~ ((->) Int), then the type of (<*>) becomes (Int -> a -> b) -> Int a -> Int b
2021-01-02 22:01:57 +0100 <dminuoso> Does this make sense?
2021-01-02 22:02:06 +0100 <dminuoso> Oh
2021-01-02 22:02:07 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2021-01-02 22:02:27 +0100 <dminuoso> shinobi: In the type of <*> we have two arguments f (a -> b) and f a. If we set f ~ ((->) Int), then the type of (<*>) becomes (Int -> a -> b) -> (Int -> a) -> Int -> b
2021-01-02 22:02:37 +0100 <dminuoso> Sorry! Typing on this iPad is slightly different. :)
2021-01-02 22:03:20 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit)
2021-01-02 22:03:44 +0100vfaronov(~Srain@broadband-95-84-210-78.ip.moscow.rt.ru) (Remote host closed the connection)
2021-01-02 22:03:58 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:ccd9:595d:1bc6:b87f)
2021-01-02 22:04:02 +0100notzmv(~user@unaffiliated/zmv) (Remote host closed the connection)
2021-01-02 22:04:12 +0100 <shinobi> yes, that makes sense
2021-01-02 22:04:35 +0100vfaronov(~Srain@broadband-95-84-210-78.ip.moscow.rt.ru)
2021-01-02 22:05:04 +0100notzmv(~user@unaffiliated/zmv)
2021-01-02 22:05:22 +0100vfaronov(~Srain@broadband-95-84-210-78.ip.moscow.rt.ru) (Remote host closed the connection)
2021-01-02 22:05:41 +0100 <shinobi> That's just the type though.
2021-01-02 22:05:54 +0100Deide(~Deide@217.155.19.23)
2021-01-02 22:06:18 +0100 <shinobi> for <*> It will apply x to f and apply x to g? Then compose?
2021-01-02 22:06:44 +0100 <b4er> s/compose/apply
2021-01-02 22:08:00 +0100 <dminuoso> shinobi: What this ends up doing depends on the instance. Assuming we even have an `instance Applicative ((->) r)` (which we do), then GHC will just use the implementation of (<*>) of that instance definition
2021-01-02 22:08:18 +0100vfaronov(~Srain@broadband-95-84-210-78.ip.moscow.rt.ru)
2021-01-02 22:08:53 +0100v_m_v(~vm_v@2a02:aa12:3200:6480:5db7:7326:4789:d9fc) (Remote host closed the connection)
2021-01-02 22:08:56 +0100 <b4er> Maybe this exmple helps: (mult <*> succ) 2 ≡ mult 2 (succ 2) ≡ mult 2 3 ≡ 6
2021-01-02 22:08:57 +0100 <b4er> ?
2021-01-02 22:10:15 +0100 <shinobi> let me digest a moment
2021-01-02 22:10:34 +0100 <shinobi> It makes sense at the surface... still digesting
2021-01-02 22:12:27 +0100notzmv(~user@unaffiliated/zmv) (Remote host closed the connection)
2021-01-02 22:13:15 +0100 <shinobi> so mult needs 2 parameters to begin with. succ only needs one. Applying the two will partially apply the mult fuction and generate a value for the second. Then it will apply the two. ??
2021-01-02 22:14:25 +0100 <dminuoso> shinobi: Given the above type signature, try to implement a function of type ‘fun :: (Int -> a -> b) -> (Int -> a) -> Int -> b`
2021-01-02 22:15:00 +0100 <dminuoso> Stare at the type signature, write a function taking as many arguments, and implement it some sensible way. When done, lets look at your implementation
2021-01-02 22:15:16 +0100 <dminuoso> (Yes I intentionally do not state what this would do, just let the types guide you)
2021-01-02 22:15:21 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Quit: Connection closed)
2021-01-02 22:16:08 +0100 <b4er> Does it need to terminate ;P
2021-01-02 22:16:38 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds)
2021-01-02 22:19:11 +0100 <MrMuffles[m]> Is there an algorithm to find free variables of a lambda expression?
2021-01-02 22:19:13 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
2021-01-02 22:20:42 +0100 <dminuoso> MrMuffles[m]: Are you writing your own binding solution, or do you use something like unbound?
2021-01-02 22:20:43 +0100 <monochrom> Could you find all variables? Could you find all bound variables? Could you handle name clashes and shadowing? Then you just subtract.
2021-01-02 22:22:38 +0100 <MrMuffles[m]> dminuoso would a binding solution just be the inverse of identifying free variable? I'm doing this in clojure, tbh, and not sure yet what tools I have
2021-01-02 22:23:25 +0100 <dminuoso> MrMuffles[m]: I don’t know the entirety of your problem you are dealing with.
2021-01-02 22:23:33 +0100Forlorn(~Forlorn@unaffiliated/forlorn) (Quit: leaving)
2021-01-02 22:23:37 +0100hiroaki(~hiroaki@2a02:908:4b18:8c40::4b02) (Ping timeout: 272 seconds)
2021-01-02 22:24:16 +0100kam1(~kam1@24.231.108.143) (Ping timeout: 246 seconds)
2021-01-02 22:25:15 +0100Forlorn(~Forlorn@unaffiliated/forlorn)
2021-01-02 22:25:45 +0100 <MrMuffles[m]> Basically I'm curious if I can take a clojure expression (list) and generate the input parameters (free variables) for a macro for that expression
2021-01-02 22:26:37 +0100son0p(~son0p@181.136.122.143) (Ping timeout: 264 seconds)
2021-01-02 22:27:29 +0100worc3131(~quassel@2a02:c7f:dcc4:6500:cf0e:3346:8766:ab20) (Remote host closed the connection)
2021-01-02 22:28:03 +0100son0p(~son0p@181.136.122.143)
2021-01-02 22:31:29 +0100dfeuer(~dfeuer@pool-108-18-223-60.washdc.fios.verizon.net)
2021-01-02 22:32:30 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89)
2021-01-02 22:33:05 +0100ech(~user@gateway/tor-sasl/ech)
2021-01-02 22:34:27 +0100knupfer(~Thunderbi@200116b824cbdc0061816201305a90f6.dip.versatel-1u1.de) (Ping timeout: 268 seconds)
2021-01-02 22:34:37 +0100rsoeldner_(~rsoeldner@2a02:8108:973f:eb38:5b7:e16e:247:b5fe) (Remote host closed the connection)
2021-01-02 22:34:54 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f) (Remote host closed the connection)
2021-01-02 22:36:02 +0100 <MrMuffles[m]> > Could you find all variables? Could you find all bound variables? Could you handle name clashes and shadowing? Then you just subtract.
2021-01-02 22:36:03 +0100 <MrMuffles[m]> Well I guess that's pretty much it :P
2021-01-02 22:36:05 +0100 <lambdabot> <hint>:1:135: error:
2021-01-02 22:36:05 +0100 <lambdabot> <hint>:1:135: error:
2021-01-02 22:36:05 +0100 <lambdabot> parse error (possibly incorrect indentation or mismatched brackets)
2021-01-02 22:36:12 +0100knupfer(~Thunderbi@87.123.206.117)
2021-01-02 22:36:17 +0100 <b4er> Uhm, that comment from diminuoso made me think a bit.. Is there only one instance of `a -> a` (ie. `id`)?
2021-01-02 22:36:24 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-02 22:36:51 +0100 <boxscape> there's only one non-bottom function of that type, yes
2021-01-02 22:36:56 +0100cheater(~user@unaffiliated/cheater)
2021-01-02 22:37:03 +0100 <Rembane> b4er: Can you name a second one? :)
2021-01-02 22:37:05 +0100 <b4er> That's what I meant, yeah
2021-01-02 22:37:37 +0100 <b4er> No, but I can prove that a non-terminating function `a -> unit` is equal to `id` but I cannot do the same with `a -> a` (in Isabelle/HOL)
2021-01-02 22:37:56 +0100 <b4er> That's what is tripping me up..
2021-01-02 22:38:02 +0100 <Rembane> b4er: But `a -> unit` is not `a -> a`.
2021-01-02 22:38:23 +0100 <Rembane> b4er: How do you prove it btw?
2021-01-02 22:38:35 +0100Goldio(uid478328@gateway/web/irccloud.com/x-nzbyntkcrovquvlb) (Quit: Connection closed for inactivity)
2021-01-02 22:38:36 +0100 <boxscape> don't you need function extensionality to prove that?
2021-01-02 22:38:37 +0100 <b4er> Ah, sorry. Same with `unit -> unit` really
2021-01-02 22:38:49 +0100 <b4er> Isabelle/HOL has functional extensionality yeah
2021-01-02 22:38:54 +0100 <boxscape> hm, okay
2021-01-02 22:39:27 +0100 <Rembane> Got it.
2021-01-02 22:39:45 +0100Lycurgus(~niemand@cpe-45-46-139-165.buffalo.res.rr.com) (Ping timeout: 240 seconds)
2021-01-02 22:40:05 +0100v_m_v(~vm_v@2a02:aa12:3200:6480:14d3:e041:99da:4fe5)
2021-01-02 22:40:07 +0100usr25(~usr25@unaffiliated/usr25)
2021-01-02 22:40:14 +0100 <gentauro> I have never heard of this language before now. If anybody have heard about it, how much is "marketing/BS"? https://www.ponylang.io/discover/#what-makes-pony-different
2021-01-02 22:40:15 +0100 <Rembane> `unit -> unit` is a concrete instance of `a -> a` though.
2021-01-02 22:41:14 +0100 <Rembane> gentauro: Pony is cool, there's a podcast about someone using it for really high performance stuff: https://corecursive.com/055-unproven-with-sean-allen/
2021-01-02 22:41:39 +0100 <shinobi> dminuoso: fun :: (Int -> a -> b) -> (Int -> a) -> Int -> b \n
2021-01-02 22:41:39 +0100 <shinobi> fun f g x = f x (g x)
2021-01-02 22:42:57 +0100pavonia(~user@unaffiliated/siracusa)
2021-01-02 22:42:58 +0100knupfer1(~Thunderbi@200116b824cbdc0041d19ba065e80d02.dip.versatel-1u1.de)
2021-01-02 22:42:59 +0100knupfer(~Thunderbi@87.123.206.117) (Read error: Connection reset by peer)
2021-01-02 22:42:59 +0100knupfer1knupfer
2021-01-02 22:43:09 +0100knupfer(~Thunderbi@200116b824cbdc0041d19ba065e80d02.dip.versatel-1u1.de) (Client Quit)
2021-01-02 22:43:19 +0100knupfer(~Thunderbi@200116b824cbdc009ded78f9657295f0.dip.versatel-1u1.de)
2021-01-02 22:43:33 +0100 <b4er> If someone want to have a good laugh about a "language" that is probably solely marketing BS: https://blog.usejournal.com/monoids-to-groupoids-492c35105113?gi=17adacd5d88e
2021-01-02 22:44:17 +0100 <dminuoso> shinobi: There you go. Would you believe, that this implementation works for any other type than Int? I.e. that its independent of the choice whether you replace Int with say Bool?
2021-01-02 22:46:43 +0100 <gentauro> b4er: is it somekind of "Aprils Fool"?
2021-01-02 22:47:23 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2021-01-02 22:47:42 +0100 <shinobi> I see where you're going. Isn't <*> supposed to return another applicative though?
2021-01-02 22:48:04 +0100 <gentauro> b4er: the `multix.ai` makes me think that the hole blogpost + slides is made by some AI …
2021-01-02 22:48:33 +0100 <dminuoso> shinobi: I suggest losing the notion of “a Applicative” as something on the value level perhaps
2021-01-02 22:48:42 +0100 <dminuoso> If you look at the type signature again, you will see:
2021-01-02 22:48:45 +0100dandart(~Thunderbi@home.dandart.co.uk) (Ping timeout: 240 seconds)
2021-01-02 22:49:01 +0100 <gentauro> b4er: def generated by AI: https://multix.sfo2.cdn.digitaloceanspaces.com/Category%20Theory%20TallCat.pdf (nobody would ever write this BS)
2021-01-02 22:49:05 +0100 <dminuoso> (Int -> a -> b) -> (Int -> a) -> Int -> b
2021-01-02 22:49:14 +0100 <dminuoso> If I add optional parens you get
2021-01-02 22:49:22 +0100 <dminuoso> (Int -> a -> b) -> (Int -> a) -> (Int -> b)
2021-01-02 22:49:52 +0100 <dminuoso> Do you see how you have two input things that each depend on an Int, and you produce something that itself depends on an Int?
2021-01-02 22:49:58 +0100 <shinobi> ok. so can you walk me through one example?
2021-01-02 22:50:07 +0100 <shinobi> yes
2021-01-02 22:50:15 +0100 <shinobi> I think... haha
2021-01-02 22:50:46 +0100geekosaur(ac3a8f5d@172.58.143.93) (Remote host closed the connection)
2021-01-02 22:51:37 +0100 <shinobi> (+) <$> (+3) <*> (*100) $ 5
2021-01-02 22:51:49 +0100machinedgod(~machinedg@24.105.81.50)
2021-01-02 22:51:52 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-02 22:51:56 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-01-02 22:53:04 +0100v_m_v(~vm_v@2a02:aa12:3200:6480:14d3:e041:99da:4fe5) (Remote host closed the connection)
2021-01-02 22:53:20 +0100v_m_v(~vm_v@2a02:aa12:3200:6480:14d3:e041:99da:4fe5)
2021-01-02 22:53:37 +0100usr25(~usr25@unaffiliated/usr25) ("Leaving")
2021-01-02 22:53:47 +0100 <b4er> gentauro, this video suggests otherwise: youtube.com/watch?v=hU8lG-R67Qg
2021-01-02 22:54:12 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:ccd9:595d:1bc6:b87f) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-02 22:55:21 +0100 <Uniaika> holy crap
2021-01-02 22:55:43 +0100 <Uniaika> I just saw someone send "=#" as an emoji on an IRC server
2021-01-02 22:55:58 +0100 <gentauro> =#
2021-01-02 22:55:58 +0100 <Uniaika> and my first reflex was "Hmm, I know this operator from somewhere…"
2021-01-02 22:56:12 +0100 <gentauro> Uniaika: what is it?
2021-01-02 22:56:12 +0100 <Uniaika> What have y'all done to me?!?!
2021-01-02 22:56:39 +0100 <kritzefitz> When I call a C function via FFI and the C code calls a Haskell function, is the inner Haskell function executed in a new thread as per myThreadId?
2021-01-02 22:56:48 +0100 <Uniaika> no bloody idea, gentauro
2021-01-02 22:57:16 +0100 <gentauro> b4er: I have tried to watch/listen to the video. I think I loose IQ for every word I hear … I better stop :(
2021-01-02 22:57:19 +0100 <merijn> kritzefitz: unspecified
2021-01-02 22:57:24 +0100 <boxscape> I'd say it's a person with two mouths and two bandaids placed over those mouths at a right angle
2021-01-02 22:57:52 +0100 <merijn> kritzefitz: I'd strongly recommend changing your code so that that question becomes irrelevant ;)
2021-01-02 22:58:59 +0100tp47(1f0a80ba@31-10-128-186.cgn.dynamic.upc.ch) (Remote host closed the connection)
2021-01-02 22:59:46 +0100 <gentauro> b4er: merijn: now I know how to pronounce De Bruijn :P https://youtu.be/hU8lG-R67Qg?t=1804 (30:04)
2021-01-02 22:59:59 +0100 <gentauro> b4er: this is `too much`, I'm going blind and deaf xD
2021-01-02 23:00:19 +0100 <kritzefitz> merijn, that seems to be the case.
2021-01-02 23:00:28 +0100 <gentauro> «@nythrox Yep this is applied category theory - if you are looking for the pure stuff you are better with the maths versions» The Catbox
2021-01-02 23:00:45 +0100 <merijn> gentauro: That is...rather off :p
2021-01-02 23:00:58 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-02 23:01:00 +0100 <b4er> Ahahahahaha, nice how we got a spelling and pronunciation class today
2021-01-02 23:01:52 +0100 <merijn> gentauro: This (minus microphone noise) is the right way: https://forvo.com/word/nicolaas_govert_de_bruijn/ :)
2021-01-02 23:01:54 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-01-02 23:01:58 +0100 <kritzefitz> Can I assume that two pieces of code (running on different or the same thread) run on the same OS thread if they run on the same capability as per threadCapability?
2021-01-02 23:02:23 +0100 <kritzefitz> (assuming both run on bounded threads)
2021-01-02 23:02:30 +0100 <merijn> kritzefitz: Maybe, although I'm not sure what's guaranteed
2021-01-02 23:02:47 +0100 <merijn> kritzefitz: tbh, you're in "eh, better look at the RTS source code" territory here :p
2021-01-02 23:03:15 +0100 <gentauro> merijn: I would expect more "throat" when hitting the "j"
2021-01-02 23:03:42 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:ccd9:595d:1bc6:b87f)
2021-01-02 23:03:46 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:ccd9:595d:1bc6:b87f) (Client Quit)
2021-01-02 23:03:50 +0100 <gentauro> I remember from when I went to Amsterdam, that the Dutch language has some "Danish sound word"
2021-01-02 23:04:05 +0100 <gentauro> so when we took the tram, I was turning around cos I though danes were talking
2021-01-02 23:04:15 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net)
2021-01-02 23:04:19 +0100Rudd0(~Rudd0@185.189.115.103)
2021-01-02 23:04:23 +0100 <boxscape> merijn is that also how to pronounce the ij in your name
2021-01-02 23:04:32 +0100 <boxscape> oh waitr
2021-01-02 23:04:35 +0100 <boxscape> that doesn't make sense
2021-01-02 23:04:38 +0100 <merijn> gentauro: Well, it's an archaic spelling, in modern Dutch it'd be spelled "bruin" rather than "bruijn" and it's pronounced just like the former now (now being, as "recent" as 1900s, possibly late 1800s)
2021-01-02 23:04:39 +0100 <boxscape> it's not meruijn
2021-01-02 23:04:47 +0100 <merijn> boxscape: See above ;)
2021-01-02 23:04:53 +0100 <boxscape> oh
2021-01-02 23:04:57 +0100 <boxscape> thanks
2021-01-02 23:05:08 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:ccd9:595d:1bc6:b87f)
2021-01-02 23:08:04 +0100 <shinobi> fmapping (+) over (+3) seems strange to me. Is this just building up an expression tree?
2021-01-02 23:08:33 +0100 <boxscape> % :t fmap (+) (+3)
2021-01-02 23:08:34 +0100 <yahb> boxscape: Num a => a -> a -> a
2021-01-02 23:10:52 +0100heatsink(~heatsink@2600:1700:bef1:5e10:81fd:2b8d:9354:7a4f)
2021-01-02 23:11:15 +0100 <Vulfe> which instance of fmap is this using
2021-01-02 23:11:20 +0100 <Vulfe> or rather, which Functor instance
2021-01-02 23:11:31 +0100 <koz_> Vulfe: ((->) a)
2021-01-02 23:11:35 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-01-02 23:11:36 +0100 <shinobi> ((->) r)
2021-01-02 23:11:42 +0100 <Vulfe> oh okay, sure
2021-01-02 23:12:57 +0100 <boxscape> shinobi I'
2021-01-02 23:12:59 +0100 <boxscape> whoops
2021-01-02 23:14:25 +0100 <boxscape> shinobi it's not quite clear to me what you mean by building up an expression tree, but here I personally also find looking at the type signature quite helpful
2021-01-02 23:14:26 +0100 <boxscape> % :t fmap @((->) Int)
2021-01-02 23:14:26 +0100 <yahb> boxscape: (a -> b) -> (Int -> a) -> Int -> b
2021-01-02 23:14:31 +0100 <boxscape> b in this case is (a -> a)
2021-01-02 23:14:40 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 246 seconds)
2021-01-02 23:14:46 +0100 <boxscape> so then it's (a -> (a -> a)) -> (Int -> a) -> Int -> (a -> a)
2021-01-02 23:16:00 +0100 <boxscape> the implementation would be
2021-01-02 23:16:15 +0100 <boxscape> fmap f g x y = f (g x) y
2021-01-02 23:16:21 +0100 <boxscape> I think?
2021-01-02 23:16:57 +0100 <boxscape> yes
2021-01-02 23:17:20 +0100 <kritzefitz> merijn, thanks. I guess I'll have to think about this a bit more.
2021-01-02 23:17:26 +0100v_m_v(~vm_v@2a02:aa12:3200:6480:14d3:e041:99da:4fe5) (Remote host closed the connection)
2021-01-02 23:18:49 +0100Foritus(~buggery@cpc91316-watf11-2-0-cust68.15-2.cable.virginm.net) (Ping timeout: 264 seconds)
2021-01-02 23:19:51 +0100 <Vulfe> it's a bit clearer to me if I write this as (pure (+)) <*> ... for whatever reason
2021-01-02 23:19:59 +0100 <shinobi> Yes, I agree. I may have not been stating is precisely. Since the above is left associative, the above would yield fmap (+) (+3) and I was trying to figure out what that means. Now I see it would be Num a => a -> a -> a . It would need an a to fully apply (+3) and need another a to fully apply (+)
2021-01-02 23:20:05 +0100Foritus(~buggery@cpc91316-watf11-2-0-cust68.15-2.cable.virginm.net)
2021-01-02 23:20:40 +0100 <boxscape> right
2021-01-02 23:25:58 +0100christo(~chris@81.96.113.213)
2021-01-02 23:30:16 +0100christo(~chris@81.96.113.213) (Ping timeout: 240 seconds)
2021-01-02 23:36:43 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Quit: Connection closed)
2021-01-02 23:37:23 +0100azure(~azure@36.79.200.71)
2021-01-02 23:37:47 +0100azureGuest63263
2021-01-02 23:38:01 +0100knupfer(~Thunderbi@200116b824cbdc009ded78f9657295f0.dip.versatel-1u1.de) (Ping timeout: 258 seconds)
2021-01-02 23:40:16 +0100zangi(~azure@36.79.200.71) (Ping timeout: 256 seconds)
2021-01-02 23:42:50 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89)
2021-01-02 23:45:40 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2021-01-02 23:46:01 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-02 23:47:02 +0100christo(~chris@81.96.113.213)
2021-01-02 23:47:26 +0100Tario(~Tario@201.192.165.173)
2021-01-02 23:50:19 +0100 <dminuoso> shinobi: One way to think of fmap is that it maps functions to functions.
2021-01-02 23:50:50 +0100 <dminuoso> For instance, it can be used to map functions working on Int to functions
2021-01-02 23:50:59 +0100 <dminuoso> Uh, Sorry,
2021-01-02 23:51:01 +0100yorick(~yorick@oftn/oswg-member/yorick) (Quit: reboot)
2021-01-02 23:51:07 +0100 <dminuoso> For instance, it can be used to map functions working on Int to functions working on lists of Int.
2021-01-02 23:51:33 +0100fendor_(~fendor@178.115.129.22.wireless.dyn.drei.com) (Remote host closed the connection)
2021-01-02 23:52:45 +0100dhil(~dhil@78.156.97.38)
2021-01-02 23:53:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-01-02 23:54:02 +0100yorick(~yorick@oftn/oswg-member/yorick)
2021-01-02 23:55:17 +0100hiroaki(~hiroaki@2a02:908:4b18:8c40::4b02)