Home liberachat/#haskell: Logs Calendar

Logs on 2023-11-12 (liberachat/#haskell)

00:01:26 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
00:02:24 euleritian joins (~euleritia@dynamic-046-114-201-058.46.114.pool.telefonica.de)
00:06:49 <geekosaur> it's somewhat limited, in that it simply defers the check, it doesn't allow actual type lambdas
00:09:55 <ph88> anyone have an idea how to write [Either a b] -> Either a [b] and [Either a b] -> Either [a] [b] ? where in case there is an `a` the `a` has preference over all the b's
00:11:36 <geekosaur> % :t sequenceA @(Either _)
00:11:36 <yahb2> sequenceA @(Either _) ; :: Applicative f => Either w (f a) -> f (Either w a)
00:12:03 <geekosaur> wrong one
00:12:09 <geekosaur> % :t sequenceA @[] @(Either _)
00:12:10 <yahb2> sequenceA @[] @(Either _) ; :: Applicative (Either w) => [Either w a] -> Either w [a]
00:13:18 <geekosaur> I'm not sure the second is meaningful, perhaps you want partitionEithers?
00:16:08 <geekosaur> (if partitionEithers is not what you want, possibly you want These or Validation or Chronicle in place of Either)
00:16:13 John_Ivan joins (~John_Ivan@user/john-ivan/x-1515935)
00:16:30 <ph88> oh yes i could use partitionEithers and turn it into an Either. Thank you geekosaur
00:21:52 gdown joins (~gavin@h69-11-149-109.kndrid.broadband.dynamic.tds.net)
00:22:21 <ph88> is there a way to make these functions more general for List and Vector ? https://bpa.st/GFPQ
00:24:05 <geekosaur> % :t sequenceA @_ @(Either _)
00:24:05 <yahb2> sequenceA @_ @(Either _) ; :: (Traversable w1, Applicative (Either w2)) => ; w1 (Either w2 a) -> Either w2 (w1 a)
00:24:20 <geekosaur> sequenceA already is
00:24:26 <geekosaur> :t partitionEithers
00:24:27 <lambdabot> [Either a b] -> ([a], [b])
00:24:42 <geekosaur> not general enough
00:25:26 <geekosaur> I wonder if that could be framed in terms of Traversable
00:42:19 <ph88> How can i make the following structures ?
00:42:21 <ph88> [State Foo (Either Text Bar)] -> State Foo (Either Text [Bar])
00:42:25 <ph88> [State Foo (Either Text Bar)] -> Either Text [State [Bar]]
00:42:53 <ph88> i'm also not sure which one of the two i want, both seem fine to me. I guess second one is more complicated so perhaps just the first one is okay
00:43:20 <ph88> if State was Either i could do second sequenceA
00:46:18 <geekosaur> % :t sequenceA @[] @(StateT _ (Either T.Text))
00:46:18 <yahb2> sequenceA @[] @(StateT _ (Either T.Text)) ; :: Applicative (StateT w (Either T.Text)) => ; [StateT w (Either T.Text) a] -> StateT w (Either T.Text) [a]
00:46:45 <ph88> magic :D
00:47:09 <geekosaur> not sure the second one is doable, monads do not commute that way in general
00:47:33 × accord quits (uid568320@id-568320.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
00:48:54 <ph88> about the first one, is the input actually the same? `[State Foo (Either Text Bar)]` and `[StateT w (Either T.Text) a`
00:49:10 <ph88> `[StateT w (Either T.Text) a]`
00:49:43 <geekosaur> they're not quite identical, but to use sequenceA you want to treat the Either Text as part of the Applicative structure instead of as part of the value
00:50:01 <[Leary]> You can also do `getCompose . sequenceA . Compose` or `fmap sequenceA . sequenceA`.
00:51:35 × sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 260 seconds)
00:52:15 <c_wraith> :t getCompose . traverse Compose
00:52:16 <lambdabot> forall k1 (t :: * -> *) (f :: k1 -> *) (g :: * -> k1) b. (Traversable t, Applicative (Compose f g)) => t (f (g b)) -> f (g (t b))
00:52:23 <c_wraith> that one looks right
00:53:23 <monochrom> Unpopular opinion: They all do different things and it is unclear which one is wanted. Type-driven programming is a lie at this stage.
00:54:32 <[Leary]> Oh, I didn't get that quite right. Shouldda tested. <.<
00:54:43 <c_wraith> I mean, we were initially presented with two different types that do very different things
00:54:54 Guest|25 joins (~Guest|25@campus-011-137.ucdavis.edu)
00:54:55 <c_wraith> putting State inside or outside the list is a huge difference
00:55:21 × Guest|25 quits (~Guest|25@campus-011-137.ucdavis.edu) (Client Quit)
01:04:05 × califax quits (~califax@user/califx) (Remote host closed the connection)
01:05:31 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Server closed connection)
01:05:48 califax joins (~califax@user/califx)
01:11:52 × MironZ quits (~MironZ@nat-infra.ehlab.uk) (Server closed connection)
01:12:11 MironZ joins (~MironZ@nat-infra.ehlab.uk)
01:12:37 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:16:37 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 246 seconds)
01:17:03 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
01:23:16 × Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Ping timeout: 258 seconds)
01:23:39 × DemonDerg quits (A_D@libera/staff/dragon) (Quit: ZNC - https://znc.in)
01:23:57 A_Dragon joins (A_D@libera/staff/dragon)
01:24:28 × dtman34 quits (~dtman34@c-76-156-89-180.hsd1.mn.comcast.net) (Ping timeout: 255 seconds)
01:29:13 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
01:30:01 mmhat joins (~mmh@p200300f1c7445e4eee086bfffe095315.dip0.t-ipconnect.de)
01:30:03 × mmhat quits (~mmh@p200300f1c7445e4eee086bfffe095315.dip0.t-ipconnect.de) (Client Quit)
01:33:07 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 260 seconds)
01:44:28 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer)
01:45:14 emmanuelux joins (~emmanuelu@user/emmanuelux)
01:49:52 × misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 246 seconds)
01:50:21 A_Dragon is now known as DemonDerg
01:50:36 × ski quits (~ski@ext-1-042.eduroam.chalmers.se) (Remote host closed the connection)
01:51:24 nate3 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
01:56:07 × nate3 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
01:56:10 × harveypwca quits (~harveypwc@2601:246:c280:7940:585a:99af:3e4c:209b) (Quit: Leaving)
01:57:37 dtman34 joins (~dtman34@c-76-156-89-180.hsd1.mn.comcast.net)
01:57:42 × yoyofreeman quits (~yoyofreem@176.97.76.178) (Read error: Connection reset by peer)
01:58:23 yoyofreeman joins (~yoyofreem@176.97.76.178)
01:59:46 × John_Ivan quits (~John_Ivan@user/john-ivan/x-1515935) (Quit: Disrupting the dragon's slumber one time too often shall eventually bestow upon all an empirical and indiscriminate conflagration that will last for all goddamn eternity.)
02:00:17 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
02:00:41 ski joins (~ski@ext-1-042.eduroam.chalmers.se)
02:01:26 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
02:06:20 lisphacker joins (~lisphacke@82.129.118.246)
02:06:20 × lisphacker quits (~lisphacke@82.129.118.246) (Client Quit)
02:07:06 × mhatta quits (~mhatta@www21123ui.sakura.ne.jp) (Quit: ZNC 1.8.2+deb3.1 - https://znc.in)
02:11:28 × euleritian quits (~euleritia@dynamic-046-114-201-058.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
02:11:45 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
02:13:39 × ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 255 seconds)
02:14:28 ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net)
02:15:11 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
02:16:33 × otto_s quits (~user@p5de2f676.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
02:18:21 otto_s joins (~user@p5b044554.dip0.t-ipconnect.de)
02:19:41 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
02:20:34 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
02:25:51 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 260 seconds)
02:29:43 nate3 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
02:37:29 Sciencentistguy7 joins (~sciencent@hacksoc/ordinary-member)
02:39:50 × Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Ping timeout: 255 seconds)
02:39:50 Sciencentistguy7 is now known as Sciencentistguy
03:03:18 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:03:18 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:03:18 finn_elija is now known as FinnElija
03:18:06 × Umeaboy quits (~Umeaboy@94-255-145-133.cust.bredband2.com) (Quit: Leaving)
03:18:46 × nate3 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
03:21:01 × sympt quits (~sympt@user/sympt) (Server closed connection)
03:21:13 × td_ quits (~td@i5387091C.versanet.de) (Ping timeout: 246 seconds)
03:21:58 sympt joins (~sympt@user/sympt)
03:23:16 td_ joins (~td@i53870938.versanet.de)
03:29:48 × orcus quits (~orcus@mail.brprice.uk) (Server closed connection)
03:30:08 orcus joins (~orcus@mail.brprice.uk)
03:31:40 sdz joins (~sdz@user/sdz)
03:33:59 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 258 seconds)
03:50:20 × [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
04:03:56 × ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 252 seconds)
04:05:42 ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net)
04:12:45 Inst joins (~Inst@120.244.192.250)
04:13:50 × aforemny_ quits (~aforemny@2001:9e8:6cd8:e200:b35d:4788:701d:c1c7) (Ping timeout: 252 seconds)
04:13:56 aforemny joins (~aforemny@i59F516D8.versanet.de)
04:20:37 × xff0x quits (~xff0x@2405:6580:b080:900:fcad:32c3:a424:90e2) (Quit: xff0x)
04:25:18 arahael joins (~arahael@119-18-2-212.771202.syd.nbn.aussiebb.net)
04:29:20 xff0x joins (~xff0x@2405:6580:b080:900:72e:4231:b28b:9e26)
04:36:19 × Luj quits (~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb) (Server closed connection)
04:36:23 Lycurgus joins (~georg@li1192-118.members.linode.com)
04:36:23 × Lycurgus quits (~georg@li1192-118.members.linode.com) (Changing host)
04:36:23 Lycurgus joins (~georg@user/Lycurgus)
04:36:37 Luj joins (~Luj@2a01:e0a:5f9:9681:b46d:d922:28d3:ba58)
04:40:57 × liyang quits (sid322268@id-322268.uxbridge.irccloud.com) (Server closed connection)
04:41:05 liyang joins (sid322268@id-322268.uxbridge.irccloud.com)
04:49:06 × sefidel quits (~sefidel@user/sefidel) (Remote host closed the connection)
04:50:13 × gaze_____ quits (sid387101@id-387101.helmsley.irccloud.com) (Server closed connection)
04:50:31 gaze_____ joins (sid387101@id-387101.helmsley.irccloud.com)
04:52:23 sefidel joins (~sefidel@user/sefidel)
04:55:40 <hololeap> is this a ghc or a Cabal bug?
04:56:40 <hololeap> https://gist.github.com/hololeap/aa0311a200bc6a2f7a009a55eed6ba0e#file-build-log-L315-L317
05:15:57 johnw joins (~johnw@69.62.242.138)
05:18:30 bliminse joins (~bliminse@user/bliminse)
05:21:51 trev joins (~trev@user/trev)
05:26:14 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
05:32:03 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
05:32:33 stiell joins (~stiell@gateway/tor-sasl/stiell)
05:32:41 <sclv> hololeap: looks like the issue is v1-build doesn’t work with internal packages
05:33:15 <hololeap> sclv: thanks! I was thinking the same thing, but what makes you say that?
05:34:16 <sclv> well its a known shortcoming of v1 build and the log looks similar to the times ive seen that problem bite hackage builder
05:35:13 × TheCatCollective quits (NyaaTheKit@user/calculuscat) (Server closed connection)
05:35:26 <hololeap> I was thinking about splitting the internal package out as a separate package downstream
05:36:02 TheCatCollective joins (NyaaTheKit@user/calculuscat)
05:36:46 × leah2 quits (~leah@vuxu.org) (Server closed connection)
05:37:11 leah2 joins (~leah@vuxu.org)
05:37:19 Ou42 joins (~Ou42@2600:381:fee0:1e1:9cad:92a7:4b60:aa08)
05:37:28 <hololeap> (for pandoc)
05:38:24 <hololeap> because we keep hitting this problem with various packages that depend on it, but only like 10% of the time
05:39:27 <hololeap> a build-bot hit it recently: https://bugs.gentoo.org/916785
05:52:38 <Ou42> Hello. I'm attempting to solve Advent-of-Code-2022-Day 13. I'm stuck getting the input data into a recursive data struct. I'd trying to roll my own, any help?
05:53:30 <Ou42> <https://adventofcode.com/2022/day/13>
05:54:56 <Ou42> <https://github.com/Ou42/AoC-2022/blob/ecbdb467001174f46d9c5ab9f1d11295a17865ab/days/13/day-13.hs#L113>
05:55:00 <Ou42> It outputs:
05:56:50 <Ou42> `[[[6,10],4,3,[4]]]` when it should be: `[[[6,10],[4,3,[4]]]]`
06:01:11 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 258 seconds)
06:02:12 × xff0x quits (~xff0x@2405:6580:b080:900:72e:4231:b28b:9e26) (Quit: xff0x)
06:05:57 xff0x joins (~xff0x@2405:6580:b080:900:a560:5a24:e27a:a22e)
06:08:21 <hololeap> Ou42: for any strings like `[1,[2,[3,[4,[5,6,7]]]],8,9]`, you could use `read`
06:09:07 <hololeap> wait no... nvm
06:09:19 <Ou42> hololeap: can you elaborate? AFAIK, `read` is used to convert text to Int.
06:09:52 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
06:10:17 ChaiTRex joins (~ChaiTRex@user/chaitrex)
06:11:59 <hololeap> Tree seems like the most natural representation here
06:12:03 <hololeap> https://hackage.haskell.org/package/containers-0.7/docs/Data-Tree.html
06:12:03 Square joins (~Square@user/square)
06:12:47 <hololeap> except your root would be a Forest instead of a Tree
06:13:38 <Ou42> cool. thanks.
06:13:38 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
06:14:27 <monochrom> PacketVals and PacketLists are already trees and forests, and arguably more accurate than Data.Tree for this.
06:14:43 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit)
06:16:01 <Ou42> I made my own data struct: data PacketVals = Val Int | Nested [PacketVals] deriving Show
06:16:17 <Ou42> and: newtype PacketList = Packet [PacketVals] deriving Show
06:16:35 <monochrom> There is no mistake in designing the type. You actually have to read the parser code. I am concerned that in the "go (']':c:cs) acc" case, there is a "_ -> [Nested acc]" regardless of whether the _ is '[' or a digit, which aligns with where the parser makes the wrong guess.
06:16:41 <Ou42> I will confess I tried to get help from Bing Chat. It failed. Although it's code compiled. Go figure.
06:17:27 <Ou42> I figured that's where the issue is, but can't figure it out.
06:18:17 <monochrom> More generally I am very skeptic that if you don't go at least "String -> (String, [PacketVals])" you can handle CFG nesting at all.
06:18:17 <Ou42> if open sqr bracket '[' then we "descend" right? so it needs to be "Nested", but how to come back up and append if the next char is a ','? that's the reason for the case.
06:18:47 <Ou42> what is CFG?
06:18:51 <[Leary]> The `go ('[':cs)` case is also bad: the `span` will stop prematurely when the list contains a list. I would write a something like a `parsePacket :: StateT String Maybe PacketVals` and recurse on it in the nested case.
06:18:55 <probie> CFG = Context Free Grammar
06:19:14 <monochrom> "what is CFG?" is the appropriate kind of question to ask Bing.
06:19:18 <monochrom> Coding is not.
06:20:07 <Ou42> ha. I did change tack and asked it for tutorials. I don't have GPT, but Bing at least cites its sources.
06:20:19 <monochrom> Along with "write a speech for a popularist politician who plots to be a tyrant".
06:20:49 <Ou42> I'm running for world dictator in 2042. Vote for me.
06:22:01 <Ou42> "String -> (String, [PacketVals])" isn't that rather similar to using an accumulator var?
06:23:51 × paddymahoney quits (~paddymaho@cpe883d24bcf597-cmbc4dfb741f80.cpe.net.cable.rogers.com) (Remote host closed the connection)
06:25:32 <Ou42> ... I'm guessing here, but I'm "losing" the past accumulator, but isn't there a way it is saved on the call stack?
06:26:55 <hololeap> it needs to be referenced to be "saved"
06:27:43 <hololeap> you can pass it as an argument, for instance
06:28:11 <Ou42> so acc ( accumulator ) would need to become ... a stack?
06:28:24 <Ou42> pop the most recent off etc etc
06:28:45 <Ou42> the more I think about this the more i question how it's even compiling
06:30:11 <Ou42> one of Bing's suggestions -- no accumulator, that was my idea -- was to look ahead using span until the first ']'. Again, it compiled and ran, but wrong results.
06:30:31 <Ou42> it took me a while to see that it needs to read ahead to the *matching* closing sqr bracket.
06:32:22 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
06:35:01 <mauke> where "cites its sources" = "adds links to its randomly generated output"
06:35:43 <monochrom> Oh you mean like this? https://www.vex.net/~trebla/humour/lmcify.html
06:35:50 <EvanR> it's funny "saving stuff on the call stack" is sometimes an actual thing, the argument thunks
06:36:54 <EvanR> but I don't know how much explanatory power that has for your problem
06:37:26 <EvanR> haskell rewards you for using equational reasoning most of the time, not implementation details
06:39:15 <hololeap> Ou42: a parsing library such as *pandoc would be useful here
06:39:30 <monochrom> wait, pandoc? parsec?
06:39:32 <hololeap> s/pandoc/parsec
06:39:49 <hololeap> megaparsec, parsec, attoparsec
06:40:16 <mauke> monochrom: re: the _ case, I don't think that should ever happen anyway
06:40:19 <EvanR> parsec is kind of overkill for that AOC problem, it was pretty easy to just use a recursive algorithm
06:40:26 <EvanR> it helps that the input data is well formed
06:40:47 <EvanR> so your equations are much simplified at the return type is not a Maybe
06:42:17 <monochrom> Sometimes I use ReadP (or even Read and handwrite [ (x5, cs5) | (x1, cs1) <- foo cs, (x2, cs2) <- bar x1 cs1, ... ])
06:42:20 <hololeap> I don't think it's overkill. why implement the details yourself when parsec is such a light dep
06:43:26 <hololeap> I guess for a beginner parsec might be more confusing than just implementing it yourself
06:43:27 <Ou42> baby steps?
06:43:43 × Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving)
06:43:56 <Ou42> I'm not arguing against your suggestions ( parsect, readP ( used it once! ) ) but I just want to level up w/ recursion first.
06:44:12 <hololeap> fair enough
06:44:45 <monochrom> CFG parsing is confusing no matter how you dice it. Because on top of recursion you are reverse-engineering another recursion.
06:45:06 gmg joins (~user@user/gehmehgeh)
06:45:06 <mauke> so I tried a few simple examples and it keeps throwing errors at me (non-exhaustive patterns)
06:45:44 <mauke> like `go "1" []` or `go "[1,2]" []`
06:45:45 paddymahoney joins (~paddymaho@cpe883d24bcf597-cmbc4dfb741f80.cpe.net.cable.rogers.com)
06:47:00 <Ou42> mauke: ty for trying...
06:47:06 <Ou42> i assume it's not well formed.
06:47:17 <Ou42> all Packets are surrounded by [ ] 's
06:48:04 <mauke> [1,2] is surrounded by [ ]
06:48:04 <Ou42> so at the very least, "[]" is required... `go [1,2]` should have worked... how about the go func in parse3?
06:48:29 <Ou42> many changes... hard to rem where I'm at. sorry.
06:49:23 <Ou42> but it compiled and ran for all 8 examples and even ran on the 150 in the actual (personalized) puzzle input... but that's not parse3... but a predecesor that used span incorrectly.
06:49:42 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
06:50:11 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
06:50:12 <mauke> I don't see how to get anything working with a type like String -> [PacketVals] -> [PacketVals]
06:50:15 <hololeap> which `go` are we talking about? there's a few
06:52:35 <mauke> the one in bingParse3 looks like it has issues with ']' handling; the one in parseP3 looks identical to parseP4 at first glance
06:53:25 <Ou42> it is, wanted a "do not touch" version so as to have something to ask w/o it changing. already forgot and it's not even been an hour.
06:53:34 × zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection)
06:54:06 <mauke> I think the crucial point is that you need to know where (in the input string) a recursive parse stopped reading so you can continue from that point
06:54:50 <mauke> in my very first parser in C, I came up with the idea of using a char ** (pointer-to-pointer, so the recursive calls could modify my string pointer)
06:55:07 <mauke> the Haskell equivalent is to return a (String, Result) tuple
06:55:21 <mauke> where the first component represents the remaining input
06:55:38 zaquest joins (~notzaques@5.130.79.72)
06:55:45 × Inst quits (~Inst@120.244.192.250) (Read error: Connection reset by peer)
06:56:20 × paddymahoney quits (~paddymaho@cpe883d24bcf597-cmbc4dfb741f80.cpe.net.cable.rogers.com) (Remote host closed the connection)
06:57:33 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
06:58:17 gmg joins (~user@user/gehmehgeh)
06:58:26 paddymahoney joins (~paddymaho@cpe883d24bcf597-cmbc4dfb741f80.cpe.net.cable.rogers.com)
06:58:38 <mauke> parseVal :: String -> (String, PacketVal); parseVal (c : cs) | isDigit c = let (num, rest) = span isDigit cs in (rest, Val (read (c : num)))
06:58:51 × gdown quits (~gavin@h69-11-149-109.kndrid.broadband.dynamic.tds.net) (Ping timeout: 260 seconds)
06:58:53 × bw___ quits (sid2730@id-2730.ilkley.irccloud.com) (Server closed connection)
06:59:20 bw___ joins (sid2730@id-2730.ilkley.irccloud.com)
07:02:49 <Ou42> mauke: tyvm! I need to chew on that.
07:03:17 <mauke> parseVal ('[' : cs) = go cs [] where go (']' : rest) acc = (rest, PacketVals acc); go cs acc = let (rest, val) = parseVal cs in (dropWhile (== ',') rest, acc ++ [val])
07:03:18 <Ou42> there's something fishy about recursion -- granted it was evil until a recently -- so many it's just messing with me. ;o)
07:03:20 <mauke> or something like that
07:04:10 <mauke> disclaimer: zero error handling; could be more efficient by building the accumulator with : and reversing at the end
07:05:25 × andrewboltachev quits (~andrey@178.141.201.173) (Quit: Leaving.)
07:05:41 <mauke> and it silently accepts trailing commas anywhere within a list, like perl :-)
07:06:34 <mauke> oh, and it's broken: the last clause should call 'go' again, not return a tuple
07:09:09 misterfish joins (~misterfis@84-53-85-146.bbserv.nl)
07:10:43 × yoyofreeman quits (~yoyofreem@176.97.76.178) (Remote host closed the connection)
07:12:24 yoyofreeman joins (~yoyofreem@176.97.76.178)
07:12:27 <Ou42> I keep trying things, it takes longer than expected then I get the "oh yeah, that doesn't work" experience.
07:12:44 <Ou42> if it wasn't for short term memory loss, I'd be having a rather bad day.
07:13:02 <mauke> y-yay?
07:19:07 Inst joins (~Inst@120.244.192.250)
07:21:13 michalz joins (~michalz@185.246.207.221)
07:23:27 <Ou42> wild ride. I need more time. thanks for the help!
07:23:39 <Ou42> gotta call it a night.
07:23:50 × Ou42 quits (~Ou42@2600:381:fee0:1e1:9cad:92a7:4b60:aa08) (Quit: Rick Rolled 1 too many times)
07:26:14 × michalz quits (~michalz@185.246.207.221) (Remote host closed the connection)
07:30:35 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 260 seconds)
07:41:47 × qqq quits (~qqq@92.43.167.61) (Remote host closed the connection)
07:47:31 <phma> Suppose I have four threads. I have a list which is computed by taking [0..] and mapping a really complicated function over it.
07:49:07 <phma> Is there a way to compute f(0) in thread 0, f(1) in thread 1, f(2) in thread 2, f(3) in thread 3, f(4) in thread 0 but not overlapping with f(0), and so on?
07:49:59 <phma> I tried chunking in Control.Parallel.Strategies but ended up getting the program killed because it used too much memory.
07:55:59 michalz joins (~michalz@185.246.207.203)
07:58:14 × sdz quits (~sdz@user/sdz) (Ping timeout: 252 seconds)
07:58:41 × yoyofreeman quits (~yoyofreem@176.97.76.178) (Ping timeout: 252 seconds)
07:58:56 sdz joins (~sdz@user/sdz)
07:59:42 × catilina quits (~user@user/catilina) (Ping timeout: 255 seconds)
08:00:10 jmdaemon joins (~jmdaemon@user/jmdaemon)
08:09:17 Jackneill joins (~Jackneill@20014C4E1E058A00F5A2357F979DDCC7.dsl.pool.telekom.hu)
08:11:13 notzmv joins (~zmv@user/notzmv)
08:17:48 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
08:29:21 hgolden joins (~hgolden@2603-8000-9d00-3ed1-dd4f-298a-9c49-a0ed.res6.spectrum.com)
08:44:15 × econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
08:44:25 qqq joins (~qqq@92.43.167.61)
08:45:25 × it__ quits (~quassel@v2202212189510211193.supersrv.de) (Server closed connection)
08:45:34 it_ joins (~quassel@v2202212189510211193.supersrv.de)
08:51:37 ubert joins (~Thunderbi@178.165.170.224.wireless.dyn.drei.com)
08:58:43 wootehfoot joins (~wootehfoo@user/wootehfoot)
08:58:52 × chiselfuse quits (~chiselfus@user/chiselfuse) (Ping timeout: 264 seconds)
09:06:25 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
09:06:49 new-account-2 joins (~new-accou@user/new-account-2)
09:07:41 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
09:08:54 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
09:09:57 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
09:14:26 × tzh quits (~tzh@c-71-193-181-0.hsd1.or.comcast.net) (Quit: zzz)
09:14:37 mechap joins (~mechap@user/mechap)
09:15:28 chiselfuse joins (~chiselfus@user/chiselfuse)
09:20:11 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
09:20:41 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
09:21:35 idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
09:22:15 × dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 240 seconds)
09:24:30 × steew quits (~steew@user/steew) (Server closed connection)
09:24:52 × ubert quits (~Thunderbi@178.165.170.224.wireless.dyn.drei.com) (Ping timeout: 246 seconds)
09:24:58 steew joins (~steew@user/steew)
09:34:52 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 264 seconds)
09:35:23 × Inst quits (~Inst@120.244.192.250) (Remote host closed the connection)
09:35:43 Inst joins (~Inst@120.244.192.250)
09:36:13 jpds joins (~jpds@gateway/tor-sasl/jpds)
09:44:48 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:d0e6:54a3:ea5c:7672) (Remote host closed the connection)
09:45:03 × acidjnk quits (~acidjnk@p200300d6e72b9351ac6f5a8b7958b98c.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
09:45:23 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
09:49:07 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
09:49:43 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds)
09:51:15 × tcard quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Remote host closed the connection)
09:51:27 tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
09:59:47 chiselfu1e joins (~chiselfus@user/chiselfuse)
10:00:15 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
10:00:15 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
10:00:39 ChaiTRex joins (~ChaiTRex@user/chaitrex)
10:00:46 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
10:03:04 × chiselfuse quits (~chiselfus@user/chiselfuse) (Ping timeout: 264 seconds)
10:04:35 × Square quits (~Square@user/square) (Ping timeout: 260 seconds)
10:11:07 × Taneb quits (~Taneb@runciman.hacksoc.org) (Server closed connection)
10:11:22 Taneb joins (~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0)
10:12:39 × sdz quits (~sdz@user/sdz) (Ping timeout: 240 seconds)
10:13:40 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
10:13:50 sdz joins (~sdz@user/sdz)
10:18:32 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:7011:9d1b:12e0:79a)
10:21:13 sawilagar joins (~sawilagar@user/sawilagar)
10:30:47 Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
10:36:17 <Axman6> phma: You should read PCPH
10:36:23 <Axman6> @whre pcph
10:36:23 <lambdabot> "Parallel and Concurrent Programming in Haskell" by Simon Marlow in 2013 at <http://community.haskell.org/~simonmar/pcph/>,<http://chimera.labs.oreilly.com/books/1230000000929/>,<https://web.archive.
10:36:23 <lambdabot> org/web/20180117194842/http://chimera.labs.oreilly.com/books/1230000000929>,<https://www.oreilly.com/library/view/parallel-and-concurrent/9781449335939/>
10:51:59 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
10:52:20 jpds joins (~jpds@gateway/tor-sasl/jpds)
11:00:00 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
11:01:05 × Me-me quits (~me-me@2602:ff16:3:0:1:dc:beef:d00d) (Changing host)
11:01:05 Me-me joins (~me-me@user/me-me)
11:12:12 Martin joins (~Martin@ip-134-003-176-135.um41.pools.vodafone-ip.de)
11:13:51 Martin2 joins (~Martin2@ip-134-003-176-135.um41.pools.vodafone-ip.de)
11:14:23 × Martin quits (~Martin@ip-134-003-176-135.um41.pools.vodafone-ip.de) (Client Quit)
11:14:37 CO2 joins (CO2@gateway/vpn/protonvpn/co2)
11:18:10 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
11:30:51 × mechap quits (~mechap@user/mechap) (Ping timeout: 258 seconds)
11:34:19 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
11:35:31 × ham quits (~ham@user/ham) (Server closed connection)
11:35:56 ham joins (~ham@user/ham)
11:44:57 × sawilagar quits (~sawilagar@user/sawilagar) (Remote host closed the connection)
11:45:18 sawilagar joins (~sawilagar@user/sawilagar)
11:45:58 <srk> is -threaded a default now?
11:47:46 <Hecate> srk: I don't believe so
11:48:20 <Inst> add a ghc-options: field in your cabal file / script, I'm not sure what the equivalent workflow is for stack.
11:48:42 <srk> hmm. interesting.. something weird changed
11:49:05 <srk> I use linux-namespaces in one testsuite and it cannot call unshare in threaded runtime
11:49:12 <srk> after clone
11:50:35 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
11:50:52 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
11:51:43 <srk> ghc_ticker? oO
11:52:07 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
12:00:13 <srk> oh yes, that's new.. +RTS -V0 -RTS disables it (Master tick interval in seconds), sounds profiling related
12:01:01 _73 joins (~Unknown_7@pool-173-76-100-193.bstnma.fios.verizon.net)
12:02:11 × arahael quits (~arahael@119-18-2-212.771202.syd.nbn.aussiebb.net) (Ping timeout: 260 seconds)
12:07:16 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:7011:9d1b:12e0:79a) (Ping timeout: 258 seconds)
12:08:58 glguy_ joins (g@libera/staff/glguy)
12:09:09 g_ joins (g@libera/staff/glguy)
12:09:47 mechap joins (~mechap@user/mechap)
12:09:53 × g quits (g@libera/staff/glguy) (Read error: Connection reset by peer)
12:09:53 g_ is now known as g
12:10:16 × glguy quits (g@libera/staff/glguy) (Read error: Connection reset by peer)
12:11:17 × PHO`_ quits (~pho@akari.cielonegro.org) (Server closed connection)
12:11:28 PHO`_ joins (~pho@akari.cielonegro.org)
12:12:33 <_73> hey. I'm trying to use JuicyPixels in my stack project. I specified the dependency in my stack.yaml file, and I am able to "stack build" the project successfully. However, if I try to import a module from JuicyPixels (such as Picture.Codec), then stack cannot find the module. Here is the output of an unsuccessful run of "stack build --verbose" https://termbin.com/gs47
12:12:46 <_73> Any ideas what I am doing wrong?
12:15:38 <srk> _73: try adding JuicyPixels as build-depends for you library in cabal file
12:17:57 × Martin2 quits (~Martin2@ip-134-003-176-135.um41.pools.vodafone-ip.de) (Quit: Connection closed)
12:18:41 <_73> srk: I get the same error when I do this and redo the "stack build" command.
12:22:01 dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
12:23:39 <srk> _73: maybe it's coming from executable not from library
12:24:06 <srk> exe:hsten-exe suggests so
12:27:43 tremon joins (~tremon@83.80.159.219)
12:28:29 <_73> Im a bit confused. Doesn't stack produce the .cabal file? After I specify the JuicyPixels dep in the .cabal file (for both the library and executable), I am again left with the original .cabal file again.
12:30:12 <srk> I don't know tbh, why use stack? :) is there hpack and package.yaml in play?
12:32:13 __monty__ joins (~toonn@user/toonn)
12:33:00 andrewboltachev joins (~andrey@178.141.201.173)
12:33:19 × Batzy quits (~quassel@user/batzy) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
12:38:22 × peutri quits (~peutri@bobo.desast.re) (Server closed connection)
12:38:31 peutri joins (~peutri@bobo.desast.re)
12:39:43 <_73> specifying the dep in the package.yaml fixed the problem
12:43:08 Square joins (~Square@user/square)
12:43:41 × dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 240 seconds)
12:45:46 andrewboltachev parts (~andrey@178.141.201.173) ()
12:46:25 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
12:47:03 jpds joins (~jpds@gateway/tor-sasl/jpds)
12:47:11 <tomsmeding> _73: the *.cabal file is the actual specification for dependencies etc.; when using stack, stack.yaml specifies what ghc version to use and how to configure the build (e.g. where to get those dependencies _from_). With stack you can optionally use a package.yaml, from which stack generates the *.cabal file
12:47:36 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
12:48:03 jpds joins (~jpds@gateway/tor-sasl/jpds)
12:48:28 <tomsmeding> with cabal (instead of stack), there's no package.yaml (just write the *.cabal file manually), and cabal.project replaces stack.yaml
12:52:07 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
12:52:32 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
12:52:44 <srk> why is stack still a thing..
12:52:47 × AlexZenon quits (~alzenon@94.233.241.129) (Quit: ;-)
12:53:39 <tomsmeding> srk: certain people like the reprodicibility
12:53:46 <tomsmeding> *-du-
12:54:15 <tomsmeding> same stack.yaml means same resolver means same packages means probably same build result
12:54:15 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
12:54:34 <tomsmeding> I also prefer cabal, don't get me wrong
12:55:00 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
12:57:02 × AlexNoo quits (~AlexNoo@94.233.241.129) (Quit: Leaving)
12:57:48 <srk> tomsmeding: well you can set index-state nowadays and use nix for true reproducibility :)
12:57:52 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 258 seconds)
12:58:36 <tomsmeding> index-state means something else, right? A freeze file would be more in line with what a stackage snapshot gives you
12:58:54 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
12:59:00 <srk> indeed!
12:59:02 euleritian joins (~euleritia@dynamic-046-114-201-248.46.114.pool.telefonica.de)
12:59:05 <tomsmeding> And I guess it's true that the argument is mostly invalidated by the existence of freeze files
12:59:19 × euleritian quits (~euleritia@dynamic-046-114-201-248.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
12:59:37 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
13:00:55 <Rembane> Can't you set the exact version numbers you want for all dependencies in your cabal file?
13:01:04 <Rembane> ...to get reproducible builds?
13:01:04 <tomsmeding> that's hard to upgrade
13:01:22 <tomsmeding> stackage snapshot (and, indeed, a freeze file) is not -- just increment the version number
13:01:36 <Rembane> Indeed. I've found some program to help with that, but after using it I promptly forgot the name of it.
13:01:37 <srk> Rembane: but you do not list indirect dependencies there, freeze has all of them
13:01:47 <Rembane> srk: That's a very good point.
13:01:50 <tomsmeding> Rembane: 'cabal outdated'?
13:02:03 <Rembane> tomsmeding: That sounds familiar.
13:02:12 <tomsmeding> it at least does something related
13:02:16 <Rembane> Yes.
13:03:21 <srk> til! pretty cool.. I was using https://packdeps.haskellers.com/feed?needle=GPipe until now :D
13:03:34 _73 parts (~Unknown_7@pool-173-76-100-193.bstnma.fios.verizon.net) ()
13:03:51 Maxdamantus joins (~Maxdamant@user/maxdamantus)
13:08:36 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
13:09:03 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
13:10:12 takuan joins (~takuan@178-116-218-225.access.telenet.be)
13:21:01 AlexNoo joins (~AlexNoo@94.233.241.129)
13:23:59 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
13:24:15 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
13:26:18 AlexZenon joins (~alzenon@94.233.241.129)
13:29:14 mmhat joins (~mmh@p200300f1c7445e4eee086bfffe095315.dip0.t-ipconnect.de)
13:29:36 × mmhat quits (~mmh@p200300f1c7445e4eee086bfffe095315.dip0.t-ipconnect.de) (Client Quit)
13:34:12 × chiselfu1e quits (~chiselfus@user/chiselfuse) (Quit: leaving)
13:34:51 chiselfuse joins (~chiselfus@user/chiselfuse)
13:35:03 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 240 seconds)
13:37:26 × chiselfuse quits (~chiselfus@user/chiselfuse) (Remote host closed the connection)
13:38:15 <ph88> Could someone help me on discord with a call? I have a few questions about State, fold, intersperse combined
13:39:53 chiselfuse joins (~chiselfus@user/chiselfuse)
13:40:49 <ph88> or matrix perhaps, does matrix do calls ?
13:44:11 × haveo quits (~weechat@pacamara.iuwt.fr) (Server closed connection)
13:44:35 haveo joins (~weechat@pacamara.iuwt.fr)
13:49:16 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 264 seconds)
13:52:46 × swistak quits (~swistak@185.21.216.141) (Server closed connection)
13:53:06 swistak joins (~swistak@185.21.216.141)
13:57:26 × Adran quits (~adran@botters/adran) (Server closed connection)
13:57:39 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
14:00:32 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
14:01:11 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
14:03:38 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
14:04:32 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:7011:9d1b:12e0:79a)
14:04:37 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
14:09:09 danza joins (~francesco@151.57.226.145)
14:10:14 <Inst> vty vs brick: i've set a goal for myself of learning either one this week
14:10:25 <Inst> is there a reason i should prefer either? Or are they equally valid?
14:11:16 <EvanR> what's the objective application
14:11:43 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
14:12:29 euleritian joins (~euleritia@77.22.252.56)
14:12:40 × CO2 quits (CO2@gateway/vpn/protonvpn/co2) (Quit: WeeChat 4.1.1)
14:13:53 <Inst> just me messing around, and trying to avoid using naive console UI in the future
14:14:32 <Inst> something to default to in lieu of putStrLn someCrapIveSpecifiedElsewhere and thisIsHorriblyNaiveAndIsDumb <- getLine
14:14:34 <EvanR> I find that a concrete objective makes it easier to learn the tools
14:14:37 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
14:15:04 <Inst> i'd go port tower of hanoi over
14:15:10 <Inst> or 3d maze, or something like that
14:15:23 <EvanR> and in this case it might make the choice of library more meaningful
14:15:27 × euleritian quits (~euleritia@77.22.252.56) (Read error: Connection reset by peer)
14:15:28 <Inst> but i have something to do this week, so, dumbest possible toy example: "What is your name?" "Hello user"
14:15:40 <Inst> in this case, I get the feeling right now vty is more suitable
14:16:04 <Inst> I complained re monomer that it was awfully unintuitive to learn
14:16:10 euleritian joins (~euleritia@77.22.252.56)
14:16:18 <Inst> and it's an "easy to use library, but only for experienced Haskellers"
14:16:29 <Inst> looking at how Brick is set up, I can understand why it'd be considered easy to use
14:16:59 <EvanR> if something is "easy to learn" that probably means you didn't learn very much and had already known the better part of the subject
14:19:34 × nurupo quits (~nurupo.ga@user/nurupo) (Server closed connection)
14:19:48 nurupo joins (~nurupo.ga@user/nurupo)
14:19:58 <Inst> when it comes to libraries, is that a good thing, though?
14:20:23 <EvanR> haskell was easy to learn for me because prior fp education, I'm told haskell is hard to learn and esoteric by other people
14:20:38 <EvanR> how can they both be true?!
14:21:04 <EvanR> because it's not an intrinsic
14:21:28 <Inst> Where did you come in from, anyways?
14:22:06 <Unicorn_Princess> those people are wrong. i had no prior fp background, and haskell was easy to learn for me too. at least the basics, before you get into more esoteric, complex monad trickery, or dealing with nasty implementation issues like memory leaks or lazyness edge cases
14:22:26 <Inst> I got into Haskell because it seemed to be easier to learn than C++
14:22:51 <Inst> was supposed to take a 6 month detour, then go try to master C++, but instead, it's been 2 years, here we are
14:22:58 <srk> Inst: brick is awesome, definitely worth learning
14:23:04 <Unicorn_Princess> cuz the essence of haskell _is_ simple. of course you can build complex stuff on top, like pro-bifunctor affine traversals or w/e is the current hot thing in CT land, but at it's base it's very elegant and intuitive
14:23:11 <srk> brick for UIs, vty for lower level things
14:23:13 <Unicorn_Princess> and that's coming from c++ hellscape
14:23:52 <EvanR> your brain was already on overdrive from learning C++, so haskell was relatively easy xD
14:24:01 <srk> :D
14:24:10 <Unicorn_Princess> yeah could be :S
14:25:01 <EvanR> I get "haskell makes no sense whatsoever" from web dynamic languages people
14:25:14 <Inst> It's more interesting WHY it makes no sense to them
14:25:19 <Unicorn_Princess> i've said it before and i'll say it again
14:25:21 <Unicorn_Princess> > web
14:25:22 <lambdabot> error: Variable not in scope: web
14:25:23 <Unicorn_Princess> > people
14:25:24 <lambdabot> error: Variable not in scope: people
14:25:26 <Unicorn_Princess> pick _one_
14:25:35 <Inst> i guess at least out of purely anthropological interest
14:25:43 <Unicorn_Princess> *zoological
14:25:52 <Rembane> EvanR: Maybe they come frustrated when the type checker becomes confused at them?
14:25:55 <EvanR> because PHP was invented, haskell was discovered
14:26:46 <EvanR> haskell doesn't automatically fit into human affordances xD
14:28:05 × lg188 quits (~lg188@82.18.98.230) (Ping timeout: 240 seconds)
14:29:15 <Inst> vty ironically makes more sense to me than brick at this point
14:29:21 <EvanR> (that was a variation on an SPJ joke, haskell was in fact also invented for humans by humans)
14:30:07 <Inst> which joke was that? ?:(
14:30:24 <EvanR> haskell was discovered, not invented. *I think you can tell*
14:31:58 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
14:32:18 <Inst> https://corecursive.com/021-gods-programming-language-with-philip-wadler/
14:32:20 <Inst> this?
14:32:29 jpds joins (~jpds@gateway/tor-sasl/jpds)
14:32:57 <EvanR> that looks apropos to the sentiment
14:35:17 Adran joins (~adran@botters/adran)
14:36:47 × euleritian quits (~euleritia@77.22.252.56) (Read error: Connection reset by peer)
14:36:53 <Inst> also, speaking of Wadler, wow
14:36:55 <Inst> https://www.amazon.in/Java-Generics-Collections-Fundamentals-Recommended/dp/1098136721
14:37:37 euleritian joins (~euleritia@77.22.252.56)
14:38:29 <Inst> by the way
14:38:34 <Inst> https://hackage.haskell.org/package/vty-6.0/docs/Graphics-Vty.html#t:Vty
14:38:47 <Inst> what is this design? A record of IO functions
14:38:57 <Inst> is it OOP?
14:39:50 <EvanR> no in the sense of cardelli theory of objects because those functions don't take a self parameter
14:39:53 <EvanR> not*
14:40:26 <EvanR> but record of functions as a way to allow varying behavior is also common in C
14:41:33 <Inst> record of functions is really weird to me, i've also seen something like that in the Cabal custom build system
14:41:52 <EvanR> it's like a more flexible but more explicit type class
14:42:12 <EvanR> manual dictionary passing
14:43:07 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 264 seconds)
14:43:27 <Inst> i mean implicitly you could do self, though
14:43:28 <EvanR> UI libraries that consist of a driver loop which executes your "callbacks" is pretty common
14:43:46 <Inst> since when you're defining a datatype like that, you can use where etc to extract data recursively from the host object
14:43:52 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 264 seconds)
14:44:04 <Inst> thanks <EvanR3
14:44:15 <EvanR> you can, then it would be OOP in the sense of cardelli
14:44:24 <Inst> well, not defining a datatype like that, defining a value of a datatype like that
14:46:34 <EvanR> which leads to the idea of corecursive codata which is potentially infinite and usefully productive
14:47:36 <EvanR> a stream allows you to continually ask for the next item and rest of stream, an object allows you to continually ask any question that's part of its class, which might return an updated object
14:48:10 notzmv joins (~zmv@user/notzmv)
14:48:23 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
14:50:41 chomwitt joins (~chomwitt@2a02:587:7a12:2d00:1ac0:4dff:fedb:a3f1)
14:52:07 × Fangs quits (sid141280@id-141280.hampstead.irccloud.com) (Server closed connection)
14:52:19 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
14:52:21 Fangs joins (sid141280@id-141280.hampstead.irccloud.com)
14:53:03 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 240 seconds)
14:55:06 notzmv joins (~zmv@user/notzmv)
14:57:53 <Inst> at least this was less painful than not figuring out that aeson was using typeclass based interfaces for its decode function for the longest time
14:59:54 <EvanR> another library with a similar interface is gloss. But they take the fields of the record of functions as separate arguments instead of grouped into a record
15:00:38 <EvanR> same concept, driver loop calls your callbacks
15:02:26 <Inst> it just feels smelly, like, i can theoretically stuff anything i want into the record type as long as the types match
15:02:42 acidjnk joins (~acidjnk@p200300d6e72b933884d06dff6b3ba200.dip0.t-ipconnect.de)
15:02:54 <Inst> with IO I could hide something that starts a keylogger, for example
15:03:25 <Inst> and as a question of IO isolation, is the record in IO or is it out of IO?
15:04:16 <EvanR> gloss has a pure version as well as IO versions
15:04:37 <EvanR> if you don't use the IO version your program can do nothing but show graphics and get user input
15:04:53 <EvanR> the record is just a way of grouping the data
15:06:05 <EvanR> maybe vty has the same thing, or maybe the designer thought that wouldn't be very useful
15:07:54 × new-account-2 quits (~new-accou@user/new-account-2) (Quit: Client closed)
15:07:54 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:08:36 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit)
15:12:26 × idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.1.1)
15:13:19 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:20:50 Lycurgus joins (~georg@li1192-118.members.linode.com)
15:20:51 × Lycurgus quits (~georg@li1192-118.members.linode.com) (Changing host)
15:20:51 Lycurgus joins (~georg@user/Lycurgus)
15:22:15 CO2 joins (CO2@gateway/vpn/protonvpn/co2)
15:28:52 × actioninja quits (~actioninj@user/actioninja) (Server closed connection)
15:29:16 actioninja joins (~actioninj@user/actioninja)
15:30:10 × Nixkernal_ quits (~Nixkernal@115.16.194.178.dynamic.wline.res.cust.swisscom.ch) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
15:33:16 Tlsx joins (~rscastilh@187.40.125.21)
15:36:07 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
15:37:51 × Tlsx quits (~rscastilh@187.40.125.21) (Ping timeout: 240 seconds)
15:39:21 Nixkernal joins (~Nixkernal@115.16.194.178.dynamic.wline.res.cust.swisscom.ch)
15:40:10 hc joins (~hc@bsd.pm)
15:40:12 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
15:43:20 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
15:43:32 pavonia joins (~user@user/siracusa)
15:43:47 ChaiTRex joins (~ChaiTRex@user/chaitrex)
15:45:21 <hc> Hello, just for fun I'm writing a library where you can write something like: a = (Z 5) :: Z 23 Now a has the value 5 in the ring Z_23.
15:46:08 <hc> Problem is, I need to declare the type in addition to calling the data constructor. My question is, could I write a function mkNum a b that takes as a the 23 of Z_23 and as b the actual numer like 5, so I could write a = mkZ 23 5 isntead of a=(Z 5) :: Z23 ?
15:49:09 <EvanR> MkZ @23 5 ?
15:49:17 <EvanR> visible type application
15:49:18 <probie> hc: You can't. What you can probably do however is `Z @23 5`
15:49:59 <hc> Ah, that's the new syntax I just learnt about in one of the well-typed youtube haskell videos
15:50:02 <hc> Thanks, will try
15:50:29 <APic> lol
15:50:59 × Nixkernal quits (~Nixkernal@115.16.194.178.dynamic.wline.res.cust.swisscom.ch) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
15:51:19 <hc> Nice, that works!
15:52:45 Tlsx joins (~rscastilh@187.40.125.21)
15:56:54 <Inst> i love this guy on FP Discord
15:57:07 <Inst> he got into a fight after someone trashed him for not understanding the Haskell import system
15:57:59 <Inst> took him aside, put in some comfort, then he showed me some code he was debugging, which was wrong because he didn't understand how (>>=) worked, he had a really great time realizing how to understand Haskell's types
15:58:18 <Inst> then we discussed how foo =<< bar is better than foo(bar())
15:59:13 <Inst> with him showing an example of how method chaining in Rust created a very subtle bug that would have been avoided with explicit bind operators in Haskell
16:00:17 hc_ joins (~hc@ip-185-104-142-44.hosts-fiberone.de)
16:00:33 × hc quits (~hc@bsd.pm) (Quit: leaving)
16:00:44 hc_ is now known as hc
16:01:08 <EvanR> for maximum diversity use an even mix of foo =<< bar and bar >>= foo
16:01:28 <Inst> sarcasm noted :(
16:01:38 <EvanR> no
16:01:44 <Inst> you literally can't do that iirc because =<< and >>= have different fixities
16:02:08 <EvanR> yes not in the same chain
16:02:13 <duncan> how exactly do you take someone aside on an online chatroom?
16:02:23 <EvanR> "PM me" lol
16:02:36 <EvanR> (always a bad sign)
16:03:36 <duncan> uh-oh
16:03:39 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
16:04:24 <Inst> i mean =<< and >>= express different ideas
16:04:32 <Inst> imo >>= expresses chaining of monadic functions
16:04:36 <Inst> and an order of effects
16:04:52 <Inst> =<< seems to me, denote a function call
16:05:15 <Inst> or function application, the code does the same thing but the concept being expressed is different
16:05:19 <EvanR> they do the same thing
16:05:34 <EvanR> it's a stylistic choice
16:08:22 <EvanR> and foo |> bar |> baz in elixir is still just reverse function application
16:08:32 <probie> Remember to mix in `>=>` and `<=<`
16:09:19 × _0xa quits (~user@user/0xa/x-3134607) (Server closed connection)
16:09:23 <Inst> that is really cute
16:09:30 _0xa joins (~user@95.179.128.10)
16:09:30 × _0xa quits (~user@95.179.128.10) (Changing host)
16:09:30 _0xa joins (~user@user/0xa/x-3134607)
16:09:38 <Inst> >=> is infixr like =<<, while <=< is infixl like >>=
16:10:38 mokee joins (~mokee@37.228.215.150)
16:11:35 <Inst> and they can't be used together, even though the fixities match
16:12:40 <EvanR> :t m >>= f >=> g
16:12:41 <lambdabot> error:
16:12:41 <lambdabot> Precedence parsing error
16:12:41 <lambdabot> cannot mix ‘>>=’ [infixl 1] and ‘>=>’ [infixr 1] in the same infix expression
16:12:43 × Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving)
16:12:49 <EvanR> :t m >>= f <=< g
16:12:50 <lambdabot> error:
16:12:50 <lambdabot> Precedence parsing error
16:12:50 <lambdabot> cannot mix ‘>>=’ [infixl 1] and ‘<=<’ [infixr 1] in the same infix expression
16:13:08 <EvanR> what you talking about
16:13:12 <Inst> wait what?
16:14:08 <Inst> huh so both (>=>) and (<=<) are infixr
16:14:19 <int-e> ...no?
16:14:27 <int-e> oh
16:14:29 <Inst> :i (>=>)
16:14:32 <Inst> :i (<=<)
16:14:39 <int-e> sorry, I misread
16:14:50 <int-e> I thought one of those was >>=
16:15:31 <Inst> so you can mix both kinds of kleisli arrows together, weird
16:16:47 <EvanR> good
16:17:00 <EvanR> same for composition and reverse composition
16:17:29 <Inst> what is reverse composition?
16:17:32 <Inst> do you mean >>>?
16:17:34 <int-e> You can't mix either of them with >>= and that's probably for the better.
16:17:39 <EvanR> >>> and <<< sure
16:18:19 <EvanR> :t flip (.)
16:18:20 <lambdabot> (a -> b) -> (b -> c) -> a -> c
16:24:46 tango88 joins (~tango88@194.127.199.82)
16:25:04 <hc> Another question, just for fun I'm implementing the C ternary operator ? in haskell by doing: (!) a b = (a, b) and (?) a (b, c) = if a then b else c
16:25:18 <hc> Is there anyway to hide the original : operator so I can use it instead?
16:25:55 <ncf> have you considered learning agda instead
16:26:03 <hc> haha :)
16:26:06 <ncf> hm i guess you still couldn't use :
16:26:55 <duncan> aw yea R now has pipes like |> natively, they're great
16:27:22 dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
16:27:40 <EvanR> :t f >>> g <<< h -- o_O
16:27:41 <lambdabot> forall k (cat :: k -> k -> *) (a :: k) (b1 :: k) (b2 :: k) (c :: k). (Category cat, FromExpr (cat a b1), FromExpr (cat b2 c), FromExpr (cat b1 b2)) => cat a c
16:27:49 <EvanR> :t f <<< g >>> h --- o_O
16:27:50 <lambdabot> forall k (cat :: k -> k -> *) (b1 :: k) (c :: k) (a :: k) (b2 :: k). (Category cat, FromExpr (cat b1 c), FromExpr (cat a b2), FromExpr (cat b2 b1)) => cat a c
16:27:58 <EvanR> looks like you can mix them after all
16:28:08 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Remote host closed the connection)
16:28:28 <ncf> gross
16:28:50 <EvanR> infixr...
16:29:16 <hc> So I guess (:) is more hardcoded into haskell than (+), (*), etc.?
16:29:26 <EvanR> yes
16:29:30 <hc> Fascinating
16:30:18 <Inst> I guess it's considered the same as [] syntax?
16:30:46 <tomsmeding> hc: a clever alternative syntax is given at https://wiki.haskell.org/If-then-else#Use_cases
16:31:15 <tomsmeding> (? $ instead of ? :)
16:31:25 mastarija joins (~mastarija@42-42.dsl.iskon.hr)
16:31:36 <tomsmeding> Inst: yeah, (:) is built-in syntax just like []
16:32:12 <tomsmeding> https://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-340003.7
16:32:25 × Ram-Z quits (Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df) (Server closed connection)
16:32:50 Ram-Z joins (Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df)
16:33:39 <hc> Oh I see. Thanks to the currying an operator doesn't necessarily have to take two arguments
16:33:45 <hc> But then the syntax is a bit less C-like ;-)
16:34:02 <hc> Hmm, unless you use $, true :)
16:35:08 <tomsmeding> yeah it's a hack
16:35:29 <hc> A very nice one
16:37:02 <EvanR> > True & 'a' `bool` 'b' -- xD
16:37:03 <lambdabot> 'b'
16:37:08 <EvanR> > False & 'a' `bool` 'b' -- xD
16:37:10 <lambdabot> 'a'
16:38:03 × Square quits (~Square@user/square) (Remote host closed the connection)
16:38:16 <hc> Oh, that one is also nice :)
16:39:46 <EvanR> > 3 & (+1) & sqrt & floor
16:39:47 <lambdabot> 2
16:41:06 <Inst> Also
16:41:33 <Inst> 🍅
16:41:43 <Inst> This should be a tomato, right? I don't have the right font configured for it :(
16:41:59 <geekosaur> looks like a tomato here
16:42:00 <Inst> (🍅) = putStrLn "this is a tomato"
16:42:22 <EvanR> https://i.imgur.com/fNJKjsV.png
16:44:28 <Inst> I guess it's more fit for Acme, but I'm still surprised no one tried to stuff emojis into a library yet.
16:44:30 × tango88 quits (~tango88@194.127.199.82) (Quit: Client closed)
16:44:48 Square joins (~Square@user/square)
16:44:52 <Inst> > (🏆) = putStrLn "This is a tomato"
16:44:53 <lambdabot> <hint>:1:5: error: parse error on input ‘=’
16:44:59 <hc> EvanR: Which package is the & operator from?
16:45:11 <EvanR> @index (&)
16:45:11 <lambdabot> Data.Function
16:45:33 <hc> Ah, thanks.
16:46:47 <Inst> that said: https://hackage.haskell.org/package/hmatrix-0.20.2/docs/Numeric-LinearAlgebra-Static.html#t:-8477-
16:47:38 <EvanR> > let (🍅) = (+) in 7 🍅 7
16:47:39 <lambdabot> 14
16:49:02 <c_wraith> hc: for what it's worth, a lot of people miss the index pages on hackage. They're really very useful: https://hackage.haskell.org/package/base-4.19.0.0/docs/doc-index.html
16:49:38 <c_wraith> (I think it took me a year to notice them)
16:49:42 <tomsmeding> also useful: if you're on a reference page of a package, you can press 's' on the keyboard to get a search box
16:49:55 <hc> c_wraith: Thanks! In this case my mistake was to write load instead of import and was confused why Data.Function wouldn't load, so I asked here
16:50:00 <tomsmeding> for 'base' it doesn't work on the package contents page, but for most packages it does
16:50:04 <c_wraith> ... depending on when the docs were last generated.
16:50:12 <tomsmeding> also that
16:50:21 <c_wraith> Hackage doesn't rebuild docs when haddock is updated
16:52:15 <c_wraith> (it can't, really. A lot of docs don't build on hackage. They depend on an OS or native library or something that isn't installed there.)
16:52:51 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
16:53:14 John_Ivan joins (~John_Ivan@user/john-ivan/x-1515935)
16:53:57 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
16:53:58 × berberman quits (~berberman@user/berberman) (Server closed connection)
16:54:12 berberman joins (~berberman@user/berberman)
16:55:49 <probie> Inst: have some Haskell with emojis https://paste.tomsmeding.com/EEEb2tNj
16:56:28 <EvanR> emoji haskell twitter account was suspended :(
16:57:20 <Rembane> :(
16:57:39 <Inst> wait, that was a thing? ?:(
16:58:34 <EvanR> elon not a haskell fan
16:58:41 <Inst> thanks <Probie3
17:01:13 <Inst> https://hackage.haskell.org/package/emojis-0.1.3
17:01:58 × mastarija quits (~mastarija@42-42.dsl.iskon.hr) (Quit: Client closed)
17:02:03 <Inst> I wonder if anyone has ever taught a Haskell uni course where the problem sets are in emojis, at least before drop / withdrawal dates kick in
17:02:40 <c_wraith> seems like unnecessary torture
17:03:29 <EvanR> to take this course you need a 90s japanese phone
17:03:50 <c_wraith> heck, I think libraries that use α in their types are unnecessary torture
17:04:13 tango88 joins (~tango88@194.127.199.82)
17:04:37 <Inst> also on my Arch machine, I can't render 70% of the emojis shown :(
17:04:59 <geekosaur> that's just a fntconfig thing, install more fonts
17:05:35 <Rembane> Especially those with the emoji extensions
17:05:58 <duncan> I think there's more to it than just installing a font, given emoji can be multiple width characters
17:06:31 × mokee quits (~mokee@37.228.215.150) (Ping timeout: 246 seconds)
17:06:35 <EvanR> if chinese is working in your terminal, that shouldn't be an issue
17:07:09 <geekosaur> not the same issue, some emoji are ligatures I think
17:07:15 <duncan> IIRC it is more complex than that because many emoji are compound characters
17:07:46 <EvanR> if hindi is working in your terminal shouldn't be an issue ? xD
17:09:16 <duncan> There's definitely something 'weird' about emoji
17:10:25 tzh joins (~tzh@c-71-193-181-0.hsd1.or.comcast.net)
17:11:56 × tango88 quits (~tango88@194.127.199.82) (Quit: Client closed)
17:12:12 <EvanR> > text ['🇺','🇸']
17:12:13 <lambdabot> 🇺🇸
17:13:49 <tomsmeding> Inst: I run arch and emojis render fine
17:13:55 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 260 seconds)
17:14:04 <tomsmeding> in st, no less, so if it works there you have no excuse :p
17:14:26 <tomsmeding> right, yeah the ligatures fail in the terminal
17:14:39 <tomsmeding> but that's a terminal issue, not an arch issue :)
17:14:54 <EvanR> > text ['ष','त']
17:14:55 <lambdabot> षत
17:15:09 × CO2 quits (CO2@gateway/vpn/protonvpn/co2) (Quit: WeeChat 4.1.1)
17:15:41 <EvanR> fail
17:16:45 <ski> (thankfully they fail to render here)
17:20:54 <EvanR> > text (intersperse ' ' "च्ट")
17:20:56 <lambdabot> च ् ट
17:20:58 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
17:21:28 <EvanR> is there a haskell package similar to libgrapheme which can split on the first grapheme cluster
17:25:35 mokee joins (~mokee@37.228.215.150)
17:26:18 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:7011:9d1b:12e0:79a) (Remote host closed the connection)
17:26:34 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:7011:9d1b:12e0:79a)
17:29:23 Nixkernal joins (~Nixkernal@115.16.194.178.dynamic.wline.res.cust.swisscom.ch)
17:29:48 CO2 joins (CO2@gateway/vpn/protonvpn/co2)
17:30:44 mc47 joins (~mc47@xmonad/TheMC47)
17:30:45 themc47 joins (~mc47@xmonad/TheMC47)
17:31:03 × themc47 quits (~mc47@xmonad/TheMC47) (Client Quit)
17:31:07 × mc47 quits (~mc47@xmonad/TheMC47) (Client Quit)
17:31:24 mc47 joins (~mc47@xmonad/TheMC47)
17:34:36 × CO2 quits (CO2@gateway/vpn/protonvpn/co2) (Client Quit)
17:39:43 jpds1 joins (~jpds@gateway/tor-sasl/jpds)
17:40:13 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
17:43:46 × dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Remote host closed the connection)
17:44:03 dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
17:44:59 <Inst> tomsmeding: what's the standard Arch font, then, the one I need to install? I just grabbed KDE
17:45:04 <Inst> or maybe I should go install a KDE font pack?
17:45:29 CO2 joins (CO2@gateway/vpn/protonvpn/co2)
17:46:39 <yushyin> noto-fonts-emoji maybe
17:49:18 <geekosaur> fwiw on ubuntu it's fonts-noto-color-emoji - color emoji font from Google
17:49:26 <geekosaur> quoting `apt-cache search`
17:50:17 <geekosaur> sadly there's about zero consistency in package names across linux distributions
17:50:38 mastarija joins (~mastarija@42-42.dsl.iskon.hr)
17:50:52 <geekosaur> (which is why neither cabal nor stack try to install distro packages when needed)
17:51:00 <Inst> thanks <3
17:56:17 × danza quits (~francesco@151.57.226.145) (Read error: Connection reset by peer)
18:00:46 × hovsater quits (sid499516@id-499516.lymington.irccloud.com) (Server closed connection)
18:00:56 hovsater joins (sid499516@id-499516.lymington.irccloud.com)
18:12:27 danza joins (~francesco@151.43.231.114)
18:14:49 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
18:16:16 × degraafk quits (sid71464@id-71464.lymington.irccloud.com) (Server closed connection)
18:16:29 degraafk joins (sid71464@id-71464.lymington.irccloud.com)
18:20:01 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:23:33 ubert joins (~Thunderbi@178.165.170.224.wireless.dyn.drei.com)
18:24:51 × Inst quits (~Inst@120.244.192.250) (Remote host closed the connection)
18:31:17 Pickchea joins (~private@user/pickchea)
18:32:55 Inst joins (~Inst@120.244.192.250)
18:33:13 <Inst> hmmm, this is nice, isntalled your recommended fonts and now I can see emojis
18:33:47 <Inst> and probie's program is perfectly readable now... for some definition of readable ;)
18:34:33 × mastarija quits (~mastarija@42-42.dsl.iskon.hr) (Quit: Client closed)
18:35:37 <Inst> where did that come from?
18:38:16 × steew quits (~steew@user/steew) (Quit: WeeChat 4.0.4)
18:40:07 × riatre quits (~quassel@2001:310:6000:f::5198:1) (Server closed connection)
18:40:14 riatre joins (~quassel@2001:310:6000:f::5198:1)
18:40:39 apache2 joins (apache2@anubis.0x90.dk)
18:40:47 × apache2 quits (apache2@anubis.0x90.dk) (Client Quit)
18:41:17 apache2 joins (apache2@anubis.0x90.dk)
18:46:47 × euleritian quits (~euleritia@77.22.252.56) (Read error: Connection reset by peer)
18:47:37 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
18:48:52 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:49:35 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 260 seconds)
18:49:54 <hc> By the way, not sure if this is the right place to ask, so if not please point me accordingly. I was wondering what's the situation regarding transitive dependencies in haskell these days? Rust has solved this nicely by allowing multiple versions of the same package to be linked to an executable, any chance we can get this in haskell as well?
18:51:00 <monochrom> No. Rust has it easy. (Generally any compiler that does not need to to do cross-package inlining.)
18:51:11 Maxdamantus joins (~Maxdamant@user/maxdamantus)
18:51:14 idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
18:51:18 <hc> I think rust can do that
18:51:52 <hc> It is called lto
18:53:35 × Square quits (~Square@user/square) (Remote host closed the connection)
18:54:37 <yin> @pl uncurry f . join bimap g . (h &&& i)
18:54:37 <lambdabot> uncurry f . bimap g g . (h &&& i)
18:55:13 <yin> @pl uncurry f . (h &&& id)
18:55:13 <lambdabot> uncurry f . (h &&& id)
18:55:16 <hc> Also, how would creoss-package inlining influence any of this? If you link two versions of a package, mind you only for transitive dependencies, those two versions could be given unique names internally for the duration of the compilation
18:55:23 <hc> They wouldn't have to interact with one another either
18:55:25 <yin> @pl f <*> h
18:55:25 <lambdabot> f <*> h
18:55:33 <hc> Just to avoid version conflicts between two transitive dependencies
18:56:16 <hc> ...of two different direct dependencies
18:57:20 × trev quits (~trev@user/trev) (Quit: trev)
18:57:34 <monochrom> You know, if we separate GHC and cabal, GHC doesn't mind, it's cabal that does.
18:58:05 <hc> I don't know; I haven't been using haskell for a few years and I have never been that deep into its internals :)
18:58:31 <hc> Hence my asking... I do think it could help to solve the dependency hell problem quite a bit
18:58:37 <geekosaur> ghc cares when it discovers the conflict and reports it as a symbol clonflicting with (apparently) itself
18:58:43 FinnBoat joins (~user@2001:861:5863:3d50:839b:2ec1:8b15:a80b)
18:58:56 <monochrom> You already know Rust, so it's just GHC : cabal :: rustc :: cargo
18:58:59 <hc> I get it that it currently doesn't work... but I wonder if there is a technical reason behind
18:59:23 <geekosaur> oh, it works fine as long as the two never intersect
18:59:27 <FinnBoat> in ghci, with :! shell-command, how to make use of the user's .bashrc ?
18:59:32 <hc> Yes indeed, which they won't have to
19:00:15 × sdz quits (~sdz@user/sdz) (Ping timeout: 240 seconds)
19:00:17 <geekosaur> you hope
19:00:23 <hc> No I'm sure of that
19:00:41 <geekosaur> I'm absolutely certain you are wrong because I hve seen it happen multiple times
19:00:43 <hc> Because I don't want to include two versions of the same package myself, just be able to include a package that includes an old version of another package
19:00:48 sdz joins (~sdz@user/sdz)
19:00:55 <hc> geekosaur: It does work fine in rust, seen it happen there many time
19:00:56 <hc> s*
19:01:32 <hc> Say: a refers to c0.1.0, b refers to c0.2.0, so I cannot use packages a and b in my own project currently
19:01:40 <monochrom> "I agree with myself all the time. It adds harmony to my monologues." >:)
19:02:00 <hc> If c0.1.0 and c0.2.0 could both be linked in at the same time, then using packages a and b together would be no problem
19:02:12 <hc> Since a only knows of c0.1.0 and b only knows of c0.2.0, there'd be no problem
19:02:26 <hc> Since my own package doesn't even include any version of c, no problem there either
19:02:27 <geekosaur> until typeclasses, which are global, come into play
19:02:39 <hc> Okay, hence my asking if there is any technical reason
19:03:44 <hc> Well, couldn't something be done about this? Because I think this would be a really good improvement in terms of long term stability for projects
19:04:38 <hc> Why can't typeclasses be imported like everything else?
19:07:01 <monochrom> In principle, it is mechanical to detect incoherence. In principle, when there is no incoherence, it is mechanical to allow multiple versions.
19:07:09 <monochrom> In practice, "patches welcome".
19:09:14 <FinnBoat> in ghci, :! can't call alias
19:09:20 <FinnBoat> any idea?
19:09:29 <FinnBoat> bash alias
19:09:54 <hc> monochrom: Would patches be welcome? Because I'm getting the feeling you're making fun of me for asking that question... maybe I am missing an important point or this is really a no-issue?
19:10:02 <monochrom> Does :! call bash in the first place?
19:10:11 <FinnBoat> yes it does
19:10:33 <FinnBoat> :! export BASH_ENV=/home/me/.bashrc ; alias
19:10:36 <FinnBoat> gives nothing
19:11:25 <FinnBoat> :! date && date , with this i do get the right result
19:11:53 <FinnBoat> i've defined a bash function to list exposed modules from a package
19:12:03 <FinnBoat> using a user package-db
19:12:55 × qqq quits (~qqq@92.43.167.61) (Ping timeout: 260 seconds)
19:13:19 <FinnBoat> :! alias actually gives nothing
19:13:55 <monochrom> Perhaps it runs bash as non-interactive and so .bashrc is not loaded.
19:14:33 <FinnBoat> ah could be
19:15:16 <monochrom> or the beginning of .bashrc detects "non-interactive, quit".
19:15:47 <monochrom> Mine has "[ -z "$PS1" ] && return", for example.
19:16:52 <int-e> % :! cat < /proc/self/cmdline
19:17:22 × YuutaW quits (~YuutaW@mail.yuuta.moe) (Ping timeout: 258 seconds)
19:17:38 <FinnBoat> int-e: what do you mean?
19:18:15 <monochrom> It is also sh rather than bash.
19:18:16 × EvanR quits (~EvanR@user/evanr) (Server closed connection)
19:18:19 <int-e> (For me that prints /bin/sh-ccat < /proc/self/cmdline; echo which a) isn't bash for me, and b) isn't interactive.
19:18:23 <monochrom> Although, on Mac, sh is bash.
19:18:41 EvanR joins (~EvanR@user/evanr)
19:18:42 monochrom is super-annoyed at that actually.
19:19:18 <int-e> Are we Mac-bashing?
19:19:23 <monochrom> haha
19:20:09 <FinnBoat> good one. so people don't :! their alias ?
19:20:24 <monochrom> My case is niche. Real people need not worry about it.
19:20:53 <int-e> I hardly ever use :! at all.
19:21:12 <monochrom> But I want students to learn | and use it in shell-scripting assignments, not google for solutions and use bash's <(cmd).
19:21:18 <geekosaur> actually on recent Macs sh is zsh
19:21:20 <FinnBoat> how do you check what modules are exposed from a package?
19:21:22 × yandere quits (sid467876@id-467876.ilkley.irccloud.com) (Server closed connection)
19:21:31 yandere joins (sid467876@id-467876.ilkley.irccloud.com)
19:21:40 <monochrom> So I tell them "my automarking runs your shell script with /bin/sh your-script"
19:22:34 <monochrom> But then Mac students go on to google for solutions and use <(cmd), and /bin/sh your-script works for them. They also go on to never test it on real Linux.
19:22:39 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
19:23:15 <haskellbridge> 06<s​m> FinnBoat you can check the list in the cabal
19:23:16 <haskellbridge> 06<s​m> file I guess
19:23:25 <int-e> FinnBoat: uh, it doesn't really come up on the spot... I browse haddocks for that.
19:24:33 <int-e> there is `ghc-pkg describe` and I can see how if you're using `cabal repl` you might want to invoke that with :!. I just don't.
19:25:04 <monochrom> ghc-pkg field <pkg> exposed-modules
19:25:34 <int-e> that works but it's not something I'd remember :-P
19:25:43 <FinnBoat> ghc-pkg --package-db=path-to-my-db field vector exposed-modules
19:25:45 <monochrom> But yeah a mere list of modules is utterly useless.
19:25:53 <monochrom> doc is actually useful.
19:26:05 steew joins (~steew@user/steew)
19:26:17 <FinnBoat> i cabal install --env .
19:27:11 <geekosaur> ghc-pkg won't list stuff in environment files
19:27:48 <monochrom> Dijkstra is right about people are so irrationally fixated on names.
19:27:59 <monochrom> Names are bloody useless.
19:28:24 <int-e> you're so right, person on the internet relay chat
19:28:42 <monochrom> So what if I know Prelude is called Prelude? I still don't know what functions I can use from that name.
19:29:30 <int-e> (Names *are* useful. But they don't do much to explain anything by themselves.)
19:29:33 × steew quits (~steew@user/steew) (Remote host closed the connection)
19:29:36 <Franciman> probably dijkstra's point is more understandable in the context of the philosophy of language of Dummett
19:30:42 steew joins (~steew@204.red-81-33-65.dynamicip.rima-tde.net)
19:30:55 × steew quits (~steew@204.red-81-33-65.dynamicip.rima-tde.net) (Changing host)
19:30:55 steew joins (~steew@user/steew)
19:32:34 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:7011:9d1b:12e0:79a) (Remote host closed the connection)
19:34:07 <monochrom> int-e: That ties to, actually, imperative vs functional, even pointful vs pointfree.
19:34:55 <int-e> monochrom: Thanks now I'm finding humor in "Dijkstra's point".
19:34:56 <monochrom> So "monochrom" is useful insomuch as tying it to, for example, what I wrote on IRC.
19:35:04 <monochrom> hahaha
19:35:36 <monochrom> But then that's another way to say that it is the tie that's useful. This is one order up.
19:36:28 <int-e> . o O ( "Fred would agree." - "Who's Fred?" - "Exactly." )
19:36:34 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:36:52 × robertm quits (robertm@lattice.rojoma.com) (Server closed connection)
19:37:03 <monochrom> Likewise, whereas the usual narrative of imperative programming is fixated on state 1, state 2, state 3, ... It is the state transition function, written like "x := x+1", that is important.
19:37:10 robertm joins (robertm@lattice.rojoma.com)
19:37:17 × FinnBoat quits (~user@2001:861:5863:3d50:839b:2ec1:8b15:a80b) (Ping timeout: 252 seconds)
19:38:50 × johnw quits (~johnw@69.62.242.138) (Quit: ZNC - http://znc.in)
19:42:14 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:7011:9d1b:12e0:79a)
19:44:09 <haskellbridge> 14<m​auke> Have you tried using shell functions instead of aliases?
19:45:01 <monochrom> But if the shell functions are only defined in the files not loaded, it is not going to be any different.
19:45:32 <haskellbridge> 14<m​auke> Also, I wish macs used bash, but Apple is allergic to GPL 3
19:45:44 <monochrom> or rather files that are loaded but right away they say "PS1 not defined, skip".
19:46:31 <haskellbridge> 14<m​auke> Difference is that aliases are not expanded at all in non-interactive shells IIRC
19:47:20 <monochrom> Hrm, you're right.
19:48:28 <monochrom> No, I am not so sure anymore, there is an alternative hypothesis.
19:48:37 <geekosaur> unless defined in .bash_aliases iirc?
19:48:45 <int-e> . o O ( shopt -s expand_aliases )
19:49:11 <monochrom> This is madness.
19:49:22 <int-e> welcome to s-hell.
19:49:27 <monochrom> haha
19:49:30 <monochrom> :(
19:50:06 <int-e> I can't help feeling that we're quickly headed towards Z in an XY problem.
19:50:51 <int-e> Which is fine, I'm all for sightseeing.
19:51:55 × danza quits (~francesco@151.43.231.114) (Ping timeout: 255 seconds)
19:52:29 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
19:53:26 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
19:55:28 × Boarders___ quits (sid425905@id-425905.lymington.irccloud.com) (Server closed connection)
19:55:47 Boarders___ joins (sid425905@id-425905.lymington.irccloud.com)
19:56:06 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
19:57:11 euleritian joins (~euleritia@dynamic-046-114-207-173.46.114.pool.telefonica.de)
19:57:14 <tomsmeding> did this all start because of wanting to run a bash alias in a binding in ghci?
19:57:20 <tomsmeding> local bin folders are a thing
19:57:22 <tomsmeding> that's what they are for
19:57:57 <tomsmeding> put your one-line thing in ~/.local/bin/your-name, chmod +x it, and (once-only) add that directory to your PATH -- maybe even system-wide
19:58:13 <tomsmeding> et voilà
19:58:23 wootehfoot joins (~wootehfoo@user/wootehfoot)
19:58:25 <int-e> what happened to ~/bin :-/
19:58:31 <tomsmeding> or ~/bin
19:58:39 <tomsmeding> or ~/prefix/bin as I've done for a while
19:59:55 <monochrom> My hypothesis is that ~/.local/bin was invented by people who came from Windows and never learned that in Unix ~/bin has existed for decades.
20:00:49 <monochrom> Millenials and NIV.
20:00:54 <monochrom> err NIH.
20:01:15 tomsmeding was pondering English words starting with V
20:02:26 <tomsmeding> the advantage of the NIH solution, though, is that somehow or other it's worked its way into the default .bashrc of various distributions
20:02:37 <tomsmeding> so NIH or not, if someone has no clue about this, it's the most convenient one to suggest
20:03:15 <monochrom> Default .profile's and .bashrc's have both ~/bin and ~/.local/bin
20:03:16 ski 's used `~/bin',`~/etc',`~/lib',`~/share'
20:03:55 <monochrom> I'm afraid both are here to stay.
20:04:14 <monochrom> And by the time the OS/2 people finally enter the chat too, there may be yet another one. :)
20:04:26 <tomsmeding> worse crimes have been committed :p
20:05:45 ski also reconfigures programs, when possible, to put stuff in `.foorc' or `.foo/', rather than in `.config/foo'
20:06:23 tomsmeding . o O ( ln -s ~ ~/.config/foo )
20:06:31 <tomsmeding> (no don't do that)
20:06:34 <probie> I once had a home folder that ended up with ~/bin ~/.bin and ~/.local/bin at the same time
20:06:42 <ski> no, ideally `.config' should be non-existing
20:07:27 × euleritian quits (~euleritia@dynamic-046-114-207-173.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
20:07:44 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
20:08:09 × mechap quits (~mechap@user/mechap) (Quit: WeeChat 4.1.1)
20:09:22 <Rembane> Recursive links are the best.
20:09:32 <Rembane> Or well, not the best, but they are fun until they wreck the system.
20:09:50 <monochrom> i.e., best. >:)
20:10:18 <Rembane> :D
20:10:43 <yin> why do we still use file trees is beyond me
20:11:26 <tomsmeding> DOS is dead, long live DOS?
20:11:47 Sgeo joins (~Sgeo@user/sgeo)
20:11:58 <monochrom> No, Apple DOS was flat. :)
20:12:21 <tomsmeding> maybe I borked the reference
20:12:39 <monochrom> Well, there was Apple DOS, and then there was MS DOS.
20:13:15 tomsmeding used neither, except if you count "opening cmd on windows XP"
20:13:31 <tomsmeding> I used windows 98 but I don't think I knew about cmd back then :D
20:14:29 <Rembane> CMD.EXE is good, the perfect place to run ipconfig.
20:15:38 <monochrom> yin: On the ladder of intellectual maturity, the lowest rung is understanding flat lists, next up is trees, next is DAG, next is general graph. (There can be more further up, e.g., hypergraphs? 2-categories?)
20:16:04 <monochrom> So what you're looking at is, currently, humanity has barely achieved the 2nd rung.
20:16:25 <Rembane> Are there any hypergraph filesystems?
20:16:39 <monochrom> In fact, just look at how many decades web forums used flat lists until Reddit came along to present a tree.
20:17:35 <Rembane> There were forum software that used trees before Reddit, but they weren't as popular which probably tells us something about humanity.
20:18:13 <yin> Rembane: macOS introduced labels in 1991 which I *think* qualifies
20:18:16 <monochrom> Well yeah sure I was on Usenet etc. too.
20:18:36 <Rembane> yin: Nice!
20:18:40 <monochrom> But Usenet etc did not represent the record-low savageness of humanity.
20:19:34 <Rembane> But phpBB did? :)
20:19:43 YuutaW joins (~YuutaW@2404:f4c0:f9c3:502::100:17b7)
20:19:53 <yin> they were reintroduced in 2003 along with other paradigm shifts like getting rid of the save abstraction but people criticized it so they stopped going in that direction :/
20:20:42 <monochrom> No I think phpBB was the first web forum thing I came across and I was annoyed that it was flat list.
20:20:48 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
20:21:08 <yin> i'm pretty sure at one point they had the long term goal of parting from the graphical folder model
20:21:31 <monochrom> I even wrote "Usenet already exists, newsgroup readers already exist, why did some programmer write phpBB, except to justify their existence?"
20:21:45 <yin> in
20:21:50 <Rembane> And then the dark ages of phpBB started.
20:22:01 <carbolymer> wdym by dark
20:22:05 <carbolymer> those security holes
20:22:32 <carbolymer> you could exploit almost every phpbb installation back in the days
20:22:56 <yin> in https://en.wikipedia.org/wiki/The_Humane_Interface Rasking (who incidently worked at Apple) explores a few more interesting ideas that could have replaced the file/folder directory metaphor
20:23:16 <monochrom> <3 Raskin
20:23:47 <yin> :)
20:24:07 <yin> it's an awesome introductory book for interface design
20:25:01 <monochrom> One of the few people who are brave enough to tell the truth, which I paraphrase and exaggerate as: 26 buttons for 26 letters are easier to use than a 5-level menu of binary choices at each level.
20:25:30 <monochrom> i.e., against the ridiculous superstition "fewer buttons are easier".
20:25:44 <tomsmeding> > who incidentally worked at Apple
20:25:46 <lambdabot> error:
20:25:46 <lambdabot> Variable not in scope:
20:25:46 <lambdabot> who
20:25:48 <tomsmeding> apparently not for long
20:25:52 <tomsmeding> thank you lambdabot
20:25:54 <tomsmeding> @botsnack
20:25:54 <lambdabot> :)
20:26:08 <monochrom> He died early.
20:26:32 <yin> he was fired from apple by steve jobs iirc?
20:26:36 <tomsmeding> oh :/
20:27:52 <monochrom> Google Japan was another instance of being brave enough to make an April 1st parody: "We have made the ultimate user-friendly UI, it's just one button! So easy! All you need is to learn Morse code..."
20:28:24 <Rembane> That is hilarious
20:28:38 <yin> tbf i miss the old nokia phones. i could type an sms without getting it out of my pocket
20:29:17 <yin> even before that sort of predictive typing
20:29:41 <yin> i believe there is a balance between 1 button and 42 buttons
20:30:31 <yin> *24
20:30:35 × Inst quits (~Inst@120.244.192.250) (Ping timeout: 258 seconds)
20:30:36 <yin> or 26 i guess
20:31:26 <geekosaur> only court recorders use chord keyboards…
20:32:00 ubert1 joins (~Thunderbi@178.115.54.161.wireless.dyn.drei.com)
20:32:05 <monochrom> I am OK with a rigorous Huffman-style analysis that comes out as "these things are used 90% of the time so make them immediate, the other can hide behind a level or two". Raskin would agree with that. Take actual statistics. Not ideology.
20:33:12 × Tlsx quits (~rscastilh@187.40.125.21) ()
20:33:22 × ubert quits (~Thunderbi@178.165.170.224.wireless.dyn.drei.com) (Ping timeout: 246 seconds)
20:33:22 ubert1 is now known as ubert
20:34:55 <yin> as it seems raskin left Apple voluntarily over disagreements with the Macintosh team in 82. he died in 2005 age 61
20:35:57 <geekosaur> tomsmeding, › (compose dot greater)
20:36:11 <int-e> yin: But also "Apple acknowledged Raskin's role after he had left the company by giving him as a gift, the millionth Macintosh computer, with an engraved brass plaque on the front." So the rift was probably not *terribly* deep.
20:37:17 <tomsmeding> geekosaur: my usual solution is to put a reset-color byte before the > but I forgot this time :p
20:37:19 × mokee quits (~mokee@37.228.215.150) (Remote host closed the connection)
20:37:50 <monochrom> ooohhh reset-color byte, sneaky
20:37:54 <yin> > 5
20:37:58 <tomsmeding> > like this
20:38:26 monochrom is sacrilegous: Consider the BOM... >:)
20:38:46 mechap joins (~mechap@user/mechap)
20:39:10 <geekosaur> ZWNJ
20:39:54 <yin> Raskin would've used a space
20:40:10 <yin> >:)
20:40:27 <tomsmeding> > test
20:40:27 <monochrom> haha
20:40:31 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
20:41:56 <tomsmeding> but reset-color is easy in weechat: ctrl-C ctrl-O. For BOM/etc. I need to pull tricks :p
20:42:15 <tomsmeding> er, ctrl-C o
20:42:44 × statusbot1 quits (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Server closed connection)
20:42:51 <int-e> Somehow it's cimply C-O for me. I wonder whether I did anything to enable that (irssi)
20:42:59 statusbot joins (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com)
20:42:59 <tomsmeding> irssi != weechat :p
20:43:06 <geekosaur> yeh, it's %O in hexchat if you enable % escapes
20:43:17 <ski> int-e : same here
20:43:43 <geekosaur> C-O is what it actually is when encoded, so I assume irssi just passes control chars through
20:43:55 <int-e> ski: Yeah I've just looked at my keybindings and there's nothing there so I guess it's the default.
20:44:45 <ski> also C,_,]
20:45:06 <ski> geekosaur : certainly not all
20:45:20 <ski> (but i guess, the ones which aren't explicitly rebound)
20:47:11 falafel joins (~falafel@62.175.113.194.dyn.user.ono.com)
20:47:16 × falafel quits (~falafel@62.175.113.194.dyn.user.ono.com) (Remote host closed the connection)
20:47:40 falafel joins (~falafel@62.175.113.194.dyn.user.ono.com)
20:47:53 Square joins (~Square@user/square)
20:48:47 × samhh quits (7569f027cf@2604:bf00:561:2000::e4) (Server closed connection)
20:48:47 samhh_ is now known as samhh
20:48:58 samhh_ joins (7569f027cf@2604:bf00:561:2000::e4)
20:51:57 <yin> > 7
20:53:37 <yin>  bell
20:54:50 <yin> irssi passes way more of them than my term
20:56:37 <yin> i'm not sure if that makes sense
20:57:42 <geekosaur> depends on what you mean by "your term"
20:58:11 <geekosaur> readlin intercepts most control characters so you need to arrange for them to be output, not just type them
20:58:25 <geekosaur> (try /usr/bin/printf on linux)
20:58:40 × michalz quits (~michalz@185.246.207.203) (Remote host closed the connection)
21:02:09 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
21:07:11 modotte joins (~modotte@user/modotte)
21:10:55 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
21:12:19 × idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.1.1)
21:16:41 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
21:16:47 × modotte quits (~modotte@user/modotte) (Quit: Leaving)
21:23:52 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 258 seconds)
21:24:24 euleritian joins (~euleritia@dynamic-046-114-207-173.46.114.pool.telefonica.de)
21:26:55 × bradparker quits (sid262931@id-262931.uxbridge.irccloud.com) (Server closed connection)
21:27:09 bradparker joins (sid262931@id-262931.uxbridge.irccloud.com)
21:27:43 [_] is now known as [itchyjunk]
21:27:47 johnw joins (~johnw@69.62.242.138)
21:35:00 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
21:55:46 zetef joins (~quassel@5.2.182.98)
21:56:15 × falafel quits (~falafel@62.175.113.194.dyn.user.ono.com) (Ping timeout: 255 seconds)
21:58:02 slack1256 joins (~slack1256@191.126.186.232)
22:00:55 <slack1256> Does anybody know if nix/nixpkgs supports backpack instantiations ? There are some old github issues that are stalled...
22:01:54 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
22:02:49 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
22:03:32 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 255 seconds)
22:05:22 jmdaemon joins (~jmdaemon@user/jmdaemon)
22:05:35 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 260 seconds)
22:06:07 × misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 246 seconds)
22:06:52 × nullie quits (~nullie@2a01:4f8:c2c:6177::1) (Quit: WeeChat 4.0.5)
22:07:10 nullie joins (~nullie@nuremberg.nullie.name)
22:08:38 gentauro joins (~gentauro@user/gentauro)
22:13:03 × chomwitt quits (~chomwitt@2a02:587:7a12:2d00:1ac0:4dff:fedb:a3f1) (Ping timeout: 240 seconds)
22:22:43 × ham quits (~ham@user/ham) (Quit: WeeChat 3.5)
22:26:21 × Square quits (~Square@user/square) (Ping timeout: 240 seconds)
22:27:33 × justThanks quits (~justache@user/justache) (Quit: ZNC 1.8.2 - https://znc.in)
22:28:15 justache joins (~justache@user/justache)
22:37:34 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
22:40:04 × acidjnk quits (~acidjnk@p200300d6e72b933884d06dff6b3ba200.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
22:41:28 × justache quits (~justache@user/justache) (Remote host closed the connection)
22:44:25 × yin quits (~z@user/zero) (Server closed connection)
22:44:45 zero joins (~z@user/zero)
22:48:57 justache joins (~justache@user/justache)
22:55:38 × slack1256 quits (~slack1256@191.126.186.232) (Read error: Connection reset by peer)
22:55:43 slac52794 joins (~slack1256@2800:150:151:1a42:c06e:b7d:d50e:d5f6)
23:00:44 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
23:03:55 _73 joins (~anon_73__@2600:4040:5205:d800:21e8:9777:49a5:db28)
23:06:41 lhpitn_ joins (~tn@mail.lebenshilfe-pi.de)
23:06:43 × slac52794 quits (~slack1256@2800:150:151:1a42:c06e:b7d:d50e:d5f6) (Remote host closed the connection)
23:06:46 _73 parts (~anon_73__@2600:4040:5205:d800:21e8:9777:49a5:db28) (WeeChat 4.1.1)
23:09:11 Inst joins (~Inst@120.244.192.250)
23:10:10 × lhpitn quits (~tn@mail.lebenshilfe-pi.de) (Ping timeout: 272 seconds)
23:12:52 × zetef quits (~quassel@5.2.182.98) (Remote host closed the connection)
23:15:47 × justache quits (~justache@user/justache) (Quit: ZNC 1.8.2 - https://znc.in)
23:16:37 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
23:20:32 justache joins (~justache@user/justache)
23:20:48 × [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
23:21:18 × mechap quits (~mechap@user/mechap) (Ping timeout: 255 seconds)
23:25:56 <zero> :t \f g -> uncurry g . (id &&& f)
23:25:57 <lambdabot> (a -> b) -> (a -> b -> c) -> a -> c
23:26:43 <zero> :t (<*>)
23:26:44 <lambdabot> Applicative f => f (a -> b) -> f a -> f b
23:26:47 × justache quits (~justache@user/justache) (Remote host closed the connection)
23:27:20 <zero> :t \f g -> g <*> f
23:27:21 <lambdabot> Applicative f => f a -> f (a -> b) -> f b
23:27:25 slack1256 joins (~slack1256@191.126.186.232)
23:29:32 <zero> how do you do that type application thing?
23:30:51 <dsal> You mean just use type applications? You put a @T in for each of the type variables you want to specify from left to right.
23:30:58 <dsal> You can ignore some with @_
23:31:47 <zero> hmm
23:31:55 justache joins (~justache@user/justache)
23:32:06 <zero> :t (<*>) @((->) r)
23:32:06 <lambdabot> error: parse error on input ‘->’
23:32:35 <dsal> I'm not sure if lambdabot understands type applications.
23:33:06 <zero> :t (<*>) @((->) Int)
23:33:06 <lambdabot> error: parse error on input ‘->’
23:33:14 <zero> oh
23:33:36 × ft quits (~ft@p4fc2a529.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
23:33:40 <zero> well sorry for the noise then
23:33:47 <dsal> % :t (<*>) @((->) _)
23:33:47 <yahb2> (<*>) @((->) _) :: (w -> (a -> b)) -> (w -> a) -> w -> b
23:34:01 <zero> dsal: that's it! ty
23:34:59 ft joins (~ft@p508db3bc.dip0.t-ipconnect.de)
23:35:45 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
23:36:35 × sdz quits (~sdz@user/sdz) (Ping timeout: 260 seconds)
23:37:05 × Jackneill quits (~Jackneill@20014C4E1E058A00F5A2357F979DDCC7.dsl.pool.telekom.hu) (Ping timeout: 252 seconds)
23:38:06 sdz joins (~sdz@user/sdz)
23:40:53 <zero> % :t \f g h -> uncurry f . (g &&& h)
23:40:53 <yahb2> <interactive>:1:26: error: ; • Variable not in scope: (&&&) :: t -> t1 -> a1 -> (a, b) ; • Perhaps you meant ‘&&’ (imported from Prelude)
23:40:57 <zero> :t \f g h -> uncurry f . (g &&& h)
23:40:58 <lambdabot> (a1 -> b -> c) -> (a2 -> a1) -> (a2 -> b) -> a2 -> c
23:41:13 <zero> % :t liftA2 @((->) _)
23:41:13 <yahb2> <interactive>:1:1: error: ; • Variable not in scope: liftA2 ; • Perhaps you meant one of these: ; ‘liftM2’ (imported from Control.Monad.State), ; ‘liftM’ (imported from Cont...
23:41:25 <zero> % :t Control.Applicative.liftA2 @((->) _)
23:41:25 <yahb2> Control.Applicative.liftA2 @((->) _) ; :: (a -> b -> c) -> (w -> a) -> (w -> b) -> w -> c
23:45:15 <zero> ok so `f <*> g` === `liftA2 f id g`
23:45:52 <ski> @type \f g h -> uncurry f . (g &&& h)
23:45:53 <lambdabot> (a1 -> b -> c) -> (a2 -> a1) -> (a2 -> b) -> a2 -> c
23:46:30 <ski> zero : rather `liftA2 id f g'
23:48:00 <zero> that can't be right
23:49:16 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 264 seconds)
23:49:38 <zero> oh, i see my mistake
23:50:02 ChaiTRex joins (~ChaiTRex@user/chaitrex)
23:50:09 <zero> wait
23:50:37 <zero> ah, i see
23:50:50 <zero> liftA2 q f g x = q (f x) (g x)
23:51:15 <zero> id (f x) === f (id x)
23:53:08 <ski> oh, i guess both works
23:53:13 <zero> yes
23:53:26 <zero> liftA2 id === flip liftA2 id
23:53:28 <zero> is this right?
23:55:02 notzmv joins (~zmv@user/notzmv)
23:55:24 <zero> i guess it is :)

All times are in UTC on 2023-11-12.