2022/11/11

2022-11-11 00:00:02 +0100 <Inst> but is monadic pattern programming a thing?
2022-11-11 00:00:22 +0100 <Inst> that's what i'm sort of looking for, a term for this kind of stuff
2022-11-11 00:00:30 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2022-11-11 00:00:30 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-11-11 00:00:30 +0100ec_(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-11-11 00:00:30 +0100jpds2(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-11-11 00:01:11 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2022-11-11 00:01:19 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
2022-11-11 00:01:22 +0100 <jbggs[m]> Inst Are you trying to understand monads or are you trying to explain monads to someone?
2022-11-11 00:01:27 +0100chexum(~quassel@gateway/tor-sasl/chexum)
2022-11-11 00:01:46 +0100 <Inst> tbh, being able to explain monads without resorting to Zen is equivalent to understanding monads
2022-11-11 00:01:51 +0100jpds2(~jpds@gateway/tor-sasl/jpds)
2022-11-11 00:01:52 +0100 <hpc> https://en.wikipedia.org/wiki/Design_Patterns#Patterns_by_type if you don't mind being even more confused :P
2022-11-11 00:01:55 +0100 <monochrom> Neither. Trying to talk about trying to explain monads to someone.
2022-11-11 00:02:03 +0100 <hpc> @src Monad
2022-11-11 00:02:03 +0100 <lambdabot> class Applicative m => Monad m where
2022-11-11 00:02:03 +0100 <lambdabot> -- Note: Applicative wasn't a superclass before GHC 7.10
2022-11-11 00:02:03 +0100 <lambdabot> (>>=) :: m a -> (a -> m b) -> m b
2022-11-11 00:02:03 +0100 <lambdabot> (>>) :: m a -> m b -> m b
2022-11-11 00:02:03 +0100 <lambdabot> return :: a -> m a
2022-11-11 00:02:05 +0100 <lambdabot> fail :: String -> m a
2022-11-11 00:02:05 +0100 <hpc> ^ that's it
2022-11-11 00:02:06 +0100titibandit(~titibandi@xdsl-87-78-8-6.nc.de) (Remote host closed the connection)
2022-11-11 00:02:11 +0100 <Inst> bleh, i'll go ruin another guineapig on discord
2022-11-11 00:02:43 +0100 <hpc> make sure you're covering the prerequisite concepts first
2022-11-11 00:02:51 +0100ec_(~ec@gateway/tor-sasl/ec)
2022-11-11 00:03:28 +0100 <hpc> if Monad isn't super easy to explain, you're not explaining it wrong, you just missed something beforehand
2022-11-11 00:03:51 +0100 <EvanR> Zen, what
2022-11-11 00:04:36 +0100 <hpc> EvanR: you've clearly never written the codeless code :D
2022-11-11 00:05:36 +0100 <EvanR> I have combined two opposing causal stream transducers with each other to form a nothing and called it the yin yang unicode character, does that count
2022-11-11 00:06:25 +0100 <jbggs[m]> That's Tao, that's different
2022-11-11 00:06:33 +0100 <Inst> i'm literally reading
2022-11-11 00:06:47 +0100 <Inst> i wonder if nothing === dao
2022-11-11 00:07:46 +0100 <hpc> that's a data access object
2022-11-11 00:08:31 +0100 <jbggs[m]> What do you all think of this comparison:
2022-11-11 00:08:31 +0100 <jbggs[m]> Category Theory : Design Patterns :: Biologists : Zoologist
2022-11-11 00:08:42 +0100 <ski> perhaps there should be a "Monad prerequisites" page ..
2022-11-11 00:08:46 +0100 <jbggs[m]> s/Biologists/Biology/
2022-11-11 00:08:51 +0100 <jbggs[m]> s/Biologists/Biology/, s/Zoologist/Zoology/
2022-11-11 00:09:05 +0100 <EvanR> Monad prerequistists: (among other things) Functor
2022-11-11 00:09:51 +0100 <EvanR> made somewhat more complicated by hpc opening up the actual definition of Monad and it doesn't mention Functor xD
2022-11-11 00:10:02 +0100 <ski> @where prerequisite
2022-11-11 00:10:02 +0100 <lambdabot> "Prerequisite for Learning Haskell" <http://www.vex.net/~trebla/haskell/prerequisite.xhtml>
2022-11-11 00:10:56 +0100 <hpc> it mentions Applicative, which is the better segue from Functor imo
2022-11-11 00:11:03 +0100 <EvanR> ;_;
2022-11-11 00:11:18 +0100 <geekosaur> but that just gives you "so what's Applicative?"
2022-11-11 00:11:59 +0100ph88^(~ph88@2a02:8109:9e00:71d0:a90d:e7d5:fe91:a32a) (Quit: Leaving)
2022-11-11 00:11:59 +0100 <EvanR> if someone actually gets Functor in whatever process, the job is probably done
2022-11-11 00:12:11 +0100 <EvanR> inertia carries them the rest of the way
2022-11-11 00:14:44 +0100 <Inst> functor is actually extremely easy to explain, just call it mappable
2022-11-11 00:17:09 +0100blomberg(~default_u@89-39-107-192.hosted-by-worldstream.net) (Ping timeout: 260 seconds)
2022-11-11 00:17:33 +0100 <monochrom> Soon we will be talking about talking about talking about trying to explain monads.
2022-11-11 00:18:34 +0100 <EvanR> monad is easy, call it flatmappable
2022-11-11 00:18:48 +0100 <Inst> what we talk about when we talk about love <3
2022-11-11 00:18:51 +0100 <Inst> yeah, i know
2022-11-11 00:19:02 +0100 <Inst> that's like the general "explain monads like I'm 5" to an experienced programmer
2022-11-11 00:19:04 +0100 <EvanR> comonad, mapflattable
2022-11-11 00:19:22 +0100 <Inst> functor = map, monad = flatmap
2022-11-11 00:19:29 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-11 00:19:34 +0100 <EvanR> there you go
2022-11-11 00:19:55 +0100 <Inst> afaik it works
2022-11-11 00:20:43 +0100 <ski> no, monad needs `return'/`pure'/`unit/`eta'/⌜η⌝ as well
2022-11-11 00:20:47 +0100 <hpc> instead of foldable we can call it foldmappable
2022-11-11 00:21:15 +0100 <Inst> foldable has a functor constraint?
2022-11-11 00:21:41 +0100 <hpc> there's a method in Foldable called foldMap
2022-11-11 00:21:43 +0100 <ski> EvanR : more like "mapUnflattened" ?
2022-11-11 00:21:45 +0100 <Inst> i'm looking for the spoonfed "explain monads like I'm 5" to an inexperienced programmer who's never heard of map / flatmap
2022-11-11 00:22:27 +0100 <ski> "foldable has a functor constraint?" -- it doesn't
2022-11-11 00:22:48 +0100 <Inst> ummm, okay, iirc foldmap is implemented via Endo and appEndo
2022-11-11 00:22:59 +0100 <Inst> to force a monoid to exist for the <>
2022-11-11 00:23:30 +0100 <ski> it's a type class, every type that's an instance of it can implement it in its own way
2022-11-11 00:23:52 +0100acidjnk(~acidjnk@p200300d6e7137a38458dfbf66917fb17.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2022-11-11 00:25:05 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
2022-11-11 00:25:07 +0100 <EvanR> I try not to encourage the trend of monads as a "thing that desperately need to be explained, and also are so hard to understand it never works"
2022-11-11 00:25:18 +0100 <EvanR> because it's just another thing among things
2022-11-11 00:25:36 +0100 <EvanR> other things that are cool but no one cares about one way or another, like monoids
2022-11-11 00:25:39 +0100 <EvanR> or functor
2022-11-11 00:26:40 +0100 <geekosaur> agreed, but sadly there's already this meme that haskell is about monads and monads are incomprehensible
2022-11-11 00:26:59 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2022-11-11 00:27:04 +0100ski. o O ( multiplate )
2022-11-11 00:27:20 +0100 <hpc> just tell them to enable MonadComprehensions
2022-11-11 00:27:25 +0100 <EvanR> lol
2022-11-11 00:27:58 +0100chexum(~quassel@gateway/tor-sasl/chexum)
2022-11-11 00:27:59 +0100 <ski> that's surely aid comprehension
2022-11-11 00:28:11 +0100 <hpc> i mean... maybe?
2022-11-11 00:29:09 +0100 <ski> should also enable `TransformListComp', employing familiarity with SQL
2022-11-11 00:29:57 +0100rubin55(sid175221@id-175221.hampstead.irccloud.com) (Read error: Software caused connection abort)
2022-11-11 00:30:08 +0100rubin55(sid175221@id-175221.hampstead.irccloud.com)
2022-11-11 00:33:06 +0100Pent(sid313808@id-313808.lymington.irccloud.com) (Read error: Software caused connection abort)
2022-11-11 00:33:19 +0100Pent(sid313808@id-313808.lymington.irccloud.com)
2022-11-11 00:35:14 +0100vn36(~vn36@123.63.203.210) (Ping timeout: 260 seconds)
2022-11-11 00:39:19 +0100Inst(~Liam@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 260 seconds)
2022-11-11 00:46:26 +0100 <Axman6> I've always found this is quite a good article to dispel the "monads are difficult" idea: https://tomstu.art/refactoring-ruby-with-monads
2022-11-11 00:50:52 +0100zeenk(~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Quit: Konversation terminated!)
2022-11-11 00:52:48 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-11 00:53:59 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-11-11 00:55:15 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-11-11 00:57:45 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
2022-11-11 00:59:18 +0100 <hpc> like many things in programming, it's only as difficult as you make it
2022-11-11 00:59:45 +0100 <monochrom> In fact, like many things in general.
2022-11-11 01:00:17 +0100 <monochrom> Especially politicians and management types who really love to make things more difficult.
2022-11-11 01:00:32 +0100 <hpc> this is why i only use zygohistomorphic prepromorphisms
2022-11-11 01:01:31 +0100 <EvanR> way back in the day the very first thing I read about monads was that they are difficult. I think it was on a wikipedia article. Now I know this is terrible writing, it's like buying a d&d adventure module and it tells you to tell the players how they feel about some room or character when they encounter it
2022-11-11 01:02:05 +0100 <EvanR> for the first time
2022-11-11 01:02:15 +0100 <EvanR> (which is a thing, and it's terrible)
2022-11-11 01:02:35 +0100 <monochrom> D&D is easy compared to MtG :)
2022-11-11 01:02:39 +0100 <hpc> D&D's a fun analogy there, sometimes you get things like
2022-11-11 01:02:39 +0100mncheck(~mncheck@193.224.205.254) (Ping timeout: 260 seconds)
2022-11-11 01:02:47 +0100 <hpc> "you enter the room, there is nothing in the left corner"
2022-11-11 01:02:58 +0100 <hpc> "i search the left corner" *d20*
2022-11-11 01:03:37 +0100 <dolio> Is it? They seem pretty dissimilar.
2022-11-11 01:04:00 +0100Inst(~Liam@c-73-156-203-163.hsd1.fl.comcast.net)
2022-11-11 01:04:00 +0100 <dolio> Oh, "easy compared to," not, "easily compared to."
2022-11-11 01:05:09 +0100 <EvanR> at the very least the writer should do their best with a technical guide and let the reader decide if it's hard, whatever that means for them
2022-11-11 01:05:35 +0100 <EvanR> do your best to put d&d players in a RPG moment, and let them come to their own conclusions about something
2022-11-11 01:06:21 +0100 <EvanR> d&d is probably not the most widely applicable version of this principle but that's all I got
2022-11-11 01:08:20 +0100ski. o O ( "Warum soll man es einfach machen, wenn man es so schän kompliziert machen kann ?" )
2022-11-11 01:09:01 +0100 <ski> (also easy resp. hard vs. simple resp. complicated)
2022-11-11 01:09:20 +0100 <zzz> any reason why `(!)` isn't a method of `IsList`?
2022-11-11 01:09:40 +0100 <Axman6> with what type?
2022-11-11 01:09:56 +0100motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 248 seconds)
2022-11-11 01:10:05 +0100 <Axman6> not all IsList instances are indexable with Ints meaningfully, Map has an IsList instance
2022-11-11 01:10:11 +0100 <Axman6> and HashMap
2022-11-11 01:10:41 +0100 <zzz> oh i see
2022-11-11 01:10:46 +0100 <zzz> right ou are
2022-11-11 01:10:49 +0100Kaiepi(~Kaiepi@108.175.84.104) (Ping timeout: 260 seconds)
2022-11-11 01:11:01 +0100skiidly wonders what the `fromListN' was for
2022-11-11 01:11:26 +0100 <c_wraith> I guess for literals where the length is known at compile time
2022-11-11 01:11:29 +0100 <dolio> Lets you allocate storage without using length.
2022-11-11 01:11:42 +0100 <Axman6> it's for list literals, if you have OverloadedLists enabled, the compiler will replace [1,2,3] with fromListN 3 [1,2,3]
2022-11-11 01:11:44 +0100 <ski> ah. makes sense
2022-11-11 01:11:55 +0100 <zzz> i guess i was expecting `list ! n = toList list !! n
2022-11-11 01:12:07 +0100 <ski> yea, but it had both `fromList' and `fromListN'
2022-11-11 01:12:50 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-11 01:13:13 +0100 <Axman6> sometimes the length isn't known I guess
2022-11-11 01:13:19 +0100 <zzz> ^
2022-11-11 01:13:22 +0100InstX1(~Liam@2603:3017:1052:8000:70c9:7477:6d43:4c0d)
2022-11-11 01:13:27 +0100 <monochrom> Right, IsList is for converting a list-syntax literal to your type, not for accessing your type.
2022-11-11 01:14:14 +0100 <monochrom> To be sure the wording "is list" doesn't say all that.
2022-11-11 01:14:29 +0100 <monochrom> Generally don't trust human-chosen names.
2022-11-11 01:14:33 +0100 <geekosaur> was cribbed from IsString for OverloadedStrings
2022-11-11 01:14:55 +0100 <geekosaur> then again the granddady of these uses Num
2022-11-11 01:15:29 +0100 <zzz> OverloadedNumbers
2022-11-11 01:17:13 +0100Inst(~Liam@c-73-156-203-163.hsd1.fl.comcast.net) (Ping timeout: 252 seconds)
2022-11-11 01:17:56 +0100 <hpc> that should be an extension just so we can turn off numeric literals working sanely :D
2022-11-11 01:18:15 +0100 <hpc> like now NPlusK became an "extension"
2022-11-11 01:19:10 +0100 <davean> {-# LANGUAGE NoNumbers #-}
2022-11-11 01:19:21 +0100Feuermagier(~Feuermagi@user/feuermagier)
2022-11-11 01:19:26 +0100 <davean> Just turn of numeric litterals entirely.
2022-11-11 01:20:25 +0100ski. o O ( s/extension/intension/ ? )
2022-11-11 01:21:19 +0100werneta(~werneta@137.79.216.58) (Ping timeout: 260 seconds)
2022-11-11 01:21:42 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:a09f:2a20:ea37:7e61)
2022-11-11 01:22:18 +0100 <Axman6> {-# LANGUAGE ChurchNumeralsOnly #-}
2022-11-11 01:23:02 +0100 <Axman6> (\f x -> f . f . f $ x) + (\f x -> f . f . f . f . f $ x)
2022-11-11 01:23:21 +0100 <hpc> {-# LANGUAGE ChurchFloats #-}
2022-11-11 01:23:27 +0100 <hpc> gotta build all your numbers out of epsilon
2022-11-11 01:23:44 +0100motherfsck(~motherfsc@user/motherfsck)
2022-11-11 01:23:48 +0100 <Axman6> ... it's only just occured to me that if you have (.), then chruch numerals just become (\f -> f.f.f)
2022-11-11 01:24:03 +0100 <Axman6> am I dumb? Perhaps
2022-11-11 01:25:37 +0100Tuplanolla(~Tuplanoll@91-159-68-194.elisa-laajakaista.fi) (Quit: Leaving.)
2022-11-11 01:25:52 +0100 <dolio> That's because you picked the wrong argument order.
2022-11-11 01:26:01 +0100caubert(~caubert@user/caubert) (Read error: Software caused connection abort)
2022-11-11 01:26:03 +0100 <dolio> You should pick the one that forces you to write eta-long numerals.
2022-11-11 01:26:20 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:a09f:2a20:ea37:7e61) (Ping timeout: 260 seconds)
2022-11-11 01:27:20 +0100 <dolio> So you never get confused about different normal forms.
2022-11-11 01:28:23 +0100caubert(~caubert@user/caubert)
2022-11-11 01:30:03 +0100chomwitt(~chomwitt@2a02:587:7a0a:c00:1ac0:4dff:fedb:a3f1) (Ping timeout: 248 seconds)
2022-11-11 01:31:42 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-11-11 01:32:37 +0100 <int-e> > let church n f x = iterate f x !! n in church 4 (church 3) (+1) 0
2022-11-11 01:32:38 +0100 <lambdabot> 81
2022-11-11 01:34:02 +0100caryhartline(~caryhartl@2600:1700:2d0:8d30:9887:b652:159c:4200)
2022-11-11 01:38:09 +0100chromoblob(~user@37.113.164.122)
2022-11-11 01:40:01 +0100 <zzz> i like this talk https://www.youtube.com/watch?v=jFk1qpr1ytk is this an abandoned idea?
2022-11-11 01:43:22 +0100chromoblob(~user@37.113.164.122) (Ping timeout: 268 seconds)
2022-11-11 01:46:10 +0100InstX1(~Liam@2603:3017:1052:8000:70c9:7477:6d43:4c0d) (Ping timeout: 260 seconds)
2022-11-11 01:54:44 +0100elevenkb(~elevenkb@105.184.125.168)
2022-11-11 02:00:24 +0100Neuromancer(~Neuromanc@user/neuromancer) (Ping timeout: 260 seconds)
2022-11-11 02:10:12 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-11-11 02:12:23 +0100jargon(~jargon@184.101.188.35)
2022-11-11 02:15:20 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
2022-11-11 02:15:30 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-11-11 02:16:19 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-11-11 02:18:45 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-11-11 02:18:45 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-11-11 02:19:53 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-11-11 02:19:59 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-11-11 02:21:46 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-11 02:22:13 +0100catern(~sbaugh@2604:2000:8fc0:b:a9c7:866a:bf36:3407)
2022-11-11 02:26:32 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds)
2022-11-11 02:27:41 +0100xff0x(~xff0x@2405:6580:b080:900:6c11:61e0:a694:e7f1) (Ping timeout: 252 seconds)
2022-11-11 02:28:05 +0100Ranhir(~Ranhir@157.97.53.139) (Read error: Connection reset by peer)
2022-11-11 02:30:09 +0100nate4(~nate@98.45.169.16)
2022-11-11 02:31:47 +0100Ranhir(~Ranhir@157.97.53.139)
2022-11-11 02:35:19 +0100nate4(~nate@98.45.169.16) (Ping timeout: 252 seconds)
2022-11-11 02:37:35 +0100razetime(~quassel@117.193.0.120)
2022-11-11 02:39:01 +0100_xor(~xor@74.215.182.83) (Quit: brb)
2022-11-11 02:39:53 +0100_xor(~xor@74.215.182.83)
2022-11-11 02:40:43 +0100elevenkb(~elevenkb@105.184.125.168) (Ping timeout: 268 seconds)
2022-11-11 02:41:03 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Read error: Connection reset by peer)
2022-11-11 02:41:17 +0100Inst(~Liam@c-98-208-218-119.hsd1.fl.comcast.net)
2022-11-11 02:41:59 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-11 02:46:17 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Remote host closed the connection)
2022-11-11 02:46:52 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2022-11-11 02:53:00 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1)
2022-11-11 02:53:21 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-11 02:53:26 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2022-11-11 02:56:36 +0100erisco(~erisco@d24-141-66-165.home.cgocable.net) (Read error: Software caused connection abort)
2022-11-11 02:57:18 +0100causal(~user@50.35.83.177)
2022-11-11 02:59:16 +0100erisco(~erisco@d24-141-66-165.home.cgocable.net)
2022-11-11 03:06:49 +0100Kaiepi(~Kaiepi@108.175.84.104)
2022-11-11 03:12:09 +0100xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2022-11-11 03:12:44 +0100beteigeuze(~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 260 seconds)
2022-11-11 03:17:17 +0100califax(~califax@user/califx) (Ping timeout: 255 seconds)
2022-11-11 03:17:33 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-11-11 03:21:39 +0100califax(~califax@user/califx)
2022-11-11 03:23:12 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:a09f:2a20:ea37:7e61)
2022-11-11 03:27:40 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:a09f:2a20:ea37:7e61) (Ping timeout: 260 seconds)
2022-11-11 03:49:32 +0100Ranhir(~Ranhir@157.97.53.139) (Remote host closed the connection)
2022-11-11 03:57:04 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
2022-11-11 03:57:15 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-11 03:58:14 +0100Ranhir(~Ranhir@157.97.53.139)
2022-11-11 03:59:10 +0100berberman(~berberman@user/berberman) (Ping timeout: 260 seconds)
2022-11-11 03:59:21 +0100berberman_(~berberman@user/berberman)
2022-11-11 04:01:44 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
2022-11-11 04:04:40 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-11-11 04:04:40 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-11-11 04:04:40 +0100finn_elijaFinnElija
2022-11-11 04:06:15 +0100zebrag(~chris@user/zebrag)
2022-11-11 04:07:35 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-11-11 04:16:19 +0100td_(~td@83.135.9.55) (Ping timeout: 260 seconds)
2022-11-11 04:16:29 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-11 04:17:03 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-11-11 04:18:01 +0100td_(~td@83.135.9.13)
2022-11-11 04:18:09 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-11 04:18:17 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 246 seconds)
2022-11-11 04:20:00 +0100Kaiepi(~Kaiepi@108.175.84.104) (Ping timeout: 268 seconds)
2022-11-11 04:23:58 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1)
2022-11-11 04:27:33 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2022-11-11 04:30:20 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:a09f:2a20:ea37:7e61)
2022-11-11 04:31:10 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-11-11 04:31:17 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-11 04:31:36 +0100nate4(~nate@98.45.169.16)
2022-11-11 04:35:55 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds)
2022-11-11 04:37:27 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-11 04:43:49 +0100polo(~polo@pool-100-11-18-203.phlapa.fios.verizon.net)
2022-11-11 04:45:13 +0100moneyGuest647
2022-11-11 04:50:30 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds)
2022-11-11 04:52:49 +0100rekahsoft(~rekahsoft@bras-base-wdston4533w-grc-02-142-113-160-156.dsl.bell.ca)
2022-11-11 04:53:54 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-11 04:54:44 +0100polo(~polo@pool-100-11-18-203.phlapa.fios.verizon.net) (Quit: Textual IRC Client: www.textualapp.com)
2022-11-11 05:00:39 +0100razetime(~quassel@117.193.0.120) (Ping timeout: 260 seconds)
2022-11-11 05:02:43 +0100mcglk(~mcglk@131.191.49.120) (Ping timeout: 252 seconds)
2022-11-11 05:11:50 +0100mcglk(~mcglk@131.191.49.120)
2022-11-11 05:13:48 +0100danza(~francesco@45.red-79-153-2.dynamicip.rima-tde.net) (Read error: Connection timed out)
2022-11-11 05:15:41 +0100oo_miguel[m](~oomiguelm@2001:470:69fc:105::1:5ab0) (Read error: Software caused connection abort)
2022-11-11 05:15:53 +0100oo_miguel[m](~oomiguelm@2001:470:69fc:105::1:5ab0)
2022-11-11 05:18:44 +0100vglfr(~vglfr@145.224.100.100) (Ping timeout: 260 seconds)
2022-11-11 05:20:09 +0100TonyStone(~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) (Remote host closed the connection)
2022-11-11 05:21:04 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
2022-11-11 05:24:15 +0100TonyStone(~TonyStone@cpe-74-76-51-197.nycap.res.rr.com)
2022-11-11 05:27:29 +0100nate4(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2022-11-11 05:27:55 +0100bilegeek(~bilegeek@2600:1008:b023:888a:c234:abac:d5ca:c1d6)
2022-11-11 05:28:55 +0100TonyStone(~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) (Remote host closed the connection)
2022-11-11 05:31:20 +0100TonyStone(~TonyStone@cpe-74-76-51-197.nycap.res.rr.com)
2022-11-11 05:31:59 +0100razetime(~quassel@117.193.0.120)
2022-11-11 05:34:15 +0100chromoblob(~user@37.113.164.122)
2022-11-11 05:37:45 +0100cawfee(~root@2406:3003:2077:2758::babe) (Read error: Software caused connection abort)
2022-11-11 05:38:16 +0100nate4(~nate@98.45.169.16)
2022-11-11 05:39:30 +0100YoungFrog(~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) (Read error: Software caused connection abort)
2022-11-11 05:39:51 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-11 05:41:41 +0100cawfee(~root@2406:3003:2077:2758::babe)
2022-11-11 05:42:47 +0100YoungFrog(~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be)
2022-11-11 05:42:52 +0100nate4(~nate@98.45.169.16) (Ping timeout: 252 seconds)
2022-11-11 05:44:31 +0100zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-11-11 05:45:43 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds)
2022-11-11 05:49:01 +0100listeners(~sdenynine@user/mixfix41)
2022-11-11 05:52:37 +0100bloomndoom(~bloomndoo@115.240.194.54)
2022-11-11 05:55:33 +0100jakalx(~jakalx@base.jakalx.net) ()
2022-11-11 05:57:35 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-11 05:59:27 +0100jinsun__(~jinsun@user/jinsun)
2022-11-11 05:59:28 +0100jinsun(~jinsun@user/jinsun) (Killed (molybdenum.libera.chat (Nickname regained by services)))
2022-11-11 05:59:28 +0100jinsun__jinsun
2022-11-11 06:02:28 +0100jakalx(~jakalx@base.jakalx.net)
2022-11-11 06:05:24 +0100 <bloomndoom> im getting this error when installing haskell through ghcup `curl: (56) OpenSSL SSL_read: error:0A000126:SSL routines::unexpected eof while reading, errno 0
2022-11-11 06:05:24 +0100 <bloomndoom> "curl -Lf https://downloads.haskell.org/~ghcup/0.1.18.0/x86_64-linux-ghcup-0.1.18.0" failed!` i'm on arch with openssl version 3.0.7
2022-11-11 06:14:44 +0100bloomndoom(~bloomndoo@115.240.194.54) (Ping timeout: 260 seconds)
2022-11-11 06:26:47 +0100 <Axman6> @tell bloomndoom Did you try retrying the install command? I ran that curl line on my mac and it downloaded successfully; could just be a network issue
2022-11-11 06:26:48 +0100 <lambdabot> Consider it noted.
2022-11-11 06:26:52 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
2022-11-11 06:27:05 +0100nate4(~nate@98.45.169.16)
2022-11-11 06:27:34 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2022-11-11 06:27:49 +0100fluxit(~fluxit@2604:a880:1:20::ab:1001) (Read error: Software caused connection abort)
2022-11-11 06:28:47 +0100ormaajormaaj2
2022-11-11 06:28:57 +0100fluxit(~fluxit@2604:a880:1:20::ab:1001)
2022-11-11 06:30:29 +0100chromoblob(~user@37.113.164.122) (Ping timeout: 260 seconds)
2022-11-11 06:31:51 +0100polo(~polo@pool-100-11-18-203.phlapa.fios.verizon.net)
2022-11-11 06:31:57 +0100polo(~polo@pool-100-11-18-203.phlapa.fios.verizon.net) (Changing host)
2022-11-11 06:31:57 +0100polo(~polo@user/polo)
2022-11-11 06:32:00 +0100polomoney
2022-11-11 06:32:46 +0100bloomndoom(~bloomndoo@115.240.194.54)
2022-11-11 06:32:47 +0100bloomndoom(~bloomndoo@115.240.194.54) (Client Quit)
2022-11-11 06:33:00 +0100bloomndoom(~bloomndoo@115.240.194.54)
2022-11-11 06:33:05 +0100bloomndoom(~bloomndoo@115.240.194.54) (Client Quit)
2022-11-11 06:33:24 +0100bloomndoom(~bloomndoo@115.240.194.54)
2022-11-11 06:33:25 +0100bloomndoom(~bloomndoo@115.240.194.54) (Client Quit)
2022-11-11 06:33:39 +0100bloomndoom(~bloomndoo@115.240.194.54)
2022-11-11 06:33:41 +0100bloomndoom(~bloomndoo@115.240.194.54) (Client Quit)
2022-11-11 06:35:00 +0100mikoto-chan(~mikoto-ch@85-76-19-119-nat.elisa-mobile.fi)
2022-11-11 06:35:44 +0100nate4(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2022-11-11 06:37:16 +0100bloomndoom(~bloomndoo@115.240.194.54)
2022-11-11 06:40:16 +0100zaquest(~notzaques@5.130.79.72)
2022-11-11 06:42:44 +0100bloomndoom(~bloomndoo@115.240.194.54) (Ping timeout: 260 seconds)
2022-11-11 06:43:10 +0100money(~polo@user/polo) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-11-11 06:44:05 +0100polo(~polo@pool-100-11-18-203.phlapa.fios.verizon.net)
2022-11-11 06:54:46 +0100chromoblob(~user@37.113.164.122)
2022-11-11 06:54:55 +0100polo(~polo@pool-100-11-18-203.phlapa.fios.verizon.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-11-11 06:56:47 +0100ormaaj2(~ormaaj@user/ormaaj) (Quit: Reconnecting)
2022-11-11 06:57:19 +0100ormaaj2(~ormaaj@user/ormaaj)
2022-11-11 06:59:02 +0100ormaaj2ormaaj
2022-11-11 07:00:51 +0100Kaiepi(~Kaiepi@108.175.84.104)
2022-11-11 07:05:53 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds)
2022-11-11 07:06:07 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-11 07:07:20 +0100phma(~phma@host-67-44-208-167.hnremote.net) (Read error: Connection reset by peer)
2022-11-11 07:08:20 +0100phma(phma@2001:5b0:2172:9238:1c11:6352:3843:cc13)
2022-11-11 07:09:31 +0100haask(~harry@user/haask)
2022-11-11 07:13:54 +0100chromoblob(~user@37.113.164.122) (Ping timeout: 268 seconds)
2022-11-11 07:19:54 +0100vn36(~vn36@123.63.203.210)
2022-11-11 07:23:13 +0100chromoblob(~user@37.113.164.122)
2022-11-11 07:24:37 +0100berberman_(~berberman@user/berberman) (Ping timeout: 252 seconds)
2022-11-11 07:25:03 +0100polo(~polo@pool-100-11-18-203.phlapa.fios.verizon.net)
2022-11-11 07:31:11 +0100polo(~polo@pool-100-11-18-203.phlapa.fios.verizon.net) (Ping timeout: 276 seconds)
2022-11-11 07:31:13 +0100mikoto-chan(~mikoto-ch@85-76-19-119-nat.elisa-mobile.fi) (Ping timeout: 252 seconds)
2022-11-11 07:34:41 +0100bgs(~bgs@212-85-160-171.dynamic.telemach.net)
2022-11-11 07:37:02 +0100zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2022-11-11 07:37:55 +0100chromoblob(~user@37.113.164.122) (Ping timeout: 260 seconds)
2022-11-11 07:38:24 +0100zaquest(~notzaques@5.130.79.72)
2022-11-11 07:42:45 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving)
2022-11-11 07:43:12 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2022-11-11 07:44:36 +0100akegalj(~akegalj@93-138-111-227.adsl.net.t-com.hr)
2022-11-11 07:47:33 +0100bilegeek(~bilegeek@2600:1008:b023:888a:c234:abac:d5ca:c1d6) (Remote host closed the connection)
2022-11-11 07:47:59 +0100bilegeek(~bilegeek@2600:1008:b023:888a:c234:abac:d5ca:c1d6)
2022-11-11 07:51:17 +0100berberman(~berberman@user/berberman)
2022-11-11 07:54:29 +0100rekahsoft(~rekahsoft@bras-base-wdston4533w-grc-02-142-113-160-156.dsl.bell.ca) (Ping timeout: 260 seconds)
2022-11-11 07:54:53 +0100nate4(~nate@98.45.169.16)
2022-11-11 07:57:35 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-11 07:59:22 +0100cytokine_storm(~cytokine_@user/cytokine-storm/x-1083107)
2022-11-11 07:59:44 +0100nate4(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2022-11-11 08:00:08 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 252 seconds)
2022-11-11 08:00:53 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-11-11 08:02:37 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
2022-11-11 08:04:06 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-11 08:05:16 +0100kenran(~user@user/kenran)
2022-11-11 08:09:59 +0100bilegeek_(~bilegeek@168.sub-174-208-233.myvzw.com)
2022-11-11 08:10:06 +0100machinedgod(~machinedg@clnet-p10-126.ikbnet.co.at)
2022-11-11 08:10:33 +0100caryhartline(~caryhartl@2600:1700:2d0:8d30:9887:b652:159c:4200) (Quit: caryhartline)
2022-11-11 08:10:49 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 260 seconds)
2022-11-11 08:11:10 +0100cytokine_storm(~cytokine_@user/cytokine-storm/x-1083107) (Ping timeout: 260 seconds)
2022-11-11 08:11:24 +0100xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 260 seconds)
2022-11-11 08:11:46 +0100cytokine_storm(~cytokine_@user/cytokine-storm/x-1083107)
2022-11-11 08:12:02 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-11-11 08:12:23 +0100bilegeek(~bilegeek@2600:1008:b023:888a:c234:abac:d5ca:c1d6) (Ping timeout: 255 seconds)
2022-11-11 08:13:06 +0100xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2022-11-11 08:14:31 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-11-11 08:18:24 +0100shriekingnoise(~shrieking@186.137.167.202) (Quit: Quit)
2022-11-11 08:23:54 +0100MajorBiscuit(~MajorBisc@86-88-79-148.fixed.kpn.net)
2022-11-11 08:25:49 +0100berberman_(~berberman@user/berberman)
2022-11-11 08:26:10 +0100berberman(~berberman@user/berberman) (Ping timeout: 252 seconds)
2022-11-11 08:26:36 +0100chele(~chele@user/chele)
2022-11-11 08:30:37 +0100berberman_(~berberman@user/berberman) (Ping timeout: 252 seconds)
2022-11-11 08:31:33 +0100phma(phma@2001:5b0:2172:9238:1c11:6352:3843:cc13) (Read error: Connection reset by peer)
2022-11-11 08:32:26 +0100phma(~phma@host-67-44-208-37.hnremote.net)
2022-11-11 08:37:16 +0100zeenk(~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494)
2022-11-11 08:38:18 +0100jakalx(~jakalx@base.jakalx.net) ()
2022-11-11 08:38:40 +0100berberman(~berberman@user/berberman)
2022-11-11 08:40:19 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:50d2:f70b:6128:ed96)
2022-11-11 08:42:58 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-11 08:44:25 +0100jakalx(~jakalx@base.jakalx.net)
2022-11-11 08:44:30 +0100cytokine_storm(~cytokine_@user/cytokine-storm/x-1083107) (Ping timeout: 252 seconds)
2022-11-11 08:44:55 +0100cytokine_storm(~cytokine_@user/cytokine-storm/x-1083107)
2022-11-11 08:45:30 +0100jco(~jco@90-228-194-139-no542.tbcn.telia.com)
2022-11-11 08:45:34 +0100 <tomsmeding> I am most amused by there being an error but it also giving errno=0
2022-11-11 08:45:35 +0100titibandit(~titibandi@xdsl-87-78-8-6.nc.de)
2022-11-11 08:45:39 +0100 <jco> :q
2022-11-11 08:45:40 +0100jco(~jco@90-228-194-139-no542.tbcn.telia.com) (Client Quit)
2022-11-11 08:46:16 +0100 <tomsmeding> reminds me of an error my friend once got from a Go application: "Error: http.client.CannotSendRequest: Request-sent"
2022-11-11 08:46:24 +0100MajorBiscuit(~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 260 seconds)
2022-11-11 08:46:52 +0100mncheck(~mncheck@193.224.205.254)
2022-11-11 08:48:10 +0100MajorBiscuit(~MajorBisc@c-001-027-007.client.tudelft.eduvpn.nl)
2022-11-11 08:50:06 +0100vn36(~vn36@123.63.203.210) (Ping timeout: 268 seconds)
2022-11-11 08:55:29 +0100derpadmin(~Anonymous@homebase.200013.net) (Quit: leaving)
2022-11-11 08:57:37 +0100CiaoSen(~Jura@p200300c9571247002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-11-11 09:00:44 +0100jpds2(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-11-11 09:01:53 +0100jpds2(~jpds@gateway/tor-sasl/jpds)
2022-11-11 09:03:56 +0100cytokine_storm(~cytokine_@user/cytokine-storm/x-1083107) (Quit: Quit)
2022-11-11 09:04:23 +0100vglfr(~vglfr@145.224.100.100)
2022-11-11 09:05:35 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-11-11 09:10:22 +0100bilegeek_bilegeek
2022-11-11 09:10:27 +0100cfricke(~cfricke@user/cfricke)
2022-11-11 09:13:17 +0100InstX1(~Liam@c-98-208-218-119.hsd1.fl.comcast.net)
2022-11-11 09:14:22 +0100chomwitt(~chomwitt@2a02:587:7a0a:c00:1ac0:4dff:fedb:a3f1)
2022-11-11 09:14:59 +0100Inst(~Liam@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 260 seconds)
2022-11-11 09:18:55 +0100`2jt(~jtomas@191.red-88-17-199.dynamicip.rima-tde.net)
2022-11-11 09:18:58 +0100`2jt(~jtomas@191.red-88-17-199.dynamicip.rima-tde.net) (Remote host closed the connection)
2022-11-11 09:19:06 +0100acidjnk(~acidjnk@p200300d6e7137a38458dfbf66917fb17.dip0.t-ipconnect.de)
2022-11-11 09:19:59 +0100vn36(~vn36@123.63.203.210)
2022-11-11 09:23:23 +0100berberman_(~berberman@user/berberman)
2022-11-11 09:24:31 +0100berberman(~berberman@user/berberman) (Ping timeout: 252 seconds)
2022-11-11 09:31:28 +0100Guest75(~Guest75@178.141.177.81)
2022-11-11 09:31:54 +0100 <Guest75> Hi. How do I properly add category-extras to package.yaml? After I just added it regularly, stack says to me:
2022-11-11 09:31:56 +0100 <Guest75>     category-extras needed, but the stack configuration has no specified version (latest matching version is 1.0.2)
2022-11-11 09:32:16 +0100 <Guest75> adding == 1.0.2 doesn't help either
2022-11-11 09:33:36 +0100vpan(~0@212.117.1.172)
2022-11-11 09:36:07 +0100Neuromancer(~Neuromanc@user/neuromancer)
2022-11-11 09:39:33 +0100nate4(~nate@98.45.169.16)
2022-11-11 09:40:39 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-11-11 09:42:53 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-11-11 09:42:53 +0100ozkutuk(~ozkutuk@176.240.173.153) (Read error: Connection reset by peer)
2022-11-11 09:43:29 +0100ft(~ft@p508dbd59.dip0.t-ipconnect.de) (Quit: leaving)
2022-11-11 09:44:44 +0100nate4(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2022-11-11 09:54:32 +0100vn36(~vn36@123.63.203.210) (Ping timeout: 255 seconds)
2022-11-11 09:54:46 +0100berberman_(~berberman@user/berberman) (Ping timeout: 252 seconds)
2022-11-11 09:55:50 +0100 <tomsmeding> Guest75: the "resolver set" used by 'stack' doesn't include every package on hackage
2022-11-11 09:56:05 +0100 <Guest75> aha...
2022-11-11 09:56:09 +0100 <tomsmeding> does stack not give you some line to add to the extra-deps section in your stack.yaml?
2022-11-11 09:58:38 +0100 <Guest75> yes. I were just scared by a list of things it asks to add after I do that:
2022-11-11 09:58:42 +0100berberman(~berberman@user/berberman)
2022-11-11 09:58:50 +0100 <Guest75> https://paste.tomsmeding.com/w1J3XUxs
2022-11-11 09:59:00 +0100 <tomsmeding> hah
2022-11-11 09:59:10 +0100 <tomsmeding> apparently that depends on a whole bunch of stuff that's not on Stackage
2022-11-11 09:59:54 +0100 <tomsmeding> what you're doing by adding those lines to extra-deps is telling stack "It's fine, you don't have a guaranteed-working version of those packages on Stackage, but just use these, it'll be fine"
2022-11-11 10:00:37 +0100 <tomsmeding> the version ranges still have to match -- each of those packages defines version ranges of its dependencies that it works with, and those will still be checked for consistency (I think)
2022-11-11 10:00:45 +0100 <tomsmeding> (if they aren't that's an issue)
2022-11-11 10:00:56 +0100 <tomsmeding> so it's relatively safe
2022-11-11 10:01:43 +0100 <Guest75> https://paste.tomsmeding.com/q6aslACB
2022-11-11 10:01:54 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-11 10:02:01 +0100 <Guest75> even more stuff. but after I added I've got this
2022-11-11 10:02:07 +0100alphabeta(~kilolympu@213.144.144.24) (Read error: Connection reset by peer)
2022-11-11 10:02:14 +0100 <tomsmeding> Guest75: look at your list, you added those packages twice
2022-11-11 10:02:25 +0100 <Guest75> yes I thought so :D
2022-11-11 10:02:36 +0100 <tomsmeding> try removing one of the two
2022-11-11 10:02:47 +0100 <tomsmeding> y'know, you can also use cabal directly and skip stack :p
2022-11-11 10:02:56 +0100 <tomsmeding> cabal just pulls from hackage directly
2022-11-11 10:03:23 +0100vn36(~vn36@123.63.203.210)
2022-11-11 10:04:15 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-11-11 10:04:27 +0100 <Guest75> https://paste.tomsmeding.com/oW4n32QM
2022-11-11 10:04:35 +0100 <Guest75> yes there's still more work to do, perhaps
2022-11-11 10:04:57 +0100 <Guest75> I'll try later to read up these messages
2022-11-11 10:05:38 +0100 <tomsmeding> Guest75: meh, looks like stack gave you some conflicting versions
2022-11-11 10:05:45 +0100 <Guest75> yes
2022-11-11 10:05:54 +0100 <tomsmeding> what's your list of direct dependencies
2022-11-11 10:06:01 +0100 <Guest75> in the end of the day it seems that I should reconcile the conflict between deps myself
2022-11-11 10:06:08 +0100 <tomsmeding> and what's your stackage LTS resolver
2022-11-11 10:06:37 +0100 <Guest75> https://paste.tomsmeding.com/vO1RRHpO
2022-11-11 10:07:01 +0100 <Guest75> not sure on the resolver
2022-11-11 10:07:08 +0100 <tomsmeding> Guest75: that's in stack.yaml
2022-11-11 10:07:11 +0100 <Guest75> I actually did "stack new ..." recently
2022-11-11 10:07:19 +0100 <Guest75> https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/19/31.yaml
2022-11-11 10:07:33 +0100 <Guest75> maybe it has updated
2022-11-11 10:07:47 +0100 <Guest75> or the problem is that I use Stack from Ubuntu's standard packages
2022-11-11 10:08:02 +0100 <Guest75> (as opposed to installing it manually)
2022-11-11 10:08:11 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection)
2022-11-11 10:08:39 +0100bilegeek(~bilegeek@168.sub-174-208-233.myvzw.com) (Quit: Leaving)
2022-11-11 10:08:47 +0100 <tomsmeding> nah that's not the problem
2022-11-11 10:09:09 +0100 <tomsmeding> problem is that stack doesn't properly solve versions for you, because it assumes you only need packages from Stackage, which is one set of compatible versions
2022-11-11 10:09:10 +0100 <Guest75> seems this one: https://github.com/commercialhaskell/stackage-snapshots/blob/master/lts/19/32.yaml
2022-11-11 10:09:13 +0100 <Guest75> is also available
2022-11-11 10:09:16 +0100berberman_(~berberman@user/berberman)
2022-11-11 10:09:43 +0100 <Guest75> ok, how do we fix that?
2022-11-11 10:10:18 +0100berberman(~berberman@user/berberman) (Ping timeout: 252 seconds)
2022-11-11 10:11:03 +0100 <tomsmeding> heh okay it's not entirely stack's fault
2022-11-11 10:11:04 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-11-11 10:11:25 +0100 <tomsmeding> there is no set of compatible versions of your dependencies with ghc 8.10.7, 9.0.2 or 9.2.4
2022-11-11 10:11:40 +0100 <sm> when you have a very gnarly list of deps to add, it's a sign you're using a resolver that's far from what the project was last built with, and you should probably use a different one
2022-11-11 10:11:47 +0100 <Guest75> but I only need category-extras
2022-11-11 10:11:59 +0100 <tomsmeding> category-extras depends on representable-functors which wants a very old 'transformers'
2022-11-11 10:12:08 +0100 <Guest75> sm: I suspect it's old, yes
2022-11-11 10:12:18 +0100 <Guest75> i.e. it needs old stuff
2022-11-11 10:12:32 +0100tessier(~treed@98.171.210.130) (Ping timeout: 255 seconds)
2022-11-11 10:13:03 +0100 <Guest75> might be an option to just copy pieces of code from category-extras to own files instead
2022-11-11 10:13:23 +0100 <tomsmeding> sm: does stack have allow-newer
2022-11-11 10:13:49 +0100 <sm> yes, in stack.yaml only (no cli option)
2022-11-11 10:13:59 +0100tcard(~tcard@2400:4051:5801:7500:19ce:ed82:2ab7:90f9) (Quit: Leaving)
2022-11-11 10:14:06 +0100 <sm> Guest75: you could show us what you're trying to build ?
2022-11-11 10:14:18 +0100 <tomsmeding> sm: https://paste.tomsmeding.com/vO1RRHpO
2022-11-11 10:14:29 +0100 <tomsmeding> that has no install plan under 8.8.4 or newer, didn't check older
2022-11-11 10:14:57 +0100 <tomsmeding> and if I use cabal --allow-newer=representable-functors:'*' it doesn't build
2022-11-11 10:15:14 +0100 <Guest75> I'm trying to find a way to play around with that "bifunctors": https://bartoszmilewski.com/2015/02/03/functoriality/bifunctor/
2022-11-11 10:15:42 +0100 <Guest75> well that's clearly stuff from 2015
2022-11-11 10:16:28 +0100 <tomsmeding> lol according to https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/libraries/version-history you need to go back to ghc-7.8.4 to get transformers<4
2022-11-11 10:16:44 +0100 <tomsmeding> that's quite old
2022-11-11 10:16:57 +0100 <Guest75> that means something
2022-11-11 10:17:08 +0100 <Guest75> i.e. that it isn't used much
2022-11-11 10:17:17 +0100 <tomsmeding> this particular library definitely isn't used much
2022-11-11 10:17:46 +0100 <tomsmeding> I think you can count the number of people still using ghc-7.* on one hand
2022-11-11 10:18:00 +0100 <Guest75> makes sense
2022-11-11 10:18:20 +0100 <Guest75> though I really want to look into the future more than past
2022-11-11 10:18:25 +0100kenran`(~user@user/kenran)
2022-11-11 10:18:33 +0100 <Guest75> (when it comes to code)
2022-11-11 10:18:42 +0100 <tomsmeding> Guest75: looks like category-extraas doesn't have any code of itself though, it just depends on other stuff
2022-11-11 10:18:53 +0100 <tomsmeding> you _may_ have some luck selecting only its dependencies that you actually need
2022-11-11 10:18:58 +0100 <tomsmeding> though they may all be old
2022-11-11 10:18:59 +0100 <Guest75> so better just to copy stuff
2022-11-11 10:19:05 +0100 <Guest75> yes I understand
2022-11-11 10:19:41 +0100 <Guest75> in the worst case scenario I'll end up maintaining it
2022-11-11 10:20:00 +0100tcard(~tcard@2400:4051:5801:7500:19ce:ed82:2ab7:90f9)
2022-11-11 10:20:04 +0100 <Guest75> (if I will agree with importance of Bifunctors though)
2022-11-11 10:20:12 +0100kenran(~user@user/kenran) (Ping timeout: 252 seconds)
2022-11-11 10:20:25 +0100 <tomsmeding> I mean, Data.Bifunctor is now in base
2022-11-11 10:20:30 +0100 <Guest75> ah
2022-11-11 10:20:33 +0100phma(~phma@host-67-44-208-37.hnremote.net) (Read error: Connection reset by peer)
2022-11-11 10:20:33 +0100 <tomsmeding> not sure how much you need of the other stuff
2022-11-11 10:20:38 +0100 <Guest75> oops :-)
2022-11-11 10:20:38 +0100 <tomsmeding> https://hackage.haskell.org/package/base-4.17.0.0/docs/Data-Bifunctor.html#t:Bifunctor
2022-11-11 10:20:56 +0100 <tomsmeding> they were considered useful :)
2022-11-11 10:21:15 +0100smused first just the other day
2022-11-11 10:21:29 +0100 <bjourne> what does !Foo in type declarations mean?
2022-11-11 10:21:31 +0100tomsmedinguses first and second regularly, and bimap sometimes
2022-11-11 10:21:31 +0100 <Guest75> okay. thanks! cool
2022-11-11 10:21:41 +0100 <tomsmeding> but not sure I'm doing much with the full power of bifunctors
2022-11-11 10:21:56 +0100 <tomsmeding> bjourne: in a data type declaration, like `data Foo = MkFoo !Int`?
2022-11-11 10:22:02 +0100 <tomsmeding> that's a strict field
2022-11-11 10:22:08 +0100crazazy(~user@130.89.173.127)
2022-11-11 10:22:10 +0100 <tomsmeding> i.e. that field cannot be `undefined`
2022-11-11 10:22:42 +0100razetime(~quassel@117.193.0.120) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-11-11 10:22:48 +0100phma(~phma@2001:5b0:215d:f2c8:303a:6068:9aac:98fb)
2022-11-11 10:23:04 +0100 <tomsmeding> (but note that if you write e.g. `data Foo = MkFoo !(Maybe Int)`, then the Just/Nothing constructor will be evaluated, but not necessarily the contained Int)
2022-11-11 10:23:40 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-11-11 10:25:08 +0100ub(~Thunderbi@178.115.32.107.wireless.dyn.drei.com)
2022-11-11 10:25:51 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2022-11-11 10:26:26 +0100ubert(~Thunderbi@178.165.160.24.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
2022-11-11 10:26:26 +0100ububert
2022-11-11 10:34:44 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-11-11 10:35:58 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2022-11-11 10:36:10 +0100vn36(~vn36@123.63.203.210) (Ping timeout: 268 seconds)
2022-11-11 10:39:48 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-11-11 10:42:43 +0100fserucas(~fserucas@2001:8a0:6d00:2500:4717:7619:c4e9:3aa2)
2022-11-11 10:42:55 +0100fserucas(~fserucas@2001:8a0:6d00:2500:4717:7619:c4e9:3aa2) (Client Quit)
2022-11-11 10:43:10 +0100fserucas|eod(~fserucas|@2001:8a0:6d00:2500:4717:7619:c4e9:3aa2)
2022-11-11 10:43:28 +0100cstml(~cstml@user/cstml)
2022-11-11 10:54:23 +0100Maeda(~Maeda@91-161-10-149.subs.proxad.net) (Quit: leaving)
2022-11-11 10:59:30 +0100Maeda(~Maeda@91-161-10-149.subs.proxad.net)
2022-11-11 10:59:33 +0100Guest|19(~Guest|19@39.42.139.200)
2022-11-11 11:00:15 +0100 <Guest|19> cabal : The term 'cabal' is not recognized as the name of a cmdlet, function, script file, or operable program. Check
2022-11-11 11:00:16 +0100 <Guest|19> the spelling of the name, or if a path was included, verify that the path is correct and try again.
2022-11-11 11:00:16 +0100 <Guest|19> At line:1 char:1
2022-11-11 11:00:17 +0100 <Guest|19> + cabal repl --build-depends filepath
2022-11-11 11:00:17 +0100 <Guest|19> + ~~~~~
2022-11-11 11:00:18 +0100 <Guest|19>     + CategoryInfo : ObjectNotFound: (cabal:String) [], CommandNotFoundException
2022-11-11 11:00:18 +0100 <Guest|19>     + FullyQualifiedErrorId : CommandNotFoundException
2022-11-11 11:00:23 +0100 <Guest|19> what should i do in this case
2022-11-11 11:02:47 +0100Maeda(~Maeda@91-161-10-149.subs.proxad.net) (Client Quit)
2022-11-11 11:03:04 +0100teo(~teo@user/teo)
2022-11-11 11:03:22 +0100 <[exa]> Guest|19: that's from powershell?
2022-11-11 11:03:40 +0100Maeda(~Maeda@91-161-10-149.subs.proxad.net)
2022-11-11 11:04:36 +0100Maeda(~Maeda@91-161-10-149.subs.proxad.net) (Remote host closed the connection)
2022-11-11 11:04:46 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:a09f:2a20:ea37:7e61) (Remote host closed the connection)
2022-11-11 11:05:29 +0100Maeda(~Maeda@91-161-10-149.subs.proxad.net)
2022-11-11 11:05:46 +0100xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 268 seconds)
2022-11-11 11:06:36 +0100chronon(~chronon@user/chronon) (Remote host closed the connection)
2022-11-11 11:06:50 +0100razetime(~quassel@117.193.0.120)
2022-11-11 11:07:35 +0100 <maerwald[m]> Restart powershell
2022-11-11 11:08:05 +0100 <Guest|19> yes that is from powershell
2022-11-11 11:08:23 +0100 <Guest|19> i tried restarting it a couple of time but I did not work
2022-11-11 11:08:53 +0100 <Guest|19> I think it is due to environmrnt variable
2022-11-11 11:09:24 +0100 <Guest|19> as if Environment variable is not correct
2022-11-11 11:09:54 +0100 <[exa]> yes, I'm not really aware much about PS internals but this looks like PATH is missing focr cabal binaries
2022-11-11 11:10:19 +0100 <[exa]> (how did you install cabal?)
2022-11-11 11:12:13 +0100 <Guest|19> i copied the link for ghcup installation from website and it did all the rest
2022-11-11 11:12:25 +0100chromoblob(~user@37.113.164.122)
2022-11-11 11:14:19 +0100 <maerwald[m]> [exa]: Guest|<int> is the nickname you get when you click on the help link on the ghcup website ;)
2022-11-11 11:14:32 +0100razetime_(~quassel@117.193.0.120)
2022-11-11 11:14:34 +0100razetime(~quassel@117.193.0.120) (Ping timeout: 260 seconds)
2022-11-11 11:14:43 +0100 <maerwald[m]> Guest|19: can you check your PATH?
2022-11-11 11:14:48 +0100 <maerwald[m]> Via GUI
2022-11-11 11:15:07 +0100 <Guest|19> i think it was not installed earlier... now I have run the command ghcup install cabal
2022-11-11 11:15:27 +0100 <Guest|19> in path in shows C: cabal
2022-11-11 11:15:34 +0100 <Guest|19> for cabal_dir
2022-11-11 11:15:38 +0100 <maerwald[m]> Oh, that's odd
2022-11-11 11:15:53 +0100 <maerwald[m]> What?
2022-11-11 11:16:21 +0100 <Guest|19> i think that error is somehow resolved :b
2022-11-11 11:20:25 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2022-11-11 11:24:25 +0100zeenk(~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Quit: Konversation terminated!)
2022-11-11 11:24:59 +0100 <bjourne> what could be the reason for the "show" function to enter an infinite loop?
2022-11-11 11:26:07 +0100gentauro(~gentauro@user/gentauro)
2022-11-11 11:26:15 +0100 <merijn> bjourne: You defined a recursive instance by accident :p
2022-11-11 11:26:23 +0100 <merijn> bjourne: How do you know it's an infinite loop?
2022-11-11 11:27:25 +0100 <bjourne> i dont
2022-11-11 11:28:14 +0100 <tomsmeding> bjourne: are you sure it's `show` that's looping, and not the computation that produces the value you're trying to show?
2022-11-11 11:28:21 +0100 <tomsmeding> % let x = x + 1 :: Int
2022-11-11 11:28:22 +0100 <yahb2> <no output>
2022-11-11 11:28:24 +0100 <tomsmeding> % show x
2022-11-11 11:28:26 +0100 <yahb2> <timeout>
2022-11-11 11:29:14 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2022-11-11 11:29:27 +0100 <tomsmeding> usually you can distinguish between those cases with seq
2022-11-11 11:29:31 +0100 <tomsmeding> % let x = x + 1 :: Int
2022-11-11 11:29:31 +0100 <yahb2> <no output>
2022-11-11 11:29:35 +0100 <tomsmeding> % let y = 42 :: Int
2022-11-11 11:29:35 +0100 <yahb2> <no output>
2022-11-11 11:29:43 +0100 <tomsmeding> % y `seq` ()
2022-11-11 11:29:43 +0100 <yahb2> ()
2022-11-11 11:29:51 +0100 <tomsmeding> % x `seq` ()
2022-11-11 11:29:53 +0100 <yahb2> <timeout>
2022-11-11 11:30:12 +0100 <tomsmeding> here you detect that x never produces any result without getting `show` involved
2022-11-11 11:32:11 +0100 <tomsmeding> maerwald[m]: I like that, sneaky hiding of information in an inconspicuous place
2022-11-11 11:32:39 +0100chromoblob(~user@37.113.164.122) (Ping timeout: 260 seconds)
2022-11-11 11:33:27 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-11 11:34:02 +0100 <bjourne> tomsmeding: yes
2022-11-11 11:34:31 +0100 <tomsmeding> bjourne: what type are you showing
2022-11-11 11:36:12 +0100 <bjourne> Node Range
2022-11-11 11:36:59 +0100 <tomsmeding> it's a custom type? Well, `show` is just an instance method, so whoever wrote that instance wrote the `show` function for it, and you could look there
2022-11-11 11:37:16 +0100 <tomsmeding> but I strongly suspect it's not `show` that's looping but the computation before it (remember, haskell is lazy)
2022-11-11 11:38:31 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-11-11 11:39:12 +0100 <bjourne> then how do i force it to fully evaluate the expression?
2022-11-11 11:40:16 +0100Guest|19(~Guest|19@39.42.139.200) (Quit: Connection closed)
2022-11-11 11:43:15 +0100chromoblob(~user@37.113.164.122)
2022-11-11 11:43:44 +0100jmd_(~jmdaemon@user/jmdaemon) (Ping timeout: 260 seconds)
2022-11-11 11:47:31 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:50d2:f70b:6128:ed96) (Ping timeout: 252 seconds)
2022-11-11 11:47:34 +0100 <tomsmeding> bjourne: "thing `seq` ()" completes?
2022-11-11 11:48:04 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:c3bb:6c84:6165:ec98)
2022-11-11 11:48:38 +0100 <tomsmeding> you can import Control.DeepSeq (from the 'deepseq' package), derive NFData instances for the types in question, and then use 'force'
2022-11-11 11:48:38 +0100 <bjourne> yes
2022-11-11 11:48:54 +0100 <tomsmeding> that's full evaluation instead of only the top-most layer (called WHNF)
2022-11-11 11:49:14 +0100 <tomsmeding> bjourne: perhaps if you post your show instance and the type we can already see if there's something wrong
2022-11-11 11:49:36 +0100 <bjourne> it's related to the alex framework. this works: my_show (GVarDef (Range _ _) _ _ _) = "bah"
2022-11-11 11:49:44 +0100 <bjourne> this doesn't: my_show (GVarDef (Range (AlexPn a b c) _) _ _ _) = "bah"
2022-11-11 11:49:49 +0100akegalj(~akegalj@93-138-111-227.adsl.net.t-com.hr) (Quit: leaving)
2022-11-11 11:50:30 +0100 <tomsmeding> what you can also do is pick out a part of your value using `case`, and then evaluate that
2022-11-11 11:50:53 +0100 <tomsmeding> case value of GVarDef (Range x) _ _ _ -> x `seq` ()
2022-11-11 11:51:10 +0100 <tomsmeding> case value of GVarDef (Range (AlexPn x _ _) _ _ _ -> x `seq` ()
2022-11-11 11:52:18 +0100 <tomsmeding> also try stuff like
2022-11-11 11:52:24 +0100 <tomsmeding> case value of GVarDef (Range (AlexPn _ _ _) _ _ _ -> ()
2022-11-11 11:52:34 +0100 <tomsmeding> to check whether it's even that constructor (if the data type has multiple constructors)
2022-11-11 11:53:04 +0100 <tomsmeding> (though I guess that wil be caught if you run both of the preceding ones, so not necessary here)
2022-11-11 11:56:08 +0100__monty__(~toonn@user/toonn)
2022-11-11 11:56:47 +0100chromoblob(~user@37.113.164.122) (Ping timeout: 246 seconds)
2022-11-11 11:58:52 +0100 <bjourne> lazy evaluation is the stupidest idea ever
2022-11-11 11:58:55 +0100polo(~polo@pool-100-11-18-203.phlapa.fios.verizon.net)
2022-11-11 11:59:27 +0100 <bjourne> it's something about the AlexPn type, if i don't touch it everything is fine, but if i "open" it, it loops
2022-11-11 11:59:43 +0100 <tomsmeding> sounds like alex is doing something weird
2022-11-11 12:00:35 +0100tomsmedingknows nothing about alex
2022-11-11 12:01:13 +0100chromoblob(~user@37.113.164.122)
2022-11-11 12:01:25 +0100vn36(~vn36@123.63.203.210)
2022-11-11 12:02:37 +0100 <bjourne> i'm more or less structuring my lexer/parser like this: https://serokell.io/blog/lexing-with-alex
2022-11-11 12:04:04 +0100vglfr(~vglfr@145.224.100.100) (Read error: Connection reset by peer)
2022-11-11 12:05:13 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:a09f:2a20:ea37:7e61)
2022-11-11 12:05:21 +0100xff0x(~xff0x@2405:6580:b080:900:d135:3c26:3e1:534d)
2022-11-11 12:05:30 +0100vglfr(~vglfr@145.224.100.100)
2022-11-11 12:06:27 +0100shinjipf(~shinjipf@2a01:4f8:1c1c:c1be::1) (Quit: Shinji leaves)
2022-11-11 12:06:41 +0100shinjipf(~shinjipf@2a01:4f8:1c1c:c1be::1)
2022-11-11 12:06:47 +0100polo(~polo@pool-100-11-18-203.phlapa.fios.verizon.net) (Changing host)
2022-11-11 12:06:47 +0100polo(~polo@user/polo)
2022-11-11 12:08:15 +0100 <[exa]> bjourne: do you have the code somewhere for checking?
2022-11-11 12:08:37 +0100 <[exa]> bjourne: in most cases this is caused by a sneaky let recursion that you miss somewhere :]
2022-11-11 12:09:36 +0100crazazy[m](~crazazyut@2001:470:69fc:105::2:ba2a)
2022-11-11 12:10:25 +0100coot(~coot@213.134.171.3)
2022-11-11 12:10:53 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:a09f:2a20:ea37:7e61) (Ping timeout: 255 seconds)
2022-11-11 12:13:18 +0100polo(~polo@user/polo) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-11-11 12:21:45 +0100phma(~phma@2001:5b0:215d:f2c8:303a:6068:9aac:98fb) (Read error: Connection reset by peer)
2022-11-11 12:22:47 +0100phma(~phma@host-67-44-208-197.hnremote.net)
2022-11-11 12:23:49 +0100zer0bitz(~zer0bitz@196.244.192.61) (Read error: Connection reset by peer)
2022-11-11 12:25:33 +0100beteigeuze(~Thunderbi@a79-169-109-107.cpe.netcabo.pt)
2022-11-11 12:25:47 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2022-11-11 12:27:04 +0100potash(~foghorn@user/foghorn) (Ping timeout: 252 seconds)
2022-11-11 12:27:15 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-11-11 12:27:47 +0100chromoblob(~user@37.113.164.122) (Ping timeout: 268 seconds)
2022-11-11 12:28:14 +0100Guest|19(~Guest|19@39.42.139.200)
2022-11-11 12:28:45 +0100 <Guest|19> https://github.com/TheTeaCat/COM2108-Assignment-3
2022-11-11 12:28:45 +0100 <Guest|19> i am trying to run this project... but I have no idea how can I do this Guide me please
2022-11-11 12:30:02 +0100 <__monty__> Guest|19: How far have you gotten trying to follow the Setup instructions?
2022-11-11 12:30:46 +0100olivermead(~olivermea@cpc72329-sotn15-2-0-cust205.15-1.cable.virginm.net)
2022-11-11 12:30:54 +0100crazazy(~user@130.89.173.127) (ERC (IRC client for Emacs 28.0.50))
2022-11-11 12:31:08 +0100Lycurgus(~juan@user/Lycurgus)
2022-11-11 12:31:19 +0100 <Guest|19> when i write./Extension +RTS -N1  the command prompt gives me error it do not recognize the command
2022-11-11 12:31:58 +0100Lycurgus(~juan@user/Lycurgus) ()
2022-11-11 12:32:08 +0100chromoblob(~user@37.113.164.122)
2022-11-11 12:32:20 +0100potash(~foghorn@user/foghorn)
2022-11-11 12:32:56 +0100 <__monty__> Is there a file named "Extension" in your PWD?
2022-11-11 12:34:51 +0100Heyting(~Heyting@193.198.16.217)
2022-11-11 12:36:15 +0100 <ski> bjourne : did you define `show' for your (?) type ?
2022-11-11 12:36:39 +0100 <Guest|19> yes Extension.hs is the file
2022-11-11 12:40:10 +0100polo(~polo@pool-100-11-18-203.phlapa.fios.verizon.net)
2022-11-11 12:42:25 +0100zer0bitz(~zer0bitz@196.244.192.59)
2022-11-11 12:46:30 +0100coot(~coot@213.134.171.3) (Quit: coot)
2022-11-11 12:46:37 +0100 <__monty__> Guest|19: No, not Extension.hs. Running the `ghc` command should have produced a file named "Extension".
2022-11-11 12:46:59 +0100 <Guest|19> yes it did
2022-11-11 12:49:22 +0100chromoblob(~user@37.113.164.122) (Ping timeout: 268 seconds)
2022-11-11 12:49:52 +0100 <__monty__> Guest|19: Ok, then the problem may be the file lacking execute permissions. So try running `chmod u+x Extension` and then the `./Extension` command again.
2022-11-11 12:52:04 +0100 <Guest|19> ook
2022-11-11 12:55:00 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-11-11 12:56:19 +0100polo(~polo@pool-100-11-18-203.phlapa.fios.verizon.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-11-11 12:58:06 +0100Heyting(~Heyting@193.198.16.217) (Remote host closed the connection)
2022-11-11 12:58:52 +0100chromoblob(~user@37.113.164.122)
2022-11-11 12:59:52 +0100jakalx(~jakalx@base.jakalx.net)
2022-11-11 13:05:33 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-11-11 13:12:14 +0100ph88(~ph88@ip5f5af71f.dynamic.kabel-deutschland.de)
2022-11-11 13:12:48 +0100vn36(~vn36@123.63.203.210) (Ping timeout: 268 seconds)
2022-11-11 13:13:40 +0100zer0bitz(~zer0bitz@196.244.192.59) (Quit: No Ping reply in 180 seconds.)
2022-11-11 13:15:05 +0100zer0bitz(~zer0bitz@196.244.192.59)
2022-11-11 13:16:09 +0100Xeroine(~Xeroine@user/xeroine) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in)
2022-11-11 13:18:13 +0100Guest|19(~Guest|19@39.42.139.200) (Quit: Connection closed)
2022-11-11 13:20:00 +0100Xeroine(~Xeroine@user/xeroine)
2022-11-11 13:21:29 +0100mvk(~mvk@2607:fea8:5ce3:8500::4b68)
2022-11-11 13:22:09 +0100nate4(~nate@98.45.169.16)
2022-11-11 13:23:11 +0100shailangsa(~shailangs@host109-159-108-137.range109-159.btcentralplus.com)
2022-11-11 13:24:09 +0100mvk(~mvk@2607:fea8:5ce3:8500::4b68) (Client Quit)
2022-11-11 13:25:08 +0100mvk(~mvk@2607:fea8:5ce3:8500::4b68)
2022-11-11 13:26:54 +0100mvk(~mvk@2607:fea8:5ce3:8500::4b68) (Client Quit)
2022-11-11 13:27:20 +0100nate4(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2022-11-11 13:27:48 +0100Lycurgus(~juan@user/Lycurgus)
2022-11-11 13:40:10 +0100mvk(~mvk@2607:fea8:5ce3:8500::4b68)
2022-11-11 13:40:37 +0100Lycurgus(~juan@user/Lycurgus) (Quit: Exeunt https://tinyurl.com/4m8d4kd5)
2022-11-11 13:41:09 +0100 <bjourne> ski: yes
2022-11-11 13:42:29 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 246 seconds)
2022-11-11 13:43:04 +0100vn36(~vn36@123.63.203.210)
2022-11-11 13:50:32 +0100 <ski> bjourne : ok. you should note that usually people should define `showsPrec' rather than `show' (because unless you only print a syntactically atomic result, you really should be making use of the precedence to optionally bracket the output)
2022-11-11 13:52:20 +0100 <bjourne> ski: i didn't define it directly, but the type is deriving (Show)
2022-11-11 13:52:21 +0100 <ski> that is, if they're even manually making a `Show' instance at all. imho, if you're after some pretty printing, or syntactic sugar, `Show' is not the right place for that. it ought to generate a valid Haskell source representation of the value, as a `String', that could be copied back into a source file, or the interactor, to produce an equivalent value. (obviously should be readable by a `Read' instance back
2022-11-11 13:52:27 +0100 <ski> into an equivalent value, as well)
2022-11-11 13:52:30 +0100 <ski> well, ok
2022-11-11 13:52:40 +0100 <ski> in that case, you are *not* defining `show' yourself
2022-11-11 13:53:00 +0100phma(~phma@host-67-44-208-197.hnremote.net) (Read error: Connection reset by peer)
2022-11-11 13:53:26 +0100phma(phma@2001:5b0:210d:6148:bdc4:3c24:81d2:404a)
2022-11-11 13:53:31 +0100 <ski> (no worry, it may not be so easy to tell apart the difference at first, as a beginner)
2022-11-11 13:54:01 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 252 seconds)
2022-11-11 13:55:59 +0100 <ski> the usual cases where i makes sense to make your own `Show' instance are (a) when you're making an abstract data type, so you don't want to expose implementation/representation details, but rather present the value in terms of publicly exported operations to construct it (e.g. `Array' and `Map' does this); and (b) occasionally, you might want to have a type with infix constructors displayed, with a minimum
2022-11-11 13:56:05 +0100 <ski> amount of brackets. for some reason, the `deriving Show' instance will not keep track of associativity, only precedence, to reduce brackets
2022-11-11 13:56:08 +0100 <ski> s/i makes/it makes/
2022-11-11 13:56:09 +0100 <bjourne> yes i am defining show, that is what deriving (Show) does
2022-11-11 13:56:31 +0100 <ski> `deriving Show' makes it so that the *implementation* defines `showsPrec' and `show' *for* you
2022-11-11 13:57:11 +0100 <bjourne> no, *I'm* defining it
2022-11-11 13:57:13 +0100 <ski> if you're not writing `show ... = ...' yourself, you're not defining `show'. you're instructing the implementation to do that for you (along a standard pattern of doing that)
2022-11-11 13:57:28 +0100 <ski> well, in that case, you are *not* doing `deriving (Show)'
2022-11-11 13:57:33 +0100 <ski> you can't do both at the same time
2022-11-11 13:57:52 +0100 <ski> it will complain about duplicate instances
2022-11-11 13:58:05 +0100 <ski> you can't say both
2022-11-11 13:58:09 +0100 <ski> data Foo = ...
2022-11-11 13:58:13 +0100 <ski> deriving Show
2022-11-11 13:58:15 +0100 <ski> *and*
2022-11-11 13:58:18 +0100 <ski> instance Show Foo
2022-11-11 13:58:19 +0100 <ski> where
2022-11-11 13:58:27 +0100 <ski> showsPrec ... = ...
2022-11-11 13:58:54 +0100 <ski> only the latter would count as defining `show' (or `showsPrec', in the concrete example i did)
2022-11-11 13:59:32 +0100 <ski> do you see the difference i'm pointing out ?
2022-11-11 13:59:34 +0100 <bjourne> "If the deriving form is present, an instance declaration is **automatically generated**"
2022-11-11 13:59:38 +0100 <ski> yes
2022-11-11 13:59:39 +0100 <bjourne> http://www2.informatik.uni-freiburg.de/~thiemann/haskell/haskell98-report-html/derived.html
2022-11-11 13:59:43 +0100 <ski> exactly
2022-11-11 13:59:52 +0100 <bjourne> so, yes, i'm *defining* it
2022-11-11 14:00:07 +0100 <ski> so, in that case, you're not writing `show' (or `showPrec'). you're telling the implementation to automatically generating it for you
2022-11-11 14:00:08 +0100random-jellyfish(~random-je@user/random-jellyfish)
2022-11-11 14:00:42 +0100 <ski> if you're not spelling out the defining equation(s) for `show' (or `showsPrec') yourself, *you* are not defining it. you're letting the system define it, for you
2022-11-11 14:00:52 +0100 <ski> (and usually, this is what you want to do)
2022-11-11 14:02:20 +0100 <ski> (perhaps more succinctly : if you're using `deriving Show', then you're *deriving* it, not *defining* it)
2022-11-11 14:02:22 +0100 <bjourne> yes *I* am defining it, that i'm not writing the characters "show blah = bla" anywhere is immaterial
2022-11-11 14:02:52 +0100 <ski> the effect is the same : you end up with having a `Show' instance for the type
2022-11-11 14:03:26 +0100 <bjourne> no, i'm *defining* the value of the expression "show MyType" exactly if i had used the instance ... syntax
2022-11-11 14:03:38 +0100 <ski> the means are different : either you define it yourself (and then you could tweak the implementation to do things differently). or you derive it (telling the system to define it for you) (and then you can't tweak the implementation)
2022-11-11 14:03:45 +0100 <ski> the difference here (sometimes) matters
2022-11-11 14:04:55 +0100 <ski> i agree with your last statement. if you had used `instance Show ...', then you'd be defining yourself how `show' behaved
2022-11-11 14:05:24 +0100 <bjourne> i'm doing exactly the same thing by writing deriving Show
2022-11-11 14:05:32 +0100 <bjourne> it's just syntatic sugar
2022-11-11 14:05:55 +0100razetime_razetime
2022-11-11 14:06:10 +0100 <ski> "that i'm not writing the characters \"show blah = bla\" anywhere is immaterial" -- the difference is that with `deriving Show', you get a pre-canned implementation (which is fine, if that one is what you want, which is the case, most of the time). while if you're not doing that, you are *able* to do things differently. this is an important distinction
2022-11-11 14:06:41 +0100 <ski> if you were writing `deriving Show', then you could *not* have it report the value in terms of abstract data type operations
2022-11-11 14:06:54 +0100 <ski> > listArray (0,3) [2,3,5,7]
2022-11-11 14:06:55 +0100 <lambdabot> array (0,3) [(0,2),(1,3),(2,5),(3,7)]
2022-11-11 14:07:13 +0100 <ski> this instance of `Show' for `Array' could *not* have been made using `deriving Show'
2022-11-11 14:08:02 +0100zer0bitz_(~zer0bitz@196.244.192.59)
2022-11-11 14:08:07 +0100 <ski> > foldr S.insert S.empty [3,7,5,2]
2022-11-11 14:08:08 +0100 <lambdabot> fromList [2,3,5,7]
2022-11-11 14:08:17 +0100 <ski> nor this example of using `Set'
2022-11-11 14:08:43 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9)
2022-11-11 14:09:01 +0100 <bjourne> immaterial and a tangent. "deriving Show" *defines* show for the type the declaration is attached to
2022-11-11 14:09:10 +0100 <dminuoso> For Set at least there could be a deriving generated Show, but for Array that is actually impossible.
2022-11-11 14:09:32 +0100chromoblob(~user@37.113.164.122) (Ping timeout: 268 seconds)
2022-11-11 14:09:45 +0100 <bjourne> the one doing the *defining* (the verb) is the one writing the code, i.e me
2022-11-11 14:09:52 +0100 <ski> *if* you just want the standard way of showing a value, *then* it's the same to use `deriving Show', and to explicitly spell out the `show' (or more likely `showsPrec') instance .. it's just more work (and more opportunity to do a mistake) to do the latter. so it's sensible to do the former in this case
2022-11-11 14:10:01 +0100 <dminuoso> Or well, I guess you *could* define it in terms of bang literal strings. Mmm
2022-11-11 14:10:08 +0100zer0bitz(~zer0bitz@196.244.192.59) (Ping timeout: 246 seconds)
2022-11-11 14:10:09 +0100 <troydm> are IORef same as pointers, if I'll pass same IORef to two different functions and change it's value in one, will the second reference the changed value?
2022-11-11 14:10:23 +0100 <dminuoso> troydm: Yes, and correct.
2022-11-11 14:10:25 +0100random-jellyfish(~random-je@user/random-jellyfish) (Quit: Client closed)
2022-11-11 14:10:28 +0100 <troydm> dminuoso: thx
2022-11-11 14:10:34 +0100 <dminuoso> An IORef really is a pointer under the hood too.
2022-11-11 14:10:52 +0100 <ski> "\"deriving Show\" *defines* show for the type the declaration is attached to" -- i agree. the *implementation* defines it, *for* you. *you* do not define it, in this case
2022-11-11 14:11:07 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-11 14:11:25 +0100random-jellyfish(~random-je@user/random-jellyfish)
2022-11-11 14:11:47 +0100 <bjourne> ski: no, *I* *define* *show* by picking the *default* *implementation*
2022-11-11 14:12:05 +0100 <merijn> troydm: Slight disagree with dminuoso that IORef are pointers
2022-11-11 14:12:07 +0100 <bjourne> the answer to your question "did you define `show' for your (?) type ?" was yes, not no
2022-11-11 14:12:08 +0100 <ski> troydm : and the same with `IOArray',`STRef',`STArray',`MVar',`TVar'
2022-11-11 14:12:15 +0100 <merijn> troydm: For one, IORef is atomic update
2022-11-11 14:12:51 +0100 <troydm> merijn: ohh, so I don't need to worry about sync issues with multiple threads?
2022-11-11 14:12:52 +0100 <merijn> So they're race free, unlike pointers
2022-11-11 14:13:04 +0100 <troydm> k, cool
2022-11-11 14:13:12 +0100 <dminuoso> merijn: An IORef boils down to a MutVar#
2022-11-11 14:13:17 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) (Ping timeout: 255 seconds)
2022-11-11 14:13:47 +0100 <merijn> dminuoso: This is gonna lead down a semantic rabit hole of "what is a pointer", but I remain with my observation that IORef is *not* like a C pointer
2022-11-11 14:13:49 +0100 <dminuoso> Where do you get the idea that an IORef is atomic, merijn?
2022-11-11 14:14:25 +0100 <dminuoso> Pretty sure that modifying them is not atomic, unless you explicitly use atomicModifyIORef
2022-11-11 14:14:38 +0100 <merijn> dminuoso: reading/writing is atomic
2022-11-11 14:14:52 +0100 <ski> bjourne : i think the source of the issue is that we're using slightly different meanings attached to what it means to define something. i'm pointing out that the distinction i'm making (sometimes) matters. iow, it matters whether *you* are able to tweak the definition or not. you can't tweak something you haven't spelled out. i fully agree that deriving causes a definition to be provided. i'm taking issue
2022-11-11 14:14:58 +0100 <ski> with claiming you are doing the definition, since that would, in my eyes, imply that you're able to tweak it, which you can't. you're just able to say yes or no to the generated one, not tweak it
2022-11-11 14:15:02 +0100 <merijn> read, compute, write, is (obviously) not atomic, unless you use atomicModifyIORef
2022-11-11 14:15:40 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-11-11 14:15:46 +0100 <merijn> Although once you start introducing concurrency the issue of consistency/memory model becomes considerably more complex
2022-11-11 14:15:46 +0100 <dminuoso> 14:12:15 merijn | troydm: For one, IORef is atomic update
2022-11-11 14:15:51 +0100 <dminuoso> This is grossly misleading then
2022-11-11 14:15:59 +0100 <merijn> dminuoso: "update" as in "writing to one"
2022-11-11 14:15:59 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
2022-11-11 14:16:01 +0100acidjnk(~acidjnk@p200300d6e7137a38458dfbf66917fb17.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2022-11-11 14:16:07 +0100 <ski> bjourne : seeing as we're using slightly different meanings attached to the word, i don't think it makes sense to argue about what it "really means". i'm coming from this from a practical standpoint, of what's relevant concerns to the programmer. sometimes it matters to be able to provide a custom `Show' instance. sometimes it doesn't. i hope at least you're able to see this point
2022-11-11 14:16:43 +0100 <bjourne> ski: nah, you are just wrong
2022-11-11 14:17:01 +0100 <dminuoso> Well, I think explaining them like c-pointers works well enough, at best you get additional guarantees.
2022-11-11 14:17:01 +0100 <bjourne> but that's ok
2022-11-11 14:17:14 +0100 <ski> we can agree to disagree, sure
2022-11-11 14:17:16 +0100 <dminuoso> But you're not going to make bad inference from that
2022-11-11 14:18:25 +0100 <ski> troydm : also, you can't atomically update multiple `IORef's
2022-11-11 14:19:27 +0100vn36(~vn36@123.63.203.210) (Quit: leaving)
2022-11-11 14:19:43 +0100Guest75(~Guest75@178.141.177.81) (Ping timeout: 260 seconds)
2022-11-11 14:19:49 +0100bjourne(~bjourne@2001:6b0:1:1140:42bf:ff4:f8fa:50e5) (Quit: Konversation terminated!)
2022-11-11 14:21:14 +0100 <troydm> ski: how so?
2022-11-11 14:21:52 +0100 <ski> another thread could read from or write to one of them in the meantime you've updated (or read) just one of them, but not the other
2022-11-11 14:22:53 +0100 <ski> if you find yourself needing this, you should probably look into `TVar' (using `STM') (or perhaps try to look for a different way to go about solving your problem, if available)
2022-11-11 14:23:17 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-11-11 14:24:07 +0100tessier(~treed@98.171.210.130)
2022-11-11 14:25:39 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2022-11-11 14:27:11 +0100 <dminuoso> That is, the transactional scope of writeIORef or atomicModifyIORef is only a singular IORef. Sequencing two of them no longer is atomic.
2022-11-11 14:27:37 +0100 <dminuoso> It is curious that we even mention this, in many other programming languages this goes without saying.
2022-11-11 14:28:21 +0100 <dminuoso> But most of these languages do not have built-in STM, some have it it as external libraries.
2022-11-11 14:29:20 +0100 <dminuoso> Heck, even the atomicity is a special feature - in some languages you either get no atomicity, or its just imbued by fact of holding some kind of global interpreter lock.
2022-11-11 14:32:42 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-11-11 14:34:27 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-11 14:41:18 +0100fr33domlover[m](~fr33domlo@2001:470:69fc:105::1:3bb6) ()
2022-11-11 14:41:36 +0100listeners(~sdenynine@user/mixfix41) (Ping timeout: 268 seconds)
2022-11-11 14:43:46 +0100mncheck(~mncheck@193.224.205.254) (Remote host closed the connection)
2022-11-11 14:47:22 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-11 14:48:46 +0100 <dminuoso> ski: By the way, after our last discussions about continuations, it occured to me that when we think of a continuation as a computation with a hole `\x -> ... x ...` - there was a striking resembles with lenses
2022-11-11 14:49:34 +0100 <dminuoso> Especially in the van Laarhoven encoding
2022-11-11 14:50:23 +0100 <ski> oh, elaborate ?
2022-11-11 14:50:53 +0100 <ski> that would correspond to the "setter" part, no ?
2022-11-11 14:51:12 +0100 <ski> the `b -> a' part of `a -> (b,b -> a)'
2022-11-11 14:51:32 +0100 <merijn> pedantic sidenote that it should be Van Laarhoven :p
2022-11-11 14:52:05 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds)
2022-11-11 14:52:06 +0100 <dminuoso> Ah really? Good to know.
2022-11-11 14:52:39 +0100 <tomsmeding> Sander van Laarhoven, but Van Laarhoven
2022-11-11 14:53:01 +0100 <tomsmeding> contacts apps get this wrong always
2022-11-11 14:53:11 +0100 <ski> oh, so capitalize the initial letter, when the surname occurs on its own
2022-11-11 14:53:11 +0100kenran`(~user@user/kenran) (Remote host closed the connection)
2022-11-11 14:53:22 +0100 <tomsmeding> "surname field" -- okay so should I enter the capital or not? Either will go wrong 50% of the time
2022-11-11 14:53:31 +0100 <tomsmeding> yeah
2022-11-11 14:53:54 +0100 <merijn> ski: In Dutch it's basically "first letter of name is capitalised trumps any other rule"
2022-11-11 14:54:05 +0100skinods
2022-11-11 14:54:20 +0100 <ski> (i imagine Flemish would be similar)
2022-11-11 14:55:22 +0100 <merijn> ski: Flemish is different in that they *always* capitalise the "tussenvoegsel"
2022-11-11 14:55:30 +0100polo_(~polo@pool-100-11-18-203.phlapa.fios.verizon.net)
2022-11-11 14:55:43 +0100 <merijn> So in Flemish it'd also be Sander Van Laarhoven
2022-11-11 14:55:45 +0100 <ski> being the "v" in "van" (in this case) ?
2022-11-11 14:55:47 +0100 <ski> okay
2022-11-11 14:55:59 +0100 <ski> curious
2022-11-11 14:56:01 +0100 <Unhammer> How would I create a Storable instance for a c++ std::pair<float,std::string> ? Is it as if it were a struct?
2022-11-11 14:56:24 +0100 <merijn> Unhammer: You cry
2022-11-11 14:56:28 +0100 <merijn> Unhammer: And take up drinking
2022-11-11 14:56:30 +0100 <geekosaur> I suspect you need to export "C" it as a struct
2022-11-11 14:56:32 +0100 <tomsmeding> then you first have to decide how in the world to get something out of that std::string
2022-11-11 14:56:38 +0100 <merijn> Unhammer: I highly recommend Laphraoig 10
2022-11-11 14:56:43 +0100 <geekosaur> you get zero promises about how C++ objects are stored
2022-11-11 14:56:53 +0100 <merijn> geekosaur: Yeah, pretty much
2022-11-11 14:57:02 +0100 <merijn> Unhammer: So the short answer is "you can't"
2022-11-11 14:57:23 +0100 <Unhammer> :((
2022-11-11 14:57:33 +0100 <merijn> The longer answer is "if you're sufficiently stubborn you can probably pull it off, if you're willing to sacrifice your sanity, happiness, and mental well being"
2022-11-11 14:57:41 +0100 <geekosaur> and portability
2022-11-11 14:57:48 +0100 <merijn> oh, and also portability and any guarantees of it actually working
2022-11-11 14:58:10 +0100 <Unhammer> first half hour of making bindings to c++ "this is really easy I'm almost done now I just need to read more than the first element of that vector of pairs" … three hours later
2022-11-11 14:58:16 +0100 <Unhammer> :(
2022-11-11 14:58:25 +0100 <tomsmeding> thing is, with std::string you also have the issue that implementations sometimes do this "small string optimisation" where strings of length <8 (<=8? dunno) are stored in the field where the pointer would normally live
2022-11-11 14:58:29 +0100 <Unhammer> sooo … I should make it into a struct on the C side?
2022-11-11 14:58:32 +0100 <merijn> Unhammer: Write a C++ wrapper that's 'export "C"' and converts
2022-11-11 14:58:40 +0100ski. o O ( "Scsh Reference Manual - Acknowledgements" by Olin Shivers in 1994-09-04 at <https://scsh.net/docu/html/man.html> )
2022-11-11 14:58:57 +0100 <tomsmeding> and furthermore, converts away that std::string and makes it a pair of a size_t and a char*
2022-11-11 14:59:04 +0100 <merijn> Unhammer: The problem is that different C++ standard libraries don't have to use the same implementation for std::string nor std::pair
2022-11-11 14:59:08 +0100 <dminuoso> ski: So consider an example of:
2022-11-11 14:59:20 +0100 <dminuoso> % data V3 x y z = V3 x y z
2022-11-11 14:59:20 +0100 <yahb2> <no output>
2022-11-11 14:59:30 +0100 <dminuoso> % f1 :: Lens' (V3 x y z) x; f1 f (V3 x y z) = f x <$> (\x' -> V3 x' y z)
2022-11-11 14:59:30 +0100 <yahb2> <interactive>:18:7: error: ; Not in scope: type constructor or class ‘Lens'’
2022-11-11 14:59:43 +0100 <dminuoso> % :set RankNTypes
2022-11-11 14:59:43 +0100 <yahb2> Some flags have not been recognized: RankNTypes
2022-11-11 14:59:46 +0100 <dminuoso> % :set -XRankNTypes
2022-11-11 14:59:47 +0100 <yahb2> <no output>
2022-11-11 14:59:55 +0100 <dminuoso> % type Lens s t a b = forall f. Functor f => (a -> f b) -> s -> f t
2022-11-11 14:59:55 +0100 <yahb2> <no output>
2022-11-11 14:59:57 +0100 <dminuoso> % f1 :: Lens' (V3 x y z) x; f1 f (V3 x y z) = f x <$> (\x' -> V3 x' y z)
2022-11-11 14:59:57 +0100 <yahb2> <interactive>:26:7: error: ; Not in scope: type constructor or class ‘Lens'’ ; Perhaps you meant ‘Lens’ (line 24)
2022-11-11 15:00:01 +0100 <dminuoso> Oh hold on
2022-11-11 15:00:06 +0100 <ski> Unhammer : i guess maybe you could provide `export "C"' operations to access the innards ..
2022-11-11 15:00:50 +0100 <dminuoso> % f1 :: Lens (V3 x y z) (V3 x' y z) x x'; f1 f (V3 x y z) = (\x' -> V3 x' y z) <$> f x
2022-11-11 15:00:50 +0100 <yahb2> <no output>
2022-11-11 15:00:59 +0100 <ski> ok
2022-11-11 15:01:33 +0100 <tomsmeding> merijn: watch out, std::string can contain null bytes
2022-11-11 15:01:35 +0100 <dminuoso> ski: So there is this frequent remark that a lens splits data into "the focus" and the "whole with a hole". This representation shows why that is
2022-11-11 15:01:52 +0100 <ski> tomsmeding : it stores size separately ?
2022-11-11 15:01:56 +0100 <tomsmeding> yes
2022-11-11 15:02:28 +0100 <dminuoso> ski: And I keep thinking about how this "whole with a hole" as just a computational hole, much like a coroutine.
2022-11-11 15:03:08 +0100 <dminuoso> Or a continuation, if you want
2022-11-11 15:03:23 +0100 <ski> dminuoso : mhm .. i suppose that makes some sense. and the composing lenses, amounts (apart from the access) to nesting such contexts inside each other
2022-11-11 15:03:28 +0100 <dminuoso> Yup
2022-11-11 15:03:47 +0100 <ski> (not sure where/how coroutines are related / enter)
2022-11-11 15:03:49 +0100 <Unhammer> it's a short enough array I'll just convert …
2022-11-11 15:04:38 +0100 <tomsmeding> Unhammer: if you're sure that the std::string lives long enough, you don't need to copy the array, you just need to give Haskell a pointer to the contents (i.e. .data())
2022-11-11 15:04:45 +0100 <tomsmeding> but be very sure that the std::string lives long enough
2022-11-11 15:05:12 +0100 <dminuoso> ski: well it would be a kind of update coroutine halted on where it would insert the new data.
2022-11-11 15:05:27 +0100 <ski> (perhaps you could also have a version which accepts a callback, which you pass the pair pointer to)
2022-11-11 15:05:36 +0100 <merijn> Unhammer: One of the problems with C++ is that there's no standard ABI for interacting with C++ types/classes/etc. so FFI stuff to it is a nightmare
2022-11-11 15:06:13 +0100 <dminuoso> *disclaimer - if lack of an ABI is a problem, then GHC Haskell has the same problem.
2022-11-11 15:06:31 +0100 <merijn> dminuoso: Well, yes
2022-11-11 15:06:42 +0100 <merijn> dminuoso: But we only have one GHC and no serious competition
2022-11-11 15:07:04 +0100 <merijn> Whereas there's 4 possible C++ combo's you can encounter and you're hosed if you mix them
2022-11-11 15:07:05 +0100 <dminuoso> Sure but its not stable either, which makes FFIing into Haskell a pain in the butt
2022-11-11 15:07:38 +0100 <dminuoso> So even having just one compiler doesnt really make things easier
2022-11-11 15:08:13 +0100 <merijn> to be fair, C++ isn't stable either, so strictly worse ;)
2022-11-11 15:08:22 +0100polo_(~polo@pool-100-11-18-203.phlapa.fios.verizon.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-11-11 15:08:23 +0100 <dminuoso> heh :)
2022-11-11 15:08:58 +0100polo_(~polo@pool-100-11-18-203.phlapa.fios.verizon.net)
2022-11-11 15:09:53 +0100 <merijn> ski: Apparently English wikipedia gave up trying to find a translation and is just using the Dutch word: https://en.wikipedia.org/wiki/Tussenvoegsel ;)
2022-11-11 15:10:27 +0100 <tomsmeding> lol
2022-11-11 15:10:41 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-11 15:11:11 +0100 <merijn> tbh, I tried to translate on the fly once, but it's...hard xD
2022-11-11 15:11:23 +0100 <merijn> "inbetweensel"? >.>
2022-11-11 15:11:58 +0100 <geekosaur> "inbetweener"?
2022-11-11 15:12:22 +0100 <merijn> geekosaur: No, because it's kinda diminutive
2022-11-11 15:12:29 +0100 <merijn> Which English is sorely lacking
2022-11-11 15:12:47 +0100CiaoSen(~Jura@p200300c9571247002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2022-11-11 15:13:06 +0100 <tomsmeding> inbetweeny
2022-11-11 15:13:41 +0100polo_(~polo@pool-100-11-18-203.phlapa.fios.verizon.net) (Client Quit)
2022-11-11 15:13:58 +0100 <geekosaur> inbeteeny?
2022-11-11 15:13:59 +0100acidjnk(~acidjnk@p200300d6e7137a61d962e1cf9864f38d.dip0.t-ipconnect.de)
2022-11-11 15:14:22 +0100 <ski> dminuoso : hm. i think one way to represent a coroutine might be something like `newtype C o = MkC (Foo -> (Bar -> C o) -> o)', where `Foo' is the partial input the coroutine accepts, and `Bar' is what it produces after yielding again, and `o' is the final answer type. `C o' is the state type of the coroutine, while suspended
2022-11-11 15:14:55 +0100 <merijn> tbh, tussenvoegsel is one of those Dutch words that just makes me more and more pleased with the language, the more I ponder it
2022-11-11 15:15:20 +0100 <tomsmeding> juxtajoiner
2022-11-11 15:15:31 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds)
2022-11-11 15:16:02 +0100 <merijn> tussen already is (in)between on its own, and voegsel is (literally) grout, but that's also a woefully inadequate translation :p
2022-11-11 15:16:43 +0100 <tomsmeding> merijn: isn't it from the verb "tussen voegen"
2022-11-11 15:17:09 +0100 <tomsmeding> I hope the name has more to do with "invoegen" than with "een voeg" :')
2022-11-11 15:18:05 +0100 <merijn> tomsmeding: It can be both, that's the beauty!
2022-11-11 15:19:30 +0100zer0bitz(~zer0bitz@dsl-hkibng32-54fb48-32.dhcp.inet.fi)
2022-11-11 15:19:54 +0100zer0bitz__(~zer0bitz@196.244.192.59)
2022-11-11 15:21:22 +0100ft(~ft@p508dbd59.dip0.t-ipconnect.de)
2022-11-11 15:22:36 +0100zer0bitz_(~zer0bitz@196.244.192.59) (Ping timeout: 255 seconds)
2022-11-11 15:22:52 +0100 <ski> merijn : the word reminds me slightly of "Tussmørke"/"Tussmørker"/"Tussmörker" (meaning "twilight", "crepuscule". both dawn and dusk. the time when "thursar" ("giants") could be out and about)
2022-11-11 15:23:38 +0100zer0bitz(~zer0bitz@dsl-hkibng32-54fb48-32.dhcp.inet.fi) (Ping timeout: 246 seconds)
2022-11-11 15:24:14 +0100vpan(~0@212.117.1.172) (Quit: Leaving.)
2022-11-11 15:24:49 +0100 <Square> What other things, than explicit signatures / error handling, are monadic IO good for?
2022-11-11 15:25:07 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-11-11 15:25:25 +0100Chioque(~mansur@175.136.30.124)
2022-11-11 15:25:59 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-11-11 15:26:31 +0100 <merijn> Square: Well, ensuring purity for one? ;)
2022-11-11 15:27:18 +0100 <merijn> Square: basically, it enforces a separation between "evaluation" (haskell expressions) and "execution" (execution of side-effects)
2022-11-11 15:28:08 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-11 15:28:53 +0100 <maerwald> merijn: why call it side-effects?
2022-11-11 15:28:56 +0100 <ski> one of the main points of monads (in programming) is knowing when you're *not* using some particular kind of effect. (another is ability to define custom-tailored effects)
2022-11-11 15:29:37 +0100 <merijn> maerwald: Well, effects, I suppose
2022-11-11 15:29:48 +0100 <merijn> maerwald: Because sloppy writing while doing other things ;)
2022-11-11 15:30:18 +0100 <maerwald> I like to think of Haskell as side-effect free
2022-11-11 15:30:34 +0100 <Square> merijn, right. I think i get the part that the type encodes the (side) effects. But I was just curious if it added some extra functionality of sorts.
2022-11-11 15:30:34 +0100 <maerwald> if I want side effects, I can go back to C
2022-11-11 15:30:40 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2022-11-11 15:31:06 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-11-11 15:31:06 +0100califax(~califax@user/califx) (Remote host closed the connection)
2022-11-11 15:31:06 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-11-11 15:31:06 +0100jpds2(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-11-11 15:31:19 +0100 <tomsmeding> Square: the fact that an IO computation is a value that you can pass around, I guess?
2022-11-11 15:31:24 +0100moonsheep(~user@user/moonsheep)
2022-11-11 15:31:27 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-11-11 15:31:28 +0100califax(~califax@user/califx)
2022-11-11 15:31:36 +0100 <tomsmeding> % let action = print 42 in sequence (replicate 4 action)
2022-11-11 15:31:36 +0100 <yahb2> 42 ; 42 ; 42 ; 42 ; [(),(),(),()]
2022-11-11 15:31:45 +0100 <moonsheep> how can I bind a raw socket to an interface with the network package?
2022-11-11 15:31:47 +0100jpds2(~jpds@gateway/tor-sasl/jpds)
2022-11-11 15:31:57 +0100 <moonsheep> bind takes a SocketAddress sa, but there is only one instance of it
2022-11-11 15:32:01 +0100 <moonsheep> (SockAddr)
2022-11-11 15:32:07 +0100 <tomsmeding> I've sometimes used the ability to put an IO action in a data structure, though admittedly not often
2022-11-11 15:32:09 +0100 <merijn> Square: Well, it basically means you can "store" effectful computation inside data structure and otherwise pass them as first class values
2022-11-11 15:32:26 +0100 <merijn> Square: For example, try this in ghci: map print [1..10] !! 3
2022-11-11 15:32:28 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 252 seconds)
2022-11-11 15:32:32 +0100 <tomsmeding> merijn: see my message above
2022-11-11 15:32:36 +0100 <ski> @quote world's.best.imperative
2022-11-11 15:32:37 +0100 <lambdabot> SPJ says: Haskell is the world's best imperative language.
2022-11-11 15:33:24 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-11-11 15:33:45 +0100 <merijn> tomsmeding: Storing it in data structures not super often, but the ability to pass them around as arguments to functions all the time
2022-11-11 15:34:20 +0100 <merijn> tomsmeding: The above example ends up executing them all, my example illustrates the separation by only doing one
2022-11-11 15:34:41 +0100 <ski> Square : you *can* achieve the same effect with thunks (parameterless function values), in a language with side-effects. but it's very easy to screw up, and people don't tend to think of that in terms of separation of evaluation and execution
2022-11-11 15:34:46 +0100 <Square> The explicit signature, or impossible to do IO in the dark, is pretty strong indeed.
2022-11-11 15:35:00 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-11-11 15:35:32 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-11-11 15:37:03 +0100 <ski> (iirc, LWT in OCaml, as well as CML (Concurrent ML) in SML, which both use a `bind' operation, did deviate from how you'd expect a monadic separation to behave, when i looked into that, years ago. might've changed since, though)
2022-11-11 15:37:58 +0100fserucas|eod(~fserucas|@2001:8a0:6d00:2500:4717:7619:c4e9:3aa2) (Ping timeout: 252 seconds)
2022-11-11 15:38:07 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-11-11 15:38:16 +0100zer0bitz(~zer0bitz@dsl-hkibng32-54fb48-32.dhcp.inet.fi)
2022-11-11 15:38:45 +0100 <moonsheep> does no one here know how to represent the address to bind an AF_PACKET RAW_SOCKET to?
2022-11-11 15:39:50 +0100 <moonsheep> I understand I have to instance SocketAddress, but what to?
2022-11-11 15:40:08 +0100 <moonsheep> how do those bytes have to look like?
2022-11-11 15:40:26 +0100 <moonsheep> are they just the MAC address and a protocol number concatted?
2022-11-11 15:40:48 +0100InstX1(~Liam@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 268 seconds)
2022-11-11 15:41:28 +0100 <moonsheep> actually I don't care for it to be raw, datagram AF_PACKET sockets are fine too
2022-11-11 15:41:50 +0100zer0bitz__(~zer0bitz@196.244.192.59) (Ping timeout: 246 seconds)
2022-11-11 15:44:38 +0100zer0bitz_(~zer0bitz@196.244.192.61)
2022-11-11 15:44:45 +0100 <merijn> moonsheep: What's the correct representation for C?
2022-11-11 15:45:09 +0100 <merijn> moonsheep: You'd probably have to dig into the network source to see how things are done and work it out (and ideally make a PR for the docs when you do ;))
2022-11-11 15:45:56 +0100 <moonsheep> does that mean that it has to have the exact memory layout the C struct is?
2022-11-11 15:46:01 +0100 <moonsheep> *has
2022-11-11 15:46:22 +0100 <geekosaur> you probably need to know that representation to instance it properly
2022-11-11 15:46:24 +0100 <merijn> moonsheep: the SockAddr constructors are internally converted to the C struct (I assume)
2022-11-11 15:46:35 +0100 <moonsheep> oh yeah didn't think to look how those are implemented
2022-11-11 15:46:49 +0100 <merijn> moonsheep: I'm guessing there's no SockAddr constructor implemented for AF_PACKET/AF_RAW because no one has used them
2022-11-11 15:46:57 +0100 <moonsheep> yeah
2022-11-11 15:47:05 +0100 <moonsheep> anyway, this seems to be it https://man7.org/linux/man-pages/man7/packet.7.html (sockaddr_ll)
2022-11-11 15:47:09 +0100 <merijn> moonsheep: I would not be surprised if those are included for "completeness" sake, but no one has actually done/used this
2022-11-11 15:47:41 +0100 <merijn> moonsheep: In my experience it probably shouldn't be too hard to extend network to support this (well, assuming you're comforting with the C APIs and C programming)
2022-11-11 15:47:46 +0100shriekingnoise(~shrieking@186.137.167.202)
2022-11-11 15:48:00 +0100 <merijn> Would be a nice PR, because that'd be a neat feature to have properly in network
2022-11-11 15:48:24 +0100 <moonsheep> yeah
2022-11-11 15:48:25 +0100zer0bitz(~zer0bitz@dsl-hkibng32-54fb48-32.dhcp.inet.fi) (Ping timeout: 252 seconds)
2022-11-11 15:48:37 +0100 <moonsheep> I want to learn more about low level networking stuff, but C is just
2022-11-11 15:48:38 +0100 <moonsheep> ugh
2022-11-11 15:48:49 +0100 <moonsheep> well to be fair the issue is not as much C itself but the poorly designed interface
2022-11-11 15:48:57 +0100 <moonsheep> and atrocious naming conventions
2022-11-11 15:49:16 +0100 <merijn> Yes :p
2022-11-11 15:49:18 +0100 <moonsheep> haskell just makes these things nicer by giving you more tools to abstract them away
2022-11-11 15:49:27 +0100 <merijn> I did some stuff with AF_PACKET in C a year or so ago, it was messy
2022-11-11 15:50:14 +0100acidjnk(~acidjnk@p200300d6e7137a61d962e1cf9864f38d.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2022-11-11 15:50:57 +0100 <moonsheep> btw why is Network.Socket.ByteString a thing? it just seems entirely identical to Network.Socket.Address but with unecessarily specialized SockAddr
2022-11-11 15:51:12 +0100 <moonsheep> (I'm talking about the sendTo/recvFrom functions)
2022-11-11 15:51:54 +0100razetime(~quassel@117.193.0.120) (Quit: No Ping reply in 180 seconds.)
2022-11-11 15:52:12 +0100 <moonsheep> damn the implementation of pokeSockAddr looks ugly as hell
2022-11-11 15:52:38 +0100 <moonsheep> what do all the {-# LINE xxxx "whatever" #-} mean?
2022-11-11 15:53:18 +0100razetime(~quassel@117.193.0.120)
2022-11-11 15:53:46 +0100 <moonsheep> other than that it seems fairly straightforward
2022-11-11 15:53:48 +0100 <moonsheep> uh
2022-11-11 15:53:51 +0100 <moonsheep> I'm gonna give this a shot
2022-11-11 15:54:36 +0100 <geekosaur> typically those are inserted by a preprocessor, which here implies the code is generated by hsc2hs or similar
2022-11-11 15:55:02 +0100 <moonsheep> would that preprocessor make the job any easier?
2022-11-11 15:55:05 +0100 <moonsheep> what is hsc?
2022-11-11 15:55:18 +0100random-jellyfish(~random-je@user/random-jellyfish) (Quit: Client closed)
2022-11-11 15:55:25 +0100 <moonsheep> looks interesting
2022-11-11 15:55:29 +0100 <geekosaur> haskell with extra annotations to convert and unpack/pack C structs
2022-11-11 15:55:40 +0100 <geekosaur> with help from the C compiler
2022-11-11 15:55:41 +0100jpds2(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-11-11 15:55:55 +0100 <moonsheep> sounds like exactly what I want
2022-11-11 15:56:05 +0100 <geekosaur> (so it's guaranteed to get the right lengths and offsets because it gets that information from gcc)
2022-11-11 15:56:13 +0100 <moonsheep> alright I'm going to clone network and try to patch it, instead of doing some externel ad-hoc solution
2022-11-11 15:57:09 +0100 <merijn> moonsheep: Basically, hsc produces a C program that prints Haskell code with a bunch of inserted "sizeof"s, so the final haskell code will have all the appropriate sizes/offsets for whatever C compiler/ABI you're using
2022-11-11 15:57:25 +0100 <moonsheep> that's perfect
2022-11-11 15:57:33 +0100 <merijn> (and potentially inlining ifdefs, etc.)
2022-11-11 15:59:08 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds)
2022-11-11 16:00:23 +0100jpds2(~jpds@gateway/tor-sasl/jpds)
2022-11-11 16:01:13 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-11 16:01:41 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-11-11 16:04:41 +0100 <tomsmeding> haskell code that generates c code that prints haskell code?
2022-11-11 16:04:49 +0100 <tomsmeding> what's the longest chain of consecutive \ in the hsc source
2022-11-11 16:05:56 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 248 seconds)
2022-11-11 16:06:09 +0100Chioque(~mansur@175.136.30.124) (Quit: WeeChat 3.7.1)
2022-11-11 16:08:33 +0100tessier(~treed@98.171.210.130) (Ping timeout: 268 seconds)
2022-11-11 16:08:37 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-11-11 16:09:07 +0100Sgeo(~Sgeo@user/sgeo)
2022-11-11 16:09:45 +0100Chioque(~mansur@175.136.30.124)
2022-11-11 16:10:49 +0100zeenk(~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494)
2022-11-11 16:10:55 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9)
2022-11-11 16:11:38 +0100fserucas|eod(~fserucas|@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
2022-11-11 16:11:47 +0100 <lortabac> I'm profiling the memory usage of a program to investigate a memory leak. The problem is that the leak is very slow, the growing region in the graph always appears under OTHER
2022-11-11 16:11:53 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-11-11 16:12:41 +0100L29Ah(~L29Ah@wikipedia/L29Ah) (Ping timeout: 252 seconds)
2022-11-11 16:13:01 +0100 <lortabac> in order to make the relevant cost center apparent I guess I'd need to run the application for multiple days, which is not feasible on my computer
2022-11-11 16:14:24 +0100 <lortabac> is there some way to solve this problem? something like hiding the biggest non-relevant cost centers or maybe a better visualization tool
2022-11-11 16:15:20 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) (Ping timeout: 260 seconds)
2022-11-11 16:15:38 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-11-11 16:15:47 +0100motherfsck(~motherfsc@user/motherfsck) (Quit: quit)
2022-11-11 16:16:09 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-11-11 16:17:58 +0100L29Ah(~L29Ah@wikipedia/L29Ah)
2022-11-11 16:18:17 +0100 <merijn> lortabac: Maybe? How much did you dig through the GHC user guide on profiling?
2022-11-11 16:18:36 +0100 <merijn> There's a whole bunch of knobs to tweak, iirc
2022-11-11 16:20:18 +0100 <lortabac> I haven't read 100% of the user guide section on profiling, I guess I can't avoid it
2022-11-11 16:20:49 +0100Xeroine(~Xeroine@user/xeroine) (Ping timeout: 260 seconds)
2022-11-11 16:20:58 +0100 <merijn> lortabac: tbh, the user guide is one of the most underrated pieces of the haskell/ghc ecosystem :p
2022-11-11 16:21:26 +0100 <lortabac> apparently heap profiling can also be produced as event logs, let me try it
2022-11-11 16:21:42 +0100 <merijn> lortabac: I don't recall if speedscope supported memory profiling too
2022-11-11 16:22:02 +0100motherfsck(~motherfsc@user/motherfsck)
2022-11-11 16:22:03 +0100moonsheep(~user@user/moonsheep) (ERC 5.4 (IRC client for GNU Emacs 28.2))
2022-11-11 16:22:05 +0100califax(~califax@user/califx) (Ping timeout: 255 seconds)
2022-11-11 16:24:00 +0100califax(~califax@user/califx)
2022-11-11 16:24:09 +0100chele(~chele@user/chele) (Remote host closed the connection)
2022-11-11 16:24:38 +0100Chioque(~mansur@175.136.30.124) (Quit: WeeChat 3.7.1)
2022-11-11 16:26:04 +0100Maeda(~Maeda@91-161-10-149.subs.proxad.net) (Quit: BRB)
2022-11-11 16:26:51 +0100 <lortabac> now I only need a couple of hours to rebuild the whole ecosystem with -eventlog :)
2022-11-11 16:27:38 +0100Xeroine(~Xeroine@user/xeroine)
2022-11-11 16:29:04 +0100Maeda(~Maeda@91-161-10-149.subs.proxad.net)
2022-11-11 16:30:34 +0100Maeda(~Maeda@91-161-10-149.subs.proxad.net) (Client Quit)
2022-11-11 16:31:00 +0100Maeda(~Maeda@91-161-10-149.subs.proxad.net)
2022-11-11 16:33:51 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-11 16:36:49 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-11-11 16:37:52 +0100 <merijn> Hey, at least cabal can now automatically rebuild missing profiling stuff that's missing :p
2022-11-11 16:38:01 +0100 <merijn> That wasn't the case pre-v2 :p
2022-11-11 16:38:54 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
2022-11-11 16:39:46 +0100 <schuelermine[m]> does anybody else have a problem where Cabal doesn’t build the Hackage docs for QuickCheck and leads to Hackage docs for anything depending on it not being buildable?
2022-11-11 16:39:51 +0100geekosaurremembers that. and the special "World" target to make it reuild everything
2022-11-11 16:40:14 +0100 <geekosaur> docs are apparently broken in 3.8
2022-11-11 16:40:31 +0100 <schuelermine[m]> oh
2022-11-11 16:40:34 +0100 <schuelermine[m]> :(
2022-11-11 16:41:36 +0100 <geekosaur> I had cabal configured to build docs and it eventually failed with an assertion error that's not supposed to happen in a release version
2022-11-11 16:42:02 +0100zer0bitz_(~zer0bitz@196.244.192.61) (Read error: Connection reset by peer)
2022-11-11 16:42:02 +0100 <geekosaur> but that was with HEAD built supposedly as a release version
2022-11-11 16:42:04 +0100gmg(~user@user/gehmehgeh)
2022-11-11 16:42:27 +0100geekosaursubmitted himself as a guinea pig for the new XDG support
2022-11-11 16:42:48 +0100 <geekosaur> (speaking of, I need to rebuild everything again at some point with docs disabled and see if it all works)
2022-11-11 16:53:59 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-11 16:55:05 +0100random-jellyfish(~random-je@user/random-jellyfish)
2022-11-11 16:58:46 +0100euandreh(~Thunderbi@179.214.113.107)
2022-11-11 17:00:04 +0100mimi1vx[m](~osukupmat@2001:470:69fc:105::2:418d) (Quit: You have been kicked for being idle)
2022-11-11 17:00:53 +0100Maeda(~Maeda@91-161-10-149.subs.proxad.net) (Quit: brb)
2022-11-11 17:01:23 +0100Maeda(~Maeda@91-161-10-149.subs.proxad.net)
2022-11-11 17:02:11 +0100rendar(~Paxman@user/rendar)
2022-11-11 17:02:15 +0100moonsheep(~user@user/moonsheep)
2022-11-11 17:02:31 +0100 <ski> (`hsc' is a groveller)
2022-11-11 17:02:45 +0100 <rendar> an author said that J lang (successor of APL, with "normal" symbols) is "haskell compressed", do you agree?
2022-11-11 17:03:03 +0100 <moonsheep> how would you guys prefer AF_PACKET addresses to be implemented? as another constructor of SockAddr, or a separate type that instances SockAddress?
2022-11-11 17:03:04 +0100vglfr(~vglfr@145.224.100.100) (Read error: Connection reset by peer)
2022-11-11 17:03:17 +0100vglfr(~vglfr@145.224.100.100)
2022-11-11 17:04:45 +0100 <merijn> rendar: I would definitely *not* consider J "haskell compressed" :p
2022-11-11 17:04:49 +0100 <merijn> It's a neat language, though
2022-11-11 17:05:14 +0100 <rendar> ahaha
2022-11-11 17:05:43 +0100 <rendar> well, that author i think referred to the fact that with J you compose symbols (functions on data) the same way you compose haskel functions (words)
2022-11-11 17:06:09 +0100 <moonsheep> well for now I'll just add it as another constructor, it seems easier
2022-11-11 17:10:16 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9)
2022-11-11 17:10:46 +0100 <tomsmeding> rendar: more like Husk https://github.com/barbuz/Husk/wiki/Commands
2022-11-11 17:11:50 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:c3bb:6c84:6165:ec98) (Quit: WeeChat 2.8)
2022-11-11 17:14:13 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
2022-11-11 17:14:25 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-11 17:14:32 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 268 seconds)
2022-11-11 17:15:53 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) (Remote host closed the connection)
2022-11-11 17:19:14 +0100random-jellyfish(~random-je@user/random-jellyfish) (Quit: Client closed)
2022-11-11 17:22:32 +0100 <moonsheep> does this look good? https://paste.tomsmeding.com/Zmo6S5cj
2022-11-11 17:23:01 +0100 <moonsheep> apparently hardware addresses are not necessarily our beloved 6-byte address, and can be up to 8 bytes long which is really annoyin
2022-11-11 17:23:40 +0100nate4(~nate@98.45.169.16)
2022-11-11 17:23:56 +0100zer0bitz(~zer0bitz@196.244.192.62)
2022-11-11 17:25:05 +0100 <moonsheep> s/yin/ying/
2022-11-11 17:26:50 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 246 seconds)
2022-11-11 17:27:19 +0100ph88(~ph88@ip5f5af71f.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
2022-11-11 17:28:25 +0100ph88(~ph88@2a02:8109:9e00:71d0:a90d:e7d5:fe91:a32a)
2022-11-11 17:28:43 +0100nate4(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-11-11 17:29:17 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-11 17:30:20 +0100Techcable(~Techcable@user/Techcable) (Ping timeout: 246 seconds)
2022-11-11 17:30:51 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2022-11-11 17:32:55 +0100chexum(~quassel@gateway/tor-sasl/chexum)
2022-11-11 17:33:11 +0100califax(~califax@user/califx) (Remote host closed the connection)
2022-11-11 17:36:54 +0100ph88(~ph88@2a02:8109:9e00:71d0:a90d:e7d5:fe91:a32a) (Ping timeout: 252 seconds)
2022-11-11 17:37:52 +0100zeenk(~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Ping timeout: 252 seconds)
2022-11-11 17:38:30 +0100InstX1(~Liam@2601:6c4:4081:54f0:c9a9:2cf7:f581:1191)
2022-11-11 17:39:34 +0100teo(~teo@user/teo) (Ping timeout: 260 seconds)
2022-11-11 17:39:43 +0100 <c_wraith> moonsheep: making a list field strict is essentially useless. And the Maybe field being strict is.. only of questionable use
2022-11-11 17:40:23 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds)
2022-11-11 17:40:33 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-11 17:40:55 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-11-11 17:41:07 +0100 <moonsheep> I have no idea about strictness business, I'm simply trying to make it look sort of similar to code that I haven't written and don't understand :p
2022-11-11 17:41:34 +0100phma(phma@2001:5b0:210d:6148:bdc4:3c24:81d2:404a) (Read error: Connection reset by peer)
2022-11-11 17:42:33 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-11-11 17:42:49 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-11-11 17:42:49 +0100zeenk(~zeenk@188.26.82.148)
2022-11-11 17:43:47 +0100polo(~polo@pool-100-11-18-203.phlapa.fios.verizon.net)
2022-11-11 17:44:42 +0100phma(~phma@host-67-44-208-151.hnremote.net)
2022-11-11 17:44:47 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-11-11 17:45:05 +0100califax(~califax@user/califx)
2022-11-11 17:45:51 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-11-11 17:49:53 +0100jakalx(~jakalx@base.jakalx.net)
2022-11-11 17:51:11 +0100phma(~phma@host-67-44-208-151.hnremote.net) (Read error: Connection reset by peer)
2022-11-11 17:51:17 +0100polo(~polo@pool-100-11-18-203.phlapa.fios.verizon.net) (Ping timeout: 276 seconds)
2022-11-11 17:54:22 +0100Lycurgus(~juan@user/Lycurgus)
2022-11-11 17:54:37 +0100phma(~phma@2001:5b0:210f:1678:6fe2:e8ab:3dd5:da93)
2022-11-11 17:54:37 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds)
2022-11-11 18:01:08 +0100zeenk(~zeenk@188.26.82.148) (Ping timeout: 246 seconds)
2022-11-11 18:01:09 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9)
2022-11-11 18:01:15 +0100zeenk2(~zeenk@2a02:2f04:a206:9700:de2a:390b:d890:3767)
2022-11-11 18:01:23 +0100 <moonsheep> alright, I've gotten something to compile
2022-11-11 18:01:27 +0100 <moonsheep> I'm gonna do some tests now
2022-11-11 18:01:48 +0100 <moonsheep> is there some easy way to run the executable produced by `stack build` with sudo?
2022-11-11 18:02:03 +0100 <moonsheep> obviously can't run stack with sudo, because it's going to try to install its own GHC, recompile everything ,etc.
2022-11-11 18:02:23 +0100 <moonsheep> I need root to be able to create raw sockets
2022-11-11 18:04:22 +0100 <monochrom> Bypass stack, find where the exe is and sudo it directly? Even copy it out to a directory you prefer?
2022-11-11 18:04:46 +0100 <moonsheep> well yeah that's what I'm doing, but I was wondering if there's not a more convenient way
2022-11-11 18:04:54 +0100 <monochrom> Is there also a "stack install" that does the latter?
2022-11-11 18:04:56 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-11 18:05:01 +0100 <moonsheep> the path is very strange, and there's a directory named with what looks suspiciously like a hash
2022-11-11 18:05:07 +0100 <moonsheep> I assume it may constnatly change?
2022-11-11 18:05:17 +0100 <moonsheep> is there at least some way to get the executable path reliably?
2022-11-11 18:05:20 +0100 <monochrom> (This is what's wrong with "projects" and "build tools". What about deployment?)
2022-11-11 18:05:27 +0100 <moonsheep> true
2022-11-11 18:05:51 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-11 18:06:07 +0100 <moonsheep> ah found it https://stackoverflow.com/questions/47852911/haskell-stack-locate-the-executable
2022-11-11 18:07:08 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit)
2022-11-11 18:08:12 +0100nunggu(~q@user/nunggu)
2022-11-11 18:08:53 +0100califax(~califax@user/califx) (Remote host closed the connection)
2022-11-11 18:09:27 +0100califax(~califax@user/califx)
2022-11-11 18:09:37 +0100Guest75(~Guest75@178.141.177.81)
2022-11-11 18:09:54 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
2022-11-11 18:11:16 +0100dfee(~dfee@162-227-164-101.lightspeed.sntcca.sbcglobal.net)
2022-11-11 18:12:25 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) (Remote host closed the connection)
2022-11-11 18:12:54 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-11-11 18:13:56 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
2022-11-11 18:14:55 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds)
2022-11-11 18:15:02 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-11 18:15:33 +0100razetime(~quassel@117.193.0.120) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-11-11 18:17:02 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-11 18:20:23 +0100MajorBiscuit(~MajorBisc@c-001-027-007.client.tudelft.eduvpn.nl) (Ping timeout: 246 seconds)
2022-11-11 18:20:59 +0100Tuplanolla(~Tuplanoll@91-159-68-194.elisa-laajakaista.fi)
2022-11-11 18:25:17 +0100mvk(~mvk@2607:fea8:5ce3:8500::4b68) (Ping timeout: 255 seconds)
2022-11-11 18:32:06 +0100jakalx(~jakalx@base.jakalx.net) ()
2022-11-11 18:32:14 +0100jakalx(~jakalx@base.jakalx.net)
2022-11-11 18:33:23 +0100 <moonsheep> success! https://imgur.com/a/CFQOutx
2022-11-11 18:34:12 +0100 <moonsheep> no clue what LLC is
2022-11-11 18:35:48 +0100 <moonsheep> https://paste.tomsmeding.com/Lh6d5MyE
2022-11-11 18:36:07 +0100 <moonsheep> still need to make type families for eth_p_all = 3 and arphrd_ether = 1
2022-11-11 18:36:20 +0100zeenk(~zeenk@5.12.217.54)
2022-11-11 18:36:30 +0100zeenk2(~zeenk@2a02:2f04:a206:9700:de2a:390b:d890:3767) (Ping timeout: 260 seconds)
2022-11-11 18:37:13 +0100 <moonsheep> if I manage to clean up the mess I've created in the network package, I might submit a patch
2022-11-11 18:37:27 +0100mvk(~mvk@2607:fea8:5ce3:8500::4b68)
2022-11-11 18:39:48 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-11 18:40:07 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-11 18:40:42 +0100 <geekosaur> I presume it's the same as the next level of protocol decode (Logical Link Control)
2022-11-11 18:42:25 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2022-11-11 18:42:28 +0100Guest75(~Guest75@178.141.177.81) (Quit: Client closed)
2022-11-11 18:44:54 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
2022-11-11 18:46:08 +0100polo_(~polo@pool-100-11-18-203.phlapa.fios.verizon.net)
2022-11-11 18:46:36 +0100 <moonsheep> why does wireshark think it's LLC though?
2022-11-11 18:46:55 +0100 <moonsheep> I don't think I have control over that 0004 word that is emitted by send
2022-11-11 18:46:59 +0100 <moonsheep> I guess that's just something linux does?
2022-11-11 18:47:56 +0100zeenk(~zeenk@5.12.217.54) (Quit: Konversation terminated!)
2022-11-11 18:47:56 +0100econo(uid147250@user/econo)
2022-11-11 18:48:47 +0100 <geekosaur> might be the closest you get to raw ethernet packets according to the ethernet spec
2022-11-11 18:49:50 +0100 <moonsheep> sounds reasonable
2022-11-11 18:50:28 +0100Kaiepi(~Kaiepi@108.175.84.104) (Ping timeout: 252 seconds)
2022-11-11 18:51:07 +0100 <shapr> GOOD MORNING
2022-11-11 18:51:13 +0100 <shapr> is it time for more Haskell code?
2022-11-11 18:51:41 +0100 <shapr> moonsheep: oh, I used to know the answer to that
2022-11-11 18:51:45 +0100shaprthinks hard
2022-11-11 18:51:53 +0100 <shapr> LLC means "logical link control"
2022-11-11 18:53:32 +0100polo__(~polo@pool-100-11-18-203.phlapa.fios.verizon.net)
2022-11-11 18:53:35 +0100polo__(~polo@pool-100-11-18-203.phlapa.fios.verizon.net) (Changing host)
2022-11-11 18:53:35 +0100polo__(~polo@user/polo)
2022-11-11 18:53:37 +0100polo__money
2022-11-11 18:53:44 +0100 <shapr> I think there's a bit that gets flipped to tell you whether it's an Ethernet packet or a very old school other kind of packet
2022-11-11 18:53:46 +0100 <[exa]> shapr: pls do more haskell code yes
2022-11-11 18:54:05 +0100money(~polo@user/polo) (Client Quit)
2022-11-11 18:54:07 +0100 <shapr> o hi [exa] !
2022-11-11 18:54:10 +0100 <shapr> How you doing?
2022-11-11 18:54:20 +0100polo_(~polo@pool-100-11-18-203.phlapa.fios.verizon.net) (Ping timeout: 276 seconds)
2022-11-11 18:55:28 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9)
2022-11-11 18:56:23 +0100 <shapr> I should write a blog post about the library cdsmith and I worked on
2022-11-11 18:57:05 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-11-11 18:58:05 +0100cfricke(~cfricke@user/cfricke) (Ping timeout: 260 seconds)
2022-11-11 18:59:04 +0100 <moonsheep> shapr: I mean, I know what it means, I just don't know why it's there/Who put it there/why
2022-11-11 19:02:54 +0100 <Rembane> Maybe there's a RFC about it somewhere?
2022-11-11 19:03:37 +0100titibandit(~titibandi@xdsl-87-78-8-6.nc.de) (Remote host closed the connection)
2022-11-11 19:04:04 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-11-11 19:04:57 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-11-11 19:08:09 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) (Remote host closed the connection)
2022-11-11 19:08:12 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-11 19:09:45 +0100MajorBiscuit(~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net)
2022-11-11 19:10:49 +0100 <geekosaur> another thing to consider is that very old ethernet cards let you output nearly anything, but modern ones are smart and do much of the framing themselves so you have to output something compatible with that
2022-11-11 19:13:56 +0100acidjnk(~acidjnk@p200300d6e7137a61a1c25cbd352f97cb.dip0.t-ipconnect.de)
2022-11-11 19:18:02 +0100ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds)
2022-11-11 19:18:50 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-11-11 19:20:13 +0100ec_(~ec@gateway/tor-sasl/ec)
2022-11-11 19:20:37 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-11-11 19:21:09 +0100detuneattune(~detuneatt@user/detuneattune)
2022-11-11 19:22:47 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9)
2022-11-11 19:23:48 +0100moonsheep(~user@user/moonsheep) (ERC 5.4 (IRC client for GNU Emacs 28.2))
2022-11-11 19:24:47 +0100MajorBiscuit(~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net) (Ping timeout: 246 seconds)
2022-11-11 19:25:14 +0100nunggu(~q@user/nunggu) (Ping timeout: 255 seconds)
2022-11-11 19:25:16 +0100beteigeuze(~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 268 seconds)
2022-11-11 19:26:24 +0100nunggu(~q@user/nunggu)
2022-11-11 19:33:45 +0100Techcable(~Techcable@user/Techcable)
2022-11-11 19:36:22 +0100 <shapr> aw, I missed moonsheep
2022-11-11 19:36:31 +0100 <shapr> I was gonna ask for a link to the project so I could engage my brain
2022-11-11 19:36:32 +0100 <shapr> dang
2022-11-11 19:36:42 +0100 <shapr> @message moonsheep is there a link to your project? I want to know more!
2022-11-11 19:36:42 +0100 <lambdabot> Maybe you meant: messages messages-loud messages?
2022-11-11 19:36:47 +0100 <shapr> @tell moonsheep is there a link to your project? I want to know more!
2022-11-11 19:36:48 +0100 <lambdabot> Consider it noted.
2022-11-11 19:37:03 +0100 <EvanR> Set a course for brain warp 9. Engage.
2022-11-11 19:39:28 +0100beteigeuze(~Thunderbi@a79-169-109-107.cpe.netcabo.pt)
2022-11-11 19:40:25 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-11-11 19:42:16 +0100jakalx(~jakalx@base.jakalx.net)
2022-11-11 19:44:10 +0100beteigeuze(~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 260 seconds)
2022-11-11 19:44:56 +0100jmdaemon(~jmdaemon@user/jmdaemon)
2022-11-11 19:45:09 +0100manwithl-(~manwithlu@194.177.28.176) (Remote host closed the connection)
2022-11-11 19:46:56 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) (Remote host closed the connection)
2022-11-11 19:47:28 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds)
2022-11-11 19:49:31 +0100manwithluck(~manwithlu@194.177.28.176)
2022-11-11 19:51:27 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net)
2022-11-11 19:55:27 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.)
2022-11-11 19:56:42 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-11-11 19:57:17 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-11-11 19:58:00 +0100chexum(~quassel@gateway/tor-sasl/chexum)
2022-11-11 20:01:00 +0100Lycurgus(~juan@user/Lycurgus) (Quit: Exeunt https://tinyurl.com/4m8d4kd5)
2022-11-11 20:01:17 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-11 20:03:55 +0100 <[exa]> shapr: that looked like some decent networking finally
2022-11-11 20:04:03 +0100 <[exa]> or maybe sploits
2022-11-11 20:07:38 +0100Kaiepi(~Kaiepi@108.175.84.104)
2022-11-11 20:11:52 +0100nate4(~nate@98.45.169.16)
2022-11-11 20:13:43 +0100 <EvanR> is mapM and mapM_ completely redundant, i.e. should I use traverse, for, and for_ instead in all cases where I'd use mapM. If there happens to be a monad
2022-11-11 20:14:39 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-11 20:14:41 +0100 <EvanR> should mapM be excised from brain
2022-11-11 20:16:03 +0100 <Rembane> They are shorter though, less to type.
2022-11-11 20:17:04 +0100nate4(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-11-11 20:17:33 +0100 <[exa]> EvanR: sometimes you want to scream MONAD MONAD MONAD
2022-11-11 20:17:46 +0100 <[exa]> and mapM is precisely for that opportunity
2022-11-11 20:17:47 +0100 <EvanR> dammit, mapM_ is in prelude and for_ is not
2022-11-11 20:18:49 +0100 <EvanR> good point
2022-11-11 20:19:25 +0100manwithluck(~manwithlu@194.177.28.176) (Quit: ZNC 1.8.2 - https://znc.in)
2022-11-11 20:19:27 +0100 <[exa]> anyway afaik the consensus is to use traverse unless dire circumstances arise
2022-11-11 20:19:38 +0100 <[exa]> (hm traverse_ isn't in prelude either :( )
2022-11-11 20:21:15 +0100manwithluck(~manwithlu@194.177.28.176)
2022-11-11 20:30:10 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2022-11-11 20:31:07 +0100acidjnk(~acidjnk@p200300d6e7137a61a1c25cbd352f97cb.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2022-11-11 20:32:33 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-11 20:34:31 +0100 <dsal> I feel so bad every time I use for_
2022-11-11 20:35:05 +0100 <EvanR> because you're "evaluating a bunch of stuff just for the side effects?" xD
2022-11-11 20:35:27 +0100 <dsal> Yeah. I didn't come to Haskell to write for_ loops.
2022-11-11 20:36:28 +0100 <[exa]> lol
2022-11-11 20:37:47 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1) (Ping timeout: 248 seconds)
2022-11-11 20:39:44 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1)
2022-11-11 20:46:52 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-11-11 20:47:26 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9)
2022-11-11 20:47:38 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-11-11 20:48:43 +0100wootehfoot(~wootehfoo@user/wootehfoot)
2022-11-11 20:52:49 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) (Ping timeout: 252 seconds)
2022-11-11 20:53:01 +0100detuneattune(~detuneatt@user/detuneattune) (Read error: Connection reset by peer)
2022-11-11 20:58:56 +0100mvk(~mvk@2607:fea8:5ce3:8500::4b68) (Ping timeout: 252 seconds)
2022-11-11 21:06:55 +0100detuneattune(~detuneatt@user/detuneattune)
2022-11-11 21:07:14 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
2022-11-11 21:08:44 +0100califax(~califax@user/califx) (Ping timeout: 255 seconds)
2022-11-11 21:09:16 +0100detuneattune(~detuneatt@user/detuneattune) (Client Quit)
2022-11-11 21:09:25 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-11-11 21:10:06 +0100califax(~califax@user/califx)
2022-11-11 21:10:37 +0100detuneattune(~detuneatt@user/detuneattune)
2022-11-11 21:12:47 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
2022-11-11 21:15:39 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 268 seconds)
2022-11-11 21:16:06 +0100motherfsck(~motherfsc@user/motherfsck) (Remote host closed the connection)
2022-11-11 21:17:21 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-11-11 21:18:07 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds)
2022-11-11 21:19:49 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2022-11-11 21:22:11 +0100Guest647money
2022-11-11 21:28:03 +0100 <tomsmeding> I mean, sometimes you have to :p
2022-11-11 21:30:13 +0100jmdaemon(~jmdaemon@user/jmdaemon) (Quit: ZNC 1.8.2 - https://znc.in)
2022-11-11 21:30:23 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-11-11 21:32:01 +0100euandreh(~Thunderbi@179.214.113.107) (Quit: euandreh)
2022-11-11 21:32:25 +0100euandreh(~Thunderbi@179.214.113.107)
2022-11-11 21:32:47 +0100jmdaemon(~jmdaemon@user/jmdaemon)
2022-11-11 21:33:29 +0100jmdaemon(~jmdaemon@user/jmdaemon) (Remote host closed the connection)
2022-11-11 21:34:11 +0100nate4(~nate@98.45.169.16)
2022-11-11 21:34:41 +0100jmdaemon(~jmdaemon@user/jmdaemon)
2022-11-11 21:38:22 +0100Guest84(~Guest84@23.19.117.56)
2022-11-11 21:38:36 +0100 <dolio> What's the problem?
2022-11-11 21:39:08 +0100pavonia(~user@user/siracusa)
2022-11-11 21:39:13 +0100 <dolio> Like, for_ is how I calculate the free variables of something.
2022-11-11 21:39:19 +0100nate4(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2022-11-11 21:39:44 +0100 <dolio> (Possibly not for_ literally, but something equivalent.)
2022-11-11 21:44:53 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-11-11 21:46:26 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-11 21:47:08 +0100 <[Leary]> I like for_. My only complaint is that more often what I actually want is `mfor = flip foldMap` or `apfor xs f = getAp $ mfor xs (Ap . f)`.
2022-11-11 21:48:06 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9)
2022-11-11 21:51:45 +0100acidjnk(~acidjnk@p200300d6e7137a61a1c25cbd352f97cb.dip0.t-ipconnect.de)
2022-11-11 21:52:16 +0100zeenk(~zeenk@2a02:2f04:a213:900:ec6b:90ab:f67c:4c1a)
2022-11-11 21:53:09 +0100 <dsal> The name just doesn't taste good to me. I still use it.
2022-11-11 21:53:47 +0100 <dsal> The weirdest thing is that people use it for traversing a Maybe. If you think of Maybe as a zero-or-one container, that sort of works, I guess.
2022-11-11 21:55:55 +0100 <dolio> Yeah, it's nice for that, too.
2022-11-11 21:56:35 +0100random-jellyfish(~random-je@user/random-jellyfish)
2022-11-11 22:00:56 +0100jpds2(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 255 seconds)
2022-11-11 22:12:04 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) (Remote host closed the connection)
2022-11-11 22:21:12 +0100dtman34(~dtman34@2601:447:d080:83c8:a3db:9010:bf80:cdf5) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in)
2022-11-11 22:21:33 +0100dtman34(~dtman34@2601:447:d080:83c8:24bc:55ba:13b9:cc55)
2022-11-11 22:23:50 +0100 <c_wraith> before the FTP proposal went through, people used to ask for whenJust_ a lot. Including me. Not realizing it was traverse_
2022-11-11 22:26:49 +0100bgs(~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
2022-11-11 22:28:13 +0100 <dsal> Yeah, I did a similar thing where I gave it a name that was a little easier to read than `traverse_` everywhere. Otherwise, my code would just be all the permutations of coerce and traverse and fmap and bind.
2022-11-11 22:31:10 +0100money(sid532813@user/polo) (Killed (molybdenum.libera.chat (Nickname regained by services)))
2022-11-11 22:35:05 +0100InstX1(~Liam@2601:6c4:4081:54f0:c9a9:2cf7:f581:1191) (Ping timeout: 260 seconds)
2022-11-11 22:35:35 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-11-11 22:37:19 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-11 22:38:22 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-11-11 22:40:39 +0100InstX1_(~Liam@c-98-208-218-119.hsd1.fl.comcast.net)
2022-11-11 22:40:52 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Client Quit)
2022-11-11 22:42:21 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-11-11 22:42:29 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-11-11 22:42:36 +0100shriekingnoise(~shrieking@186.137.167.202) (Ping timeout: 268 seconds)
2022-11-11 22:45:55 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-11-11 22:48:36 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-11-11 22:48:40 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9)
2022-11-11 22:56:04 +0100Xeroine(~Xeroine@user/xeroine) (Read error: Connection reset by peer)
2022-11-11 22:56:12 +0100Guest6024(sid532813@id-532813.tinside.irccloud.com)
2022-11-11 22:56:25 +0100sammelweis(~quassel@c-68-48-18-140.hsd1.mi.comcast.net)
2022-11-11 22:57:56 +0100Xeroine(~Xeroine@user/xeroine)
2022-11-11 23:02:17 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-11-11 23:03:21 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-11-11 23:03:30 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:3053:4575:ae1c:cfd9) (Remote host closed the connection)
2022-11-11 23:06:32 +0100chromoblob(~user@37.113.164.122)
2022-11-11 23:06:43 +0100mvk(~mvk@2607:fea8:5ce3:8500::4b68)
2022-11-11 23:09:23 +0100random-jellyfish(~random-je@user/random-jellyfish) (Ping timeout: 260 seconds)
2022-11-11 23:12:04 +0100causal(~user@50.35.83.177) (Quit: WeeChat 3.7.1)
2022-11-11 23:18:31 +0100goober(~goober@90-231-13-185-no3430.tbcn.telia.com)
2022-11-11 23:21:13 +0100 <iteratee_> I have a question about linear types
2022-11-11 23:21:17 +0100iteratee_iteratee
2022-11-11 23:21:50 +0100 <Rembane> iteratee: Go ahead! Someone here should be able to answer it. :)
2022-11-11 23:22:22 +0100 <iteratee> The description says that "Passing x to a linear function" is linear, but in what I've been experimenting, that doesn't seem quite accurate.
2022-11-11 23:22:25 +0100 <EvanR> sorry iteratee_ already referred to the question, it's gone
2022-11-11 23:22:57 +0100 <iteratee> EvanR: I have "Many" questions about linear types.
2022-11-11 23:23:43 +0100 <iteratee> I think it would be more accurate to say "Passing x to a linear function and using the result linearly"
2022-11-11 23:23:53 +0100 <davean> I'm worse off, I got an answer about linear types.
2022-11-11 23:25:04 +0100 <iteratee> Which is sometimes what you want, but it tends to infect your program because you have a value that you must consume linearly, and you do by passing it to a linear function, but now you have to track the linearity of the result, even if you don't care any more.
2022-11-11 23:25:52 +0100 <EvanR> I vaguely remember the details of this were in the linear haskell paper
2022-11-11 23:26:02 +0100 <EvanR> detailed caveats
2022-11-11 23:26:05 +0100 <iteratee> Is there a way to annotate a function as: a %1 -> %Many b? So that I can consume the a linearly, but I'm allowed to use the result non-linearly?
2022-11-11 23:26:55 +0100 <iteratee> The restriction makes sense. If I put the linear argument into a data structure or a newtype, I shouldn't be able to just break linearity.
2022-11-11 23:28:24 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
2022-11-11 23:29:20 +0100myme(~myme@40.51-175-185.customer.lyse.net) (Quit: WeeChat 3.7.1)
2022-11-11 23:30:54 +0100myme(~myme@40.51-175-185.customer.lyse.net)
2022-11-11 23:30:59 +0100 <iteratee> But If I'm enforcing linearity of a random number generator, I'd like you to be able to compute x * x when x is random.
2022-11-11 23:32:02 +0100 <iteratee> I guess you can use a GADT wrapper for the return type as a crutch for now.
2022-11-11 23:32:41 +0100 <geekosaur> isn't there something for that?
2022-11-11 23:33:12 +0100 <iteratee> data RandResult g a where RandResult :: g %1 -> a -> RandResult
2022-11-11 23:33:26 +0100biberu(~biberu@user/biberu) (Read error: Connection reset by peer)
2022-11-11 23:33:28 +0100 <iteratee> geekosaur: Yes, see above^
2022-11-11 23:33:47 +0100 <geekosaur> https://hackage.haskell.org/package/linear-base-0.3.0/docs/Prelude-Linear.html#g:16
2022-11-11 23:36:02 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2022-11-11 23:38:06 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
2022-11-11 23:38:30 +0100biberu(~biberu@user/biberu)
2022-11-11 23:41:34 +0100myme(~myme@40.51-175-185.customer.lyse.net) (Remote host closed the connection)
2022-11-11 23:42:43 +0100zeenk(~zeenk@2a02:2f04:a213:900:ec6b:90ab:f67c:4c1a) (Quit: Konversation terminated!)
2022-11-11 23:43:30 +0100myme(~myme@40.51-175-185.customer.lyse.net)
2022-11-11 23:45:10 +0100beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt)
2022-11-11 23:50:29 +0100 <iteratee> geekosaur: Thanks, that's interesting, and I ended up doing something like that in my code.
2022-11-11 23:51:09 +0100TonyStone(~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) (Ping timeout: 260 seconds)
2022-11-11 23:51:26 +0100 <iteratee> But it still enforces linear discipline. I can pass a linear Int (Or any Dupable) to as many linear functions as I want, but I can't pass it to a nonlinear function.
2022-11-11 23:53:18 +0100 <iteratee> I think what I want is Ur
2022-11-11 23:56:20 +0100 <geekosaur> possibly `forget`?
2022-11-11 23:57:10 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)