2022/10/09

2022-10-09 00:01:01 +0000chomwitt(~chomwitt@athedsl-351954.home.otenet.gr) (Ping timeout: 260 seconds)
2022-10-09 00:06:24 +0000lagash(lagash@lagash.shelltalk.net) (Ping timeout: 264 seconds)
2022-10-09 00:08:53 +0000king_gs(~Thunderbi@187.201.131.180)
2022-10-09 00:21:19 +0000rockystone(~rocky@user/rockymarine) (Ping timeout: 268 seconds)
2022-10-09 00:25:21 +0000lagash(lagash@lagash.shelltalk.net)
2022-10-09 00:28:54 +0000gmg(~user@user/gehmehgeh)
2022-10-09 00:34:20 +0000gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2022-10-09 00:35:26 +0000gmg(~user@user/gehmehgeh)
2022-10-09 00:39:14 +0000gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2022-10-09 00:39:16 +0000king_gs(~Thunderbi@187.201.131.180) (Quit: king_gs)
2022-10-09 00:39:31 +0000rockystone(~rocky@user/rockymarine)
2022-10-09 00:39:34 +0000king_gs(~Thunderbi@187.201.131.180)
2022-10-09 00:40:00 +0000gmg(~user@user/gehmehgeh)
2022-10-09 00:48:19 +0000vorpuni(~pvorp@2001:861:3881:c690:67f7:ad96:2b5b:1073) (Remote host closed the connection)
2022-10-09 00:53:09 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 265 seconds)
2022-10-09 00:53:52 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2022-10-09 01:06:22 +0000Neosake[m](~neosakema@2001:470:69fc:105::2:989e)
2022-10-09 01:07:31 +0000king_gs(~Thunderbi@187.201.131.180) (Ping timeout: 260 seconds)
2022-10-09 01:10:27 +0000drsooch[m](~drsoochma@2001:470:69fc:105::1:c8a1)
2022-10-09 01:12:18 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 01:14:21 +0000wroathe(~wroathe@user/wroathe) (Quit: Lost terminal)
2022-10-09 01:16:27 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 252 seconds)
2022-10-09 01:22:16 +0000gmg(~user@user/gehmehgeh) (Quit: Leaving)
2022-10-09 01:23:36 +0000wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-10-09 01:23:36 +0000wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-10-09 01:23:36 +0000wroathe(~wroathe@user/wroathe)
2022-10-09 01:26:34 +0000king_gs(~Thunderbi@2806:103e:29:c5:4fb1:a8c9:906f:c6e0)
2022-10-09 01:29:31 +0000rosalind(rosalind@id-194105.uxbridge.irccloud.com)
2022-10-09 01:30:35 +0000burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk)
2022-10-09 01:37:25 +0000justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.5)
2022-10-09 01:37:30 +0000wroathe(~wroathe@user/wroathe) (Quit: Lost terminal)
2022-10-09 01:40:41 +0000ubert1(~Thunderbi@178.165.205.208.wireless.dyn.drei.com)
2022-10-09 01:41:58 +0000gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2022-10-09 01:42:31 +0000ubert(~Thunderbi@178.165.197.164.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
2022-10-09 01:42:32 +0000ubert1ubert
2022-10-09 01:42:35 +0000wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-10-09 01:42:35 +0000wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-10-09 01:42:35 +0000wroathe(~wroathe@user/wroathe)
2022-10-09 01:45:25 +0000machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2022-10-09 01:45:34 +0000rosalindlovebug
2022-10-09 01:47:29 +0000beteigeuze(~Thunderbi@2001:8a0:61b5:6101:f0c:e4e3:bfdc:91df) (Ping timeout: 250 seconds)
2022-10-09 01:52:44 +0000olivermead[m](~olivermea@2001:470:69fc:105::2:4289)
2022-10-09 01:52:44 +0000jinsunGuest1502
2022-10-09 01:52:44 +0000jinsun__(~jinsun@user/jinsun)
2022-10-09 01:52:44 +0000Guest1502(~jinsun@user/jinsun) (Killed (tantalum.libera.chat (Nickname regained by services)))
2022-10-09 01:52:44 +0000jinsun__jinsun
2022-10-09 01:52:45 +0000rockystone(~rocky@user/rockymarine) (Ping timeout: 252 seconds)
2022-10-09 01:52:48 +0000jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2022-10-09 01:54:05 +0000kilolympus(~kilolympu@213.144.144.24) (Read error: Connection reset by peer)
2022-10-09 01:57:52 +0000jinsun(~jinsun@user/jinsun)
2022-10-09 01:58:30 +0000nate1(~nate@98.45.169.16)
2022-10-09 02:00:12 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 02:01:50 +0000ubert(~Thunderbi@178.165.205.208.wireless.dyn.drei.com) (Ping timeout: 268 seconds)
2022-10-09 02:01:51 +0000ubert1(~Thunderbi@178.115.74.207.wireless.dyn.drei.com)
2022-10-09 02:02:29 +0000johnjaye(~pi@173.209.64.74)
2022-10-09 02:02:59 +0000 <johnjaye> does haskell let functions take a variable number of arguments?
2022-10-09 02:03:21 +0000wroathe(~wroathe@user/wroathe) (Quit: Lost terminal)
2022-10-09 02:03:24 +0000rockystone(~rocky@user/rockymarine)
2022-10-09 02:04:09 +0000ubert1ubert
2022-10-09 02:07:50 +0000 <EvanR> functions in haskell take exactly 1 argument, no more no less. But you can add nuance to the question to get other answers
2022-10-09 02:08:45 +0000 <johnjaye> ok. i see the syntax for functions is simply the name followed by the arguments
2022-10-09 02:08:46 +0000waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
2022-10-09 02:08:46 +0000 <EvanR> for example in the definition of a function you can mention more than 1 parameter, these will be automatically curried for you
2022-10-09 02:08:47 +0000jinsunGuest8869
2022-10-09 02:08:47 +0000jinsun__(~jinsun@user/jinsun)
2022-10-09 02:08:47 +0000Guest8869(~jinsun@user/jinsun) (Killed (copper.libera.chat (Nickname regained by services)))
2022-10-09 02:08:48 +0000jinsun__jinsun
2022-10-09 02:08:59 +0000 <johnjaye> so you can have expressions like f x + g x y z + h w u
2022-10-09 02:09:06 +0000 <johnjaye> oh ok
2022-10-09 02:09:21 +0000 <EvanR> in g x y z the grouping looks like ((g x) y) z
2022-10-09 02:09:23 +0000 <johnjaye> the lack of ( and ) is very strange.
2022-10-09 02:09:57 +0000 <EvanR> to the parser
2022-10-09 02:10:02 +0000 <johnjaye> i assume there's *some* reason every imperative language i've ever seen uses f() and not this way
2022-10-09 02:10:21 +0000rockystone(~rocky@user/rockymarine) (Ping timeout: 252 seconds)
2022-10-09 02:10:47 +0000 <EvanR> while imperative languages have multi-argument functions, they don't have convenient currying
2022-10-09 02:10:58 +0000 <johnjaye> meaning, how does the parser know how to parse it without them
2022-10-09 02:11:08 +0000 <EvanR> for example g x y z is valid, but also g x y and g x are valid. Which can be convenient
2022-10-09 02:11:37 +0000 <EvanR> g x y z can be parsed just like 2 + 3 + 4 + 5, because of associativity rules
2022-10-09 02:11:38 +0000 <king_gs> geekosaur: Unless you give AI's capacity to compete with humans for scarce resources. That won't happen.
2022-10-09 02:11:39 +0000jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2022-10-09 02:11:49 +0000rockystone(~rocky@user/rockymarine)
2022-10-09 02:12:00 +0000 <johnjaye> i guess y better not be it's own function and variable at once, or g x y z could be ambiguous
2022-10-09 02:12:02 +0000 <EvanR> + takes 2 arguments, but 2 + 3 + 4 + 5 can still be parsed without parens
2022-10-09 02:12:04 +0000jinsun(~jinsun@user/jinsun)
2022-10-09 02:12:13 +0000 <EvanR> y can be a function
2022-10-09 02:12:28 +0000 <EvanR> remember it's the same as typing ((g x) y) z
2022-10-09 02:12:38 +0000 <EvanR> y doesn't get any arguments there
2022-10-09 02:12:48 +0000 <johnjaye> hmm.
2022-10-09 02:13:11 +0000 <EvanR> if you wanted to call y in the process of calling g you could do
2022-10-09 02:13:14 +0000 <johnjaye> so how do you write something complex like f(x,g(h,k)).
2022-10-09 02:13:16 +0000 <EvanR> g x (y 9) z
2022-10-09 02:13:19 +0000 <johnjaye> i guess that is f x g h k
2022-10-09 02:13:33 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 268 seconds)
2022-10-09 02:13:35 +0000 <johnjaye> oh weird. ok
2022-10-09 02:13:38 +0000 <EvanR> f x (g h x)
2022-10-09 02:13:43 +0000 <EvanR> oops
2022-10-09 02:13:44 +0000 <johnjaye> that looks vaguely lispish
2022-10-09 02:13:50 +0000 <EvanR> yeah it does at first
2022-10-09 02:14:03 +0000 <johnjaye> but the parens are strictly syntactic here?
2022-10-09 02:14:07 +0000 <johnjaye> just for grouping?
2022-10-09 02:14:09 +0000 <EvanR> but in Haskell, x, (x), ((x)), (((x))) are all the same
2022-10-09 02:14:15 +0000 <EvanR> it's just for grouping
2022-10-09 02:14:36 +0000 <EvanR> and we like to remove parens if they aren't necessary
2022-10-09 02:14:46 +0000 <johnjaye> bizarrely the interpreter does in fact accept ((2+2)) as valid.
2022-10-09 02:14:49 +0000 <johnjaye> ok then
2022-10-09 02:15:13 +0000 <johnjaye> i get a bit suspicious when a language suddenly does something incredible like that with no explanation
2022-10-09 02:15:25 +0000 <johnjaye> it raises the obvious reply, why aren't other language doing that
2022-10-09 02:15:44 +0000 <EvanR> other languages have been stealing stuff from haskell, actually
2022-10-09 02:15:58 +0000 <EvanR> but parentheses isn't really groundbreaking
2022-10-09 02:16:10 +0000vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe)
2022-10-09 02:16:12 +0000 <johnjaye> so it's this implicit currying idea that's doing the work?
2022-10-09 02:16:29 +0000 <EvanR> look at the type of drop
2022-10-09 02:16:32 +0000 <EvanR> :t drop
2022-10-09 02:16:33 +0000 <lambdabot> Int -> [a] -> [a]
2022-10-09 02:16:35 +0000nate1(~nate@98.45.169.16) (Ping timeout: 252 seconds)
2022-10-09 02:16:42 +0000 <EvanR> the currying is evident in the type here
2022-10-09 02:16:50 +0000 <EvanR> instead of drop :: (Int, [a]) -> [a]
2022-10-09 02:17:17 +0000 <EvanR> note the lack of parentheses in the type, this time it associates the other direction
2022-10-09 02:17:24 +0000 <EvanR> drop :: Int -> ([a] -> [a])
2022-10-09 02:17:31 +0000rockystone(~rocky@user/rockymarine) (Ping timeout: 260 seconds)
2022-10-09 02:17:33 +0000 <Neosake[m]> Plus it is funny that people say "Programming" is not mathematical either. Funny enough, it is just a very thick level of abstraction between the two.
2022-10-09 02:17:35 +0000 <EvanR> drop is a function of 1 argument which returns a function (of 1 argument)
2022-10-09 02:17:54 +0000 <EvanR> you'll see this a lot if you look at the types, which you should
2022-10-09 02:18:49 +0000edrx(~Eduardo@2804:56c:d2d3:4800:cf7d:b421:4c3a:392e)
2022-10-09 02:18:58 +0000 <Neosake[m]> Plus most of this haskell stuff I do not know. I am an absolute rookie. xD
2022-10-09 02:19:31 +0000 <johnjaye> Neosake[m]: ironically math is often seen as 'not programming' either. when i was looking for books on category theory the first thing i asked is how to do computations about them
2022-10-09 02:19:52 +0000frost(~frost@user/frost)
2022-10-09 02:19:55 +0000 <edrx> @cabal-install
2022-10-09 02:19:55 +0000 <lambdabot> Unknown command, try @list
2022-10-09 02:20:00 +0000 <edrx> oops
2022-10-09 02:20:33 +0000 <johnjaye> EvanR: i do look at the types but I'm not that familiar with haskell yet.
2022-10-09 02:20:38 +0000rockystone(~rocky@user/rockymarine)
2022-10-09 02:20:59 +0000 <johnjaye> so the idea is that drop "really" takes the one argument. but gets automatically curried to take 2
2022-10-09 02:21:23 +0000 <EvanR> if you pass it 2, it still works
2022-10-09 02:21:44 +0000 <EvanR> because it's like doing (drop 3) [1,2,3,4]
2022-10-09 02:22:03 +0000 <Neosake[m]> johnjaye: Which is honestly crazy because Computer's were essentially math wizards in the day. Now it is just an extension of the mathematical conventions.
2022-10-09 02:22:07 +0000 <EvanR> but also drop 3 is a useful function in itself
2022-10-09 02:22:11 +0000 <johnjaye> prelude says no instance for (Show ([a0] -> [a0]))
2022-10-09 02:22:24 +0000 <EvanR> yeah you can't show functions normally
2022-10-09 02:22:32 +0000 <probie> That doesn't meant it's not a valid function, just that it's not a printable value
2022-10-09 02:22:48 +0000nate1(~nate@98.45.169.16)
2022-10-09 02:22:54 +0000 <edrx> people, what are your favorite links about cabal-install? I'm updating this page - http://angg.twu.net/eev-haskell.html ...
2022-10-09 02:23:06 +0000 <johnjaye> ah. prelude does accept (drop 3) [1,2,3,4,5]
2022-10-09 02:23:06 +0000wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-10-09 02:23:07 +0000wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-10-09 02:23:07 +0000wroathe(~wroathe@user/wroathe)
2022-10-09 02:23:24 +0000 <Neosake[m]> Also, any fellow NixOS users?
2022-10-09 02:23:39 +0000 <johnjaye> Neosake[m]: i'm an aspiring nixos user. but somehow i never find the time to actually do it.
2022-10-09 02:23:42 +0000jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-10-09 02:23:49 +0000 <johnjaye> i'm afraid it will choke if i try it on actual hardware
2022-10-09 02:24:10 +0000 <Neosake[m]> Interesting, I've had nothing but good experiences on live hardware
2022-10-09 02:25:28 +0000 <probie> You can also use `drop 3`, anywhere a function of type `[a] -> [a]` can go without needing to do something like `\x -> drop 3 x`
2022-10-09 02:25:33 +0000jakalx(~jakalx@base.jakalx.net)
2022-10-09 02:25:34 +0000 <probie> > map (drop 3) [[1..5], [6..10], [10..15]]
2022-10-09 02:25:36 +0000 <lambdabot> [[4,5],[9,10],[13,14,15]]
2022-10-09 02:25:42 +0000 <EvanR> johnjaye, in haskell you can get a lot out of "things that don't change the meaning of this code"
2022-10-09 02:25:58 +0000 <EvanR> which I guess you can call "laws"
2022-10-09 02:26:31 +0000 <EvanR> redundant parentheses is a simple example
2022-10-09 02:26:34 +0000 <Neosake[m]> I will be back in a bit. Gonna go back to reading the wikibooks
2022-10-09 02:26:38 +0000 <johnjaye> well. i'm not advanced enough to grasp why you would need to write \x -> drop 3 x
2022-10-09 02:26:45 +0000 <johnjaye> from lisp i can see what the intention is though
2022-10-09 02:26:59 +0000 <EvanR> sometimes an `x' can be introduced to make something clearer
2022-10-09 02:27:05 +0000 <EvanR> drop 3 is already pretty clear though
2022-10-09 02:27:18 +0000 <EvanR> other times, removing the x can make it very unclear
2022-10-09 02:27:22 +0000 <johnjaye> yes. but only after you explained it.
2022-10-09 02:27:23 +0000 <EvanR> we have a command for that
2022-10-09 02:27:23 +0000 <johnjaye> heh
2022-10-09 02:27:31 +0000 <EvanR> @pl \x -> drop 3 x
2022-10-09 02:27:31 +0000 <lambdabot> drop 3
2022-10-09 02:28:08 +0000 <EvanR> @pl \x -> 9 + x * 2
2022-10-09 02:28:09 +0000 <lambdabot> (9 +) . (2 *)
2022-10-09 02:28:27 +0000 <EvanR> well, I can't come up with a really bad one
2022-10-09 02:28:36 +0000nate1(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2022-10-09 02:28:49 +0000 <johnjaye> haskell does feel very mathematical i'll grant that though.
2022-10-09 02:29:06 +0000 <johnjaye> in the sense of, packing large abstractions into a single character 'x' or 'f'
2022-10-09 02:29:29 +0000 <johnjaye> like how the entire theory of the reimann integral is encoded into what is essentially an elongated S
2022-10-09 02:29:38 +0000 <EvanR> haskell is cool for have... lets say... actual abstractions, like they actually work
2022-10-09 02:29:42 +0000 <EvanR> and it's not just a vague analogy
2022-10-09 02:29:47 +0000 <EvanR> having*
2022-10-09 02:30:12 +0000 <johnjaye> yeah. i feel like once i get to know the syntax a bit better it would be like that
2022-10-09 02:30:38 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 02:31:15 +0000 <johnjaye> thanks for the explanation
2022-10-09 02:31:22 +0000 <EvanR> np
2022-10-09 02:33:01 +0000 <probie> @pl \x y -> (2*x) == (x-y)
2022-10-09 02:33:01 +0000 <lambdabot> ap ((.) . (==) . (2 *)) (-)
2022-10-09 02:33:49 +0000 <EvanR> that's a good example of why you'd write ap ((.) . (==) . (2 *)) (-) as \x y -> 2*x == x-y
2022-10-09 02:34:10 +0000burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk) (Ping timeout: 265 seconds)
2022-10-09 02:35:03 +0000 <EvanR> composition chains are cool, but two of the things in that chain are notionally "binary operators" xD
2022-10-09 02:35:08 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 268 seconds)
2022-10-09 02:35:10 +0000 <EvanR> making my brain hurt
2022-10-09 02:35:37 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-10-09 02:35:37 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-10-09 02:37:15 +0000 <edrx> EvanR: I'm using these kinds of diagrams to understand the types of subexpressions - http://angg.twu.net/HASKELL/Applicative1.hs.html - and they're helping me a lot...
2022-10-09 02:37:59 +0000 <EvanR> whoa
2022-10-09 02:38:36 +0000 <edrx> =)
2022-10-09 02:43:00 +0000terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
2022-10-09 02:44:20 +0000terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1)
2022-10-09 02:44:58 +0000lovebugrosalind
2022-10-09 02:45:04 +0000 <johnjaye> echo -sh http://angg.twu.net/HASKELL/Applicative1.hs.html > /tmp/a
2022-10-09 02:46:20 +0000 <edrx> what is /tmp/a?
2022-10-09 02:46:39 +0000 <johnjaye> shortest filename i can think of. weechat is being stubborn and won't let me save the link properly
2022-10-09 02:46:39 +0000 <edrx> btw, the non-htmlized version is here: http://angg.twu.net/HASKELL/Applicative1.hs
2022-10-09 02:46:52 +0000 <edrx> ok
2022-10-09 02:47:16 +0000rockystone(~rocky@user/rockymarine) (Ping timeout: 260 seconds)
2022-10-09 02:47:26 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 02:47:47 +0000 <johnjaye> ah i had params switched. now i have it.
2022-10-09 02:48:41 +0000 <ski> johnjaye : "but gets automatically curried to take 2" -- currying only exists in your head, not in Haskell
2022-10-09 02:48:52 +0000 <ski> "things that don't change the meaning of this code" -- refactorings
2022-10-09 02:49:41 +0000 <johnjaye> i see
2022-10-09 02:50:26 +0000 <ski> currying is one way to represent/encode "multiple parameter functions", (e.g.) in a context which only has "single parameter functions" (like Haskell)
2022-10-09 02:51:16 +0000 <ski> "tupling" is another way to do that. packing the "multiple parameters" into a single aggregate/compound. e.g. a tuple, but could be a record/`struct', or even a list, or finite map, or set or bag or ..
2022-10-09 02:51:39 +0000 <ski> Haskell does not "have currying"
2022-10-09 02:52:24 +0000 <EvanR> let f x y = [x,x,y] in ..., looks like a multiple parameter function, so in a way they are supported, or avoided by currying on your behalf
2022-10-09 02:52:24 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 268 seconds)
2022-10-09 02:52:45 +0000 <ski> what Haskell does have, is a syntax (including precedence and fixity) which is specially designed to make it fairly syntactically easy/painless to encode functions curriedly
2022-10-09 02:54:06 +0000 <EvanR> :t uncurry
2022-10-09 02:54:07 +0000 <lambdabot> (a -> b -> c) -> (a, b) -> c
2022-10-09 02:54:20 +0000 <ski> but `f x y = ...' is basically the same as `(define f (lambda (x) (lambda (y) ...)))' in Scheme (although Scheme *does* have a primitive notion of "multiple parameter (also result ..) procedures" .. but you can still use currying, as well as tupling, in Scheme too)
2022-10-09 02:54:37 +0000 <ski> @type curry
2022-10-09 02:54:38 +0000 <lambdabot> ((a, b) -> c) -> a -> b -> c
2022-10-09 02:54:56 +0000 <EvanR> funny I've never used curry xD
2022-10-09 02:55:22 +0000 <ski> it's interesting to note that `curry' can be thought of as a three-parameter function (accepting one callback function, and two additional parameters, that it tuples when calling the callback), which is expressed curriedly
2022-10-09 02:55:54 +0000jmorris(uid537181@id-537181.uxbridge.irccloud.com)
2022-10-09 02:56:10 +0000 <ski> but it can also be thought of as a two-parameter function (accepting one callback function, and one parameter, returning the callback partially applied to that parameter)
2022-10-09 02:56:30 +0000 <ski> in this latter form, `curry' can be thought of as `partiallyApply'
2022-10-09 02:57:43 +0000 <johnjaye> i like how haskell just directly defines init/last in mirror of head/tail
2022-10-09 02:58:08 +0000 <ski> however, i consider both `\y -> f (x0,y)' and `\x -> f (x,y0)' as partial applications of the tupled function `f'. just like both `g x0 = \y -> g x0 y' and `\x -> g x y0' are partial applications of the curried function `g'
2022-10-09 02:58:47 +0000 <ski> EvanR : i occasionally use `curry' as an infix operator ..
2022-10-09 02:59:21 +0000 <ski> map (foo `curry` x0) ys
2022-10-09 02:59:45 +0000rockystone(~rocky@user/rockymarine)
2022-10-09 03:00:13 +0000razetime(~quassel@117.193.2.178)
2022-10-09 03:00:45 +0000 <EvanR> > foldl1 (\a x -> x) [1,2,3,4,99]
2022-10-09 03:00:47 +0000 <lambdabot> 99
2022-10-09 03:00:53 +0000 <ski> (similarly to how i also can use `flip' in infix position)
2022-10-09 03:01:02 +0000td_(~td@94.134.91.128) (Ping timeout: 268 seconds)
2022-10-09 03:01:27 +0000jero98772(~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) (Remote host closed the connection)
2022-10-09 03:01:51 +0000 <EvanR> johnjaye, I just tried to lookup init and last, seems they have a more optimized form than @src https://hackage.haskell.org/package/base-4.17.0.0/docs/src/GHC.List.html#init
2022-10-09 03:02:19 +0000td_(~td@94.134.91.56)
2022-10-09 03:02:22 +0000 <EvanR> hah, last actually uses foldl
2022-10-09 03:02:41 +0000 <EvanR> foldl gets no respect
2022-10-09 03:02:59 +0000 <ski> edrx : fwiw, instead of `fmap0',`fmap1',`fmap2',`fmap3', i'd probably say `liftA0',`liftA1',`liftA2',`liftA3' (or even `liftM0',`liftM1',`liftM2',`liftM3' .. this was from before `Applicative' was a thing, though)
2022-10-09 03:04:28 +0000 <ski> edrx : but yes, multiary Lispy `map' (`mapcar') is basically this, for the case of (parallel/lockstep) lists
2022-10-09 03:04:46 +0000 <edrx> ski: thanks! let me see... I think that I followed the terminology from Hutton's book in some places and the terminology from the Prelude in other places...
2022-10-09 03:05:10 +0000 <ski> > getZipList (liftA2 (+) (ZipList [2,3]) (ZipList [400,500,600]))
2022-10-09 03:05:13 +0000 <lambdabot> [402,503]
2022-10-09 03:05:21 +0000rockystone(~rocky@user/rockymarine) (Ping timeout: 268 seconds)
2022-10-09 03:06:46 +0000 <ski> edrx : anyway, with a little practice, you'll be making these typing diagrams in your head :)
2022-10-09 03:07:29 +0000 <edrx> ski: =)
2022-10-09 03:09:01 +0000wroathe(~wroathe@user/wroathe) (Quit: Lost terminal)
2022-10-09 03:12:22 +0000 <ski> @type uncurry curry
2022-10-09 03:12:24 +0000 <lambdabot> ((a, b) -> c, a) -> b -> c
2022-10-09 03:13:17 +0000 <c_wraith> that function looks like a prank gone wrong
2022-10-09 03:13:52 +0000 <ski> @type uncurry3 curry
2022-10-09 03:13:54 +0000 <lambdabot> ((a, b) -> t4, a, b) -> t4
2022-10-09 03:14:09 +0000 <ski> heh :)
2022-10-09 03:14:56 +0000nate1(~nate@98.45.169.16)
2022-10-09 03:17:29 +0000 <EvanR> (a,b) -> c,a
2022-10-09 03:17:37 +0000 <EvanR> uncromulent
2022-10-09 03:18:14 +0000 <EvanR> (but is actually right in agda)
2022-10-09 03:18:23 +0000wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-10-09 03:18:23 +0000wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-10-09 03:18:23 +0000wroathe(~wroathe@user/wroathe)
2022-10-09 03:18:24 +0000[_](~itchyjunk@user/itchyjunk/x-7353470)
2022-10-09 03:21:03 +0000[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 265 seconds)
2022-10-09 03:21:51 +0000skiwishes GHC would elide the spaces after the commas, there ..
2022-10-09 03:25:24 +0000nate1(~nate@98.45.169.16) (Ping timeout: 265 seconds)
2022-10-09 03:25:43 +0000rockystone(~rocky@user/rockymarine)
2022-10-09 03:26:22 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 03:31:01 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 260 seconds)
2022-10-09 03:35:08 +0000zmt00(~zmt00@user/zmt00) (Read error: Connection reset by peer)
2022-10-09 03:35:14 +0000nate1(~nate@98.45.169.16)
2022-10-09 03:37:45 +0000zmt00(~zmt00@user/zmt00)
2022-10-09 03:39:39 +0000dtman34(~dtman34@c-75-73-141-79.hsd1.mn.comcast.net)
2022-10-09 03:41:07 +0000nate1(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-10-09 03:44:13 +0000king_gs(~Thunderbi@2806:103e:29:c5:4fb1:a8c9:906f:c6e0) (Ping timeout: 246 seconds)
2022-10-09 03:50:09 +0000nate1(~nate@98.45.169.16)
2022-10-09 03:51:36 +0000razetime(~quassel@117.193.2.178) (Ping timeout: 268 seconds)
2022-10-09 03:56:48 +0000Topsi(~Topsi@dyndsl-095-033-089-091.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2022-10-09 04:00:11 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 04:01:39 +0000nate1(~nate@98.45.169.16) (Ping timeout: 265 seconds)
2022-10-09 04:02:12 +0000rosalindlys
2022-10-09 04:05:23 +0000LemniscateSauvin
2022-10-09 04:07:54 +0000Franciman(~Franciman@mx1.fracta.dev) (Read error: Connection reset by peer)
2022-10-09 04:08:50 +0000zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-10-09 04:09:14 +0000king_gs(~Thunderbi@187.201.131.180)
2022-10-09 04:09:31 +0000rockystone(~rocky@user/rockymarine) (Ping timeout: 260 seconds)
2022-10-09 04:13:36 +0000king_gs(~Thunderbi@187.201.131.180) (Ping timeout: 260 seconds)
2022-10-09 04:14:10 +0000 <dolio> In Agda a,b is a single identifier.
2022-10-09 04:18:08 +0000Franciman(~Franciman@mx1.fracta.dev)
2022-10-09 04:19:57 +0000coot(~coot@213.134.171.3)
2022-10-09 04:20:10 +0000 <probie> Off-topic, but I'd always assumed it'd be incromulent instead of uncromulent, since "lent" feels like the ending for a Latin derived word
2022-10-09 04:22:46 +0000rockystone(~rocky@user/rockymarine)
2022-10-09 04:24:32 +0000wroathe(~wroathe@user/wroathe) (Quit: Lost terminal)
2022-10-09 04:26:45 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 252 seconds)
2022-10-09 04:30:19 +0000 <edrx> where is the module System.Process defined?
2022-10-09 04:31:16 +0000wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-10-09 04:31:16 +0000wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-10-09 04:31:16 +0000wroathe(~wroathe@user/wroathe)
2022-10-09 04:31:39 +0000 <edrx> I guess that in some preprocessed file, but my grepping tools don't work on them yet... =(
2022-10-09 04:32:29 +0000 <probie> Do you mean https://github.com/haskell/process/blob/master/System/Process.hs ?
2022-10-09 04:34:35 +0000 <edrx> probie: oops, yes - thanks, I just found what I need to fix...
2022-10-09 04:37:44 +0000razetime(~quassel@117.193.2.178)
2022-10-09 04:40:28 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 04:45:09 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 265 seconds)
2022-10-09 04:45:27 +0000 <VarikValefor[m]> Testing...
2022-10-09 04:46:00 +0000king_gs(~Thunderbi@187.201.131.180)
2022-10-09 04:46:55 +0000xff0x(~xff0x@ai071162.d.east.v6connect.net) (Ping timeout: 252 seconds)
2022-10-09 04:47:18 +0000xff0x(~xff0x@ai071162.d.east.v6connect.net)
2022-10-09 04:48:00 +0000 <EvanR> pong
2022-10-09 04:48:10 +0000lysrosalind
2022-10-09 04:48:43 +0000 <edrx> pung
2022-10-09 04:49:05 +0000[_](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-10-09 04:50:28 +0000king_gs(~Thunderbi@187.201.131.180) (Ping timeout: 265 seconds)
2022-10-09 04:54:48 +0000mbuf(~Shakthi@49.204.141.204)
2022-10-09 04:55:19 +0000incertia(~incertia@d47-69-133-171.try.wideopenwest.com) (Quit: ZNC 1.7.5 - https://znc.in)
2022-10-09 05:00:19 +0000Luj(~Luj@2a01:e0a:5f9:9681:43e9:ccab:b409:cf4f) (Quit: Ping timeout (120 seconds))
2022-10-09 05:00:24 +0000 <edrx> hey, I tried this program - https://lotz84.github.io/haskellbyexample/ex/spawning-processes - and it does compile and run, but I need to give it a ^D...
2022-10-09 05:00:32 +0000 <edrx> how do I make it end by itself?
2022-10-09 05:00:36 +0000Luj(~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb)
2022-10-09 05:02:19 +0000 <probie> maybe `hClose hin`?
2022-10-09 05:02:29 +0000 <EvanR> I blocked on grep hello
2022-10-09 05:03:05 +0000 <edrx> let me see
2022-10-09 05:03:45 +0000 <EvanR> note hGetContents is a big weird in that it returns list generated by "lazy I/O" (scare quotes)
2022-10-09 05:03:49 +0000 <EvanR> bit*
2022-10-09 05:06:37 +0000 <edrx> where should I put the hClose hin? I tried this - https://0x0.st/otAd.txt - and got the same bahavior...
2022-10-09 05:10:02 +0000 <edrx> hmm, it seems that withCreateProcess does the expected clean-ups...
2022-10-09 05:10:50 +0000 <EvanR> which part does it hang on
2022-10-09 05:11:25 +0000 <EvanR> if it's reading stdin, then it's waiting for end of file, i.e. control D
2022-10-09 05:12:20 +0000 <edrx> look: https://i.ibb.co/r3QfQZ2/sshot.png
2022-10-09 05:13:40 +0000 <EvanR> yeah I hang on grep hello
2022-10-09 05:13:53 +0000 <EvanR> seems like your grep command just isn't right
2022-10-09 05:14:07 +0000 <probie> after `hPutStr` (for grep)
2022-10-09 05:14:15 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-10-09 05:14:38 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 265 seconds)
2022-10-09 05:14:46 +0000 <probie> No input is being sent to grep (it's waiting for a flush, either directly, or from a close), so there's nothing to print
2022-10-09 05:14:59 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-10-09 05:15:29 +0000 <probie> s/No input/Only "hello grep"/
2022-10-09 05:15:53 +0000 <edrx> probie: trying
2022-10-09 05:16:41 +0000 <edrx> probie: perfect! thanks! =)
2022-10-09 05:17:07 +0000 <EvanR> just grepping into the wind xD
2022-10-09 05:19:55 +0000rockystone(~rocky@user/rockymarine) (Ping timeout: 252 seconds)
2022-10-09 05:22:28 +0000rockystone(~rocky@user/rockymarine)
2022-10-09 05:25:41 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 05:30:16 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 268 seconds)
2022-10-09 05:32:01 +0000raym(~aritra@user/raym) (Ping timeout: 252 seconds)
2022-10-09 05:33:03 +0000raym(~aritra@user/raym)
2022-10-09 05:34:05 +0000 <edrx> http://angg.twu.net/HASKELL/Tac1.hs.html
2022-10-09 05:34:48 +0000 <edrx> that's my first non-trivial program with IO, btw =) =) =)
2022-10-09 05:35:23 +0000 <EvanR> oh now I get it, hin is the output xD
2022-10-09 05:35:42 +0000 <EvanR> yeah must be closed on this end to finish the process
2022-10-09 05:36:17 +0000 <EvanR> what's in and what's out gets confusing when doing subprocess
2022-10-09 05:48:41 +0000machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 260 seconds)
2022-10-09 05:53:17 +0000arahael(~arahael@203.217.43.212) (Ping timeout: 252 seconds)
2022-10-09 05:55:52 +0000nate1(~nate@98.45.169.16)
2022-10-09 06:00:37 +0000nate1(~nate@98.45.169.16) (Ping timeout: 252 seconds)
2022-10-09 06:06:39 +0000arahael(~arahael@61.68.183.79)
2022-10-09 06:12:06 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-10-09 06:17:51 +0000jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 252 seconds)
2022-10-09 06:17:53 +0000rosalindlys
2022-10-09 06:20:42 +0000 <edrx> EvanR: hin is the handle or the stdin of the process
2022-10-09 06:21:12 +0000 <edrx> or did you mean that I should close its stdout too?
2022-10-09 06:22:19 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-10-09 06:22:25 +0000chomwitt(~chomwitt@2a02:587:dc0c:c200:442:40c1:9d7f:23d1)
2022-10-09 06:29:33 +0000rockystone(~rocky@user/rockymarine) (Ping timeout: 265 seconds)
2022-10-09 06:30:43 +0000nate1(~nate@98.45.169.16)
2022-10-09 06:35:22 +0000nate1(~nate@98.45.169.16) (Ping timeout: 246 seconds)
2022-10-09 06:39:43 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-10-09 06:40:44 +0000 <edrx> time to crash!
2022-10-09 06:40:47 +0000 <edrx> gnight all =)
2022-10-09 06:40:50 +0000edrx(~Eduardo@2804:56c:d2d3:4800:cf7d:b421:4c3a:392e) (Killed buffer)
2022-10-09 06:44:05 +0000rockystone(~rocky@user/rockymarine)
2022-10-09 06:44:46 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-10-09 06:45:41 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-10-09 06:45:41 +0000jmorris(uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2022-10-09 06:47:25 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 06:51:41 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 260 seconds)
2022-10-09 07:05:48 +0000acidjnk(~acidjnk@p200300d6e7137a48695c1121120f860b.dip0.t-ipconnect.de)
2022-10-09 07:09:43 +0000takuan(~takuan@178-116-218-225.access.telenet.be)
2022-10-09 07:14:59 +0000raym(~aritra@user/raym) (Ping timeout: 265 seconds)
2022-10-09 07:16:23 +0000Tuplanolla(~Tuplanoll@91-159-69-34.elisa-laajakaista.fi)
2022-10-09 07:16:32 +0000raym(~aritra@user/raym)
2022-10-09 07:19:25 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:50e1:7448:ac98:298f) (Remote host closed the connection)
2022-10-09 07:21:16 +0000rockystone(~rocky@user/rockymarine) (Ping timeout: 268 seconds)
2022-10-09 07:31:08 +0000raym(~aritra@user/raym) (Ping timeout: 268 seconds)
2022-10-09 07:31:24 +0000raym(~aritra@user/raym)
2022-10-09 07:34:19 +0000razetime(~quassel@117.193.2.178) (Ping timeout: 265 seconds)
2022-10-09 07:38:01 +0000ksu(~ksu@user/prtr) (Ping timeout: 246 seconds)
2022-10-09 07:38:14 +0000rockystone(~rocky@user/rockymarine)
2022-10-09 07:40:03 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 07:40:37 +0000ksu(~ksu@user/prtr)
2022-10-09 07:41:30 +0000aidy(~aidy@2001:470:69fc:105::c7b4)
2022-10-09 07:43:41 +0000rockystone(~rocky@user/rockymarine) (Ping timeout: 250 seconds)
2022-10-09 07:44:42 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 268 seconds)
2022-10-09 07:49:01 +0000Lycurgus(~juan@user/Lycurgus)
2022-10-09 07:59:34 +0000Lycurgus(~juan@user/Lycurgus) (Quit: Exeunt juan@acm.org)
2022-10-09 08:00:13 +0000nate1(~nate@98.45.169.16)
2022-10-09 08:04:55 +0000nate1(~nate@98.45.169.16) (Ping timeout: 252 seconds)
2022-10-09 08:07:00 +0000sudden(~cat@user/sudden) (Ping timeout: 264 seconds)
2022-10-09 08:09:12 +0000Franciman(~Franciman@mx1.fracta.dev) (Read error: Connection reset by peer)
2022-10-09 08:11:55 +0000zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2022-10-09 08:13:08 +0000wootehfoot(~wootehfoo@user/wootehfoot)
2022-10-09 08:16:48 +0000bendo(~bendo@fire-ara4.tngtech.com)
2022-10-09 08:18:27 +0000Franciman(~Franciman@mx1.fracta.dev)
2022-10-09 08:19:56 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:50e1:7448:ac98:298f)
2022-10-09 08:23:26 +0000sudden(~cat@user/sudden)
2022-10-09 08:24:35 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:50e1:7448:ac98:298f) (Ping timeout: 248 seconds)
2022-10-09 08:26:47 +0000Vajb(~Vajb@85-76-75-28-nat.elisa-mobile.fi) (Read error: Connection reset by peer)
2022-10-09 08:27:28 +0000Vajb(~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi)
2022-10-09 08:33:20 +0000Vajb(~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-10-09 08:34:51 +0000burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk)
2022-10-09 08:34:59 +0000Vajb(~Vajb@2001:999:504:1841:9e47:1ec7:a52e:1d57)
2022-10-09 08:37:55 +0000razetime(~quassel@117.193.2.178)
2022-10-09 08:44:24 +0000wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 265 seconds)
2022-10-09 08:44:37 +0000zxx7529(~Thunderbi@user/zxx7529)
2022-10-09 08:49:31 +0000Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-10-09 08:53:54 +0000zaquest(~notzaques@5.130.79.72)
2022-10-09 08:55:23 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 08:59:33 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 252 seconds)
2022-10-09 09:03:16 +0000zxx7529(~Thunderbi@user/zxx7529) (Quit: zxx7529)
2022-10-09 09:17:17 +0000razetime(~quassel@117.193.2.178) (Remote host closed the connection)
2022-10-09 09:22:13 +0000jakalx(~jakalx@base.jakalx.net) ()
2022-10-09 09:24:11 +0000jakalx(~jakalx@base.jakalx.net)
2022-10-09 09:27:17 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 09:29:59 +0000kdaishi(~Thunderbi@94.191.136.219.mobile.tre.se)
2022-10-09 09:30:26 +0000Midjak(~Midjak@82.66.147.146)
2022-10-09 09:30:50 +0000ardell(~ardell@user/ardell)
2022-10-09 09:31:49 +0000bendo(~bendo@fire-ara4.tngtech.com) (Ping timeout: 252 seconds)
2022-10-09 09:31:56 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 268 seconds)
2022-10-09 09:32:43 +0000titibandit(~titibandi@xdsl-89-0-65-2.nc.de)
2022-10-09 09:41:05 +0000vorpuni(~pvorp@2001:861:3881:c690:6d4:662c:a06a:ef29)
2022-10-09 09:47:51 +0000mbuf(~Shakthi@49.204.141.204) (Quit: Leaving)
2022-10-09 09:51:04 +0000kdaishi(~Thunderbi@94.191.136.219.mobile.tre.se) (Ping timeout: 268 seconds)
2022-10-09 09:51:05 +0000ksu(~ksu@user/prtr) (Ping timeout: 250 seconds)
2022-10-09 09:51:52 +0000ksu(~ksu@user/prtr)
2022-10-09 09:52:06 +0000kenran(~user@user/kenran)
2022-10-09 09:58:53 +0000econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-10-09 09:58:54 +0000causal(~user@50.35.83.177)
2022-10-09 09:59:48 +0000chomwitt(~chomwitt@2a02:587:dc0c:c200:442:40c1:9d7f:23d1) (Ping timeout: 264 seconds)
2022-10-09 10:05:14 +0000jakalx(~jakalx@base.jakalx.net) ()
2022-10-09 10:06:06 +0000jakalx(~jakalx@base.jakalx.net)
2022-10-09 10:12:10 +0000nate1(~nate@98.45.169.16)
2022-10-09 10:14:14 +0000Franciman(~Franciman@mx1.fracta.dev) (Read error: Connection reset by peer)
2022-10-09 10:16:04 +0000kdaishi(~Thunderbi@94.191.137.35.mobile.tre.se)
2022-10-09 10:17:01 +0000nate1(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2022-10-09 10:18:28 +0000Franciman(~Franciman@mx1.fracta.dev)
2022-10-09 10:19:05 +0000__monty__(~toonn@user/toonn)
2022-10-09 10:20:35 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 252 seconds)
2022-10-09 10:21:22 +0000freeside(~mengwong@103.252.202.193)
2022-10-09 10:24:02 +0000gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de)
2022-10-09 10:27:53 +0000kenran(~user@user/kenran) (Remote host closed the connection)
2022-10-09 10:30:26 +0000ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Ping timeout: 260 seconds)
2022-10-09 10:31:17 +0000ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2022-10-09 10:39:01 +0000chomwitt(~chomwitt@2a02:587:dc0c:c200:9b5d:e3:b4f7:170c)
2022-10-09 10:40:04 +0000titibandit(~titibandi@xdsl-89-0-65-2.nc.de) (Quit: Leaving.)
2022-10-09 10:41:33 +0000bendo(~bendo@fire-ara4.tngtech.com)
2022-10-09 10:41:51 +0000 <dminuoso> Is there some sneaky way to drop the s phantom of ST? It would be so much more convenient, and Ill promise not to leak state. :)
2022-10-09 10:47:26 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 10:49:37 +0000gmg(~user@user/gehmehgeh)
2022-10-09 10:51:45 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 252 seconds)
2022-10-09 10:53:32 +0000ec(~ec@gateway/tor-sasl/ec)
2022-10-09 10:58:06 +0000ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 258 seconds)
2022-10-09 11:00:43 +0000titibandit(~titibandi@xdsl-89-0-65-2.nc.de)
2022-10-09 11:01:56 +0000 <jackdk> `unsafePerformIO`? But seriously, shouldn't it only become inconvenient if you're trying to break out?
2022-10-09 11:03:31 +0000SoF1SoF
2022-10-09 11:03:46 +0000burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk) (Remote host closed the connection)
2022-10-09 11:04:26 +0000lysrosalind
2022-10-09 11:08:20 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
2022-10-09 11:14:58 +0000vysn(~vysn@user/vysn)
2022-10-09 11:16:07 +0000Topsi(~Topsi@dyndsl-095-033-089-091.ewe-ip-backbone.de)
2022-10-09 11:25:08 +0000pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-10-09 11:34:51 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:b9a1:d183:7268:d81)
2022-10-09 11:35:34 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:b9a1:d183:7268:d81) (Client Quit)
2022-10-09 11:36:54 +0000burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk)
2022-10-09 11:40:55 +0000odnes(~odnes@5-203-193-32.pat.nym.cosmote.net)
2022-10-09 11:40:56 +0000eL_Bart0(eL_Bart0@dietunichtguten.org) (Read error: Connection reset by peer)
2022-10-09 11:45:24 +0000eL_Bart0(eL_Bart0@dietunichtguten.org)
2022-10-09 11:45:33 +0000rosalindlovebug
2022-10-09 11:46:18 +0000odnes_(~odnes@5-203-193-32.pat.nym.cosmote.net)
2022-10-09 11:46:20 +0000vysn(~vysn@user/vysn) (Quit: WeeChat 3.5)
2022-10-09 11:46:30 +0000odnes(~odnes@5-203-193-32.pat.nym.cosmote.net) (Read error: Connection reset by peer)
2022-10-09 11:48:18 +0000eL_Bart0(eL_Bart0@dietunichtguten.org) (Client Quit)
2022-10-09 11:51:17 +0000eL_Bart0(eL_Bart0@dietunichtguten.org)
2022-10-09 11:55:34 +0000 <ski> @type Control.Monad.ST.Unsafe.unsafeIOToST . Control.Monad.ST.Unsafe.unsafeSTToIO
2022-10-09 11:55:35 +0000 <lambdabot> ST s1 a -> ST s2 a
2022-10-09 12:03:51 +0000titibandit(~titibandi@xdsl-89-0-65-2.nc.de) (Quit: Leaving.)
2022-10-09 12:04:21 +0000bendo(~bendo@fire-ara4.tngtech.com) (Ping timeout: 268 seconds)
2022-10-09 12:04:44 +0000 <freeside> a ... "restatement"?
2022-10-09 12:05:04 +0000lovebuglys
2022-10-09 12:05:06 +0000Franciman(~Franciman@mx1.fracta.dev) (Read error: Connection reset by peer)
2022-10-09 12:11:40 +0000acidjnk(~acidjnk@p200300d6e7137a48695c1121120f860b.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2022-10-09 12:12:43 +0000tomboy64(~tomboy64@user/tomboy64) (Remote host closed the connection)
2022-10-09 12:16:46 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 12:17:09 +0000odnes_(~odnes@5-203-193-32.pat.nym.cosmote.net) (Quit: Leaving)
2022-10-09 12:17:59 +0000tomboy64(~tomboy64@user/tomboy64)
2022-10-09 12:18:14 +0000 <olivermead[m]> <freeside> "a ... "restatement"?" <- love it
2022-10-09 12:18:24 +0000Franciman(~Franciman@mx1.fracta.dev)
2022-10-09 12:20:22 +0000ec(~ec@gateway/tor-sasl/ec)
2022-10-09 12:21:25 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 265 seconds)
2022-10-09 12:23:31 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:50e1:7448:ac98:298f)
2022-10-09 12:24:53 +0000Guest52(~Guest52@83-85-226-100.cable.dynamic.v4.ziggo.nl)
2022-10-09 12:27:48 +0000ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 258 seconds)
2022-10-09 12:27:57 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:50e1:7448:ac98:298f) (Ping timeout: 250 seconds)
2022-10-09 12:28:54 +0000cafce25(~cafce25@2001:a62:153a:a201:93a3:e4fa:f7e1:f6e2)
2022-10-09 12:31:19 +0000ec(~ec@gateway/tor-sasl/ec)
2022-10-09 12:36:09 +0000adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-10-09 12:37:46 +0000ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 258 seconds)
2022-10-09 12:38:08 +0000adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-10-09 12:43:55 +0000jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-10-09 12:45:04 +0000burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk) (Remote host closed the connection)
2022-10-09 12:45:11 +0000jonathanx__(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 260 seconds)
2022-10-09 12:54:30 +0000skistates the obvious
2022-10-09 13:02:28 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 13:03:12 +0000sagax(~sagax_nb@user/sagax)
2022-10-09 13:07:13 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 268 seconds)
2022-10-09 13:10:16 +0000kdaishi(~Thunderbi@94.191.137.35.mobile.tre.se) (Ping timeout: 260 seconds)
2022-10-09 13:10:43 +0000perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.6)
2022-10-09 13:19:24 +0000 <Guest52> Hey, can someone give me some advice on this? https://paste.tomsmeding.com/4H0x5ECN. Im struggling to write an instance of Show for a polymorphic data type
2022-10-09 13:19:40 +0000 <Guest52> What i currenty have implemented is a place holder
2022-10-09 13:21:47 +0000 <geekosaur> that doesn't look polymorphic to me, just recursive
2022-10-09 13:21:48 +0000ardell(~ardell@user/ardell) (Quit: Leaving)
2022-10-09 13:22:00 +0000bendo(~bendo@fire-ara4.tngtech.com)
2022-10-09 13:22:07 +0000burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk)
2022-10-09 13:22:17 +0000 <hpc> what's the issue?
2022-10-09 13:22:17 +0000 <Guest52> My intuition is to write out a string reprensation of my data type (e.g. "Cons 20 (Cons 11...") that keeps concatenating to the result of the recursion
2022-10-09 13:22:57 +0000 <Guest52> My issue is that I dont know how to get the string representation of the polymorphic value
2022-10-09 13:23:30 +0000 <hpc> you know from how it's being used in that definition, that x :: a
2022-10-09 13:23:39 +0000 <hpc> what other things do you know about the type 'a' in that context?
2022-10-09 13:24:44 +0000 <hpc> when it just has type 'a' with no other context, the only thing you can do with x is (id x)
2022-10-09 13:24:59 +0000 <hpc> but maybe there's something else available that can turn a value into a string for you already?
2022-10-09 13:26:01 +0000 <Guest52> show ?
2022-10-09 13:26:32 +0000 <Guest52> show :: a -> String
2022-10-09 13:27:32 +0000 <hpc> :t show
2022-10-09 13:27:33 +0000 <lambdabot> Show a => a -> String
2022-10-09 13:27:46 +0000burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk) (Ping timeout: 260 seconds)
2022-10-09 13:28:02 +0000lysrosalind
2022-10-09 13:28:16 +0000 <hpc> it needs a (Show a) instance, but you've already said in your (Stream a) instance to require it
2022-10-09 13:28:24 +0000 <hpc> so yep, you can just (show x) there
2022-10-09 13:28:36 +0000 <Guest52> right so assuming type a has an instance of show, then it will work? But I dont think i can reference show in its own definition?
2022-10-09 13:29:12 +0000adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-10-09 13:29:29 +0000 <geekosaur> why not?
2022-10-09 13:29:35 +0000 <Guest52> "but you've already said in your (Stream a) instance to require it" ahhh this makes sense.. i just copied that without really looking at it
2022-10-09 13:29:59 +0000adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-10-09 13:30:12 +0000frost(~frost@user/frost) (Ping timeout: 252 seconds)
2022-10-09 13:30:12 +0000 <Guest52> because wont it try to call the show function that im currently defining?
2022-10-09 13:30:29 +0000 <hpc> it'll call the show that's defined for that 'a' type
2022-10-09 13:30:30 +0000 <geekosaur> (a) it's on a different type (b) even on the same type, as long as you have a base case for recursion to end on, it's fine
2022-10-09 13:30:32 +0000 <Guest52> which will fail because it expects a (Stream a)
2022-10-09 13:30:40 +0000 <hpc> > show 5
2022-10-09 13:30:41 +0000 <lambdabot> "5"
2022-10-09 13:30:44 +0000 <hpc> > show (Just 5)
2022-10-09 13:30:46 +0000 <lambdabot> "Just 5"
2022-10-09 13:30:56 +0000 <hpc> @src Maybe
2022-10-09 13:30:56 +0000 <lambdabot> data Maybe a = Nothing | Just a
2022-10-09 13:31:38 +0000 <geekosaur> % :set -ddump-deriv
2022-10-09 13:31:38 +0000 <yahb2> <interactive>:1:1: error: Not in scope: ā€˜Yahb2Defs.limitedPrint’
2022-10-09 13:31:46 +0000[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-10-09 13:31:59 +0000 <geekosaur> % data MyMaybe a = MyNothing | MyJust a deriving Show
2022-10-09 13:32:00 +0000 <yahb2> ==================== Derived instances ==================== ; Derived class instances: ; instance GHC.Show.Show a => GHC.Show.Show (Ghci1.MyMaybe a) where ; GHC.Show.showsPrec _ Ghci1.MyNothi...
2022-10-09 13:32:01 +0000jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-10-09 13:32:06 +0000 <geekosaur> bah
2022-10-09 13:32:14 +0000 <hpc> it's derived now anyway
2022-10-09 13:32:16 +0000 <geekosaur> anyway try that in ghci
2022-10-09 13:32:20 +0000jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-10-09 13:32:38 +0000 <geekosaur> and you'll see that it uses Show on 'a'
2022-10-09 13:33:05 +0000 <geekosaur> % :q
2022-10-09 13:33:05 +0000 <yahb2> <no output>
2022-10-09 13:36:06 +0000 <Guest52> ok thanks everyone
2022-10-09 13:38:07 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 13:40:50 +0000raoul(~raoul@95.179.203.88) (Quit: Ping timeout (120 seconds))
2022-10-09 13:41:03 +0000 <ski> Guest52 : fwiw, that's parametric, not polymorphic
2022-10-09 13:41:16 +0000nonzen(~nonzen@user/nonzen) (Quit: Gone)
2022-10-09 13:41:30 +0000nonzen(~nonzen@user/nonzen)
2022-10-09 13:41:52 +0000energizer(~energizer@user/energizer) (Quit: ZNC 1.7.0+deb0+xenial1 - https://znc.in)
2022-10-09 13:42:04 +0000 <ski> Guest52 : any particular reason you don't keep the initial seed `x' in the stream, in `streamFromSeed' ?
2022-10-09 13:42:12 +0000 <ski> Guest52 : also .. please don't use `Show' like that
2022-10-09 13:42:15 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 252 seconds)
2022-10-09 13:43:29 +0000raoul(~raoul@95.179.203.88)
2022-10-09 13:44:24 +0000 <Guest52> ski nope thats a bug... it should be Cons x...
2022-10-09 13:44:28 +0000 <ski> Guest52 : at the very least, you should not be defining `show', but rather `showsPrec'. making use of `showParen',`showsPrec' in the body
2022-10-09 13:44:37 +0000 <ski> Guest52, ah :)
2022-10-09 13:44:49 +0000 <ski> (in that case, you don't need the `where')
2022-10-09 13:45:39 +0000 <ski> btw, an alternative design is to use `(s -> (a,s)) -> (s -> Stream a)' (or maybe `(s -> a) -> (s -> s) -> (s -> Stream a)')
2022-10-09 13:45:46 +0000 <ski> @type unfoldr
2022-10-09 13:45:48 +0000 <lambdabot> (b -> Maybe (a, b)) -> b -> [a]
2022-10-09 13:46:23 +0000 <ski> (that version basically does `streamFromSeed' and `streamMap', in one)
2022-10-09 13:46:41 +0000 <Guest52> thanks! in regards to Show... your saying if your writing an instance of show; you shoud define showsPrec instead of shows ?
2022-10-09 13:46:59 +0000 <Guest52> because its more specific ?
2022-10-09 13:47:18 +0000 <ski> well, in most cases, people should be defining `showsPrec' rather than `show'
2022-10-09 13:47:21 +0000energizer(~energizer@user/energizer)
2022-10-09 13:48:05 +0000 <Guest52> gotcha ... will stick with show for the sake of this hw assignment but noted for real business use cases
2022-10-09 13:49:00 +0000 <ski> (a) `show' is inefficient, when you're composing your `Show' instance as part of another one, since you'll be appending to the `String'; and (b) `show' doesn't handle precedences, which you want to do, for composability with other `Show' instances
2022-10-09 13:49:38 +0000Kaiepi(~Kaiepi@142.68.249.28) (Quit: Leaving)
2022-10-09 13:50:18 +0000 <ski> e.g. if i call `show' on `Just nats', it'll give a string starting with the characters `Just Cons 0' .. note the lack of a wrapping pair of brackets around the `Cons 0 ...' part
2022-10-09 13:50:34 +0000 <ski> this is because you're not calling `showParen' as you're supposed to
2022-10-09 13:51:00 +0000 <olivermead[m]> isn't general advice to always derive Show and Read rather than define since they need to be exact inverse operations? obviously correct me if I'm wrong
2022-10-09 13:51:17 +0000 <ski> showsPrec p (Cons x xs) = showParen (p > 10) $ showString "Cons " . showsPrec 11 . showChar ' ' . showsPrec 11 xs
2022-10-09 13:51:47 +0000 <ski> is how you'd fix the precedence stuff (while ignoring your desire to give a finite `String' in this case)
2022-10-09 13:53:03 +0000 <ski> olivermead[m] : *usually*, yes. however, in some particular cases, it may be warranted to hand-write them. one important reason is that you're doing an Abstract Data Type, and you want to present your value in terms of your exported interface of operations, rather than in terms of internal representation format, which might change
2022-10-09 13:53:48 +0000 <olivermead[m]> ski: awesome thank you
2022-10-09 13:53:53 +0000 <ski> > listArray ((0,0),(2,3)) [m ^ n | (m,n) <- range ((0,0),(2,3))]
2022-10-09 13:53:56 +0000 <lambdabot> array ((0,0),(2,3)) [((0,0),1),((0,1),0),((0,2),0),((0,3),0),((1,0),1),((1,1...
2022-10-09 13:54:11 +0000 <ski> note that this responds in terms of `array', which is not a data constructor
2022-10-09 13:54:23 +0000 <ski> `Data.Map' and `Data.Set' does the same kind of thing
2022-10-09 13:55:10 +0000 <ski> olivermead[m] : another reason could be if one wanted to avoid redundant brackets, when doing infix data constructors .. unfortunately, the derived `Show' ignores fixity (while honoring precedence)
2022-10-09 13:55:50 +0000 <hpc> > foldr (+) 0 [x, y, z] -- for example
2022-10-09 13:55:52 +0000 <lambdabot> x + (y + (z + 0))
2022-10-09 13:55:54 +0000 <hpc> > foldl (+) 0 [x, y, z] -- for example
2022-10-09 13:55:56 +0000 <lambdabot> 0 + x + y + z
2022-10-09 13:56:33 +0000 <olivermead[m]> so in the listArray case above, is `read` the inverse operation still?
2022-10-09 13:57:04 +0000 <ski> > (read . show) (listArray ((0,0),(2,3)) [m ^ n | (m,n) <- range ((0,0),(2,3))]) :: Array (Int,Int) Int
2022-10-09 13:57:06 +0000 <lambdabot> array ((0,0),(2,3)) [((0,0),1),((0,1),0),((0,2),0),((0,3),0),((1,0),1),((1,1...
2022-10-09 13:57:30 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 258 seconds)
2022-10-09 13:57:31 +0000 <olivermead[m]> interesting, thank you
2022-10-09 13:58:26 +0000 <ski> (it wouldn't be too hard to have the derived `Show' honor fixity as well, afaiui .. it just doesn't, for whatever reason)
2022-10-09 14:00:37 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-10-09 14:00:53 +0000 <ski> Guest52 : in your case, presumably you'd want to elide some tail of the stream (perhaps replacing it by `...'), while still keeping brackets matched (which a naĆÆve `(++) . take 20 . ($ "")' thrown into the composition won't do, even ignoring tokens being cut in half). you could do this, if you define a separate function which keeps track of the depth in a parameter
2022-10-09 14:03:01 +0000 <ski> Guest52 : however, because the result (cut off, possibly with `...') would be an invalid `String' representation of a Haskell value (syntax error if you paste it into the interactor, or a source file), i'd prefer to not adding this cut-off functionality into `Show' at all. you could define a separate `pp' (pretty-print) function which does what you want. or you could simply define a `takeStream :: Int ->
2022-10-09 14:03:07 +0000 <ski> Stream a -> [a]' ..
2022-10-09 14:03:49 +0000 <geekosaur> there might be other reasons to avoid it, though
2022-10-09 14:03:53 +0000Topsi(~Topsi@dyndsl-095-033-089-091.ewe-ip-backbone.de) (Ping timeout: 252 seconds)
2022-10-09 14:04:02 +0000 <geekosaur> such as preference not to force the head of a Stream
2022-10-09 14:05:04 +0000 <ski> hm ?
2022-10-09 14:05:23 +0000 <geekosaur> I'm thinking large or complicated expressions for `a`
2022-10-09 14:05:41 +0000 <ski> not force the head, where ? in `showsPrec' ?
2022-10-09 14:06:03 +0000 <geekosaur> if you intend to process them one at a time, `show`ing more than one element is probably not wise
2022-10-09 14:06:48 +0000 <ski> well, `Show' here is probably just for debugging/testing anyway, no ?
2022-10-09 14:07:01 +0000 <geekosaur> yes, one would hope
2022-10-09 14:07:14 +0000cafce25(~cafce25@2001:a62:153a:a201:93a3:e4fa:f7e1:f6e2) (Ping timeout: 252 seconds)
2022-10-09 14:09:46 +0000 <ski> question : is `unfoldStream' in some sense a "normal form" for `Stream's ?
2022-10-09 14:11:49 +0000 <ski> we have e.g.
2022-10-09 14:11:59 +0000 <ski> streamMap f (unfoldStream g s) = unfoldStream (first f . g) s
2022-10-09 14:12:05 +0000 <ski> alt.
2022-10-09 14:12:27 +0000 <ski> streamMap f (unfoldStream' g h s) = unfoldStream' (f . g) h s
2022-10-09 14:13:29 +0000perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2022-10-09 14:13:44 +0000nate1(~nate@98.45.169.16)
2022-10-09 14:14:27 +0000ski. o O ( `data Stream :: * -> * where UnfoldStream :: (s -> (a,s)) -> s -> Stream a' )
2022-10-09 14:17:18 +0000gmg(~user@user/gehmehgeh) (Quit: Leaving)
2022-10-09 14:18:43 +0000nate1(~nate@98.45.169.16) (Ping timeout: 248 seconds)
2022-10-09 14:19:10 +0000bendo(~bendo@fire-ara4.tngtech.com) ()
2022-10-09 14:20:11 +0000ec(~ec@gateway/tor-sasl/ec)
2022-10-09 14:26:21 +0000a6a45081-2b83(~aditya@2601:249:4300:1296:88ec:cc73:84d4:1507)
2022-10-09 14:26:39 +0000Kaiepi(~Kaiepi@142.68.249.28)
2022-10-09 14:28:08 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 14:32:22 +0000perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Remote host closed the connection)
2022-10-09 14:32:38 +0000perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2022-10-09 14:36:18 +0000adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-10-09 14:36:42 +0000jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-10-09 14:37:22 +0000Franciman(~Franciman@mx1.fracta.dev) (Read error: Connection reset by peer)
2022-10-09 14:37:36 +0000adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-10-09 14:38:44 +0000raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-10-09 14:40:55 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 252 seconds)
2022-10-09 14:44:37 +0000dextaa(~dextaa@user/dextaa)
2022-10-09 14:44:51 +0000jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 248 seconds)
2022-10-09 14:45:48 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 14:50:49 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-10-09 14:51:46 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-10-09 14:54:41 +0000Franciman(~Franciman@mx1.fracta.dev)
2022-10-09 14:57:14 +0000finsternis(~X@23.226.237.192)
2022-10-09 15:02:00 +0000nate1(~nate@98.45.169.16)
2022-10-09 15:02:51 +0000thyriaen(~thyriaen@2a01:aea0:dd4:463c:6245:cbff:fe9f:48b1)
2022-10-09 15:05:00 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 268 seconds)
2022-10-09 15:05:47 +0000phma(~phma@2001:5b0:211f:4578:e340:1f30:e6ab:a541) (Read error: Connection reset by peer)
2022-10-09 15:06:28 +0000phma(~phma@host-67-44-208-36.hnremote.net)
2022-10-09 15:06:41 +0000perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.6)
2022-10-09 15:08:41 +0000dextaa(~dextaa@user/dextaa) (Ping timeout: 260 seconds)
2022-10-09 15:09:12 +0000acidjnk(~acidjnk@p54ad5adb.dip0.t-ipconnect.de)
2022-10-09 15:09:34 +0000ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 258 seconds)
2022-10-09 15:12:07 +0000wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-10-09 15:12:07 +0000wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-10-09 15:12:07 +0000wroathe(~wroathe@user/wroathe)
2022-10-09 15:14:08 +0000rosalind(rosalind@id-194105.uxbridge.irccloud.com) (Quit: bbl <3)
2022-10-09 15:16:02 +0000perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2022-10-09 15:16:06 +0000a6a45081-2b83(~aditya@2601:249:4300:1296:88ec:cc73:84d4:1507) (Remote host closed the connection)
2022-10-09 15:16:37 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:50e1:7448:ac98:298f)
2022-10-09 15:20:02 +0000c209e6dc-4d76-47(~aditya@2601:249:4300:1296:195:dac6:592c:a55a)
2022-10-09 15:22:14 +0000Guest52(~Guest52@83-85-226-100.cable.dynamic.v4.ziggo.nl) (Quit: Client closed)
2022-10-09 15:22:59 +0000azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 258 seconds)
2022-10-09 15:23:10 +0000c209e6dc-4d76-47(~aditya@2601:249:4300:1296:195:dac6:592c:a55a) (Client Quit)
2022-10-09 15:24:31 +0000c209e6dc-4d76-47(~aditya@c-73-103-92-95.hsd1.in.comcast.net)
2022-10-09 15:27:39 +0000rockystone(~rocky@user/rockymarine)
2022-10-09 15:27:56 +0000Lycurgus(~juan@user/Lycurgus)
2022-10-09 15:30:36 +0000machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2022-10-09 15:35:32 +0000c209e6dc-4d76-47(~aditya@c-73-103-92-95.hsd1.in.comcast.net) (Quit: Konversation terminated!)
2022-10-09 15:36:39 +0000machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 252 seconds)
2022-10-09 15:36:48 +0000titibandit(~titibandi@xdsl-89-0-65-2.nc.de)
2022-10-09 15:38:44 +0000machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2022-10-09 15:39:41 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 15:43:07 +0000mvk(~mvk@2607:fea8:5ce3:8500::a80f)
2022-10-09 15:43:27 +0000beteigeuze(~Thunderbi@2001:8a0:61b5:6101:f0c:e4e3:bfdc:91df)
2022-10-09 15:44:25 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 268 seconds)
2022-10-09 15:45:00 +0000king_gs(~Thunderbi@2806:103e:29:c5:4fb1:a8c9:906f:c6e0)
2022-10-09 15:45:03 +0000king_gs(~Thunderbi@2806:103e:29:c5:4fb1:a8c9:906f:c6e0) (Client Quit)
2022-10-09 15:47:40 +0000econo(uid147250@user/econo)
2022-10-09 15:49:27 +0000kenran(~user@user/kenran)
2022-10-09 15:53:59 +0000Alecui(~user@2a02:a58:8682:d600:c147:7976:693f:ec2f)
2022-10-09 15:55:56 +0000Alecui(~user@2a02:a58:8682:d600:c147:7976:693f:ec2f) (ERC 5.4.1 (IRC client for GNU Emacs 29.0.50))
2022-10-09 15:56:01 +0000mvk(~mvk@2607:fea8:5ce3:8500::a80f) (Quit: Going elsewhere)
2022-10-09 15:56:11 +0000burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk)
2022-10-09 15:57:56 +0000mvk(~mvk@2607:fea8:5ce3:8500::a80f)
2022-10-09 16:00:36 +0000burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk) (Ping timeout: 260 seconds)
2022-10-09 16:04:41 +0000nate1(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2022-10-09 16:05:18 +0000Lycurgus(~juan@user/Lycurgus) (Quit: Exeunt juan@acm.org)
2022-10-09 16:05:31 +0000jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-10-09 16:05:53 +0000jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-10-09 16:05:55 +0000rockystone(~rocky@user/rockymarine) (Ping timeout: 248 seconds)
2022-10-09 16:06:39 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 265 seconds)
2022-10-09 16:09:05 +0000titibandit(~titibandi@xdsl-89-0-65-2.nc.de) (Remote host closed the connection)
2022-10-09 16:10:21 +0000kenran(~user@user/kenran) (Remote host closed the connection)
2022-10-09 16:10:47 +0000L29Ah(~L29Ah@wikipedia/L29Ah) ()
2022-10-09 16:13:08 +0000L29Ah(~L29Ah@wikipedia/L29Ah)
2022-10-09 16:18:07 +0000rockystone(~rocky@user/rockymarine)
2022-10-09 16:24:10 +0000c209e6dc-4d76-47(~aditya@2601:249:4300:1296:195:dac6:592c:a55a)
2022-10-09 16:25:38 +0000burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk)
2022-10-09 16:26:06 +0000pavonia(~user@user/siracusa) (Quit: Bye!)
2022-10-09 16:28:47 +0000burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk) (Remote host closed the connection)
2022-10-09 16:30:33 +0000burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk)
2022-10-09 16:32:09 +0000cafce25(~cafce25@2001:a62:153a:a201:4317:4122:7383:8e29)
2022-10-09 16:34:47 +0000cafce25(~cafce25@2001:a62:153a:a201:4317:4122:7383:8e29) (Client Quit)
2022-10-09 16:34:57 +0000cafce25(~cafce25@2001:a62:153a:a201:4317:4122:7383:8e29)
2022-10-09 16:36:01 +0000burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk) (Remote host closed the connection)
2022-10-09 16:44:02 +0000jbggs[m](~jbggsmatr@2001:470:69fc:105::2:995f)
2022-10-09 16:48:11 +0000c209e6dc-4d76-47(~aditya@2601:249:4300:1296:195:dac6:592c:a55a) (Quit: Konversation terminated!)
2022-10-09 16:50:37 +0000kdaishi(~Thunderbi@94.191.152.150.mobile.tre.se)
2022-10-09 16:55:57 +0000zzzzZz
2022-10-09 16:56:35 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 16:56:36 +0000zZzzzZ
2022-10-09 16:57:23 +0000zzZZzz
2022-10-09 16:58:07 +0000Zzzzzz
2022-10-09 16:59:55 +0000adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-10-09 17:00:46 +0000adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-10-09 17:02:43 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 265 seconds)
2022-10-09 17:06:16 +0000ph88(~ph88@2a02:8109:9e00:71d0:6e37:2605:3bb:94a8)
2022-10-09 17:08:03 +0000loosh[m](~looshchat@2001:470:69fc:105::2:5ddd)
2022-10-09 17:08:30 +0000cytokine_storm(~user@user/cytokine-storm/x-1083107)
2022-10-09 17:17:11 +0000cytokine_storm(~user@user/cytokine-storm/x-1083107) (Read error: Connection reset by peer)
2022-10-09 17:22:30 +0000tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-10-09 17:27:55 +0000ddellacosta(~ddellacos@89.45.224.218)
2022-10-09 17:28:46 +0000Sgeo(~Sgeo@user/sgeo)
2022-10-09 17:44:20 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 17:48:47 +0000yvan-sraka(~yvan-srak@2a02:2788:224:71c:21e9:cca6:df3c:a2)
2022-10-09 17:49:05 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 268 seconds)
2022-10-09 18:04:13 +0000michalz(~michalz@185.246.207.215)
2022-10-09 18:05:05 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 18:06:55 +0000adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-10-09 18:07:49 +0000adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-10-09 18:09:26 +0000Oiyqlk(~rscastilh@191-214-26-24.user.veloxzone.com.br)
2022-10-09 18:09:33 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 252 seconds)
2022-10-09 18:18:36 +0000machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 265 seconds)
2022-10-09 18:24:48 +0000natechan(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-10-09 18:25:40 +0000jakalx(~jakalx@base.jakalx.net) ()
2022-10-09 18:26:27 +0000justsomeguy(~justsomeg@user/justsomeguy)
2022-10-09 18:28:12 +0000jakalx(~jakalx@base.jakalx.net)
2022-10-09 18:29:10 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 18:30:08 +0000waleee(~waleee@h-176-10-137-138.NA.cust.bahnhof.se)
2022-10-09 18:30:59 +0000wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-10-09 18:30:59 +0000wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-10-09 18:30:59 +0000wroathe(~wroathe@user/wroathe)
2022-10-09 18:33:41 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 250 seconds)
2022-10-09 18:34:01 +0000rockystone(~rocky@user/rockymarine) (Ping timeout: 260 seconds)
2022-10-09 18:34:36 +0000dextaa(~dextaa@p4fdc769f.dip0.t-ipconnect.de)
2022-10-09 18:37:41 +0000wootehfoot(~wootehfoo@user/wootehfoot)
2022-10-09 18:37:50 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:50e1:7448:ac98:298f) (Remote host closed the connection)
2022-10-09 18:39:21 +0000CeNiEi[m](~cenieimat@2001:470:69fc:105::1:894c)
2022-10-09 18:40:14 +0000rockystone(~rocky@user/rockymarine)
2022-10-09 18:44:18 +0000Topsi(~Topsi@dyndsl-095-033-089-091.ewe-ip-backbone.de)
2022-10-09 18:47:31 +0000kdaishi(~Thunderbi@94.191.152.150.mobile.tre.se) (Ping timeout: 248 seconds)
2022-10-09 18:48:01 +0000rockystone(~rocky@user/rockymarine) (Ping timeout: 260 seconds)
2022-10-09 18:48:01 +0000justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 260 seconds)
2022-10-09 18:48:34 +0000dextaa(~dextaa@p4fdc769f.dip0.t-ipconnect.de) (Changing host)
2022-10-09 18:48:34 +0000dextaa(~dextaa@user/dextaa)
2022-10-09 18:49:29 +0000rockystone(~rocky@user/rockymarine)
2022-10-09 18:53:29 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:50e1:7448:ac98:298f)
2022-10-09 18:54:30 +0000titibandit(~titibandi@xdsl-89-0-65-2.nc.de)
2022-10-09 18:57:24 +0000burnsidesLlama(~burnsides@client-8-77.eduroam.oxuni.org.uk)
2022-10-09 19:02:06 +0000burnsidesLlama(~burnsides@client-8-77.eduroam.oxuni.org.uk) (Ping timeout: 265 seconds)
2022-10-09 19:05:31 +0000 <janus> i never actually used the Writer/WriterT monad
2022-10-09 19:05:50 +0000 <janus> but now i have a writer effect that is backed by IO
2022-10-09 19:06:16 +0000 <EvanR> like, IO () monoid
2022-10-09 19:06:26 +0000 <EvanR> (>>)
2022-10-09 19:06:59 +0000 <janus> the write method is queueing a write operation on a uring queue
2022-10-09 19:07:15 +0000 <janus> my issue is that the Writer monad seems to have all sorts of methods i don't really need
2022-10-09 19:07:48 +0000 <EvanR> it's also lazy as hell
2022-10-09 19:08:07 +0000 <janus> i thought it would just be 'tell'
2022-10-09 19:08:35 +0000 <janus> so what do people usally do when abstracting out IO? do you just make a custom type class for this?
2022-10-09 19:09:08 +0000 <EvanR> if you actually want to have a method that just does this queueing IO, you can pass the action in with ReaderT and execute it with IO
2022-10-09 19:09:38 +0000 <janus> right, ok
2022-10-09 19:09:38 +0000burnsidesLlama(~burnsides@client-8-77.eduroam.oxuni.org.uk)
2022-10-09 19:09:53 +0000gmg(~user@user/gehmehgeh)
2022-10-09 19:10:00 +0000 <EvanR> or if you have a bunch of custom actions to be backed by some monad, pass in a record of actions, the record is parameterized by m
2022-10-09 19:10:12 +0000 <EvanR> accessed by ReaderT
2022-10-09 19:10:31 +0000 <janus> but that sounds like a typeclass, except you dispatch the dictionary manually
2022-10-09 19:10:37 +0000 <janus> but i guess there is nothing wrong with that
2022-10-09 19:11:45 +0000 <EvanR> there's a fundamental difference between using record of implementation and type classes, and I probably can't formulate that difference properly xD
2022-10-09 19:12:07 +0000 <EvanR> kmett video Typeclasses vs The World
2022-10-09 19:13:22 +0000burnsidesLlama(~burnsides@client-8-77.eduroam.oxuni.org.uk) (Remote host closed the connection)
2022-10-09 19:14:01 +0000 <EvanR> circling back to Writer and WriterT, you should do a deep dive on the laziness characteristics when you get a chance between it might surprise you for the context you were trying to use it in
2022-10-09 19:14:11 +0000 <EvanR> s/between/because/
2022-10-09 19:15:15 +0000pavonia(~user@user/siracusa)
2022-10-09 19:16:46 +0000 <janus> it shouldn't matter because the pure implementation would only be used for small tests
2022-10-09 19:17:11 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2022-10-09 19:17:21 +0000 <EvanR> there's a non pure implementation of Writer?
2022-10-09 19:17:49 +0000 <janus> i am not using Writer yet, because i currently only have the IO backed write operation
2022-10-09 19:18:16 +0000 <janus> so i have no abstraction yet, i am trying to invent the abstraction that would fit :P
2022-10-09 19:18:26 +0000 <janus> or rather, discover the prior art
2022-10-09 19:19:23 +0000justsomeguy(~justsomeg@user/justsomeguy)
2022-10-09 19:20:48 +0000mvk(~mvk@2607:fea8:5ce3:8500::a80f) (Ping timeout: 264 seconds)
2022-10-09 19:21:39 +0000 <EvanR> abstracting out your IO seems to be complicated by the fact that all these libraries come with existing answers to that, not always the same answer xD
2022-10-09 19:25:01 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 19:28:01 +0000natechan(~nate@98.45.169.16)
2022-10-09 19:28:15 +0000mvk(~mvk@2607:fea8:5ce3:8500::a80f)
2022-10-09 19:29:26 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 260 seconds)
2022-10-09 19:49:54 +0000coot(~coot@213.134.171.3) (Quit: coot)
2022-10-09 19:50:41 +0000c209e6dc-4d76-47(~aditya@2601:249:4300:1296:195:dac6:592c:a55a)
2022-10-09 19:51:22 +0000c209e6dc-4d76-47(~aditya@2601:249:4300:1296:195:dac6:592c:a55a) (Client Quit)
2022-10-09 19:51:48 +0000rockystone(~rocky@user/rockymarine) (Ping timeout: 268 seconds)
2022-10-09 19:54:07 +0000rockystone(~rocky@user/rockymarine)
2022-10-09 19:55:12 +0000burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk)
2022-10-09 19:57:46 +0000titibandit(~titibandi@xdsl-89-0-65-2.nc.de) (Remote host closed the connection)
2022-10-09 19:59:33 +0000burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk) (Ping timeout: 252 seconds)
2022-10-09 20:01:12 +0000nate1(~nate@98.45.169.16)
2022-10-09 20:01:38 +0000m1dnight(~christoph@78-22-0-121.access.telenet.be) (Quit: WeeChat 3.6)
2022-10-09 20:02:02 +0000m1dnight(~christoph@78-22-0-121.access.telenet.be)
2022-10-09 20:06:23 +0000nate1(~nate@98.45.169.16) (Ping timeout: 265 seconds)
2022-10-09 20:06:45 +0000 <dminuoso> Control.Monad.Trans.Writer.CPS is a thing,m though.
2022-10-09 20:07:13 +0000 <dminuoso> But I find IORef/STRef to be better tools for a lot of applications.
2022-10-09 20:07:32 +0000jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-10-09 20:07:49 +0000LukeHoersten(~LukeHoers@user/lukehoersten)
2022-10-09 20:08:31 +0000stiell_(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-10-09 20:09:14 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:50e1:7448:ac98:298f) (Remote host closed the connection)
2022-10-09 20:09:41 +0000dextaa(~dextaa@user/dextaa) (Ping timeout: 260 seconds)
2022-10-09 20:11:58 +0000stiell_(~stiell@gateway/tor-sasl/stiell)
2022-10-09 20:12:11 +0000natechan(~nate@98.45.169.16) (Ping timeout: 265 seconds)
2022-10-09 20:12:25 +0000 <EvanR> I equip my Control.Monad.Trans.Writer.CPS with an IORef/STRef so I can log during my algorithm. By cons onto a long list then reversing at the end xD
2022-10-09 20:12:46 +0000jakalx(~jakalx@base.jakalx.net)
2022-10-09 20:12:55 +0000 <EvanR> HASK LIFE
2022-10-09 20:13:01 +0000 <dminuoso> How do you do that?
2022-10-09 20:13:19 +0000 <dminuoso> Oh hold on, you assume an IO inside
2022-10-09 20:13:49 +0000 <dminuoso> Honestly I just use ReaderT, because that frees me from MonadBaseControl and gives me MonadUnliftIO.
2022-10-09 20:14:08 +0000 <dminuoso> All that Writer can give you, you can do with that too but its less restricting.
2022-10-09 20:14:59 +0000burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk)
2022-10-09 20:18:08 +0000LukeHoersten(~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-10-09 20:23:29 +0000gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Remote host closed the connection)
2022-10-09 20:23:51 +0000rockystone(~rocky@user/rockymarine) (Ping timeout: 268 seconds)
2022-10-09 20:26:38 +0000ss4(~wootehfoo@user/wootehfoot)
2022-10-09 20:28:26 +0000king_gs(~Thunderbi@2806:103e:29:c5:4fb1:a8c9:906f:c6e0)
2022-10-09 20:29:09 +0000king_gs(~Thunderbi@2806:103e:29:c5:4fb1:a8c9:906f:c6e0) (Client Quit)
2022-10-09 20:29:35 +0000wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 265 seconds)
2022-10-09 20:33:00 +0000Luj3(~Luj@78.194.168.230)
2022-10-09 20:34:38 +0000gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de)
2022-10-09 20:36:24 +0000Luj(~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb) (Ping timeout: 264 seconds)
2022-10-09 20:37:21 +0000ss4(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2022-10-09 20:38:11 +0000Luj34(~Luj@2a01:e0a:5f9:9681:2071:e834:e16a:b87d)
2022-10-09 20:39:54 +0000Luj3(~Luj@78.194.168.230) (Ping timeout: 268 seconds)
2022-10-09 20:39:54 +0000Luj34Luj3
2022-10-09 20:41:36 +0000Midjak(~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
2022-10-09 20:44:15 +0000wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-10-09 20:44:15 +0000wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-10-09 20:44:15 +0000wroathe(~wroathe@user/wroathe)
2022-10-09 20:44:56 +0000perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.6)
2022-10-09 20:48:23 +0000[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-10-09 20:49:54 +0000LukeHoersten(~LukeHoers@user/lukehoersten)
2022-10-09 20:50:09 +0000biberu(~biberu@user/biberu) (Read error: Connection reset by peer)
2022-10-09 20:54:16 +0000 <raehik1> I have `data A = A Void`. Why isn't `consumeA :: A -> ()`, `consumeA a = case a of {}` exhaustive?
2022-10-09 20:54:33 +0000biberu(~biberu@user/biberu)
2022-10-09 20:55:06 +0000 <raehik1> I swear there was a paper on an AST design pattern that did relied on this sort of pattern. Perhaps they just ignored all the falsy non-exhausitivity compiler messages
2022-10-09 20:55:46 +0000 <EvanR> that's not all the cases
2022-10-09 20:56:00 +0000 <EvanR> try instead data A = A !Void
2022-10-09 20:56:08 +0000 <dminuoso> newtype?
2022-10-09 20:56:10 +0000 <EvanR> or newtype
2022-10-09 20:56:33 +0000 <dminuoso> But yeah, there's two ways to construct something of type A here.
2022-10-09 20:56:39 +0000 <dminuoso> `A undefined` and `undefined`
2022-10-09 20:56:48 +0000TonyStone(~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) (Quit: Leaving)
2022-10-09 20:56:54 +0000 <EvanR> e.g. as it stands consumeA (A undefined) could return () if you fixed the code
2022-10-09 20:57:34 +0000 <dminuoso> My memory is a bit hazy, but making the field strict is still not the same though.,
2022-10-09 20:57:35 +0000 <raehik1> dminuoso: ohhh, yeah. So if type A was a sum type, is this possible to make work? Could I ignore constructors that have a Void in them?
2022-10-09 20:57:49 +0000 <dminuoso> raehik1: You can just do a nested case-of as well.
2022-10-09 20:58:00 +0000 <dminuoso> case a of A i -> case i of {}
2022-10-09 20:58:34 +0000 <raehik1> EvanR: oh! this works!
2022-10-09 20:58:55 +0000 <EvanR> yes... there might still be a loophole involving A !Void
2022-10-09 20:58:58 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 20:59:01 +0000yvan-sraka(~yvan-srak@2a02:2788:224:71c:21e9:cca6:df3c:a2) (Remote host closed the connection)
2022-10-09 20:59:12 +0000 <dminuoso> There's a bunch of semantic differences
2022-10-09 20:59:18 +0000 <raehik1> And my GHC 9.2 is happy with A !Void too
2022-10-09 20:59:21 +0000 <EvanR> call the haskell librarian
2022-10-09 20:59:38 +0000 <raehik1> *oops, I mean with the nested case too
2022-10-09 20:59:51 +0000 <dminuoso> Bah I cannot recall whoever recommended flatparse to me, but that thing is my favourite parser library fo the year.
2022-10-09 20:59:54 +0000 <raehik1> I was thinking of the trees that grow paper
2022-10-09 21:00:04 +0000 <raehik1> dminuoso: that was me the other day :))
2022-10-09 21:00:39 +0000 <dminuoso> Ive started writing a flatpack library that similarly constructs fixed bytestrings.
2022-10-09 21:00:56 +0000 <dminuoso> mason is just too big and doesnt have a few features I want (like resetting position)
2022-10-09 21:01:20 +0000__monty__(~toonn@user/toonn) (Quit: leaving)
2022-10-09 21:01:54 +0000rockystone(~rocky@user/rockymarine)
2022-10-09 21:03:54 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 268 seconds)
2022-10-09 21:04:00 +0000 <EvanR> Stackpak - Flatpak a Haskell Stack App into Flathub
2022-10-09 21:06:16 +0000rockystone(~rocky@user/rockymarine) (Ping timeout: 260 seconds)
2022-10-09 21:08:36 +0000machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2022-10-09 21:09:44 +0000eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2022-10-09 21:11:09 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 265 seconds)
2022-10-09 21:11:51 +0000ChaiTRex(~ChaiTRex@user/chaitrex) (Quit: ChaiTRex)
2022-10-09 21:13:43 +0000lambdap237(~lambdap@static.167.190.119.168.clients.your-server.de)
2022-10-09 21:14:19 +0000ChaiTRex(~ChaiTRex@user/chaitrex)
2022-10-09 21:14:26 +0000eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds)
2022-10-09 21:14:55 +0000lambdap237(~lambdap@static.167.190.119.168.clients.your-server.de) (Client Quit)
2022-10-09 21:15:49 +0000lambdap237(~lambdap@static.167.190.119.168.clients.your-server.de)
2022-10-09 21:16:05 +0000perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2022-10-09 21:18:01 +0000ec(~ec@gateway/tor-sasl/ec)
2022-10-09 21:19:09 +0000son0p(~ff@181.136.122.143)
2022-10-09 21:22:56 +0000ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 258 seconds)
2022-10-09 21:27:04 +0000gmg(~user@user/gehmehgeh) (Quit: Leaving)
2022-10-09 21:28:44 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 21:29:33 +0000michalz(~michalz@185.246.207.215) (Remote host closed the connection)
2022-10-09 21:34:07 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 268 seconds)
2022-10-09 21:35:57 +0000rockystone(~rocky@user/rockymarine)
2022-10-09 21:36:52 +0000takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-10-09 21:39:17 +0000wroathe(~wroathe@50.205.197.50)
2022-10-09 21:39:17 +0000wroathe(~wroathe@50.205.197.50) (Changing host)
2022-10-09 21:39:17 +0000wroathe(~wroathe@user/wroathe)
2022-10-09 21:40:01 +0000acidjnk(~acidjnk@p54ad5adb.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2022-10-09 21:40:36 +0000coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-10-09 21:40:45 +0000rockystone(~rocky@user/rockymarine) (Ping timeout: 252 seconds)
2022-10-09 21:42:38 +0000coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Client Quit)
2022-10-09 21:45:07 +0000 <jackdk> Axman6: this flatparse lib looks very up your alley
2022-10-09 21:49:14 +0000ec(~ec@gateway/tor-sasl/ec)
2022-10-09 21:55:05 +0000burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk) (Remote host closed the connection)
2022-10-09 22:00:28 +0000Guest3(~Guest3@dynamic-077-180-146-126.77.180.pool.telefonica.de)
2022-10-09 22:00:56 +0000Guest6(~Guest6@2a01cb0408ee9900a77feef9a14c5040.ipv6.abo.wanadoo.fr)
2022-10-09 22:01:43 +0000 <Guest6> Evening, I recently discovered monad transfomers and especially ReaderT and i'm trying to use it in my WAI application. But i dont understand at all how can i make a WAI application and ReaderT work together.
2022-10-09 22:02:06 +0000 <dminuoso> Guest6: You would unwrap the transformer first.
2022-10-09 22:02:22 +0000 <dminuoso> Do you use WAI directly, or some kind of server library?
2022-10-09 22:03:00 +0000 <Guest6> i use WAI directly, i run it with warp tho
2022-10-09 22:04:08 +0000 <dminuoso> Can you share some rough bits for me to get an idea how to you use this?
2022-10-09 22:04:25 +0000 <Guest6> sure
2022-10-09 22:05:42 +0000 <Guest6> https://gist.github.com/louislebrault/b5ecc9b5fc042a6c7e9bf6b8e2644b04
2022-10-09 22:06:27 +0000 <Guest6> as you see i pass a "Context" parameter everywhere, that i want to pass with ReaderT instead
2022-10-09 22:07:08 +0000 <dminuoso> Guest6: okay, so you would write some `type MyApplication = Request -> (Response -> ReaderT Env IO ResponseReceived) -> ReaderT Env ResponseReceived`
2022-10-09 22:07:49 +0000 <Guest6> exactly
2022-10-09 22:07:52 +0000 <dminuoso> Then, you would need a simple function mkApp :: Env -> MyApplication -> Application`
2022-10-09 22:08:01 +0000 <dminuoso> Which does the necessary runReaderT
2022-10-09 22:08:11 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 22:09:19 +0000 <Guest6> hmm ok
2022-10-09 22:09:20 +0000natechan(~nate@98.45.169.16)
2022-10-09 22:09:39 +0000 <dminuoso> Note, that if you use WAI directly you can *only* ever add ReaderT (or things isomorphic to it) unless you also use MonadBaseControl.
2022-10-09 22:09:58 +0000 <dminuoso> Or well, actually thats not true.
2022-10-09 22:10:09 +0000 <dminuoso> Strictly speaking you only need:
2022-10-09 22:11:17 +0000 <dminuoso> Mm ignore that bit
2022-10-09 22:11:33 +0000ulvarrefr(~user@188.124.56.153) (Ping timeout: 252 seconds)
2022-10-09 22:11:58 +0000 <EvanR> add TardisT to WAI to allow unsending emails
2022-10-09 22:14:25 +0000 <dminuoso> That wont work. You would have to use IOT.
2022-10-09 22:15:25 +0000 <dminuoso> Been fighting for that particular transformer, but nobody knows how to make it, especially since the DMC-12 is no longer being made.
2022-10-09 22:16:17 +0000 <Guest6> i saw aĀ  package that is supposed to do the necessary to transform an application into a ReaderT application and vice-versa : https://hackage.haskell.org/package/wai-transformers-0.1.0/docs/Network-Wai-Trans.html#t:Applicati…
2022-10-09 22:16:23 +0000 <Guest6> but i didnt achieve to make it work
2022-10-09 22:16:37 +0000rockystone(~rocky@user/rockymarine)
2022-10-09 22:16:43 +0000 <dminuoso> Give me a second, let me give you a pointer
2022-10-09 22:16:52 +0000 <Guest6> i wonder if i need more knowledge about the whole transformers things to achieve this
2022-10-09 22:17:10 +0000 <Guest6> because im trying to wire things together without understanding what's going wrong
2022-10-09 22:17:16 +0000 <Guest6> sure
2022-10-09 22:17:57 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 268 seconds)
2022-10-09 22:18:28 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 22:19:15 +0000 <dminuoso> Guest6: https://gist.github.com/dminuoso/0b9db8bcf0c92e8861640f46a6e1b735
2022-10-09 22:22:11 +0000 <dminuoso> You can also use `liftIO` inside there if you prefer
2022-10-09 22:23:33 +0000 <Guest6> ok for the first time since days the code compiles
2022-10-09 22:23:50 +0000 <dminuoso> https://gist.github.com/dminuoso/0b9db8bcf0c92e8861640f46a6e1b735
2022-10-09 22:23:51 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 260 seconds)
2022-10-09 22:23:59 +0000 <EvanR> if it compiles, ship it
2022-10-09 22:24:05 +0000son0p(~ff@181.136.122.143) (Remote host closed the connection)
2022-10-09 22:26:55 +0000burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk)
2022-10-09 22:27:00 +0000 <Guest6> it woooorks
2022-10-09 22:27:14 +0000 <Guest6> dminuoso thank you so much
2022-10-09 22:29:21 +0000 <Guest6> dunno how much hours i would've need to come up with an equivalent of those few lines of code u shared with me
2022-10-09 22:30:27 +0000 <Guest6> will have to learn how those things are working tho
2022-10-09 22:30:44 +0000 <dminuoso> Well this is just very simple follow-the-types
2022-10-09 22:31:07 +0000 <Guest6> ahah well
2022-10-09 22:31:23 +0000burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk) (Ping timeout: 265 seconds)
2022-10-09 22:32:05 +0000rockystone(~rocky@user/rockymarine) (Ping timeout: 268 seconds)
2022-10-09 22:32:12 +0000 <Guest6> probably once you understood how is it working, i spent time reading type signatures of https://hackage.haskell.org/package/wai-transformers-0.1.0/docs/Network-Wai-Trans.html#t:Applicati… but i had absolutly no clue how to make the compiler happy
2022-10-09 22:33:00 +0000 <dminuoso> Guest6: Honestly with middlewares and arbitrary monad transformers you get into some pretty strange complications
2022-10-09 22:33:18 +0000 <dminuoso> Which is why you see that MonadBaseControl constraint everywhere
2022-10-09 22:34:11 +0000 <EvanR> type MiddlewareT m = ApplicationT m -> ApplicationT m -- ah, so MiddlewareT is actually a transformer transformer
2022-10-09 22:34:15 +0000Alecui(~alecu@2a02:a58:8682:d600:c147:7976:693f:ec2f)
2022-10-09 22:34:16 +0000 <dminuoso> Well, not even just middlewares, but also something like liftApplication :: Application -> MyApplication
2022-10-09 22:35:00 +0000ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 258 seconds)
2022-10-09 22:35:21 +0000 <dminuoso> Guest6: That being said, as long as you stick to ReaderT (and things isomorphic to it like LoggingT) you will not experience these problems.
2022-10-09 22:36:06 +0000 <Guest6> good to hear
2022-10-09 22:43:51 +0000son0p(~ff@181.136.122.143)
2022-10-09 22:45:35 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 22:45:41 +0000natechan(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-10-09 22:45:47 +0000rockystone(~rocky@user/rockymarine)
2022-10-09 22:49:24 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2022-10-09 22:51:51 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 268 seconds)
2022-10-09 22:51:57 +0000perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.6)
2022-10-09 22:55:24 +0000Alecui(~alecu@2a02:a58:8682:d600:c147:7976:693f:ec2f) (Remote host closed the connection)
2022-10-09 22:57:38 +0000The_Guest67(~The_Guest@62.231.72.77)
2022-10-09 22:58:31 +0000zns(~zns@user/zns)
2022-10-09 23:00:25 +0000pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
2022-10-09 23:02:58 +0000The_Guest6785(~The_Guest@62.231.72.77)
2022-10-09 23:03:18 +0000 <The_Guest6785> Hey guys, Dumb question here: I'm following this lecture on haskell but when i compile my code it prints <<loop>>, https://paste.tomsmeding.com/0iK4uIu9 . A bit of digging and i found out that it is an infinite loop so what did i do wrong?
2022-10-09 23:03:35 +0000beteigeuze(~Thunderbi@2001:8a0:61b5:6101:f0c:e4e3:bfdc:91df) (Remote host closed the connection)
2022-10-09 23:04:01 +0000beteigeuze(~Thunderbi@2001:8a0:61b5:6101:9233:19e9:6537:6e73)
2022-10-09 23:04:42 +0000 <geekosaur> reused xs and then tried to reference the original one (line 4_
2022-10-09 23:04:46 +0000 <geekosaur> s/_/)
2022-10-09 23:05:36 +0000 <The_Guest6785> Oh, how didn't i see that! Thanks
2022-10-09 23:06:14 +0000The_Guest67(~The_Guest@62.231.72.77) (Ping timeout: 252 seconds)
2022-10-09 23:07:03 +0000thyriaen(~thyriaen@2a01:aea0:dd4:463c:6245:cbff:fe9f:48b1) (Quit: Leaving)
2022-10-09 23:08:14 +0000dimsuz(~dimsuz@185.17.128.86)
2022-10-09 23:10:01 +0000codaraxis(~codaraxis@user/codaraxis)
2022-10-09 23:10:58 +0000Topsi(~Topsi@dyndsl-095-033-089-091.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2022-10-09 23:11:30 +0000codaraxis__(~codaraxis@user/codaraxis) (Ping timeout: 265 seconds)
2022-10-09 23:12:50 +0000ec(~ec@gateway/tor-sasl/ec)
2022-10-09 23:13:18 +0000codaraxis__(~codaraxis@user/codaraxis)
2022-10-09 23:16:49 +0000jmdaemon(~jmdaemon@user/jmdaemon)
2022-10-09 23:17:18 +0000codaraxis(~codaraxis@user/codaraxis) (Ping timeout: 265 seconds)
2022-10-09 23:18:16 +0000vorpuni(~pvorp@2001:861:3881:c690:6d4:662c:a06a:ef29) (Remote host closed the connection)
2022-10-09 23:18:20 +0000 <ski> EvanR : hm ? `MiddlewareT :: (* -> *) -> *'
2022-10-09 23:20:06 +0000The_Guest6785(~The_Guest@62.231.72.77) (Quit: Client closed)
2022-10-09 23:20:47 +0000 <dminuoso> ski: I think it was just a humor remark because it had a trailing capital T.
2022-10-09 23:20:50 +0000chomwitt(~chomwitt@2a02:587:dc0c:c200:9b5d:e3:b4f7:170c) (Ping timeout: 268 seconds)
2022-10-09 23:21:30 +0000zns(~zns@user/zns) (Quit: zzz)
2022-10-09 23:21:38 +0000 <ski> oh
2022-10-09 23:21:48 +0000 <ski> ApplicationT m = Request -> Cont (m ResponseReceived) Response
2022-10-09 23:21:56 +0000 <ski> = Request -> ContT ResponseReceived m Response
2022-10-09 23:22:09 +0000 <ski> = ReaderT Request (ContT ResponseReceived m) Response
2022-10-09 23:22:20 +0000 <ski> MiddlewareT m = Cont (ReaderT Request (ContT ResponseReceived m) Response) ()
2022-10-09 23:22:31 +0000 <ski> = ContT Response (ReaderT Request (ContT ResponseReceived m)) ()
2022-10-09 23:22:55 +0000 <ski> = StateT Request (Cont (ContT ResponseReceived m Response)) ()
2022-10-09 23:23:06 +0000 <ski> = StateT Request (ContT Response (ContT ResponseReceived m)) ()
2022-10-09 23:23:10 +0000burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk)
2022-10-09 23:23:31 +0000jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-10-09 23:23:49 +0000jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-10-09 23:23:55 +0000rockystone(~rocky@user/rockymarine) (Ping timeout: 268 seconds)
2022-10-09 23:27:19 +0000 <ski> hm, i guess `Request' is being forwarded from outer to inner ("backwarded" ?), while `Response' is forwarded in the other direction
2022-10-09 23:28:09 +0000rockystone(~rocky@user/rockymarine)
2022-10-09 23:28:51 +0000gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2022-10-09 23:28:54 +0000burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk) (Ping timeout: 265 seconds)
2022-10-09 23:30:03 +0000edrx(~Eduardo@2804:56c:d2d3:4800:cf7d:b421:4c3a:392e)
2022-10-09 23:30:07 +0000perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2022-10-09 23:31:57 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-09 23:33:49 +0000zns(~zns@user/zns)
2022-10-09 23:33:57 +0000azimut(~azimut@gateway/tor-sasl/azimut)
2022-10-09 23:34:08 +0000gentauro(~gentauro@user/gentauro)
2022-10-09 23:34:25 +0000rockystone(~rocky@user/rockymarine) (Ping timeout: 268 seconds)
2022-10-09 23:34:40 +0000 <EvanR> dminuoso, because the type literally says ApplicationT m -> ApplicationT m
2022-10-09 23:35:14 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:50e1:7448:ac98:298f)
2022-10-09 23:35:18 +0000 <dminuoso> That is not a monad transformer conforming type, though.
2022-10-09 23:35:59 +0000 <dminuoso> The type is that of a monad homomorphism.
2022-10-09 23:36:01 +0000 <EvanR> monads shmonads
2022-10-09 23:36:25 +0000 <dminuoso> Monad transformers must be of type (Type -> Type) -> Type -> Type
2022-10-09 23:37:00 +0000son0p(~ff@181.136.122.143) (Killed (NickServ (GHOST command used by son0p-)))
2022-10-09 23:37:29 +0000mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 268 seconds)
2022-10-09 23:38:43 +0000 <EvanR> is ApplicationT m even a monad whats going on
2022-10-09 23:39:47 +0000 <dminuoso> As ski has pointed out, its isomorphic to some at least.
2022-10-09 23:40:01 +0000jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Read error: Connection reset by peer)
2022-10-09 23:40:12 +0000 <EvanR> ReaderT Request (ContT ResponseReceived m) Response seems to be a whole action
2022-10-09 23:40:14 +0000 <dminuoso> It's just a convenience type alias to describe an Application with an arbitrary monad layered in there
2022-10-09 23:40:16 +0000 <edrx> hi all! I have just finished this: https://i.ibb.co/Z8H072x/sshot.png
2022-10-09 23:40:18 +0000jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-10-09 23:40:19 +0000 <EvanR> like where does the a goes
2022-10-09 23:41:04 +0000 <edrx> and now I can start to play with parsers for arithmetic expressions. question:
2022-10-09 23:42:40 +0000natechan(~nate@98.45.169.16)
2022-10-09 23:42:47 +0000 <ski> `a' is `Response' there. for the latter one, it is `()'
2022-10-09 23:42:58 +0000 <ski> re edrx
2022-10-09 23:44:02 +0000 <EvanR> so the T is not indicating a monad transformer in the first place
2022-10-09 23:44:05 +0000 <ski> @src concatMap
2022-10-09 23:44:05 +0000 <lambdabot> concatMap f = foldr ((++) . f) []
2022-10-09 23:44:10 +0000BusConscious(~martin@ip-046-223-162-236.um13.pools.vodafone-ip.de)
2022-10-09 23:44:39 +0000 <dminuoso> EvanR: Its sort of indicating that, whatever you specify next to it, is likely a monad with transformers applied?
2022-10-09 23:44:47 +0000 <ski> concatMap f xs = concat (map f xs) = f =<< xs = [y | x <- xs,y <- f x]
2022-10-09 23:44:49 +0000jinsunGuest3962
2022-10-09 23:44:49 +0000jinsun__(~jinsun@user/jinsun)
2022-10-09 23:44:49 +0000Guest3962(~jinsun@user/jinsun) (Killed (cadmium.libera.chat (Nickname regained by services)))
2022-10-09 23:44:49 +0000jinsun__jinsun
2022-10-09 23:44:54 +0000 <dminuoso> Dunno. ApplicationM and MiddlewareM might have been more consistent
2022-10-09 23:45:17 +0000Tuplanolla(~Tuplanoll@91-159-69-34.elisa-laajakaista.fi) (Quit: Leaving.)
2022-10-09 23:45:20 +0000 <EvanR> if someone who was complaining about the transformer heavy situations in haskell, they might see that and revolt xD
2022-10-09 23:46:03 +0000Oiyqlk(~rscastilh@191-214-26-24.user.veloxzone.com.br) ()
2022-10-09 23:46:37 +0000 <EvanR> in so far as naming conventions can be used as a guide in unfamiliar circumstances that have familiar things
2022-10-09 23:47:07 +0000geekosaurwonders if *M is a good naming convention given ST vs. STM
2022-10-09 23:47:50 +0000 <geekosaur> edrx, you had a question?
2022-10-09 23:48:03 +0000 <ski> edrx : redundant brackets, `.. ++ (show s) ++ ..' (`luatree0'), `(..):st' (`exec1')
2022-10-09 23:48:13 +0000rockystone(~rocky@user/rockymarine)
2022-10-09 23:48:23 +0000 <edrx> ...question: in one of the next steps I will have to split a string like "( 2 + u- 3 ) * ( 4 + x )" at whitespace, and then transform each word into commands for a stack machine, like OpenParen, Prefix "-" 40, Infix "+" 20 21
2022-10-09 23:48:59 +0000 <dminuoso> Wow. GHC supports unboxed sum types!
2022-10-09 23:49:05 +0000 <dminuoso> How did I miss that memo
2022-10-09 23:49:12 +0000 <EvanR> cool
2022-10-09 23:49:15 +0000gmg(~user@user/gehmehgeh)
2022-10-09 23:49:27 +0000natechan(~nate@98.45.169.16) (Ping timeout: 252 seconds)
2022-10-09 23:49:29 +0000 <dminuoso> That means I can now handroll my own version of IO :>
2022-10-09 23:49:33 +0000 <geekosaur> hm. parens aren't normally used at that level, instead they would be used to structure an AST and the stack machine programmed from that
2022-10-09 23:49:50 +0000 <ski> edrx : `execn' is a `foldl'. i'd probably check for singleton in `exec'
2022-10-09 23:49:55 +0000 <EvanR> omg edrx what is the actual question
2022-10-09 23:50:34 +0000 <edrx> the question is: in Lua using associative tables to translate strings into other objects is trivial, and I used the built-in associative tables to conevrt for example "+" to Infix "+" 20 21. What do you recommend for that in Haskell?
2022-10-09 23:50:43 +0000 <edrx> EvanR: sorry =/
2022-10-09 23:50:56 +0000 <geekosaur> this is parsing
2022-10-09 23:51:01 +0000 <dminuoso> type Res# e a = (# (# State#, a, Addr# #) | (# State# #) | #( State#, e #) #)
2022-10-09 23:51:21 +0000 <ski> `ST' predates the `FooT', iirc
2022-10-09 23:51:22 +0000 <dminuoso> type Res# e a = (# (# State# RealWorld, a, Addr# #) | (# State# RealWorld #) | #( State# RealWorld, e #) #)
2022-10-09 23:51:24 +0000 <dminuoso> That.
2022-10-09 23:51:29 +0000 <EvanR> translating symbols to other symbols one to one with a table is one thing, you could use a Map
2022-10-09 23:51:38 +0000 <EvanR> but you seem to want to do actual parsing in this process
2022-10-09 23:51:51 +0000 <EvanR> dunno how lua manages that with just their table type xD
2022-10-09 23:52:09 +0000 <geekosaur> same way lots of people "parse" with regexes
2022-10-09 23:52:17 +0000 <ski> dminuoso : not what i would call "unboxed sum types", though :/
2022-10-09 23:52:26 +0000 <edrx> ski: thanks! I knew that execn looked like one of the folds, but that is just a very first prototype...
2022-10-09 23:52:30 +0000wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-10-09 23:52:30 +0000wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-10-09 23:52:30 +0000wroathe(~wroathe@user/wroathe)
2022-10-09 23:53:29 +0000 <edrx> EvanR: yes, I'm try to learn how to do parsing properly.
2022-10-09 23:54:18 +0000 <EvanR> you got your LL parsing and you got your LR parsing and... I don't understand any of it because I use monads
2022-10-09 23:55:38 +0000 <ski> edrx : either `ReadS' (or `ReadP' or `ReadPrec') .. or use a proper "serious" parser combinator library (Parsec,MegaParsec,attoparsec,trifecta,..) .. or use the (`yacc'-like, with `lex'-like) Happy, with Alex .. or possibly something on top of that, like BNFC
2022-10-09 23:55:43 +0000spaced(uid572193@id-572193.ilkley.irccloud.com)
2022-10-09 23:55:53 +0000ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 258 seconds)
2022-10-09 23:56:08 +0000 <EvanR> yeah we have nice libraries to take out the task of parsing lua expressions easily
2022-10-09 23:56:25 +0000 <ski> dminuoso : what're you modelling ?
2022-10-09 23:56:56 +0000 <ski> i mean, that's the middle alternative for ?
2022-10-09 23:57:14 +0000 <EvanR> in megaparsec you could even give it a table of operators, precedences, associativities, and it just does it for you
2022-10-09 23:57:24 +0000skiidly recalls Hugs did `IO' via CPS
2022-10-09 23:57:31 +0000 <EvanR> you don't have to know anything lol
2022-10-09 23:57:36 +0000 <dminuoso> ski: It's ByteString encoder monad that has separate failure/error modes.
2022-10-09 23:57:46 +0000 <dminuoso> The middle alternative models failure
2022-10-09 23:57:54 +0000gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2022-10-09 23:58:03 +0000 <ski> hm. what does failure entail ?
2022-10-09 23:58:20 +0000 <dminuoso> Exceeding available buffer length, setting position out of bounds
2022-10-09 23:58:39 +0000 <ski> as opposed to what kind of errors ?
2022-10-09 23:58:53 +0000 <ski> how does the handling (plumbing) differ ?
2022-10-09 23:59:47 +0000 <dminuoso> ski: On a failure you could still <|> to switch to a different mechanism.
2022-10-09 23:59:48 +0000dimsuz(~dimsuz@185.17.128.86) (Quit: Client closed)
2022-10-09 23:59:52 +0000 <ski> @where BNFC
2022-10-09 23:59:52 +0000 <lambdabot> BNF Converter, http://bnfc.digitalgrammars.com/