2022/02/20

2022-02-20 00:00:37 +0100alx741(~alx741@157.100.197.240)
2022-02-20 00:04:52 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk)
2022-02-20 00:10:28 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2022-02-20 00:12:02 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Read error: Connection reset by peer)
2022-02-20 00:12:48 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2022-02-20 00:15:12 +0100modnar(~modnar@shell.sonic.net) (Quit: No Ping reply in 180 seconds.)
2022-02-20 00:16:25 +0100modnar(~modnar@shell.sonic.net)
2022-02-20 00:16:26 +0100lavaman(~lavaman@98.38.249.169)
2022-02-20 00:22:01 +0100michalz(~michalz@185.246.204.33) (Remote host closed the connection)
2022-02-20 00:22:25 +0100zer0bitz(~zer0bitz@2001:2003:f74d:b800:34e0:8b74:dd2c:1d62) (Ping timeout: 256 seconds)
2022-02-20 00:23:09 +0100cynomys(~cynomys@user/cynomys) (Quit: Lost terminal)
2022-02-20 00:23:49 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 272 seconds)
2022-02-20 00:24:58 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-20 00:24:59 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 00:25:10 +0100lavaman(~lavaman@98.38.249.169)
2022-02-20 00:25:48 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:5928:8400:a51e:7799) (Remote host closed the connection)
2022-02-20 00:29:05 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Quit: ERC (IRC client for Emacs 27.1))
2022-02-20 00:30:45 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-20 00:30:45 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-20 00:30:45 +0100wroathe(~wroathe@user/wroathe)
2022-02-20 00:43:10 +0100alx741(~alx741@157.100.197.240)
2022-02-20 00:46:26 +0100chomwitt(~chomwitt@2a02:587:dc04:5f00:97ff:5c76:a7e3:730d) (Remote host closed the connection)
2022-02-20 00:46:39 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 00:54:16 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-20 00:57:17 +0100thyriaen(~thyriaen@dynamic-078-055-141-021.78.55.pool.telefonica.de)
2022-02-20 00:58:54 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-02-20 00:59:08 +0100DNH(~DNH@2a02:8108:1100:16d8:682c:7604:30f7:a4ea) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-02-20 00:59:52 +0100DNH(~DNH@2a02:8108:1100:16d8:682c:7604:30f7:a4ea)
2022-02-20 01:00:20 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2022-02-20 01:01:04 +0100acidjnk(~acidjnk@p200300d0c7363f90cc2edb7570cac520.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2022-02-20 01:03:26 +0100alx741(~alx741@157.100.197.240)
2022-02-20 01:04:38 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk)
2022-02-20 01:06:49 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 01:07:48 +0100jtomas(~jtomas@210.red-88-24-179.staticip.rima-tde.net) (Ping timeout: 240 seconds)
2022-02-20 01:08:55 +0100lavaman(~lavaman@98.38.249.169)
2022-02-20 01:09:27 +0100Null_A(~null_a@2601:645:8700:2290:890f:d3a0:aab0:f3f)
2022-02-20 01:12:57 +0100max22-(~maxime@2a01cb088335980000d616136ecfccf9.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
2022-02-20 01:13:57 +0100Null_A(~null_a@2601:645:8700:2290:890f:d3a0:aab0:f3f) (Ping timeout: 240 seconds)
2022-02-20 01:16:41 +0100DNH(~DNH@2a02:8108:1100:16d8:682c:7604:30f7:a4ea) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-02-20 01:17:19 +0100travisbtabemann
2022-02-20 01:20:58 +0100DNH(~DNH@2a02:8108:1100:16d8:682c:7604:30f7:a4ea)
2022-02-20 01:23:28 +0100alx741(~alx741@157.100.197.240)
2022-02-20 01:26:26 +0100thyriaen(~thyriaen@dynamic-078-055-141-021.78.55.pool.telefonica.de) (Quit: Leaving)
2022-02-20 01:26:50 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 01:30:54 +0100acidjnk(~acidjnk@p200300d0c7363f905d1e0b81e1ec2707.dip0.t-ipconnect.de)
2022-02-20 01:37:10 +0100machinedgod(~machinedg@24.105.81.50)
2022-02-20 01:38:02 +0100iteratee(~kyle@162.218.222.107) (Read error: Connection reset by peer)
2022-02-20 01:38:03 +0100iteratee_(~kyle@162.218.222.107)
2022-02-20 01:40:25 +0100mvk(~mvk@2607:fea8:5cdc:bf00::99e7) (Remote host closed the connection)
2022-02-20 01:40:51 +0100mvk(~mvk@2607:fea8:5cdc:bf00::99e7)
2022-02-20 01:43:28 +0100alx741(~alx741@181.199.42.143)
2022-02-20 01:43:31 +0100Null_A(~null_a@2601:645:8700:2290:890f:d3a0:aab0:f3f)
2022-02-20 01:47:57 +0100Null_A(~null_a@2601:645:8700:2290:890f:d3a0:aab0:f3f) (Ping timeout: 240 seconds)
2022-02-20 01:48:03 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-20 01:48:11 +0100Tuplanolla(~Tuplanoll@91-159-69-98.elisa-laajakaista.fi) (Quit: Leaving.)
2022-02-20 01:52:57 +0100Me-me(~me-me@user/me-me)
2022-02-20 01:53:31 +0100 <Me-me> Yes hello I do not know how to read haskell, and I would like some help reading this haskell code.
2022-02-20 01:54:06 +0100 <Me-me> https://paste.debian.net/1231570/
2022-02-20 01:56:59 +0100 <pavonia> Any specific questions?
2022-02-20 01:57:30 +0100 <Me-me> Sure. Lines 7 and 8, what th' heck are they? variable declarations, but... how?
2022-02-20 01:58:15 +0100 <Me-me> And what?
2022-02-20 01:58:35 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-02-20 01:59:22 +0100 <pavonia> `c n k` defines a function c with two parameters n and k
2022-02-20 01:59:40 +0100 <pavonia> like `function c(n, k)` in JavaScript, for example
2022-02-20 01:59:52 +0100 <Me-me> Ah, okay, that's just saying how to do combinatorics. Sure.
2022-02-20 02:00:12 +0100 <pavonia> Haskell uses whitespace for separating arguments
2022-02-20 02:00:19 +0100 <Me-me> So then on line 13 where it says (among other things) c (n - 1) (k - 1) it's running c for those two numbers.
2022-02-20 02:00:38 +0100 <pavonia> Right
2022-02-20 02:00:43 +0100Topsi(~Tobias@95.33.25.255)
2022-02-20 02:00:47 +0100 <Me-me> But wait, then how is it defining c twice?
2022-02-20 02:01:03 +0100 <Me-me> Ohh I get it, overloadinng. Sure.
2022-02-20 02:01:32 +0100 <pavonia> It's a single definition, but spilt into several cases
2022-02-20 02:01:44 +0100 <pavonia> Line 7 is the definition for k=0
2022-02-20 02:02:00 +0100 <Me-me> Next question! Line 11, it's defining a mapper, that's fine, but I have no idea what k = sum $ do means, or how it fits into the rest of the mapper.
2022-02-20 02:03:14 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-02-20 02:03:26 +0100 <pavonia> Hhm, that's a bit complicated to explain if you are not familiar with monads
2022-02-20 02:03:59 +0100 <Me-me> Uhhhhh Leibniz?
2022-02-20 02:04:01 +0100 <pavonia> $ is just function application, so it's sum(...) where ... is a list build from a monadic action
2022-02-20 02:04:17 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
2022-02-20 02:04:30 +0100 <pavonia> https://en.wikipedia.org/wiki/Monad_(functional_programming)
2022-02-20 02:04:52 +0100alx741(~alx741@157.100.197.240)
2022-02-20 02:05:29 +0100 <Me-me> Okay ... so k is just the sum of the results of the loop comprising lines 12-18, right?
2022-02-20 02:06:01 +0100 <pavonia> No, the result of pie applied to k is the sum
2022-02-20 02:06:01 +0100 <Me-me> No, that doesn't make sense...
2022-02-20 02:06:21 +0100 <pavonia> pie(k) = sum(...)
2022-02-20 02:06:31 +0100 <Me-me> Right, another argument.
2022-02-20 02:08:58 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 02:09:06 +0100 <Me-me> Okay... So n is the amount of different values in ns. Easy. What is "fromIntegral"?
2022-02-20 02:09:26 +0100 <pavonia> That whole do-block is a bit like another list comprehension where `return` specifies how the return values look like
2022-02-20 02:09:48 +0100 <pavonia> :t fromIntegral
2022-02-20 02:09:49 +0100 <lambdabot> (Integral a, Num b) => a -> b
2022-02-20 02:10:01 +0100 <Me-me> So it's casting?
2022-02-20 02:10:06 +0100 <pavonia> It converts between different number types
2022-02-20 02:10:10 +0100 <Me-me> Got it.
2022-02-20 02:10:24 +0100 <pavonia> Explicity casting, so to say
2022-02-20 02:10:30 +0100 <pavonia> -y
2022-02-20 02:10:39 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-02-20 02:14:01 +0100 <Me-me> And then the number it's casting is the sum of ... c(length(ns)-1, k-1), which is a positive if k is even and a negative if k is odd (is that just another way of saying abs?), plus all the numbers between l and k and all the numbers between 0 and l.
2022-02-20 02:14:38 +0100 <Me-me> Which are two separate things because... sometimes a <- [a..b] can be invalid?
2022-02-20 02:16:06 +0100Null_A(~null_a@2601:645:8700:2290:890f:d3a0:aab0:f3f)
2022-02-20 02:16:16 +0100 <Me-me> Is that right?
2022-02-20 02:16:45 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-02-20 02:18:55 +0100 <pavonia> [ e | x <- list ] is a mapping of values (with possible filtering) and means "take all the values from list, bind each respective value to the variable x and add a new element e to the result list. e can use the value x to form the new value
2022-02-20 02:19:34 +0100 <Me-me> Okay now I'm confused again.
2022-02-20 02:19:45 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-20 02:20:30 +0100 <Me-me> In your words, what is line 13 doing?
2022-02-20 02:20:36 +0100Null_A(~null_a@2601:645:8700:2290:890f:d3a0:aab0:f3f) (Ping timeout: 240 seconds)
2022-02-20 02:21:11 +0100capo_greco(~textual@60-241-161-167.static.tpgi.com.au) (Quit: Textual IRC Client: www.textualapp.com)
2022-02-20 02:24:48 +0100 <pavonia> For each l = 0..k calculate the sum of all values (-1)^(k' - l) * c (n - l) (k' - l) for each k' from k..l
2022-02-20 02:24:58 +0100 <pavonia> Does that make sense?
2022-02-20 02:25:24 +0100 <Me-me> No.
2022-02-20 02:25:25 +0100 <pavonia> It's extra confusing as they are using another valuable k for the inner "loop", shadowing the function parameter k
2022-02-20 02:25:39 +0100 <Me-me> Yeah the namespace is bothering me but I think I have a grip on it.
2022-02-20 02:26:03 +0100alx741(~alx741@181.199.42.143)
2022-02-20 02:27:07 +0100 <Me-me> Okay let's ignore that part for now.
2022-02-20 02:27:39 +0100jgeerds(~jgeerds@55d4b9df.access.ecotel.net) (Ping timeout: 256 seconds)
2022-02-20 02:27:40 +0100 <Me-me> ns' <- subsequences ns. I looked up subsequences and I figured out that it's grabbing the different combinations of ns.
2022-02-20 02:28:38 +0100 <Me-me> And the original writer said that it's doing a thing to each of those combinations.
2022-02-20 02:28:55 +0100 <Me-me> What lines are the thing that it is doing?
2022-02-20 02:29:37 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-20 02:29:58 +0100 <pavonia> Line 13 is basically this https://bpa.st/3CBA
2022-02-20 02:30:29 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 272 seconds)
2022-02-20 02:30:31 +0100 <pavonia> s/ws.add/ws.append/
2022-02-20 02:30:37 +0100DNH(~DNH@2a02:8108:1100:16d8:682c:7604:30f7:a4ea) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-02-20 02:30:45 +0100 <Me-me> Same dif, it's wrapped in sum.
2022-02-20 02:30:47 +0100 <Me-me> I assume that's javascript?
2022-02-20 02:31:22 +0100 <pavonia> It's pseudo code
2022-02-20 02:31:35 +0100 <Me-me> Okay sure.
2022-02-20 02:32:02 +0100 <pavonia> > subsequences "abcd"
2022-02-20 02:32:04 +0100 <lambdabot> ["","a","b","ab","c","ac","bc","abc","d","ad","bd","abd","cd","acd","bcd","a...
2022-02-20 02:32:59 +0100 <pavonia> It selects each element from that list and binds the current value to ns'
2022-02-20 02:33:16 +0100 <Me-me> Current based on what?
2022-02-20 02:33:32 +0100 <pavonia> On the iteration through that list
2022-02-20 02:33:42 +0100 <Me-me> Okay, and what is it doing to each iteration?
2022-02-20 02:34:34 +0100 <pavonia> What is specified after the return
2022-02-20 02:35:06 +0100 <pavonia> guard adds some filtering to ignore values
2022-02-20 02:35:25 +0100 <Me-me> I thought the return was the return value to be summed up by pie.
2022-02-20 02:35:30 +0100 <pavonia> > do { x <- [1,2,3]; guard (odd x); return x }
2022-02-20 02:35:32 +0100 <lambdabot> [1,3]
2022-02-20 02:36:05 +0100 <pavonia> No, the result value for pie is that sum
2022-02-20 02:36:26 +0100 <Me-me> I thought the sum was summing the results of the return value. What's it summing?
2022-02-20 02:37:20 +0100 <pavonia> That do-block builds a new lst form scratch, sum sums that new list
2022-02-20 02:37:41 +0100scav(sid309693@id-309693.helmsley.irccloud.com) (Ping timeout: 250 seconds)
2022-02-20 02:37:49 +0100scav(sid309693@id-309693.helmsley.irccloud.com)
2022-02-20 02:38:14 +0100 <pavonia> Everything from l. 12-18 describes how to build that new list
2022-02-20 02:38:40 +0100 <pavonia> return ... specifies how each element looks like
2022-02-20 02:38:58 +0100 <pavonia> The ... <- ... portions define there the elements come from
2022-02-20 02:39:14 +0100 <pavonia> plus some extra filtering done by guard
2022-02-20 02:39:30 +0100k8yun(~k8yun@user/k8yun) (Ping timeout: 256 seconds)
2022-02-20 02:40:13 +0100 <Me-me> How many nested loops are there here?
2022-02-20 02:40:31 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-02-20 02:41:14 +0100 <pavonia> `ns' <- subsequences ns` is the "main loop"
2022-02-20 02:41:20 +0100 <Me-me> Right.
2022-02-20 02:41:27 +0100 <pavonia> plus two nested loops for calculating ws
2022-02-20 02:41:33 +0100 <Me-me> And for each of those it's executing lines 15-18
2022-02-20 02:41:57 +0100 <pavonia> Yes
2022-02-20 02:42:51 +0100 <Me-me> And the results are being summed up in line 11?
2022-02-20 02:43:02 +0100 <Me-me> The results of ns' <- subsequences
2022-02-20 02:43:51 +0100zachel(~zachel@user/zachel)
2022-02-20 02:44:09 +0100 <pavonia> Yeah, the results of that main loop
2022-02-20 02:44:24 +0100ofl^(~ofl@50.233.120.162) (Remote host closed the connection)
2022-02-20 02:44:26 +0100 <Me-me> Okay.
2022-02-20 02:45:16 +0100Erutuon(~Erutuon@user/erutuon)
2022-02-20 02:45:29 +0100 <Me-me> % still means modulo in haskell right?
2022-02-20 02:45:30 +0100 <yahb> Me-me: ; <interactive>:80:20: error: parse error on input `in'
2022-02-20 02:45:36 +0100 <Me-me> Ahh!
2022-02-20 02:45:42 +0100Me-medives for cover
2022-02-20 02:46:31 +0100alx741(~alx741@157.100.197.240)
2022-02-20 02:46:57 +0100 <pavonia> Nah, a % b is a rational number a / b :p
2022-02-20 02:47:05 +0100 <Me-me> Okay.
2022-02-20 02:47:50 +0100 <Me-me> So yes. It's inverting the odds of getting 5 or fewer colours of marbles. Excellent.
2022-02-20 02:48:21 +0100 <Me-me> line 13 is the only remaining mystery.
2022-02-20 02:48:30 +0100 <Me-me> But I will take a break before attempting that again.
2022-02-20 02:48:35 +0100 <Me-me> Thank you for all the assistance so far.
2022-02-20 02:48:58 +0100 <pavonia> No problem
2022-02-20 02:49:59 +0100Null_A(~null_a@2601:645:8700:2290:890f:d3a0:aab0:f3f)
2022-02-20 02:50:16 +0100lavaman(~lavaman@98.38.249.169)
2022-02-20 02:51:15 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 02:54:48 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-02-20 03:02:35 +0100 <FernandoChu[m]> isn't it kind of redundant for newtypes to have constructors? not sure about this but it seems to me that removing the constructor wouldn't cause any ambiguity as the types can be inferred
2022-02-20 03:04:51 +0100 <ski> how would you distinguish between the definiendum and the definiens, the defined type, and the type it's defined in terms of (the representation type) ?
2022-02-20 03:05:56 +0100 <ski> (also, what if it's a recursive `newtype' ?)
2022-02-20 03:07:01 +0100Null_A(~null_a@2601:645:8700:2290:890f:d3a0:aab0:f3f) (Ping timeout: 245 seconds)
2022-02-20 03:07:27 +0100alx741(~alx741@157.100.197.240)
2022-02-20 03:08:36 +0100 <FernandoChu[m]> I think the first one should be possible to be honest, but I don't know enough to give a decent answer, but with recursion I'm convinced that it can't
2022-02-20 03:08:38 +0100 <FernandoChu[m]> thanks
2022-02-20 03:10:04 +0100 <int-e> FernandoChu[m]: If you have newtype Foo a = {-Foo-} a and f :: a -> Foo a; f x = id x, do you apply id to Foo x, or do you do Foo (id x)? Note that if you use a class member like `succ` then this will affect semantics.
2022-02-20 03:10:50 +0100 <int-e> "can be inferred" isn't really true when there's polymorphic types everywhere.
2022-02-20 03:11:52 +0100 <int-e> pavonia: ah, sorry for that terrible piece of code up there :P (fwiw, `c` computes binomial coefficients. The rest is... complicated, still don't really want to explain it in detail.)
2022-02-20 03:13:04 +0100 <FernandoChu[m]> int-e: shouldn't there be some free theorem that essentially it doesn't matter though? I know that is just an example but I think that in cases like this both should be equal (assuming Eq a)
2022-02-20 03:13:21 +0100dsrt^(~dsrt@50.233.120.162)
2022-02-20 03:13:50 +0100 <int-e> No there isn't. You could have an "opposite" instance for Enum that swaps the roles of succ and pred.
2022-02-20 03:14:02 +0100 <int-e> We do have such a thing for Ord.
2022-02-20 03:15:10 +0100waleee(~waleee@h-98-128-229-110.NA.cust.bahnhof.se) (Ping timeout: 260 seconds)
2022-02-20 03:15:30 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 03:18:56 +0100 <FernandoChu[m]> hmm I'm not really getting how, could you please give an example?
2022-02-20 03:23:43 +0100 <int-e> FernandoChu[m]: https://paste.debian.net/1231573/ ...note that under your proposal, f1 and f2 would be syntactically the same.
2022-02-20 03:24:58 +0100 <FernandoChu[m]> brilliant! thank you
2022-02-20 03:25:23 +0100 <int-e> it's worth noting that this kind of thing, providing alternative type class implementations, is a common use case of newtypes
2022-02-20 03:27:20 +0100lavaman(~lavaman@98.38.249.169)
2022-02-20 03:30:09 +0100marquis_andras(~marquis_a@124.170.160.147) (Remote host closed the connection)
2022-02-20 03:31:55 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-02-20 03:33:50 +0100alx741(~alx741@157.100.197.240)
2022-02-20 03:34:22 +0100 <pavonia> int-e: Can you explain in simple words what that pie function does?
2022-02-20 03:35:03 +0100 <Me-me> Yes hello I am interested also.
2022-02-20 03:35:14 +0100 <Me-me> pavonia: I can tell you its intent, just not exactly how it does it.
2022-02-20 03:35:51 +0100 <Me-me> "If you have a bag of marbles, each of which is one of 15 colours, and you pull n marbles from it at random, what are the odds that you get 6 or more colours in the marbles you pull?"
2022-02-20 03:35:56 +0100c209e6dc-4d76-47(~aditya@2601:249:4300:1296:195:dac6:592c:a55a) (Quit: Konversation terminated!)
2022-02-20 03:36:24 +0100 <Me-me> The algorithm is supposed to calculate the odds of each possible combination of getting 5 or fewer colours.
2022-02-20 03:36:32 +0100 <pavonia> Ah, that was for that ##math question earlier
2022-02-20 03:36:35 +0100 <Me-me> Yeh.
2022-02-20 03:37:01 +0100 <Me-me> Binomial coefficients, he says.
2022-02-20 03:37:16 +0100 <Me-me> I have no idea what that is but I think there's a function for it in excel.
2022-02-20 03:37:16 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 03:38:20 +0100 <pavonia> It's this (n k) thing
2022-02-20 03:38:35 +0100 <pavonia> n over k
2022-02-20 03:38:46 +0100Null_A(~null_a@2601:645:8700:2290:890f:d3a0:aab0:f3f)
2022-02-20 03:38:58 +0100 <Me-me> Yeah I just don't know how it factors into the greater algorithm.
2022-02-20 03:39:12 +0100Topsi(~Tobias@95.33.25.255) (Read error: Connection reset by peer)
2022-02-20 03:39:45 +0100 <pavonia> The binomial coefficient is just function c
2022-02-20 03:39:55 +0100xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2022-02-20 03:40:09 +0100 <Me-me> I understand what part of the code represents something called a "binomial coefficient".
2022-02-20 03:40:34 +0100 <Me-me> I can even mostly follow the math of that function. I do not know how that is necessary to the end result.
2022-02-20 03:40:35 +0100 <pavonia> Okay :p
2022-02-20 03:40:46 +0100 <Me-me> :P
2022-02-20 03:40:55 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:5928:8400:a51e:7799)
2022-02-20 03:42:27 +0100 <pavonia> (n k) is the number of ways to choose k elements from a set of n elements
2022-02-20 03:42:39 +0100 <Me-me> So it is combinatorics.
2022-02-20 03:43:00 +0100Null_A(~null_a@2601:645:8700:2290:890f:d3a0:aab0:f3f) (Ping timeout: 240 seconds)
2022-02-20 03:46:28 +0100zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-02-20 03:47:55 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-20 03:48:57 +0100xff0x(~xff0x@2001:1a81:52c9:2700:c4c8:f455:66db:3020) (Ping timeout: 240 seconds)
2022-02-20 03:51:08 +0100xff0x(~xff0x@2001:1a81:5301:6400:24c5:5158:4f07:abb5)
2022-02-20 03:53:53 +0100alx741(~alx741@181.199.42.143)
2022-02-20 03:56:30 +0100 <yushyin> hi Me-me ;)
2022-02-20 03:56:34 +0100 <Me-me> Tsup.
2022-02-20 03:57:02 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-02-20 04:02:10 +0100zachel(~zachel@user/zachel) (Quit: Quit: Leaving!)
2022-02-20 04:02:39 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-20 04:03:22 +0100alx741(~alx741@181.199.42.143)
2022-02-20 04:05:36 +0100zachel(~zachel@user/zachel)
2022-02-20 04:05:51 +0100ix(~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Remote host closed the connection)
2022-02-20 04:05:58 +0100ix(~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
2022-02-20 04:06:00 +0100ix(~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Remote host closed the connection)
2022-02-20 04:06:08 +0100ix(~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
2022-02-20 04:06:46 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-20 04:11:37 +0100Null_A(~null_a@c-98-210-133-39.hsd1.ca.comcast.net)
2022-02-20 04:15:18 +0100Ariakenom_(~Ariakenom@h-82-196-111-63.NA.cust.bahnhof.se) (Quit: Leaving)
2022-02-20 04:16:07 +0100ubert(~Thunderbi@5.253.207.46) (Ping timeout: 256 seconds)
2022-02-20 04:18:15 +0100ubert(~Thunderbi@86.107.21.238)
2022-02-20 04:18:40 +0100Null_A(~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2022-02-20 04:22:21 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-02-20 04:23:41 +0100alx741(~alx741@157.100.197.240)
2022-02-20 04:25:17 +0100td_(~td@94.134.91.184) (Ping timeout: 240 seconds)
2022-02-20 04:25:20 +0100 <Sqaure> Are Profunctors widely used? Looking at base instances and the only type i remember seeing having one is Arrow.
2022-02-20 04:27:20 +0100td_(~td@94.134.91.130)
2022-02-20 04:27:21 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 04:37:59 +0100acidjnk(~acidjnk@p200300d0c7363f905d1e0b81e1ec2707.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2022-02-20 04:38:47 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2022-02-20 04:42:51 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
2022-02-20 04:44:04 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1)
2022-02-20 04:45:04 +0100alx741(~alx741@157.100.197.240)
2022-02-20 04:45:55 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-02-20 04:46:48 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-20 04:46:48 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-20 04:46:48 +0100wroathe(~wroathe@user/wroathe)
2022-02-20 04:48:12 +0100modnar(~modnar@shell.sonic.net) (Quit: No Ping reply in 180 seconds.)
2022-02-20 04:48:37 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 04:49:29 +0100harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
2022-02-20 04:50:16 +0100modnar(~modnar@shell.sonic.net)
2022-02-20 04:52:21 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 272 seconds)
2022-02-20 04:52:36 +0100lavaman(~lavaman@98.38.249.169)
2022-02-20 04:57:00 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2022-02-20 05:01:58 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-02-20 05:02:33 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-02-20 05:02:58 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-20 05:06:26 +0100alx741(~alx741@181.199.42.143)
2022-02-20 05:07:24 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-20 05:10:16 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-20 05:10:56 +0100alx741(~alx741@157.100.197.240)
2022-02-20 05:11:05 +0100dyeplexer(~dyeplexer@user/dyeplexer)
2022-02-20 05:13:39 +0100deadmarshal(~deadmarsh@95.38.118.170)
2022-02-20 05:16:46 +0100haasn(~nand@haasn.dev) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
2022-02-20 05:17:11 +0100haasn(~nand@haasn.dev)
2022-02-20 05:19:18 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 05:19:23 +0100cynomys(~cynomys@user/cynomys)
2022-02-20 05:30:09 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 252 seconds)
2022-02-20 05:34:52 +0100random-jellyfish(~random-je@user/random-jellyfish)
2022-02-20 05:36:21 +0100 <random-jellyfish> is there a difference in speed between LL and LR parsers?
2022-02-20 05:36:41 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-02-20 05:37:24 +0100alx741(~alx741@157.100.197.240)
2022-02-20 05:41:41 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk) (Remote host closed the connection)
2022-02-20 05:41:58 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 256 seconds)
2022-02-20 05:44:06 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-02-20 05:49:10 +0100deadmarshal_(~deadmarsh@95.38.4.150)
2022-02-20 05:50:37 +0100deadmarshal(~deadmarsh@95.38.118.170) (Ping timeout: 272 seconds)
2022-02-20 05:51:13 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-02-20 05:51:13 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 05:51:53 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 256 seconds)
2022-02-20 05:53:23 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-02-20 05:55:30 +0100Welkin(~Welkin@216.243.35.47)
2022-02-20 05:55:37 +0100 <Welkin> So is this like Liberia?
2022-02-20 06:03:13 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 256 seconds)
2022-02-20 06:04:10 +0100Welkin(~Welkin@216.243.35.47) ()
2022-02-20 06:04:42 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-02-20 06:07:27 +0100alx741(~alx741@157.100.197.240)
2022-02-20 06:08:46 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-20 06:08:46 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-20 06:08:46 +0100wroathe(~wroathe@user/wroathe)
2022-02-20 06:11:31 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 272 seconds)
2022-02-20 06:12:20 +0100slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2022-02-20 06:12:58 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-02-20 06:13:42 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-02-20 06:21:11 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 06:22:29 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 256 seconds)
2022-02-20 06:24:17 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-02-20 06:24:32 +0100deadmarshal(~deadmarsh@95.38.116.229)
2022-02-20 06:25:00 +0100deadmarshal_(~deadmarsh@95.38.4.150) (Ping timeout: 240 seconds)
2022-02-20 06:25:47 +0100c209e6dc-4d76-47(~aditya@2601:249:4300:1296:195:dac6:592c:a55a)
2022-02-20 06:27:57 +0100Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection)
2022-02-20 06:28:54 +0100 <jackdk> Sqaure: they show up a lot in Opaleye (+ some other abstractions), but are generally quite useful if you find yourself with values that represent some "thing" with an input and an output
2022-02-20 06:29:39 +0100 <Sqaure> jackdk, Good to know. Thanks
2022-02-20 06:30:34 +0100 <jackdk> If you are trying to form a list of what things to learn when, you can defer them for a while
2022-02-20 06:31:06 +0100 <jackdk> oh, and the choice subclass of profunctor is used in the implementation of prisms, once you get into lens
2022-02-20 06:34:47 +0100 <Sqaure> allright! Well used both lens and optics a bunch so i guess they are worth knowing about at least.
2022-02-20 06:35:46 +0100analognoise(~analognoi@91.196.220.77)
2022-02-20 06:37:29 +0100alx741(~alx741@157.100.197.240)
2022-02-20 06:40:55 +0100modnar(~modnar@shell.sonic.net) (Quit: No Ping reply in 180 seconds.)
2022-02-20 06:43:18 +0100modnar(~modnar@shell.sonic.net)
2022-02-20 06:46:21 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 272 seconds)
2022-02-20 06:46:21 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 06:47:49 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-02-20 06:51:38 +0100random-jellyfish(~random-je@user/random-jellyfish) (Quit: Client closed)
2022-02-20 06:53:05 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 256 seconds)
2022-02-20 06:54:04 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-02-20 07:01:03 +0100caimeo(uid540603@id-540603.lymington.irccloud.com)
2022-02-20 07:04:07 +0100alx741(~alx741@181.199.42.143)
2022-02-20 07:06:23 +0100 <jackdk> you can use prisms without understanding profunctors, it was just another example
2022-02-20 07:15:35 +0100lavaman(~lavaman@98.38.249.169)
2022-02-20 07:17:58 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-20 07:18:35 +0100alx741(~alx741@157.100.197.240)
2022-02-20 07:20:04 +0100cynomys(~cynomys@user/cynomys) (Quit: Lost terminal)
2022-02-20 07:31:47 +0100k8yun(~k8yun@user/k8yun)
2022-02-20 07:33:19 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 256 seconds)
2022-02-20 07:34:51 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-02-20 07:35:27 +0100sumanthyedoti(~sumanthye@49.207.194.101)
2022-02-20 07:36:11 +0100sumanthyedoti(~sumanthye@49.207.194.101) (Client Quit)
2022-02-20 07:36:11 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 07:36:23 +0100sumanthyedoti(~sumanthye@49.207.194.101)
2022-02-20 07:36:47 +0100sumanthyedoti(~sumanthye@49.207.194.101) (Client Quit)
2022-02-20 07:40:41 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 256 seconds)
2022-02-20 07:42:06 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-02-20 07:50:57 +0100xff0x(~xff0x@2001:1a81:5301:6400:24c5:5158:4f07:abb5) (Ping timeout: 240 seconds)
2022-02-20 07:52:11 +0100xff0x(~xff0x@2001:1a81:5301:6400:b772:c1d8:3c5d:2da4)
2022-02-20 07:54:11 +0100alx741(~alx741@181.199.42.143)
2022-02-20 07:59:03 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-20 07:59:39 +0100alx741(~alx741@157.100.197.240)
2022-02-20 08:04:07 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 08:08:53 +0100mbuf(~Shakthi@223.178.126.157)
2022-02-20 08:12:36 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 240 seconds)
2022-02-20 08:14:46 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-02-20 08:15:45 +0100k8yun(~k8yun@user/k8yun) (Quit: Leaving)
2022-02-20 08:19:30 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-02-20 08:20:47 +0100alx741(~alx741@181.199.42.143)
2022-02-20 08:21:12 +0100 <Me-me> Okay that was a cleansing four hour Stellaris session. Now to look at the code again.
2022-02-20 08:21:53 +0100 <Me-me> Five hour.
2022-02-20 08:24:31 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2022-02-20 08:28:55 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-20 08:28:56 +0100 <Me-me> In the line "let w = ws !! l", what does !! mean?
2022-02-20 08:29:16 +0100 <ski> "select the `l'th element of `ws'"
2022-02-20 08:29:31 +0100 <Me-me> Ah, perfect.
2022-02-20 08:29:32 +0100 <ski> > [2,3,5,7] !! 3
2022-02-20 08:29:33 +0100 <lambdabot> 7
2022-02-20 08:29:40 +0100 <ski> > [2,3,5,7] !! 4
2022-02-20 08:29:41 +0100 <lambdabot> *Exception: Prelude.!!: index too large
2022-02-20 08:30:21 +0100 <ski> @src !!
2022-02-20 08:30:21 +0100 <lambdabot> xs !! n | n < 0 = undefined
2022-02-20 08:30:21 +0100 <lambdabot> [] !! _ = undefined
2022-02-20 08:30:22 +0100 <lambdabot> (x:_) !! 0 = x
2022-02-20 08:30:24 +0100 <lambdabot> (_:xs) !! n = xs !! (n-1)
2022-02-20 08:30:39 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-20 08:31:17 +0100alx741(~alx741@181.199.42.143)
2022-02-20 08:33:50 +0100cynomys(~cynomys@user/cynomys)
2022-02-20 08:36:16 +0100 <Me-me> So then, the line "let ws = [fromIntegral $ sum [(-1)^(k - l) * c (n - l) (k - l) | k <- [l..k]] | l <- [0..k]]" is creating an array?
2022-02-20 08:37:01 +0100 <Rembane> No, a linked list
2022-02-20 08:37:01 +0100 <chronon> What is that @src command? It doesn't work for me in ghci.
2022-02-20 08:37:02 +0100 <ski> a list, not an array
2022-02-20 08:37:09 +0100 <Me-me> Okay.
2022-02-20 08:37:21 +0100 <Me-me> But multiple results.
2022-02-20 08:37:29 +0100 <ski> it's a lambdabot command, displaying source from a hand-written collection of source snippets
2022-02-20 08:37:37 +0100 <ski> @help src
2022-02-20 08:37:37 +0100 <lambdabot> src <id>. Display the implementation of a standard function
2022-02-20 08:38:07 +0100 <ski> (the actual implementation used may be different)
2022-02-20 08:38:32 +0100 <ski> chronon : fwiw, i think it's possible to install lambdabot locally, and to be able to call it from the interactor
2022-02-20 08:38:35 +0100skihasn't tried, though
2022-02-20 08:39:02 +0100 <ski> @version
2022-02-20 08:39:02 +0100 <lambdabot> lambdabot 5.3.0.1
2022-02-20 08:39:02 +0100 <lambdabot> git clone https://github.com/lambdabot/lambdabot
2022-02-20 08:39:04 +0100 <ski> @where lambdabot
2022-02-20 08:39:04 +0100 <lambdabot> http://haskell.org/haskellwiki/Lambdabot
2022-02-20 08:39:22 +0100 <chronon> Or maybe I can /msg lambdabot can I?
2022-02-20 08:39:27 +0100 <ski> sure, you can
2022-02-20 08:40:03 +0100 <ski> (that's encouraged, in case you're just trying things out, and don't want to show, or ask about, something in particular, to the channel)
2022-02-20 08:40:03 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-20 08:40:45 +0100alx741(~alx741@157.100.197.240)
2022-02-20 08:40:48 +0100Null_A(~null_a@c-98-210-133-39.hsd1.ca.comcast.net)
2022-02-20 08:42:02 +0100 <chronon> Ok, I'll experiment. Thanks.
2022-02-20 08:42:39 +0100 <ski> Me-me : yes, a sequence of multiple numbers (each being a sum of another list)
2022-02-20 08:43:11 +0100 <Me-me> So here is the full snippet: https://paste.debian.net/1231570/
2022-02-20 08:43:41 +0100 <ski> that's int-e's snippet, yea ?
2022-02-20 08:43:41 +0100 <Me-me> I'm just confused as to why the l is declared on line 15 but used on line 13.
2022-02-20 08:43:43 +0100 <Me-me> Yeah.
2022-02-20 08:44:03 +0100 <ski> oh, those are different variables `l'
2022-02-20 08:44:15 +0100 <Me-me> Okay, what's the one on line 13 then?
2022-02-20 08:44:16 +0100 <ski> the one on line 13 is bound by the generator `l <- [0..k]'
2022-02-20 08:44:23 +0100 <Me-me> Ah, right.
2022-02-20 08:45:00 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 08:45:07 +0100 <ski> for each value `l' in the (inclusive-inclusive) range from `0' to `k', we collect the values `fromIntegral (sum [...])' into a list
2022-02-20 08:46:28 +0100 <ski> hm, i guess the `fromIntegral' here is converting from `Int' to `Integer'
2022-02-20 08:47:19 +0100 <ski> oh, i see why both variables are names the same (`l')
2022-02-20 08:47:46 +0100 <ski> in the definition of `ws', `l' is the running index, used when defining each element (at index `l') in the list `ws'
2022-02-20 08:48:17 +0100 <ski> then, the `l' on line 15 is a particular index, which is then used on line 17 to select a particular element (number) from the list `ws'
2022-02-20 08:49:02 +0100 <ski> (also that `l' is used on line 16 to ensure `l' is not greater than `k', which is the maximum index in the list `ws')
2022-02-20 08:49:49 +0100Null_A(~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2022-02-20 08:50:03 +0100yauhsien_(~yauhsien@61-231-37-106.dynamic-ip.hinet.net)
2022-02-20 08:50:32 +0100 <ski> the whole `do'-block, with commands from line 12 to line 18 is nondeterministically computing an `Integer' (meaning, it's computing a list of `Integer's) .. the only nondeterministic choice here is ns' <- subsequences ns
2022-02-20 08:51:32 +0100 <ski> (well, `guard (...)' is also, strictly speaking, a choice -- but only in the trivial sense that it acts like a veto, or a `filter', stopping the generation of a solution when `l' is greater than `k')
2022-02-20 08:51:57 +0100 <Me-me> Yeah.
2022-02-20 08:52:27 +0100 <ski> so, for every possible subsequence of `ns' (such that `l <= k'), lines 12 to 18 compute an `Integer'. all these are collected in a list, and the `sum' on line 11 is adding all these together
2022-02-20 08:52:45 +0100 <ski> > subsequences "abcd"
2022-02-20 08:52:47 +0100 <lambdabot> ["","a","b","ab","c","ac","bc","abc","d","ad","bd","abd","cd","acd","bcd","a...
2022-02-20 08:52:50 +0100 <ski> > subsequences "abc"
2022-02-20 08:52:51 +0100 <lambdabot> ["","a","b","ab","c","ac","bc","abc"]
2022-02-20 08:53:15 +0100 <Me-me> Aye.
2022-02-20 08:53:20 +0100 <ski> instead of using `do' here, one could just as well be using a list comprehension
2022-02-20 08:53:24 +0100 <Me-me> I'm mostly just trying to figure out the "compute an integer" bit.
2022-02-20 08:54:25 +0100 <ski> (in that case, one'd separate each of the commands by commas, remove the `guard $ ' bit, and move the last line first (removing the `return $ '), terminating it with a `|', and, of course, enclosing everything in square brackets)
2022-02-20 08:55:08 +0100acidjnk(~acidjnk@p200300d0c7363f90955657ea6b285d32.dip0.t-ipconnect.de)
2022-02-20 08:55:42 +0100 <ski> well, i guess we have a sum of binomial coefficients, with alternating signs
2022-02-20 08:56:36 +0100tabemann(~travisb@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Ping timeout: 240 seconds)
2022-02-20 08:57:36 +0100 <Me-me> Right.
2022-02-20 08:57:48 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-02-20 08:58:45 +0100gehmehgeh(~user@user/gehmehgeh)
2022-02-20 09:00:39 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk)
2022-02-20 09:01:25 +0100yauhsien_(~yauhsien@61-231-37-106.dynamic-ip.hinet.net) (Quit: Leaving...)
2022-02-20 09:01:32 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk) (Remote host closed the connection)
2022-02-20 09:01:40 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk)
2022-02-20 09:02:31 +0100raym(~raym@user/raym) (Ping timeout: 272 seconds)
2022-02-20 09:03:07 +0100alx741(~alx741@157.100.197.240)
2022-02-20 09:07:23 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Ping timeout: 256 seconds)
2022-02-20 09:07:59 +0100raym(~raym@user/raym)
2022-02-20 09:07:59 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 09:08:12 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-20 09:17:33 +0100little_mac(~little_ma@2601:410:4300:3ce0:14ec:228f:c3ec:ab2c) (Quit: Leaving)
2022-02-20 09:18:36 +0100wolfshappen(~waff@irc.furworks.de) (Ping timeout: 240 seconds)
2022-02-20 09:19:17 +0100wolfshappen(~waff@irc.furworks.de)
2022-02-20 09:19:51 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-20 09:20:43 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-20 09:20:55 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-20 09:22:21 +0100yauhsien_(~yauhsien@61-231-37-106.dynamic-ip.hinet.net)
2022-02-20 09:23:42 +0100Batzy(~quassel@user/batzy) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-02-20 09:24:17 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-20 09:24:44 +0100Batzy(~quassel@user/batzy)
2022-02-20 09:25:25 +0100alx741(~alx741@157.100.197.240)
2022-02-20 09:29:43 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 09:30:19 +0100analognoise(~analognoi@91.196.220.77) (Read error: Connection reset by peer)
2022-02-20 09:30:34 +0100caimeo(uid540603@id-540603.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2022-02-20 09:31:01 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
2022-02-20 09:37:53 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-20 09:37:55 +0100yauhsien_(~yauhsien@61-231-37-106.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-02-20 09:38:23 +0100ccntrq(~Thunderbi@2a01:e34:eccb:b060:4edf:af0d:d165:e093)
2022-02-20 09:38:28 +0100ccntrq(~Thunderbi@2a01:e34:eccb:b060:4edf:af0d:d165:e093) (Remote host closed the connection)
2022-02-20 09:38:59 +0100yauhsien_(~yauhsien@61-231-37-106.dynamic-ip.hinet.net)
2022-02-20 09:39:08 +0100srk(~sorki@user/srk) (Remote host closed the connection)
2022-02-20 09:39:26 +0100srk(~sorki@user/srk)
2022-02-20 09:47:57 +0100alx741(~alx741@157.100.197.240)
2022-02-20 09:51:20 +0100lavaman(~lavaman@98.38.249.169)
2022-02-20 09:51:28 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-20 09:51:47 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 09:52:25 +0100alx741(~alx741@157.100.197.240)
2022-02-20 09:56:42 +0100cosimone(~user@93-34-133-75.ip49.fastwebnet.it)
2022-02-20 09:57:15 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 10:00:32 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-20 10:05:35 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk) (Remote host closed the connection)
2022-02-20 10:06:31 +0100mikoto-chan(~mikoto-ch@213.177.151.239)
2022-02-20 10:14:43 +0100max22-(~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr)
2022-02-20 10:14:48 +0100alx741(~alx741@157.100.197.240)
2022-02-20 10:19:10 +0100enemeth79(sid309041@id-309041.lymington.irccloud.com) ()
2022-02-20 10:19:22 +0100enemeth79(sid309041@id-309041.lymington.irccloud.com)
2022-02-20 10:19:22 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 10:20:30 +0100wroathe(~wroathe@user/wroathe)
2022-02-20 10:23:14 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:5928:8400:a51e:7799) (Remote host closed the connection)
2022-02-20 10:25:24 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-02-20 10:32:36 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Remote host closed the connection)
2022-02-20 10:33:02 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-02-20 10:35:14 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2022-02-20 10:35:44 +0100alx741(~alx741@157.100.197.240)
2022-02-20 10:38:05 +0100drdo(~drdo@roach0.drdo.eu) (Quit: Ping timeout (120 seconds))
2022-02-20 10:38:15 +0100_ht(~quassel@231-169-21-31.ftth.glasoperator.nl)
2022-02-20 10:38:46 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk)
2022-02-20 10:39:38 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 10:40:13 +0100alx741(~alx741@157.100.197.240)
2022-02-20 10:40:43 +0100drdo(~drdo@roach0.drdo.eu)
2022-02-20 10:42:42 +0100yauhsien_(~yauhsien@61-231-37-106.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-02-20 10:43:09 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2022-02-20 10:43:37 +0100yauhsien_(~yauhsien@61-231-37-106.dynamic-ip.hinet.net)
2022-02-20 10:43:38 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 10:48:32 +0100yauhsien_(~yauhsien@61-231-37-106.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-02-20 10:50:45 +0100Tuplanolla(~Tuplanoll@91-159-69-98.elisa-laajakaista.fi)
2022-02-20 10:52:11 +0100lavaman(~lavaman@98.38.249.169)
2022-02-20 10:56:17 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2022-02-20 11:01:40 +0100alx741(~alx741@157.100.197.240)
2022-02-20 11:03:59 +0100mc47(~mc47@xmonad/TheMC47)
2022-02-20 11:04:20 +0100themc47(~mc47@xmonad/TheMC47)
2022-02-20 11:04:22 +0100mc47(~mc47@xmonad/TheMC47) (Client Quit)
2022-02-20 11:04:24 +0100themc47(~mc47@xmonad/TheMC47) (Client Quit)
2022-02-20 11:04:40 +0100mc47(~mc47@xmonad/TheMC47)
2022-02-20 11:04:45 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
2022-02-20 11:06:13 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 11:07:44 +0100c209e6dc-4d76-47(~aditya@2601:249:4300:1296:195:dac6:592c:a55a) (Quit: Konversation terminated!)
2022-02-20 11:08:46 +0100mikoto-chan(~mikoto-ch@213.177.151.239) (Read error: Connection reset by peer)
2022-02-20 11:10:15 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk)
2022-02-20 11:13:58 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-20 11:15:24 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
2022-02-20 11:21:24 +0100Midjak(~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
2022-02-20 11:23:38 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:5928:8400:a51e:7799)
2022-02-20 11:24:12 +0100alx741(~alx741@181.199.42.143)
2022-02-20 11:28:36 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:5928:8400:a51e:7799) (Ping timeout: 240 seconds)
2022-02-20 11:28:49 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-20 11:30:34 +0100coot(~coot@213.134.190.95)
2022-02-20 11:31:11 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk)
2022-02-20 11:32:57 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-20 11:36:22 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-20 11:36:22 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-20 11:36:22 +0100wroathe(~wroathe@user/wroathe)
2022-02-20 11:39:44 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 252 seconds)
2022-02-20 11:40:51 +0100mikoto-chan(~mikoto-ch@213.177.151.239)
2022-02-20 11:41:29 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 272 seconds)
2022-02-20 11:41:29 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
2022-02-20 11:41:37 +0100yauhsien_(~yauhsien@61-231-37-106.dynamic-ip.hinet.net)
2022-02-20 11:43:12 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-20 11:43:17 +0100vysn(~vysn@user/vysn) (Ping timeout: 240 seconds)
2022-02-20 11:44:25 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2022-02-20 11:45:35 +0100alx741(~alx741@157.100.197.240)
2022-02-20 11:45:48 +0100yauhsien_(~yauhsien@61-231-37-106.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-02-20 11:46:44 +0100acidjnk(~acidjnk@p200300d0c7363f90955657ea6b285d32.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2022-02-20 11:49:31 +0100ProfSimm(~ProfSimm@176-12-60-137.pon.spectrumnet.bg)
2022-02-20 11:52:14 +0100averell(~averell@user/averell)
2022-02-20 11:54:13 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-02-20 11:58:28 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 11:59:04 +0100alx741(~alx741@157.100.197.240)
2022-02-20 12:03:14 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 12:04:22 +0100Null_A(~null_a@c-98-210-133-39.hsd1.ca.comcast.net)
2022-02-20 12:06:33 +0100zincy_(~zincy@2a00:23c8:970c:4801:39f9:90f7:922:e73b)
2022-02-20 12:18:52 +0100themc47(~mc47@xmonad/TheMC47)
2022-02-20 12:21:17 +0100mc47(~mc47@xmonad/TheMC47) (Ping timeout: 240 seconds)
2022-02-20 12:21:33 +0100alx741(~alx741@157.100.197.240)
2022-02-20 12:22:32 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-02-20 12:22:53 +0100Null_A(~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2022-02-20 12:25:21 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 12:37:53 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-20 12:37:53 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-20 12:37:53 +0100wroathe(~wroathe@user/wroathe)
2022-02-20 12:41:33 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-02-20 12:41:34 +0100alx741(~alx741@157.100.197.240)
2022-02-20 12:43:17 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-02-20 12:44:59 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 12:51:47 +0100ccntrq(~Thunderbi@2a01:e34:eccb:b060:447b:39c4:735e:5310)
2022-02-20 12:53:51 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-20 12:54:56 +0100jgeerds(~jgeerds@55d4b9df.access.ecotel.net)
2022-02-20 13:00:57 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-20 13:02:57 +0100alx741(~alx741@157.100.197.240)
2022-02-20 13:03:38 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk) (Remote host closed the connection)
2022-02-20 13:03:53 +0100dcoutts__(~duncan@host86-144-78-249.range86-144.btcentralplus.com)
2022-02-20 13:06:13 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 13:06:31 +0100dcoutts_(~duncan@host86-144-78-249.range86-144.btcentralplus.com) (Ping timeout: 256 seconds)
2022-02-20 13:07:41 +0100arievw(~arievw@85.148.234.95)
2022-02-20 13:08:07 +0100ProfSimm(~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection)
2022-02-20 13:08:17 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 240 seconds)
2022-02-20 13:08:41 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-20 13:08:41 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-20 13:08:41 +0100wroathe(~wroathe@user/wroathe)
2022-02-20 13:13:17 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-02-20 13:18:19 +0100DNH(~DNH@2a02:8108:1100:16d8:25f4:e878:3056:b5be)
2022-02-20 13:18:42 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
2022-02-20 13:20:16 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-02-20 13:21:21 +0100themc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-02-20 13:22:37 +0100mvk(~mvk@2607:fea8:5cdc:bf00::99e7) (Ping timeout: 240 seconds)
2022-02-20 13:22:44 +0100jgeerds(~jgeerds@55d4b9df.access.ecotel.net) (Remote host closed the connection)
2022-02-20 13:22:56 +0100jgeerds(~jgeerds@55d4b9df.access.ecotel.net)
2022-02-20 13:23:00 +0100alx741(~alx741@181.199.42.143)
2022-02-20 13:23:46 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-02-20 13:27:52 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-20 13:28:28 +0100alx741(~alx741@181.199.42.143)
2022-02-20 13:31:59 +0100`2jt(~jtomas@210.red-88-24-179.staticip.rima-tde.net)
2022-02-20 13:32:07 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-20 13:39:46 +0100img(~img@user/img)
2022-02-20 13:42:13 +0100`2jt(~jtomas@210.red-88-24-179.staticip.rima-tde.net) (Remote host closed the connection)
2022-02-20 13:45:40 +0100vysn(~vysn@user/vysn)
2022-02-20 13:46:49 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-20 13:48:42 +0100alx741(~alx741@157.100.197.240)
2022-02-20 13:50:57 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-20 13:54:55 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 13:56:04 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-02-20 13:56:06 +0100elkcl(~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (Ping timeout: 256 seconds)
2022-02-20 13:56:15 +0100elkcl(~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru)
2022-02-20 13:56:21 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-02-20 13:58:36 +0100zincy_(~zincy@2a00:23c8:970c:4801:39f9:90f7:922:e73b) (Ping timeout: 240 seconds)
2022-02-20 14:01:01 +0100notzmv(~zmv@user/notzmv)
2022-02-20 14:05:32 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-20 14:05:59 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-02-20 14:06:18 +0100machinedgod(~machinedg@24.105.81.50)
2022-02-20 14:13:17 +0100alx741(~alx741@181.199.42.143)
2022-02-20 14:13:56 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-02-20 14:15:05 +0100cynomys(~cynomys@user/cynomys) (Ping timeout: 256 seconds)
2022-02-20 14:15:29 +0100alp(~alp@user/alp)
2022-02-20 14:17:21 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2022-02-20 14:19:28 +0100slowButPresent(~slowButPr@user/slowbutpresent)
2022-02-20 14:19:56 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-20 14:23:37 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-20 14:24:30 +0100 <ehammarstrom> jackdk: Thanks sharing that demo. As a side note, Sandy Maguire has written a neat book called Thinking with Types - Type-level programming in Haskell. But I don't think it discusses effect-systems
2022-02-20 14:26:21 +0100DNH(~DNH@2a02:8108:1100:16d8:25f4:e878:3056:b5be) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-02-20 14:26:31 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:5928:8400:a51e:7799)
2022-02-20 14:27:15 +0100zincy_(~zincy@2a00:23c8:970c:4801:39f9:90f7:922:e73b)
2022-02-20 14:28:26 +0100ProfSimm(~ProfSimm@176-12-60-137.pon.spectrumnet.bg)
2022-02-20 14:29:21 +0100thyriaen(~thyriaen@dynamic-077-191-029-223.77.191.pool.telefonica.de)
2022-02-20 14:30:37 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:5928:8400:a51e:7799) (Ping timeout: 240 seconds)
2022-02-20 14:31:51 +0100zincy_(~zincy@2a00:23c8:970c:4801:39f9:90f7:922:e73b) (Ping timeout: 256 seconds)
2022-02-20 14:32:34 +0100DNH(~DNH@2a02:8108:1100:16d8:25f4:e878:3056:b5be)
2022-02-20 14:36:43 +0100alx741(~alx741@157.100.197.240)
2022-02-20 14:40:08 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 14:40:18 +0100son0p(~ff@181.136.122.143)
2022-02-20 14:44:28 +0100ProfSimm(~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection)
2022-02-20 14:44:48 +0100ProfSimm(~ProfSimm@176-12-60-137.pon.spectrumnet.bg)
2022-02-20 14:49:06 +0100ProfSimm(~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Ping timeout: 256 seconds)
2022-02-20 14:50:41 +0100zincy_(~zincy@2a00:23c8:970c:4801:39f9:90f7:922:e73b)
2022-02-20 14:52:09 +0100ProfSimm(~ProfSimm@176-12-60-137.pon.spectrumnet.bg)
2022-02-20 14:54:00 +0100lavaman(~lavaman@98.38.249.169)
2022-02-20 14:54:10 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-20 14:54:31 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 256 seconds)
2022-02-20 14:56:38 +0100DNH(~DNH@2a02:8108:1100:16d8:25f4:e878:3056:b5be) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-02-20 14:58:07 +0100alx741(~alx741@181.199.42.143)
2022-02-20 14:58:12 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2022-02-20 15:00:02 +0100ProfSimm(~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection)
2022-02-20 15:00:21 +0100ProfSimm(~ProfSimm@176-12-60-137.pon.spectrumnet.bg)
2022-02-20 15:00:37 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-20 15:04:57 +0100ProfSimm(~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection)
2022-02-20 15:05:01 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-02-20 15:05:20 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-02-20 15:07:21 +0100Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net)
2022-02-20 15:11:37 +0100vysn(~vysn@user/vysn) (Ping timeout: 240 seconds)
2022-02-20 15:13:44 +0100tubogram40(~tubogram@user/tubogram)
2022-02-20 15:13:51 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-20 15:15:04 +0100tubogram4(~tubogram@user/tubogram) (Ping timeout: 260 seconds)
2022-02-20 15:15:04 +0100tubogram40tubogram4
2022-02-20 15:17:25 +0100yauhsien_(~yauhsien@61-231-37-106.dynamic-ip.hinet.net)
2022-02-20 15:17:27 +0100alx741(~alx741@157.100.197.240)
2022-02-20 15:18:03 +0100DNH(~DNH@2a02:8108:1100:16d8:25f4:e878:3056:b5be)
2022-02-20 15:18:27 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-20 15:18:27 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-20 15:18:27 +0100wroathe(~wroathe@user/wroathe)
2022-02-20 15:19:24 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-20 15:22:14 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-02-20 15:22:24 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-02-20 15:23:05 +0100max22-(~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Ping timeout: 256 seconds)
2022-02-20 15:23:19 +0100kritzefitz(~kritzefit@debian/kritzefitz)
2022-02-20 15:23:54 +0100son0p(~ff@181.136.122.143) (Remote host closed the connection)
2022-02-20 15:29:27 +0100max22-(~maxime@2a01cb0883359800f08509aefb13de74.ipv6.abo.wanadoo.fr)
2022-02-20 15:32:39 +0100yauhsien_(~yauhsien@61-231-37-106.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-02-20 15:33:14 +0100yauhsien_(~yauhsien@61-231-37-106.dynamic-ip.hinet.net)
2022-02-20 15:33:16 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-02-20 15:35:29 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 15:38:23 +0100yauhsien_(~yauhsien@61-231-37-106.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-02-20 15:42:36 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-02-20 15:43:48 +0100fendor(~fendor@77.119.193.215.wireless.dyn.drei.com)
2022-02-20 15:46:37 +0100 <int-e> pavonia, Me-me: About https://paste.debian.net/1231570/ ... Well I'm more awake now, so I can try... So the problem is, there's a bag of marbles with 10 marbles of color 1, 20 marbles of color 2, etc., to 150 marbles of color 15. We select 10 of those marbles and want to know the probability that we get at least 6 colors, or, taken the complement, that we have at most 5 colors. Now if we focus on...
2022-02-20 15:46:43 +0100 <int-e> ...any l of the colors (a sublist of length l of ns) then there's a simple formula to count in how many ways we can use a subset of those marbles, that's line 18. However, that count includes cases with fewer than l colors, and if we simply added those up for all the 5-element lists we'd overcount. We need to compensate for that, using the Inclusion-Exclusion Principle (hence `pie`). The amount...
2022-02-20 15:46:49 +0100 <int-e> ...of overcounting that happens for sublists of length l is accounted in ws !! l. If we wanted to count the possibilities with *exactly* k colors, then we'd simply have ws !! l = (-1)^(k-l) * c (n - l) (k - l), where the (-1)^(k-l) comes straight from the inclusion-exclusion principle, and c (n-l) (k-l) is the number of ways to extend an l-element subset of {1..n} to a k-element subset of...
2022-02-20 15:46:55 +0100 <int-e> ...{1..n}. But we want to count the number of ways to get at most k (== 5) colors, so we sum those terms for k' = 0..k, which becomes l..k because the expression is zero for 0..l-1 (and the implementation of `c` doesn't actually cope with those cases). [This is actually how the code evolved, so it explains the shadowing of k: overloading on the spot is less error-prone than adjusting the formula....
2022-02-20 15:47:01 +0100 <int-e> ...I'd change the variable name if I ever cleaned up the code.]
2022-02-20 15:47:37 +0100zincy_(~zincy@2a00:23c8:970c:4801:39f9:90f7:922:e73b) (Ping timeout: 240 seconds)
2022-02-20 15:48:58 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-20 15:50:09 +0100DNH(~DNH@2a02:8108:1100:16d8:25f4:e878:3056:b5be) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-02-20 15:53:17 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-20 15:53:51 +0100alx741(~alx741@157.100.197.240)
2022-02-20 15:54:49 +0100deadmarshal(~deadmarsh@95.38.116.229) (Ping timeout: 272 seconds)
2022-02-20 15:56:37 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 15:57:34 +0100zebrag(~chris@user/zebrag)
2022-02-20 15:57:44 +0100yauhsien_(~yauhsien@61-231-37-106.dynamic-ip.hinet.net)
2022-02-20 16:00:35 +0100DNH(~DNH@2a02:8108:1100:16d8:25f4:e878:3056:b5be)
2022-02-20 16:01:09 +0100neurocyte0917090(~neurocyte@IP-213188112151.dynamic.medianet-world.de)
2022-02-20 16:01:09 +0100neurocyte0917090(~neurocyte@IP-213188112151.dynamic.medianet-world.de) (Changing host)
2022-02-20 16:01:09 +0100neurocyte0917090(~neurocyte@user/neurocyte)
2022-02-20 16:01:15 +0100vorpuni(~pvorp@2001:861:3881:c690:2806:79fd:17ad:ce07)
2022-02-20 16:06:10 +0100travisb(~travisb@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2022-02-20 16:09:01 +0100coot(~coot@213.134.190.95) (Quit: coot)
2022-02-20 16:12:58 +0100alx741(~alx741@181.199.42.143)
2022-02-20 16:16:00 +0100alx741(~alx741@181.199.42.143) (Read error: Connection reset by peer)
2022-02-20 16:17:50 +0100zincy_(~zincy@host86-160-236-152.range86-160.btcentralplus.com)
2022-02-20 16:18:32 +0100yauhsien_(~yauhsien@61-231-37-106.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-02-20 16:19:21 +0100yauhsien_(~yauhsien@61-231-37-106.dynamic-ip.hinet.net)
2022-02-20 16:22:12 +0100zincy_(~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Ping timeout: 240 seconds)
2022-02-20 16:24:17 +0100yauhsien_(~yauhsien@61-231-37-106.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-02-20 16:25:00 +0100deadmarshal(~deadmarsh@95.38.116.229)
2022-02-20 16:27:57 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:5928:8400:a51e:7799)
2022-02-20 16:28:45 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-02-20 16:29:23 +0100deadmarshal(~deadmarsh@95.38.116.229) (Ping timeout: 256 seconds)
2022-02-20 16:29:37 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-02-20 16:32:12 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:5928:8400:a51e:7799) (Ping timeout: 240 seconds)
2022-02-20 16:32:47 +0100jgeerds(~jgeerds@55d4b9df.access.ecotel.net) (Ping timeout: 256 seconds)
2022-02-20 16:33:13 +0100alx741(~alx741@157.100.197.240)
2022-02-20 16:33:57 +0100mvk(~mvk@2607:fea8:5cdc:bf00::99e7)
2022-02-20 16:35:53 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 16:36:42 +0100zincy_(~zincy@host86-160-236-152.range86-160.btcentralplus.com)
2022-02-20 16:40:19 +0100yrlnry(~mjd@pool-74-109-20-19.phlapa.fios.verizon.net)
2022-02-20 16:41:47 +0100alp(~alp@user/alp) (Remote host closed the connection)
2022-02-20 16:41:57 +0100 <yrlnry> Hi folks. I want to learn to use setrvant (https://github.com/haskell-servant/) . It has a tutorial, and the tutorial has three sets of installation instructions, one each for cabal, stack, and nix, but none of them worked for me. I wrote up the problems I encountered here: https://github.com/haskell-servant/servant/issues/1540
2022-02-20 16:42:20 +0100alp(~alp@user/alp)
2022-02-20 16:42:34 +0100DNH(~DNH@2a02:8108:1100:16d8:25f4:e878:3056:b5be) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-02-20 16:42:44 +0100 <yrlnry> The cabal installation complains about an unmet dependency. The stack installation tries to use HTP to retrieve something that replies 404. And nix seems to work but the instructions are extremely incomplete and it doesn't say what to actually do.
2022-02-20 16:43:16 +0100 <yrlnry> The instructions here are https://docs.servant.dev/en/stable/tutorial/install.html . Does someone have time and interest to work through some of the problems with me?
2022-02-20 16:43:27 +0100alp(~alp@user/alp) (Remote host closed the connection)
2022-02-20 16:44:00 +0100alp(~alp@user/alp)
2022-02-20 16:44:31 +0100 <geekosaur> you're having basically the same probloem with both cabal and stack: ubuntu ships ancient versions of everything
2022-02-20 16:44:39 +0100 <geekosaur> wrt cabal, your ghc is too old
2022-02-20 16:45:06 +0100 <geekosaur> wrt stack, it tries to download a newer one but ubuntu's stack is so old that the main repository has moved and it can't find anything
2022-02-20 16:45:08 +0100alp(~alp@user/alp) (Remote host closed the connection)
2022-02-20 16:45:23 +0100 <geekosaur> I suggest you remove the ubuntu packages and use ghcup to install newer versions
2022-02-20 16:45:57 +0100 <yrlnry> I manually installed cabal 3.4
2022-02-20 16:46:01 +0100 <geekosaur> https://www.haskell.org/ghcup/install/
2022-02-20 16:46:10 +0100 <yrlnry> I'll try that, thanks.
2022-02-20 16:46:12 +0100 <geekosaur> cabal isn't enough. you need a nbewer *ghc*
2022-02-20 16:46:20 +0100 <yrlnry> Roger that. Thanks very much.
2022-02-20 16:46:45 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
2022-02-20 16:46:50 +0100 <geekosaur> specifically, cabal is complaining that the version of base (which is tied to the version of ghc) is too old
2022-02-20 16:47:55 +0100 <yrlnry> That's useful, thanks.
2022-02-20 16:48:32 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-20 16:49:03 +0100 <geekosaur> you might be able to get the stack instructions to work if you first run stack upgrade, then hash -r
2022-02-20 16:49:22 +0100 <geekosaur> and make sure ~/.local/bin is first in your $PATH
2022-02-20 16:53:10 +0100zer0bitz(~zer0bitz@2001:2003:f74d:b800:7d50:ed7b:88e6:c382)
2022-02-20 16:53:40 +0100 <geekosaur> but really, I'd just ditch the ancient ubuntu stuff and start over with ghcup which will get you a modern ghc, a modern cabal, and a modern stack
2022-02-20 16:53:42 +0100alx741(~alx741@157.100.197.240)
2022-02-20 16:54:10 +0100 <geekosaur> and haskell-language-server which enables editors to be haskell IDEs
2022-02-20 16:54:11 +0100 <yrlnry> That is what I did, so far it looks good.
2022-02-20 16:54:33 +0100 <yrlnry> Do you recommend proceeding with the stack or the cabal installation?
2022-02-20 16:54:49 +0100 <geekosaur> that's up to you. I personally prefer cabal
2022-02-20 16:56:18 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 16:57:02 +0100 <yrlnry> cabal seems to be working.
2022-02-20 16:57:58 +0100 <yrlnry> Oh, it's brandon allbery. I think we've met before, probably on usenet.
2022-02-20 16:58:02 +0100 <yrlnry> Hello again.
2022-02-20 16:59:06 +0100zmt00(~zmt00@user/zmt00)
2022-02-20 16:59:10 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2022-02-20 16:59:28 +0100 <geekosaur> yes, your nick seemed familiar. been a while
2022-02-20 17:00:06 +0100SawyerBergeron[m(~sawyerber@2001:470:69fc:105::3036) (Quit: You have been kicked for being idle)
2022-02-20 17:01:00 +0100Midjak(~Midjak@82.66.147.146)
2022-02-20 17:01:11 +0100 <ehammarstrom> Is it possible for me to pattern-match on the `z` here https://paste.tomsmeding.com/fKUJge3F ?
2022-02-20 17:01:19 +0100zmt01(~zmt00@user/zmt00) (Ping timeout: 250 seconds)
2022-02-20 17:01:48 +0100 <ehammarstrom> All my attempts throws me a `Parse error in ...`
2022-02-20 17:01:54 +0100 <yrlnry> Do you mean like with `z@(pattern)`?
2022-02-20 17:02:11 +0100 <yrlnry> If all else calse you can have the body of the function be `case z of PAT -> …`
2022-02-20 17:02:16 +0100 <yrlnry> *fails
2022-02-20 17:02:24 +0100 <lyxia> there's no pattern to be had there because z's type is abstract
2022-02-20 17:03:14 +0100 <yrlnry> @geekosaur: installation seems to have completed successfully. Thanks very much!
2022-02-20 17:03:14 +0100 <lambdabot> Unknown command, try @list
2022-02-20 17:03:28 +0100 <geekosaur> np
2022-02-20 17:04:47 +0100notzmv(~zmv@user/notzmv)
2022-02-20 17:05:27 +0100dvdrw(~dvdrw@87.116.177.189)
2022-02-20 17:10:36 +0100fendor(~fendor@77.119.193.215.wireless.dyn.drei.com) (Remote host closed the connection)
2022-02-20 17:11:04 +0100 <yrlnry> In type UserAPI = "users" :> QueryParam "sortby" SortBy :> Get '[JSON] [User]
2022-02-20 17:11:05 +0100 <yrlnry> what kind of lexical token is the unclosed single quote?
2022-02-20 17:12:27 +0100 <pavonia> int-e: Thanks. I don't understand the details, but I get the idea
2022-02-20 17:12:49 +0100alx741(~alx741@157.100.197.240)
2022-02-20 17:13:46 +0100mbuf(~Shakthi@223.178.126.157) (Quit: Leaving)
2022-02-20 17:15:17 +0100 <dvdrw> I've been playing with GHC 9.2's impredicative polymorphism, trying to get heterogeneous lists to typecheck. I've had limited success, though.
2022-02-20 17:16:06 +0100 <dvdrw> Given an f :: forall a. F a -> G a, and xs :: [forall a. F a]; how would I 'lift' map so as to work with a nested forall?
2022-02-20 17:16:48 +0100 <dvdrw> Just applying it like 'map f xs' infers (correctly) that F a ~ forall a. F a
2022-02-20 17:17:10 +0100 <dvdrw> Obviously, there'd be a few constraints thrown in there, too, but I don't think that changes things much.
2022-02-20 17:17:29 +0100xkuru(~xkuru@user/xkuru)
2022-02-20 17:20:26 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 17:20:38 +0100 <dvdrw> In fact, I can't seem to write the type for any map-like function that would typecheck here. They all involve the `a` in `[forall a. F a] -> [forall a. G a]` bridging the gap, which is definitionally impossible.
2022-02-20 17:20:40 +0100 <geekosaur> yrlnry, that's a lifted type
2022-02-20 17:21:34 +0100 <geekosaur> with the DataKinds extension enabled, a `data Foo = Bar | Baz` is not only a type with data constructors, but a lifted kind with type constructors (typically marked with that single quote)
2022-02-20 17:21:41 +0100DNH(~DNH@2a02:8108:1100:16d8:25f4:e878:3056:b5be)
2022-02-20 17:22:42 +0100dextaa_(~dextaa@user/dextaa)
2022-02-20 17:24:15 +0100vysn(~vysn@user/vysn)
2022-02-20 17:29:10 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-02-20 17:32:51 +0100dyeplexer(~dyeplexer@user/dyeplexer) (Ping timeout: 256 seconds)
2022-02-20 17:34:26 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-20 17:34:26 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-20 17:34:26 +0100wroathe(~wroathe@user/wroathe)
2022-02-20 17:34:36 +0100dyeplexer(~dyeplexer@user/dyeplexer)
2022-02-20 17:36:56 +0100alx741(~alx741@157.100.197.240)
2022-02-20 17:38:41 +0100zincy_(~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Ping timeout: 272 seconds)
2022-02-20 17:38:51 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-02-20 17:38:58 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:5928:8400:a51e:7799)
2022-02-20 17:40:05 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 17:46:50 +0100yauhsien_(~yauhsien@61-231-37-106.dynamic-ip.hinet.net)
2022-02-20 17:47:59 +0100jakalx(~jakalx@base.jakalx.net) ()
2022-02-20 17:48:39 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-20 17:48:55 +0100arievw(~arievw@85.148.234.95) (Quit: Nettalk6 - www.ntalk.de)
2022-02-20 17:49:21 +0100fresheyeball(~fresheyeb@c-76-25-93-164.hsd1.co.comcast.net)
2022-02-20 17:50:58 +0100Sgeo(~Sgeo@user/sgeo)
2022-02-20 17:53:00 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-20 17:57:11 +0100alx741(~alx741@157.100.197.240)
2022-02-20 17:59:47 +0100waleee(~waleee@h-98-128-229-110.NA.cust.bahnhof.se)
2022-02-20 18:00:20 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 18:00:54 +0100jakalx(~jakalx@base.jakalx.net)
2022-02-20 18:05:59 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-20 18:06:31 +0100zincy_(~zincy@2a00:23c8:970c:4801:39f9:90f7:922:e73b)
2022-02-20 18:07:06 +0100fjmorazan(~quassel@user/fjmorazan) (Quit: fjmorazan)
2022-02-20 18:07:36 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2022-02-20 18:07:37 +0100fjmorazan(~quassel@user/fjmorazan)
2022-02-20 18:08:36 +0100adanwan(~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 240 seconds)
2022-02-20 18:08:36 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
2022-02-20 18:08:56 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 240 seconds)
2022-02-20 18:08:56 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2022-02-20 18:08:56 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-02-20 18:08:56 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds)
2022-02-20 18:09:16 +0100alMalsamo(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-02-20 18:09:16 +0100LiaoTao_(~LiaoTao@gateway/tor-sasl/liaotao) (Ping timeout: 240 seconds)
2022-02-20 18:09:16 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 240 seconds)
2022-02-20 18:09:16 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds)
2022-02-20 18:09:17 +0100max22-(~maxime@2a01cb0883359800f08509aefb13de74.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
2022-02-20 18:09:36 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 240 seconds)
2022-02-20 18:09:36 +0100hololeap(~hololeap@user/hololeap) (Ping timeout: 240 seconds)
2022-02-20 18:09:42 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2022-02-20 18:10:22 +0100max22-(~maxime@2a01cb0883359800761b1c69d9198b7f.ipv6.abo.wanadoo.fr)
2022-02-20 18:14:58 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2022-02-20 18:16:18 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-02-20 18:17:06 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:5928:8400:a51e:7799) (Remote host closed the connection)
2022-02-20 18:18:47 +0100alx741(~alx741@157.100.197.240)
2022-02-20 18:22:15 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 18:22:31 +0100fresheyeball(~fresheyeb@c-76-25-93-164.hsd1.co.comcast.net) (Quit: WeeChat 3.3)
2022-02-20 18:22:47 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-02-20 18:22:51 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2022-02-20 18:23:09 +0100deadmarshal(~deadmarsh@95.38.116.229)
2022-02-20 18:23:54 +0100chexum(~quassel@gateway/tor-sasl/chexum)
2022-02-20 18:24:12 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-20 18:24:16 +0100adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-02-20 18:24:25 +0100hololeap(~hololeap@user/hololeap)
2022-02-20 18:24:29 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao)
2022-02-20 18:25:59 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-02-20 18:26:17 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2022-02-20 18:26:18 +0100alMalsamo(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-02-20 18:26:21 +0100ec(~ec@gateway/tor-sasl/ec)
2022-02-20 18:27:08 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-02-20 18:27:20 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2022-02-20 18:28:08 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:5928:8400:a51e:7799)
2022-02-20 18:28:59 +0100yauhsien_(~yauhsien@61-231-37-106.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-02-20 18:30:11 +0100yauhsien_(~yauhsien@61-231-37-106.dynamic-ip.hinet.net)
2022-02-20 18:34:36 +0100yauhsien_(~yauhsien@61-231-37-106.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-02-20 18:39:09 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 256 seconds)
2022-02-20 18:40:25 +0100alx741(~alx741@157.100.197.240)
2022-02-20 18:55:20 +0100Achylles(~Achylles_@2804:431:d724:7449:3b4d:585c:367b:f390)
2022-02-20 18:55:29 +0100Null_A(~null_a@c-98-210-133-39.hsd1.ca.comcast.net)
2022-02-20 18:56:34 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 18:57:33 +0100jgeerds(~jgeerds@55d4b9df.access.ecotel.net)
2022-02-20 18:58:59 +0100paddymahoney(~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (Ping timeout: 256 seconds)
2022-02-20 19:00:07 +0100Null_A(~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2022-02-20 19:02:46 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-02-20 19:03:33 +0100dsrt^(~dsrt@50.233.120.162) (Ping timeout: 272 seconds)
2022-02-20 19:05:19 +0100econo(uid147250@user/econo)
2022-02-20 19:11:48 +0100zincy_(~zincy@2a00:23c8:970c:4801:39f9:90f7:922:e73b) (Ping timeout: 240 seconds)
2022-02-20 19:14:47 +0100alx741(~alx741@157.100.197.240)
2022-02-20 19:18:24 +0100dsrt^(~dsrt@50.233.120.162)
2022-02-20 19:21:04 +0100poss(~fes@mobile-access-567357-189.dhcp.inet.fi)
2022-02-20 19:22:04 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 19:22:12 +0100dsrt^(~dsrt@50.233.120.162) (Remote host closed the connection)
2022-02-20 19:23:48 +0100 <joel135> do you use xmonad ?
2022-02-20 19:24:08 +0100 <joel135> i tried it right now, without any config
2022-02-20 19:24:22 +0100 <geekosaur> it's very stupid without a config
2022-02-20 19:24:34 +0100 <joel135> i bet :)
2022-02-20 19:24:50 +0100 <geekosaur> you might want to go through https://xmonad.org/TUTORIAL.html
2022-02-20 19:25:13 +0100 <geekosaur> without a config it does the absolute bare minimum it needs to
2022-02-20 19:25:24 +0100zincy_(~zincy@2a00:23c8:970c:4801:39f9:90f7:922:e73b)
2022-02-20 19:27:38 +0100 <joel135> i just spent a few hours setting up arch linux in virtualbox so i could install xmonad. maybe i will go through the tutorial another weekend
2022-02-20 19:28:59 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-20 19:29:29 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:5928:8400:a51e:7799) (Remote host closed the connection)
2022-02-20 19:30:10 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2022-02-20 19:30:46 +0100gehmehgeh(~user@user/gehmehgeh)
2022-02-20 19:31:40 +0100 <dvdrw> joel135: It might be a bit more to learn, but Nix (the package manager) and NixOS (the distro built around it) might be more elegant to configure in the long run
2022-02-20 19:31:52 +0100 <joel135> good point
2022-02-20 19:32:44 +0100 <joel135> i had forgot about nixos
2022-02-20 19:33:24 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-20 19:33:51 +0100 <geekosaur> that, and arch is not the best distro to play with haskell stuff unless you're starting from ghcup instead of distro packages
2022-02-20 19:34:14 +0100 <geekosaur> they do really *annoying* things with their haskell packages
2022-02-20 19:35:54 +0100 <dvdrw> I think any install ought to go through ghcup/stack, it's much easier than whatever 'native' package manager solution you have in place
2022-02-20 19:35:58 +0100 <yrlnry> ghci now says that the kind of Functor is (* -> *) -> Constraint. I expected just * -> *. Has it changed? What's "constraint"?
2022-02-20 19:36:13 +0100 <dvdrw> just like pip with python/nvm with node
2022-02-20 19:37:19 +0100 <dvdrw> yrlnry: There's been a fair few kind system tweaks over the years, the chronology of which I'm not so sure about. But there's now two kinds, * (or Type as it's now called) and Constraint
2022-02-20 19:37:19 +0100 <monochrom> If F is an instance of Functor, then F's kind is * -> *. That doesn't mean Functor's kind is * -> *.
2022-02-20 19:37:20 +0100 <geekosaur> Functor is a typeclass, not a type constructor
2022-02-20 19:37:28 +0100 <dvdrw> Constraint is the typeclass kind
2022-02-20 19:37:34 +0100 <geekosaur> Constraint is something that appears to the left of =>
2022-02-20 19:38:15 +0100 <monochrom> Instead, given that "Functor F" is a constraint, therefore, Functor maps *->* to constraint.
2022-02-20 19:38:52 +0100HotblackDesiato(~HotblackD@gateway/tor-sasl/hotblackdesiato)
2022-02-20 19:39:14 +0100 <yrlnry> Oh, I see. Thanks.
2022-02-20 19:40:16 +0100alx741(~alx741@157.100.197.240)
2022-02-20 19:40:35 +0100dyeplexer(~dyeplexer@user/dyeplexer) (Remote host closed the connection)
2022-02-20 19:43:18 +0100alx741(~alx741@157.100.197.240) (Read error: Connection reset by peer)
2022-02-20 19:44:59 +0100zincy_(~zincy@2a00:23c8:970c:4801:39f9:90f7:922:e73b) ()
2022-02-20 19:45:13 +0100zincy_(~zincy@2a00:23c8:970c:4801:39f9:90f7:922:e73b)
2022-02-20 19:45:50 +0100slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2022-02-20 19:48:00 +0100Megant(megant@user/megant) (Ping timeout: 256 seconds)
2022-02-20 19:48:08 +0100adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-02-20 19:48:21 +0100adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-02-20 19:49:32 +0100Megant(megant@user/megant)
2022-02-20 19:54:46 +0100HotblackDesiato(~HotblackD@gateway/tor-sasl/hotblackdesiato) (Remote host closed the connection)
2022-02-20 19:55:29 +0100HotblackDesiato(~HotblackD@gateway/tor-sasl/hotblackdesiato)
2022-02-20 19:56:55 +0100HotblackDesiato(~HotblackD@gateway/tor-sasl/hotblackdesiato) (Remote host closed the connection)
2022-02-20 19:58:12 +0100deadmarshal(~deadmarsh@95.38.116.229) (Ping timeout: 240 seconds)
2022-02-20 19:59:44 +0100paddymahoney(~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com)
2022-02-20 20:01:52 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4)
2022-02-20 20:02:09 +0100c209e6dc-4d76-47(~aditya@2601:249:4300:1296:195:dac6:592c:a55a)
2022-02-20 20:02:15 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-02-20 20:02:15 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-20 20:02:43 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-02-20 20:03:24 +0100dwt_(~dwt_@c-98-198-103-176.hsd1.tx.comcast.net) (Ping timeout: 240 seconds)
2022-02-20 20:06:31 +0100dwt_(~dwt_@c-98-198-103-176.hsd1.tx.comcast.net)
2022-02-20 20:07:00 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-20 20:15:15 +0100jgeerds(~jgeerds@55d4b9df.access.ecotel.net) (Ping timeout: 256 seconds)
2022-02-20 20:20:11 +0100neurocyte0917090(~neurocyte@user/neurocyte) (Ping timeout: 272 seconds)
2022-02-20 20:24:25 +0100HotblackDesiato(~HotblackD@gateway/tor-sasl/hotblackdesiato)
2022-02-20 20:28:53 +0100neurocyte0917090(~neurocyte@IP-213188112151.dynamic.medianet-world.de)
2022-02-20 20:28:53 +0100neurocyte0917090(~neurocyte@IP-213188112151.dynamic.medianet-world.de) (Changing host)
2022-02-20 20:28:53 +0100neurocyte0917090(~neurocyte@user/neurocyte)
2022-02-20 20:29:54 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:5928:8400:a51e:7799)
2022-02-20 20:31:19 +0100Achylles(~Achylles_@2804:431:d724:7449:3b4d:585c:367b:f390) (Remote host closed the connection)
2022-02-20 20:33:53 +0100mcglk(~mcglk@131.191.49.120) (Read error: Connection reset by peer)
2022-02-20 20:33:57 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:5928:8400:a51e:7799) (Ping timeout: 240 seconds)
2022-02-20 20:34:40 +0100mcglk(~mcglk@131.191.49.120)
2022-02-20 20:34:58 +0100zincy_(~zincy@2a00:23c8:970c:4801:39f9:90f7:922:e73b) (Remote host closed the connection)
2022-02-20 20:37:12 +0100zincy_(~zincy@2a00:23c8:970c:4801:39f9:90f7:922:e73b)
2022-02-20 20:40:12 +0100jao(~jao@static-68-235-44-22.cust.tzulo.com)
2022-02-20 20:43:30 +0100burnsidesLlama(~burnsides@dhcp168-012.wadham.ox.ac.uk)
2022-02-20 20:44:00 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2022-02-20 20:44:17 +0100alp(~alp@user/alp)
2022-02-20 20:44:36 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-02-20 20:44:57 +0100neurocyte0917090(~neurocyte@user/neurocyte) (Ping timeout: 256 seconds)
2022-02-20 20:45:17 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
2022-02-20 20:46:44 +0100Lord_of_Life_Lord_of_Life
2022-02-20 20:47:42 +0100wootehfoot(~wootehfoo@user/wootehfoot)
2022-02-20 20:50:37 +0100jao(~jao@static-68-235-44-22.cust.tzulo.com) (Ping timeout: 256 seconds)
2022-02-20 20:50:52 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-02-20 20:52:22 +0100jao(~jao@static-68-235-44-61.cust.tzulo.com)
2022-02-20 20:55:41 +0100 <joel135> hmm... what do you think about installing `stack` using pacman in arch linux?
2022-02-20 20:55:43 +0100Null_A(~null_a@c-98-210-133-39.hsd1.ca.comcast.net)
2022-02-20 20:56:10 +0100 <Rembane> joel135: It will give you infinite amounts of pain, so only do that if you want to fight everything all the time to get something to work.
2022-02-20 20:56:23 +0100 <joel135> ok then i will install stack without pacman
2022-02-20 20:56:26 +0100lavaman(~lavaman@98.38.249.169)
2022-02-20 20:56:57 +0100 <joel135> weird that the command for installing stack using pacman is listed here https://xmonad.org/INSTALL.html
2022-02-20 20:57:54 +0100 <Rembane> Maybe that part of the docs are so old that it was a good experience using Haskell on Arch?
2022-02-20 20:58:57 +0100random-jellyfish(~random-je@user/random-jellyfish)
2022-02-20 20:59:56 +0100 <geekosaur> we reworked the docs. I believe the intent for Arch is you install *only* stack via pacman and let stack install everything else
2022-02-20 21:00:33 +0100 <Rembane> That seems like a reasonable solution.
2022-02-20 21:01:21 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
2022-02-20 21:01:37 +0100Midjak(~Midjak@82.66.147.146) (Read error: Connection reset by peer)
2022-02-20 21:01:42 +0100random(~random@46.254.129.49)
2022-02-20 21:02:14 +0100Midjak(~Midjak@82.66.147.146)
2022-02-20 21:02:48 +0100 <random> hey guys, got what's probably a dumb question
2022-02-20 21:02:58 +0100 <Hecate> damn
2022-02-20 21:03:03 +0100 <random> I'm used to deriving json instances with TH via `$(deriveJSON defaultOptions 'MyType)`
2022-02-20 21:03:03 +0100 <Hecate> hope you ask it then :)
2022-02-20 21:03:03 +0100 <joel135> geekosaur: but arch wants to install lots of haskell-* packages when i install stack
2022-02-20 21:03:27 +0100 <random> now I've got a type that has a parameter `newtype SomeType a = ..`
2022-02-20 21:03:31 +0100 <geekosaur> itwillinstall a bunch of shared objects, yes. you can ignore those; stack installs its own copies of everything including the compiler
2022-02-20 21:03:37 +0100echoreply(~echoreply@45.32.163.16) (Quit: WeeChat 2.8)
2022-02-20 21:03:43 +0100 <random> and when I try to do `$(deriveJSON defaultOptions '(SomeType Something))`
2022-02-20 21:03:45 +0100 <joel135> ok then i will use pacman
2022-02-20 21:03:52 +0100 <geekosaur> so nothing else will use the stuff pacman installs
2022-02-20 21:03:53 +0100 <random> it fails with a parse error at the opening parentheses
2022-02-20 21:04:05 +0100echoreply(~echoreply@45.32.163.16)
2022-02-20 21:04:21 +0100 <random> so it seems you can't do ''(SomeType) which is weird
2022-02-20 21:04:26 +0100 <geekosaur> if this annoysa you then use ghcup to install ghc and stack
2022-02-20 21:04:54 +0100vorpuni(~pvorp@2001:861:3881:c690:2806:79fd:17ad:ce07) (Remote host closed the connection)
2022-02-20 21:05:09 +0100juhp(~juhp@128.106.188.82) (Ping timeout: 272 seconds)
2022-02-20 21:05:31 +0100wavemode(~wavemode@2601:241:0:fc90:79a9:b149:73a6:32c7)
2022-02-20 21:06:29 +0100random-jellyfish(~random-je@user/random-jellyfish) (Ping timeout: 256 seconds)
2022-02-20 21:06:45 +0100juhp(~juhp@128.106.188.82)
2022-02-20 21:07:04 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2022-02-20 21:08:57 +0100jao(~jao@static-68-235-44-61.cust.tzulo.com) (Ping timeout: 272 seconds)
2022-02-20 21:09:12 +0100Erutuon(~Erutuon@user/erutuon)
2022-02-20 21:10:00 +0100 <random> so it seems like I'm looking for a way to construct a https://hackage.haskell.org/package/template-haskell-2.16.0.0/docs/Language-Haskell-TH-Syntax.html… via the '' syntax
2022-02-20 21:10:04 +0100raghavgururajan(ea769b8000@user/raghavgururajan) (Ping timeout: 250 seconds)
2022-02-20 21:10:05 +0100 <random> for a type that has a parameter
2022-02-20 21:10:42 +0100 <random> in an expression like $(deriveJSON defaultOptions ''(MyTypeWithParameter Int))
2022-02-20 21:11:16 +0100raghavgururajan(ea769b8000@user/raghavgururajan)
2022-02-20 21:12:10 +0100Me-me(~me-me@user/me-me) (Read error: Connection reset by peer)
2022-02-20 21:12:42 +0100Me-me(~me-me@v.working.name)
2022-02-20 21:14:13 +0100 <geekosaur> you just derive it without the parameter, it looks like
2022-02-20 21:14:36 +0100 <geekosaur> example: https://github.com/lachenmayer/arrowsmith/blob/34b6bdeddddb2d8b9c6f41002e87ec65ce8a701a/backend/Ar…
2022-02-20 21:14:45 +0100 <geekosaur> (yay github search)
2022-02-20 21:19:11 +0100 <random> hahhaa my god this actually compiled
2022-02-20 21:20:02 +0100shreyasminocha(51fdc93eda@user/shreyasminocha) (Ping timeout: 250 seconds)
2022-02-20 21:20:02 +0100tdmm(1c9b9145fc@2604:bf00:561:2000::1c8) (Ping timeout: 250 seconds)
2022-02-20 21:20:31 +0100cjb(~cjb@user/cjb)
2022-02-20 21:21:20 +0100lukec(9dfd4d094e@2604:bf00:561:2000::10e) (Ping timeout: 250 seconds)
2022-02-20 21:21:20 +0100filwisher(2e6936c793@2604:bf00:561:2000::170) (Ping timeout: 250 seconds)
2022-02-20 21:21:46 +0100sm2n(ae95cb1267@user/sm2n) (Ping timeout: 250 seconds)
2022-02-20 21:21:46 +0100bsima1(9d7e39c8ad@2604:bf00:561:2000::dd) (Ping timeout: 250 seconds)
2022-02-20 21:21:50 +0100shreyasminocha(51fdc93eda@user/shreyasminocha)
2022-02-20 21:21:50 +0100lukec(9dfd4d094e@2604:bf00:561:2000::10e)
2022-02-20 21:21:53 +0100tdmm(1c9b9145fc@2604:bf00:561:2000::1c8)
2022-02-20 21:21:53 +0100filwisher(2e6936c793@2604:bf00:561:2000::170)
2022-02-20 21:22:05 +0100bsima1(9d7e39c8ad@2604:bf00:561:2000::dd)
2022-02-20 21:22:18 +0100sm2n(ae95cb1267@user/sm2n)
2022-02-20 21:25:25 +0100Null_A(~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Ping timeout: 272 seconds)
2022-02-20 21:26:46 +0100deadmarshal(~deadmarsh@95.38.116.229)
2022-02-20 21:29:01 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net)
2022-02-20 21:29:56 +0100gehmehgeh(~user@user/gehmehgeh) (Ping timeout: 240 seconds)
2022-02-20 21:30:23 +0100jao(~jao@static-68-235-44-45.cust.tzulo.com)
2022-02-20 21:31:45 +0100deadmarshal(~deadmarsh@95.38.116.229) (Ping timeout: 272 seconds)
2022-02-20 21:32:43 +0100mcglk(~mcglk@131.191.49.120) (Quit: (seeya))
2022-02-20 21:33:15 +0100gehmehgeh(~user@user/gehmehgeh)
2022-02-20 21:34:25 +0100EDP1035(~EDP1035@2607:fb90:2164:7428:e55c:6036:7494:489e)
2022-02-20 21:34:46 +0100fluffyballoon(45ce440a48@2604:bf00:561:2000::e2) (Ping timeout: 250 seconds)
2022-02-20 21:35:07 +0100EDP1035(~EDP1035@2607:fb90:2164:7428:e55c:6036:7494:489e) (Client Quit)
2022-02-20 21:35:26 +0100fluffyballoon(45ce440a48@2604:bf00:561:2000::e2)
2022-02-20 21:36:25 +0100c209e6dc-4d76-47(~aditya@2601:249:4300:1296:195:dac6:592c:a55a) (Quit: Konversation terminated!)
2022-02-20 21:39:21 +0100michalz(~michalz@185.246.204.61)
2022-02-20 21:39:56 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:5928:8400:a51e:7799)
2022-02-20 21:44:25 +0100 <FernandoChu[m]> `StateT s m a` is a functor as long as `m` is a functor, similarly with monads. If `m` is an Applicative does that implies that `StateT s m a` is Applicative too?
2022-02-20 21:47:02 +0100 <jackdk> % :info StateT
2022-02-20 21:47:03 +0100 <yahb> jackdk: type role StateT nominal representational nominal; type StateT :: * -> (* -> *) -> * -> *; newtype StateT s m a = StateT {runStateT :: s -> m (a, s)}; -- Defined in `Control.Monad.Trans.State.Lazy'; instance [safe] forall (m :: * -> *) s. (Functor m, MonadPlus m) => Alternative (StateT s m) -- Defined in `Control.Monad.Trans.State.Lazy'; instance [safe] forall (m :: * -> *) s. (Functor m, Monad m) =
2022-02-20 21:47:28 +0100 <geekosaur> %% :info StateT
2022-02-20 21:47:28 +0100 <yahb> geekosaur: http://qp.mniip.com/y/43
2022-02-20 21:47:34 +0100pragma-(~chaos@user/pragmatic-chaos) (Bye!)
2022-02-20 21:47:56 +0100 <jackdk> `instance [safe] forall (m :: * -> *) s. (Functor m, Monad m) => Applicative (StateT s m) -- Defined in `Control.Monad.Trans.State.Lazy'` Guess not, but probably for historical reasons.
2022-02-20 21:48:04 +0100 <geekosaur> interestingly it seems to require (Functor m, Monad m) which sounds like a holdover from pre-AMP
2022-02-20 21:48:40 +0100little_mac(~little_ma@2601:410:4300:3ce0:45bc:2e9e:c6:5360)
2022-02-20 21:48:42 +0100 <FernandoChu[m]> yep, that's why I'm wondering if that's just an unnecessary (historic) constraint
2022-02-20 21:49:04 +0100 <geekosaur> Monad implies Functor so the extra constraint is pointless, yes
2022-02-20 21:49:17 +0100 <geekosaur> the question is whether it should be Application =>
2022-02-20 21:49:21 +0100 <geekosaur> erApplicative
2022-02-20 21:49:35 +0100 <FernandoChu[m]> not that, I meant Monad implies Applicative too, so wondering if Applicative is enough
2022-02-20 21:49:38 +0100 <FernandoChu[m]> yeah that
2022-02-20 21:50:17 +0100 <geekosaur> right, but as these constraints predate that too, I think it's just an oversight
2022-02-20 21:50:31 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:5928:8400:a51e:7799) (Remote host closed the connection)
2022-02-20 21:50:41 +0100 <geekosaur> wonder if the infamous next release will fix it
2022-02-20 21:51:30 +0100 <geekosaur> (infamous because we've been waiting a couple years for it…)
2022-02-20 21:52:39 +0100jao(~jao@static-68-235-44-45.cust.tzulo.com) (Ping timeout: 272 seconds)
2022-02-20 21:53:17 +0100alp(~alp@user/alp) (Ping timeout: 256 seconds)
2022-02-20 21:54:01 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-20 21:54:18 +0100Akiva(~Akiva@user/Akiva)
2022-02-20 21:54:23 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com)
2022-02-20 21:54:23 +0100jao(~jao@static-68-235-44-77.cust.tzulo.com)
2022-02-20 21:56:52 +0100jkoshy(99b9359beb@2604:bf00:561:2000::10f) (Ping timeout: 250 seconds)
2022-02-20 21:57:00 +0100jkoshy(99b9359beb@2604:bf00:561:2000::10f)
2022-02-20 21:57:41 +0100barzo(~hd@31.155.65.151)
2022-02-20 21:58:47 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 250 seconds)
2022-02-20 21:59:11 +0100mcglk(~mcglk@131.191.49.120)
2022-02-20 22:01:26 +0100pavonia(~user@user/siracusa)
2022-02-20 22:01:32 +0100simplicius(~simplicio@2a02-a45b-3dc8-1-1d3a-6766-2ae7-f393.fixed6.kpn.net)
2022-02-20 22:01:37 +0100mvk(~mvk@2607:fea8:5cdc:bf00::99e7) (Ping timeout: 240 seconds)
2022-02-20 22:02:05 +0100lavaman(~lavaman@98.38.249.169)
2022-02-20 22:03:41 +0100vysn(~vysn@user/vysn) (Ping timeout: 245 seconds)
2022-02-20 22:05:25 +0100 <ski> FernandoChu[m] : "If `m` is an Applicative does that implies that `StateT s m a` is Applicative too?" -- no
2022-02-20 22:05:36 +0100alp(~alp@user/alp)
2022-02-20 22:06:04 +0100 <FernandoChu[m]> I agree but wondering if there's some way of proving that
2022-02-20 22:06:26 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:5928:8400:a51e:7799)
2022-02-20 22:07:45 +0100 <FernandoChu[m]> also I've been reading the source code for StateT and there's code like `~(a, _) <- runStateT m s`, any ideas what the `~` is? very hard to search for something like that on google
2022-02-20 22:08:17 +0100 <geekosaur> lazy pattern match
2022-02-20 22:08:29 +0100 <geekosaur> the technical term is "irrefutable pattern match"
2022-02-20 22:08:53 +0100 <FernandoChu[m]> I see, thanks
2022-02-20 22:09:15 +0100 <ski> `Control.Monad.State.Lazy', i presume
2022-02-20 22:10:28 +0100 <jackdk> FernandoChu[m]: attempt to write the instance, and you will find that to implement (<*>), you'll need to plumb an `s` parameter through things, and I'm pretty sure that's going to require bind
2022-02-20 22:10:36 +0100dextaa_(~dextaa@user/dextaa) (Remote host closed the connection)
2022-02-20 22:11:00 +0100 <ski> matching on a pattern `~<pat>' succeeds immediately, binding all identifiers bound by `<pat>'. when any of them are forced, the pattern `<pat>' is matched with the scrutinee (which may result in match failure)
2022-02-20 22:11:41 +0100dextaa_(~dextaa@user/dextaa)
2022-02-20 22:12:59 +0100cynomys(~cynomys@user/cynomys)
2022-02-20 22:13:36 +0100barzo(~hd@31.155.65.151) (Quit: Leaving)
2022-02-20 22:15:11 +0100mvk(~mvk@2607:fea8:5cdc:bf00::99e7)
2022-02-20 22:15:52 +0100_ht(~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
2022-02-20 22:21:24 +0100mikoto-chan(~mikoto-ch@213.177.151.239) (Ping timeout: 240 seconds)
2022-02-20 22:22:52 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-20 22:22:56 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-02-20 22:23:04 +0100lavaman(~lavaman@98.38.249.169)
2022-02-20 22:24:06 +0100icrbow[m](~icrbowmat@2001:470:69fc:105::ee3) ()
2022-02-20 22:24:36 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2022-02-20 22:26:43 +0100jgeerds(~jgeerds@55d4b9df.access.ecotel.net)
2022-02-20 22:28:19 +0100cynomys(~cynomys@user/cynomys) (Quit: Lost terminal)
2022-02-20 22:28:58 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729)
2022-02-20 22:33:24 +0100Null_A(~null_a@2601:645:8700:2290:44bc:7304:7645:6729) (Ping timeout: 240 seconds)
2022-02-20 22:37:36 +0100nek0(~nek0@nek0.eu) (Quit: The Lounge - https://thelounge.chat)
2022-02-20 22:37:49 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4)
2022-02-20 22:39:51 +0100simplicius(~simplicio@2a02-a45b-3dc8-1-1d3a-6766-2ae7-f393.fixed6.kpn.net) (Quit: Leaving)
2022-02-20 22:40:57 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2022-02-20 22:43:56 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-02-20 22:44:16 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2022-02-20 22:45:19 +0100acidjnk(~acidjnk@p200300d0c7363f90955657ea6b285d32.dip0.t-ipconnect.de)
2022-02-20 22:47:24 +0100analognoise(~analognoi@ip98-176-154-48.sd.sd.cox.net)
2022-02-20 22:48:50 +0100ccntrq(~Thunderbi@2a01:e34:eccb:b060:447b:39c4:735e:5310) (Quit: ccntrq)
2022-02-20 22:48:52 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-02-20 22:50:50 +0100nek0(~nek0@nek0.eu)
2022-02-20 22:55:21 +0100random-jellyfish(~random-je@user/random-jellyfish)
2022-02-20 23:02:57 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 272 seconds)
2022-02-20 23:05:11 +0100Topsi(~Tobias@dyndsl-095-033-018-175.ewe-ip-backbone.de)
2022-02-20 23:09:22 +0100alp(~alp@user/alp) (Ping timeout: 260 seconds)
2022-02-20 23:09:57 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-20 23:10:11 +0100lavaman(~lavaman@98.38.249.169)
2022-02-20 23:10:18 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-20 23:14:14 +0100 <random-jellyfish> how many times did you get fired?
2022-02-20 23:20:27 +0100emf(~emf@c-73-97-137-43.hsd1.wa.comcast.net) (Quit: emf)
2022-02-20 23:30:52 +0100zer0bitz(~zer0bitz@2001:2003:f74d:b800:7d50:ed7b:88e6:c382) (Read error: Connection reset by peer)
2022-02-20 23:31:42 +0100zincy_(~zincy@2a00:23c8:970c:4801:39f9:90f7:922:e73b) (Remote host closed the connection)
2022-02-20 23:32:01 +0100jackalope(~jackalope@50-24-138-131.bcstcmta02.res.dyn.suddenlink.net) (Quit: = "vale")
2022-02-20 23:34:06 +0100Akiva(~Akiva@user/Akiva)
2022-02-20 23:40:50 +0100lavaman(~lavaman@98.38.249.169)
2022-02-20 23:40:58 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2022-02-20 23:44:18 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Ping timeout: 256 seconds)
2022-02-20 23:44:57 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2022-02-20 23:46:02 +0100michalz(~michalz@185.246.204.61) (Remote host closed the connection)
2022-02-20 23:50:15 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-20 23:50:28 +0100Topsi(~Tobias@dyndsl-095-033-018-175.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2022-02-20 23:51:10 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:5928:8400:a51e:7799) (Remote host closed the connection)
2022-02-20 23:51:21 +0100thyriaen(~thyriaen@dynamic-077-191-029-223.77.191.pool.telefonica.de) (Remote host closed the connection)