Home liberachat/#haskell: Logs Calendar

Logs on 2021-12-09 (liberachat/#haskell)

00:01:45 × superstar64 quits (~superstar@2600:1700:ed80:50a0:d250:99ff:fe2c:53c4) (Quit: Leaving)
00:02:27 <int-e> dsal: if you're just looking for brevity: `(thing, filter (/= thing) -> stuff) <- stuff` is a valid view pattern
00:02:35 <georgy> dsal that is surprising. do you have a test case? are you compiling with -O2?
00:02:44 <int-e> hmm
00:02:56 <int-e> that is not right
00:03:24 <dsal> georgy: It's not that surprising. It's a very small amount of data.
00:03:27 bollu joins (uid233390@id-233390.helmsley.irccloud.com)
00:03:31 <int-e> the rhs would be zip stuff (repeat stuff) and that's pushing it from ugly to terrible :)
00:03:47 <geekosaur> also lists can fuse and get big speedups
00:04:18 genieliu joins (~genieliu@111.193.167.10)
00:05:16 <int-e> dsal: is using filter (/=) better than the natural select [] = []; select (x:xs) = (x,xs) : map (second (x:)) (select xs)?
00:05:34 <dsal> int-e: doing that manually seemed to be.
00:05:47 <dsal> "manually" -- I'm doing that several times in a list monad.
00:05:53 <int-e> I guess carrying those pairs around is expensive
00:06:35 InternetCitizen joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
00:09:55 × genieliu quits (~genieliu@111.193.167.10) (Quit: Lost terminal)
00:13:31 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
00:15:29 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
00:15:30 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
00:18:51 Guest|92 joins (~Guest|92@88.98.202.129)
00:19:01 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
00:20:55 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
00:20:55 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
00:20:55 wroathe joins (~wroathe@user/wroathe)
00:21:01 × alx741 quits (~alx741@186.178.108.192) (Ping timeout: 240 seconds)
00:21:44 × deadmarshal quits (~deadmarsh@95.38.228.30) (Ping timeout: 265 seconds)
00:27:39 × max22- quits (~maxime@2a01cb088335980012b6a709282cc846.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
00:28:59 × jkaye quits (~jkaye@c-71-205-220-154.hsd1.co.comcast.net) (Ping timeout: 268 seconds)
00:29:10 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
00:30:33 <georgy> is there some unicode character similar to (:) that I can use for functions rather than just constructors?
00:30:41 <georgy> s/just/only
00:31:41 <geekosaur> by functions do you actually mean functions, or operators?
00:32:08 × sprout_ quits (~quassel@2a02:a467:ccd6:1:bc10:5f40:71cb:b3b6) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
00:32:17 <georgy> yeah, I meant an operator not a function
00:32:22 × acidjnk_new quits (~acidjnk@p200300d0c7271e730cb547fb259b1246.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
00:32:22 <hpc> there's a unicode colon lookalike that agda uses to differentiate between type signatures and its dependent sum syntax sugar, don't know what the actual character is though
00:32:25 <hpc> so it exists
00:32:52 <geekosaur> greek question mark? :þ
00:32:55 <hpc> there are websites that index the unicode homoglyphs, you can probably find it there
00:33:25 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 252 seconds)
00:33:40 <hpc> > let x -:> y = x + y in 5 :-> 10
00:33:42 <lambdabot> error:
00:33:42 <lambdabot> • Data constructor not in scope: (:->) :: t0 -> t1 -> t
00:33:42 <lambdabot> • Perhaps you meant one of these:
00:33:45 <hpc> > let x -:> y = x + y in 5 -:> 10
00:33:47 <lambdabot> 15
00:33:56 <hpc> you can also put it in the middle of the operator maybe
00:34:07 <georgy> yes
00:34:18 <georgy> I found it, for doing something completely silly
00:35:04 <georgy> https://paste.tomsmeding.com/b9QWwtTA
00:35:10 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:39:01 × InternetCitizen quits (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 240 seconds)
00:42:13 × Akiva quits (~Akiva@user/Akiva) (Ping timeout: 240 seconds)
00:42:23 yin is now known as zero
00:43:01 × pfurla quits (~pfurla@2804:14d:5c5a:9a78:840d:6ccb:3c35:c390) (Quit: gone to sleep. ZZZzzz…)
00:43:35 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Remote host closed the connection)
00:43:52 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
00:45:33 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
00:46:43 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
00:48:35 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
00:49:18 × fjmorazan quits (~quassel@user/fjmorazan) (Quit: fjmorazan)
00:49:32 fjmorazan joins (~quassel@user/fjmorazan)
00:49:46 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 265 seconds)
00:49:50 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
00:53:25 × Guest|92 quits (~Guest|92@88.98.202.129) (Ping timeout: 240 seconds)
00:54:16 <hololeap> is there an option for cabal to place executables in a more convenient location after running cabal build?
00:55:00 × fjmorazan quits (~quassel@user/fjmorazan) (Quit: fjmorazan)
00:55:15 <sclv> nope. best you can do is a “cabal install” and pass an arg for a path in that. But the semantics are different
00:55:33 fjmorazan joins (~quassel@user/fjmorazan)
00:56:55 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
00:59:00 <xerox> I find myself doing cp "$(cabal list-bin Name)" . sometimes
00:59:16 maroloccio joins (~marolocci@151.53.155.184)
00:59:20 mvk joins (~mvk@2607:fea8:5cdd:f000::9788)
00:59:21 <monochrom> Don't forget to also run "strip" :)
00:59:34 <monochrom> "cabal install" runs strip, but "cabal build" doesn't.
01:01:12 <monochrom> But "cabal list-bin" is nice, yeah.
01:01:46 Kevin578 joins (~Kevin578@pool-96-237-112-198.bstnma.fios.verizon.net)
01:02:13 × jgeerds quits (~jgeerds@55d4ac73.access.ecotel.net) (Ping timeout: 240 seconds)
01:07:11 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
01:07:18 <hololeap> sclv, thanks, this actually works great: cabal install --install-method=symlink --installdir=./bin
01:09:12 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
01:11:22 <monochrom> symlink is a very bad idea unless you never clear $HOME/.cabal/store
01:12:17 <monochrom> Because the exe is stored there.
01:12:32 <sclv> well sadly even copy doesn't necessarily work then if there's any attendant datafiles
01:12:34 <hololeap> oh, I thought it was symlinking to the exes in the dist-newstyle dir
01:13:32 <sclv> *me* shakes fist at datafiles
01:13:32 <hpc> just do the windows trick and make your executable also happen to be a zip file
01:13:32 <sclv> i think we can fix the datadir flags to do things right, but nobody's just worked out the details yet
01:13:49 × mncheck quits (~mncheck@193.224.205.254) (Remote host closed the connection)
01:13:52 <geekosaur> people have iirc been trying to work out those details for years, because they also have to work after cabal build
01:14:03 <sclv> i mean there's years old tickets
01:14:06 mncheck joins (~mncheck@193.224.205.254)
01:14:23 <sclv> no Very Smart Person has sat down and just given a full answer to "here's what to do that's flexible enough for all circumstances"
01:15:15 <sclv> like imho there's not even failed attempts that actually began from the full problem space -- just proposals that didn't take enough into account, and when people pointed out it was harder, people wandered off to worry about other things
01:15:29 <sclv> i.e. i don't think its too hard to solve. it just hasn't had the right sustained attention
01:16:02 × Neuromancer quits (~Neuromanc@user/neuromancer) (Ping timeout: 240 seconds)
01:20:16 mikoto-chan joins (~mikoto-ch@esm-84-240-99-143.netplaza.fi)
01:21:49 × myShoggoth quits (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 252 seconds)
01:22:13 jj joins (~jj@bras-base-stcton1104w-grc-60-69-159-29-115.dsl.bell.ca)
01:23:19 jj parts (~jj@bras-base-stcton1104w-grc-60-69-159-29-115.dsl.bell.ca) ()
01:23:35 <dsal> link hard or link $HOME
01:26:37 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 240 seconds)
01:27:35 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
01:27:35 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
01:27:35 wroathe joins (~wroathe@user/wroathe)
01:30:51 <sm> just embed them
01:34:28 <oats> finally got day 8 https://github.com/oatberry/aoc2021-haskell/blob/main/src/Day8.hs
01:34:49 <oats> I bet there's a better way to have done this, but I figured out an algo for deducing segment assignments
01:35:41 <dsal> I found it was *significantly* faster to use `[(Char, Char)]` instead of `Map Char Char`
01:36:11 <oats> dsal, what does your `Map Char Char` represent
01:36:55 <dsal> The observed wire to the wire where it's supposed to be according to the diagram.
01:37:11 <oats> huh
01:37:13 <georgy> dsal, how many elements do you have?
01:37:13 <dsal> Oh, you had a `Segment`
01:37:19 <dsal> georgy: 7
01:37:29 <georgy> that's not surprising
01:38:11 <oats> I had a hunch that some set operations might be useful, but it took some guesswork to tease out exactly what I had to do
01:38:12 <georgy> I did tests a couple of years ago, and IIRC Map starts becoming faster when you have a couple of hundred elements. and it only gets worse from there. O(n) vs log(n)
01:39:02 <georgy> basically.. list is only faster when the speed likely doesn't matter at all
01:39:41 <dsal> Speed's mattering a lot to me.
01:40:08 <monochrom> "Each dictionary has size 5 but I have 10^10 such dictionaries" may favour a low-tech way.
01:40:12 <georgy> when looking up an element in a 7 element collection?
01:42:21 <monochrom> Or "I have to perform 10^10 lookups"
01:42:29 <oats> dsal, ah yeah, my solution solves the big boy in about 10 seconds :P
01:42:33 <georgy> monochrom, that sounds as contrived as your first example
01:43:20 <dsal> oats: I'm trying to get below a second on my macbook, but it's a pretty bad place to benchmark I've found. heh
01:44:01 <dsal> Currently at 1.103 s
01:44:21 <monochrom> Well, all of AoC is contrived. There.
01:45:54 <dsal> These are real problems. If we don't get this done, Santa's not going to deliver presents.
01:46:20 <oats> I should try to find a way to figure the numbers straight from the scrambled input, without trying to calculate mappings
01:46:24 <oats> wonder if that's possible...
01:47:19 <dsal> I wouldn't think so... the mappings tell you which things are on.
01:47:22 × lbseale quits (~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer)
01:48:32 <oats> but I mean, I wonder if you could use the set relationships between them to figure out a direct mapping from scrambled LED to number
01:48:41 <xerox> mine takes 2.018 s ± 0.011 s over 20 runs
01:49:26 × burnsidesLlama quits (~burnsides@dhcp168-017.wadham.ox.ac.uk) (Remote host closed the connection)
01:50:02 burnsidesLlama joins (~burnsides@client-8-73.eduroam.oxuni.org.uk)
01:50:15 <oats> dsal, such as, I believe the digit '3' one can be found
01:50:32 <oats> by looking for the one that contains all the segments from '1' plus three others
01:50:58 <dsal> Sure, you can hone your search strategy.
01:51:18 <xerox> this one is p slick https://i.redd.it/bkktn06kud481.jpg
01:51:52 <oats> yeah that's exactly what I'm talking about 'ere
01:52:02 <oats> grrr now I gotta go rewrite my solution
01:52:07 <xerox> haha
01:53:32 <oats> I'm still proud of my candidate whittling :<
01:54:31 <dsal> Yeah, sure. You use that to figure out how to search. You can know that the two digit one is the number 1 and that the three digit one is the number seven and has to have two elements in common with 1.
01:54:32 × burnsidesLlama quits (~burnsides@client-8-73.eduroam.oxuni.org.uk) (Ping timeout: 256 seconds)
01:54:38 nebu joins (~user@user/wavion)
01:54:53 <dsal> Here's another fun thing you can know: what segments e, b, and f are without searching.
01:55:29 <dsal> I only end up searching for c, a, and d.
01:55:42 <dsal> (g is the one that isn't any of those other ones)
01:56:35 × polezaivsani quits (~polezaivs@orangeshoelaces.net) (Quit: rcirc on GNU Emacs 27.2)
01:58:11 × Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection)
01:58:26 Feuermagier joins (~Feuermagi@user/feuermagier)
01:58:37 × teo quits (~teo@user/teo) (Ping timeout: 240 seconds)
02:01:52 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
02:07:59 jeetelongname is now known as yeet
02:08:28 yeet is now known as jeetelongname
02:09:01 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
02:09:55 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
02:10:13 lavaman joins (~lavaman@98.38.249.169)
02:10:20 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
02:10:38 lavaman joins (~lavaman@98.38.249.169)
02:10:45 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
02:11:49 × mmhat quits (~mmh@55d44a9c.access.ecotel.net) (Ping timeout: 240 seconds)
02:12:03 × xff0x quits (~xff0x@2001:1a81:52f0:d600:cda8:efb:cccc:cf1c) (Ping timeout: 252 seconds)
02:13:14 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
02:13:49 xff0x joins (~xff0x@2001:1a81:5338:9c00:c94e:b6de:b30e:1ff8)
02:14:36 × vicfred quits (~vicfred@user/vicfred) (Quit: Leaving)
02:15:44 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
02:16:09 pfurla joins (~pfurla@2804:14d:5c81:4104:e550:12e4:9dfb:af3c)
02:16:46 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 265 seconds)
02:18:12 × xkuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer)
02:33:53 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
02:33:53 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
02:33:53 wroathe joins (~wroathe@user/wroathe)
02:34:25 × cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds)
02:34:46 <hololeap> this was a fun piece of a solution for AoC day 4: boards = Ap . Compose . ZipList . repeat
02:34:57 cheater joins (~Username@user/cheater)
02:37:21 × mvk quits (~mvk@2607:fea8:5cdd:f000::9788) (Ping timeout: 252 seconds)
02:38:13 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
02:40:57 <hololeap> type Boards = Ap (Compose ZipList Board)
02:41:07 <hololeap> runBoards :: Boards a -> ZipList (BoardState -> (Maybe (a, BoardState), BoardLog))
02:41:22 lavaman joins (~lavaman@98.38.249.169)
02:42:40 <hololeap> so you can use a ZipList of the initial BoardStates to run it, using ZipList's Applicative instnace
02:45:16 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Ping timeout: 268 seconds)
02:46:12 <dsal> Still a mystery to me how it doesn't seem to parallelize at all.
02:46:15 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
02:47:45 <dsal> turning up the spark limit still doubles my CPU consumption, but also doubles the runtime.
02:47:57 <dsal> computer sparks up and everything seems to slow down
02:49:09 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
02:49:21 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
02:49:46 <monochrom> If you haven't had supper, this is a good time to make a grilled cheese sandwich with your benchmarking!
02:50:11 <dsal> ha. Yeah. I've been benchmarking all kinds of dumb things.
02:50:40 <dsal> Here's what I've learned, everyone: Lists are faster than maps. Parallelism is the same speed as sequential processing.
02:51:06 <dsal> If you're tired of seeing something show up in your profile, inline it and you'll stop seeing its name.
02:51:40 <monochrom> Use an older computer for higher performance.
02:51:47 <dsal> Yes.
02:52:10 <dsal> On my last benchmark run, my thinkpad and fancy new macbook gave me very similar numbers.
02:52:20 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
02:52:43 <dsal> about 1.1 seconds ± 500ms
02:53:59 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 265 seconds)
02:54:01 Erutuon joins (~Erutuon@user/erutuon)
02:54:48 deadmarshal joins (~deadmarsh@95.38.230.89)
02:55:24 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
02:56:24 × jeetelongname quits (~jeet@148.197.248.50) (Quit: thanks!)
02:57:11 jeetelongname joins (~jeet@148.197.248.50)
02:59:18 × deadmarshal quits (~deadmarsh@95.38.230.89) (Ping timeout: 265 seconds)
03:01:58 user0 joins (~aj@langw.roketelkom.co.ug)
03:05:54 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:07:13 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
03:08:08 Cajun joins (~Cajun@user/cajun)
03:13:41 <hololeap> I'm on day 6 now. the second part trashed my naive algorithm using the Monad instance for Data.Vector. I'm thinking about using Data.Vector.Unboxed.Mutable instead, but I'm not sure exactly how that will speed things up
03:16:53 <hololeap> for instance, when a new fish is spawned, the vector will need to grow somehow, but is that really going to be any faster using the mutable interface vs the immutable interface? will the ability to change values in-place be faster than folding over an immutable vector and building up a new one?
03:16:57 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:16:57 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:16:57 finn_elija is now known as FinnElija
03:17:28 <dsal> I used a list for part 1 and it was easy.
03:17:35 <hololeap> oh, snap I just realized a much better way to model this
03:18:19 × motherfsck quits (~motherfsc@user/motherfsck) (Quit: quit)
03:18:31 <hololeap> I can just group all the fish with the same number together
03:31:01 × td_ quits (~td@94.134.91.212) (Ping timeout: 240 seconds)
03:31:04 deadmarshal joins (~deadmarsh@95.38.230.89)
03:33:15 td_ joins (~td@muedsl-82-207-238-085.citykom.de)
03:33:45 myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net)
03:35:14 <byorgey> hololeap: there you go =)
03:35:49 × xff0x quits (~xff0x@2001:1a81:5338:9c00:c94e:b6de:b30e:1ff8) (Ping timeout: 240 seconds)
03:36:59 xff0x joins (~xff0x@2001:1a81:5338:9c00:5f64:a7ee:3eb7:fd11)
03:39:49 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
03:43:24 × nattiestnate quits (~nate@2001:448a:20a0:4134:25e:715f:d637:5263) (Quit: WeeChat 3.3)
03:46:04 zhakupov joins (~zhakupov@static.90.189.158.74.sinor.ru)
03:46:59 <hololeap> that would have been fun calculating a vector with 1.7 trillion elements :p
03:46:59 <jeetelongname> once i got that little bit of insight the problem collapses into place
03:47:23 <jeetelongname> its pretty nice in that regart
03:47:43 <jeetelongname> *regard
03:50:37 × zhakupov quits (~zhakupov@static.90.189.158.74.sinor.ru) (Ping timeout: 240 seconds)
03:51:52 <hololeap> I could have put my RAID to work as swap
03:53:54 × myShoggoth quits (~myShoggot@97-120-85-195.ptld.qwest.net) (Quit: Leaving)
03:54:01 × dwt_ quits (~dwt_@c-98-200-58-177.hsd1.tx.comcast.net) (Ping timeout: 256 seconds)
04:01:40 <jeetelongname> I mean thats the baller way to do it but most of us don't have servers to offload aoc questions onto lol
04:06:00 ProfSimm joins (~ProfSimm@87.227.196.109)
04:07:48 <ProfSimm> Hi
04:08:27 dwt_ joins (~dwt_@c-98-200-58-177.hsd1.tx.comcast.net)
04:09:48 × jeetelongname quits (~jeet@148.197.248.50) (Remote host closed the connection)
04:11:09 <dmj`> ProfSimm: hi
04:12:37 × Guest40 quits (~Guest40@ec2-54-215-90-243.us-west-1.compute.amazonaws.com) (Quit: Client closed)
04:14:07 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
04:15:01 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
04:19:18 × iteratee_ quits (~kyle@162.218.222.107) (Read error: Connection reset by peer)
04:19:26 iteratee joins (~kyle@162.218.222.107)
04:21:10 zhakupov joins (~zhakupov@static.90.189.158.74.sinor.ru)
04:25:49 × ProfSimm quits (~ProfSimm@87.227.196.109) (Ping timeout: 265 seconds)
04:34:08 × shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit)
04:35:58 <jackdk> dmj`: scared him off?
04:37:49 × pavonia quits (~user@user/siracusa) (Ping timeout: 240 seconds)
04:40:20 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
04:43:19 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
04:43:20 <dmj`> jackdk: yea
04:43:23 <dmj`> :(
04:43:30 <jackdk> :(
04:43:49 ProfSimm joins (~ProfSimm@87.227.196.109)
04:45:47 mbuf joins (~Shakthi@122.178.122.215)
04:47:28 <int-e> that was some excellent timing
04:49:19 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
04:50:20 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
04:51:28 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
04:52:56 <jackdk> dmj`: try again
04:53:14 <jackdk> ProfSimm: Hi
04:53:20 <dmj`> ProfSimm: hey !
04:53:51 × deadmarshal quits (~deadmarsh@95.38.230.89) (Ping timeout: 265 seconds)
04:54:51 × emf_ quits (~emf@2620:10d:c091:480::1:7b30) (Ping timeout: 252 seconds)
04:57:44 curiousgay joins (~curiousga@77-120-141-90.kha.volia.net)
04:57:56 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
05:05:18 × ProfSimm quits (~ProfSimm@87.227.196.109) (Remote host closed the connection)
05:08:13 × zhakupov quits (~zhakupov@static.90.189.158.74.sinor.ru) (Ping timeout: 240 seconds)
05:08:21 × LiaoTao quits (~LiaoTao@gateway/tor-sasl/liaotao) (Remote host closed the connection)
05:08:34 LiaoTao joins (~LiaoTao@gateway/tor-sasl/liaotao)
05:09:04 deadmarshal joins (~deadmarsh@95.38.230.89)
05:13:15 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:18:06 × pfurla quits (~pfurla@2804:14d:5c81:4104:e550:12e4:9dfb:af3c) (Quit: gone to sleep. ZZZzzz…)
05:21:13 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
05:23:48 zhakupov joins (~zhakupov@static.90.189.158.74.sinor.ru)
05:28:48 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
05:35:01 × zhakupov quits (~zhakupov@static.90.189.158.74.sinor.ru) (Quit: WeeChat 3.3)
05:38:02 img joins (~img@user/img)
05:39:12 × georgy quits (~bc8165b6@cerf.good1.com) (Quit: CGI:IRC (EOF))
05:41:55 emf joins (~emf@2620:10d:c091:480::1:f5cb)
05:47:30 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
05:52:03 × nfd quits (~nfd@user/nfd) (Ping timeout: 252 seconds)
05:58:52 <hololeap> is this possible without sharing answers? https://adventofcode.com/2021/leaderboard/day/9
05:59:06 <hololeap> all 100 between 5 and 11 minutes
05:59:14 <hololeap> rhetorical question...
06:00:56 <int-e> Well, yes it is.
06:01:56 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
06:02:28 <dsal> hololeap: part of it is just having a toolkit with all the things.
06:03:11 <hololeap> it just seems... rediculous. I didn't even open it up until 10 minutes in so I had failed the leaderboards already
06:04:19 <hololeap> I guess I won't be getting competitive with AoC
06:04:30 <int-e> There are thousands of participants, and only 600 seconds in 10 minutes.
06:06:34 <hololeap> so if you can't complete part 1 and part 2 by 10:00 you have lost... it's just a bit shocking that people can code that quickly
06:06:44 <int-e> You're looking at something like the lower tail of a normal distribution (just for intuition, the actual distribution is bound to be something way more complicated)
06:07:52 <dsal> hololeap: The trick is to get a private leaderboard without professional competitive programmers. :)
06:08:11 <xerox> works wonders for your self esteem
06:10:23 <fizbin> Is anyone using stack to manage their advent-of-code stuff? I can't figure out how to have stack include an external module.
06:10:52 <hololeap> I wonder if there's a twitch stream or something for some of the people on the leaderboard. I would be interested in seeing how someone writes something that quickly.
06:11:32 × jchia[m] quits (~jchiamatr@2001:470:69fc:105::c50b) (Quit: Client limit exceeded: 20000)
06:11:50 <dsal> fizbin: I use stack. what problem are you having?
06:12:02 jchia[m] joins (~jchiamatr@2001:470:69fc:105::c50b)
06:12:41 <fizbin> I've got a flat directory layout (i.e. just a dir. with files like "aoc1.hs", "aoc2.hs", etc. in it) and a stack.yaml file generated by "stack init". I've mentioned the dependency in a package.yaml file, but stack says "Could not find module" when I do "stack ghc aoc9.hs"
06:14:55 <dsal> That's kind of a weird way to use stack.
06:15:27 <dsal> 'stack new' usually creates a project with a src directory and main and stuff.
06:16:30 <fizbin> Right, which makes haskell the weird odd language where you can't just write the source but need its own directory structure. (I mainly solve these in python, then write the haskell solutions later)
06:17:15 <int-e> runhaskell foo.hs < input
06:17:25 <int-e> don't involve stack or cabal, be happy :-P
06:17:43 <fizbin> int-e: That's what I'm trying to do, but now do that with an external package.
06:18:20 <int-e> well, I have not run into that (but cabal v1-install still works for me if that comes up)
06:18:44 <fizbin> Huh. It looks like package.yaml isn't getting read at all. I wonder if I need something in stack.yaml to tell it to use package.yaml
06:18:55 × kimjetwav quits (~user@2607:fea8:2363:8f00:788b:37b5:7592:32b4) (Remote host closed the connection)
06:20:51 <fizbin> Well, adding "." to packages in stack.yaml caused it to notice the parse error I added to package.yaml. Still doesn't seem to make it load the dependencies though.
06:28:08 <fizbin> Okay, adding more than just "dependencies" to the package.yaml file (i.e. adding an "executable" section) seems to be enough so that now "stack runghc aoc9.hs" will load the external library dep. I asked for.
06:29:58 <byorgey> hololeap: some of them might record themselves and post it later I guess, but you're not supposed to stream yourself solving AoC problems right when they are posted
06:30:15 <byorgey> hololeap: but you can definitely find top competitive programmers streaming.
06:30:20 <byorgey> in general I mean
06:31:07 <byorgey> hololeap: e.g. https://www.twitch.tv/ecnerwala
06:31:58 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 265 seconds)
06:32:22 chomwitt joins (~chomwitt@2a02:587:dc0d:3700:12c3:7bff:fe6d:d374)
06:32:55 zebrag joins (~chris@user/zebrag)
06:33:13 × zebrag quits (~chris@user/zebrag) (Client Quit)
06:35:53 × bollu quits (uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
06:36:26 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
06:38:24 <int-e> dsal: "professional competitive programmers" -- sounds like a joke but I guess when you start automating fetching the problem and input, extracting sample, maybe generating a parser for the input... that will really feel professional.
06:39:17 <int-e> (that's on top of the obvious... keeping a library for common computational tasks)
06:40:37 <dsal> I do have The Library. It's not huge, though.
06:41:28 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
06:41:30 jakalx joins (~jakalx@base.jakalx.net)
06:42:16 <dsal> fizbin: I don't think it's particularly special. If I want to add a python library, I have to either figure out how to get it working in nix, figure out virtualenv again, convince it to install globally for just me, or give it root access. I used to write a lot of go which had its special directory structure and stuff. Everything has an easy path that might not be what you're used to.
06:46:00 × monochrom quits (trebla@216.138.220.146) (Quit: NO CARRIER)
06:47:00 × retroid_ quits (~retro@05412d78.skybroadband.com) (Ping timeout: 268 seconds)
06:47:12 <int-e> dsal: I've yet to come up with something obviously reusable :P (in 2019 I had a "library" that consisted of an IntCode module that I'd copy to the next day's folder and adapt as needed)
06:49:28 × euandreh quits (~euandreh@2804:14c:33:9fe5:da4:9ec6:5ef5:74d6) (Ping timeout: 268 seconds)
06:50:56 <sm> fizbin, why not use a stack script, fewer moving parts
06:51:00 <dsal> I pretty much have the same parseFile thing and some basic 2D stuff like around and a bfs.
06:51:13 <dsal> The Data.Graph API is so weird.
06:51:30 <int-e> dsal: true
06:52:29 <int-e> bfs is so easy to implement from scratch though
06:52:56 <dsal> It would've cost me precious time today! :)
06:53:25 <int-e> dfs is even easier :P
06:53:28 <dsal> Oh also, I had this thing: parseGrid f = Map.fromList . zipWith2D (\x y a -> ((x,y), f a)) [0..] [0..] . lines
06:53:42 <xerox> bfs was easy to implement a month ago and put into my library too :D
06:53:55 <dsal> Which was basically how to read this. I always got my x and y confused when I'd write those from scratch.
06:54:10 <dsal> Another neat thing I wrote in my library was BitSet. Which I use occasionally.
06:54:35 <dsal> It doesn't actually *matter*, but it's neat. For yesterday's, I was able to shove each of the light 7 seg patterns into a byte.
06:54:46 <int-e> dsal: Hah I used [[Int]] and !!
06:54:48 <int-e> KISS!
06:55:24 <dsal> I've got some visualization junk I've not used this year. e.g., draw the map from today.
06:55:30 <xerox> I used [String] and elemIndex
06:56:08 <xerox> int-e: you haven't posted yours on github right?
06:56:13 <int-e> > map (read . return) "0329" :: [Int]
06:56:14 <lambdabot> [0,3,2,9]
06:56:20 <int-e> xerox: right
06:56:43 <xerox> if you do I would happily read them
06:58:23 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
06:58:46 azimut joins (~azimut@gateway/tor-sasl/azimut)
07:04:22 <dsal> > map digitToInt "0329"
07:04:23 <lambdabot> [0,3,2,9]
07:04:41 retroid_ joins (~retro@05412d78.skybroadband.com)
07:04:54 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
07:05:00 <dsal> My fancy thing has a Char -> a because there's been a bunch of these. It doesn't have a filter, though, which would be nice.
07:05:09 <dsal> I guess I could just do Maybe Int and then sequence it.
07:05:14 <dsal> er, no, not that.
07:06:13 × xff0x quits (~xff0x@2001:1a81:5338:9c00:5f64:a7ee:3eb7:fd11) (Ping timeout: 240 seconds)
07:07:10 xff0x joins (~xff0x@2001:1a81:5338:9c00:2366:f1e5:f2a7:3295)
07:07:45 InternetCitizen joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
07:08:51 Alex_test_ joins (~al_test@94.233.241.193)
07:10:04 xsarnik9 joins (xsarnik@lounge.fi.muni.cz)
07:10:10 × Alex_test quits (~al_test@94.233.241.193) (Ping timeout: 256 seconds)
07:10:15 xstill-9 joins (xstill@fimu/xstill)
07:10:26 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 268 seconds)
07:10:45 × koz quits (~koz@121.99.240.58) (Remote host closed the connection)
07:11:02 koz joins (~koz@121.99.240.58)
07:11:14 <int-e> xerox: I'll think about it, I probably won't though.
07:11:45 Unode_ joins (~Unode@194.94.44.220)
07:11:49 × InternetCitizen quits (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 240 seconds)
07:11:52 × xstill- quits (xstill@fimu/xstill) (Ping timeout: 256 seconds)
07:11:52 × tv quits (~tv@user/tv) (Ping timeout: 256 seconds)
07:11:52 × noctux quits (~noctux@user/noctux) (Ping timeout: 256 seconds)
07:11:52 × sweater quits (~sweater@206.81.18.26) (Ping timeout: 256 seconds)
07:11:52 × m1dnight_ quits (~christoph@christophe.dev) (Ping timeout: 256 seconds)
07:11:52 × davl_ quits (~davl@207.154.228.18) (Ping timeout: 256 seconds)
07:11:52 × turlando quits (~turlando@user/turlando) (Ping timeout: 256 seconds)
07:11:52 × rookie101 quits (~rookie@165.232.121.13) (Ping timeout: 256 seconds)
07:11:52 × WhateverRabbit quits (~rabbit@206.81.18.26) (Ping timeout: 256 seconds)
07:11:52 xstill-9 is now known as xstill-
07:11:57 davl joins (~davl@207.154.228.18)
07:11:59 × bgamari quits (~bgamari@2001:470:e438::1) (Ping timeout: 252 seconds)
07:12:26 × n3t quits (n3t@user/n3t) (Ping timeout: 256 seconds)
07:12:26 × xsarnik quits (xsarnik@lounge.fi.muni.cz) (Ping timeout: 256 seconds)
07:12:26 × Unode quits (~Unode@194.94.44.220) (Ping timeout: 256 seconds)
07:12:26 Unode_ is now known as Unode
07:12:26 xsarnik9 is now known as xsarnik
07:12:53 turlando joins (~turlando@93-42-250-112.ip89.fastwebnet.it)
07:12:53 × turlando quits (~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
07:12:53 turlando joins (~turlando@user/turlando)
07:13:02 monochrom joins (trebla@216.138.220.146)
07:13:31 WhateverRabbit joins (~rabbit@206.81.18.26)
07:13:51 sweater joins (~sweater@206.81.18.26)
07:14:01 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
07:14:26 noctux joins (~noctux@user/noctux)
07:14:47 n3t joins (n3t@s45.mydevil.net)
07:15:16 bgamari joins (~bgamari@64.223.235.131)
07:15:29 <hololeap> byorgey: thanks for the link
07:15:42 <xerox> int-e: cool, thanks, in case :-)
07:18:41 whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com)
07:21:17 lortabac joins (~lortabac@2a01:e0a:541:b8f0:48df:3af4:d67f:b5a0)
07:22:07 dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be)
07:22:17 <hololeap> i'm looking at recording the state of a StateT with every "step". is there a way to do this without adding a (Writer (DList s)) to the transformer stack?
07:22:44 koz is now known as ko
07:22:46 ko is now known as koz
07:23:20 michalz joins (~michalz@185.246.204.55)
07:25:43 rookie101 joins (~rookie@165.232.121.13)
07:26:02 tv joins (~tv@user/tv)
07:26:21 <int-e> xerox: here's a sample; it's just not very pretty at all: https://paste.debian.net/hidden/730b2e3c/
07:26:34 <int-e> (yesterday, part 2)
07:28:37 lavaman joins (~lavaman@98.38.249.169)
07:28:43 <int-e> it's mostly piecing together #haskell-style one-liners ;-)
07:28:55 xerox nods - very nice!
07:28:59 <xerox> appreciate it
07:29:34 <xerox> that one I did on pen and paper, then hardcoded one decision tree, no search over permutations, I thought it'd be too much
07:29:49 <int-e> > product [1..7]
07:29:51 <lambdabot> 5040
07:29:55 <int-e> not scary :)
07:30:00 <xerox> definitely
07:31:03 × root1 quits (root@2600:3c02::f03c:92ff:fe1a:c779) (Ping timeout: 252 seconds)
07:31:21 <xerox> I like your span, I often do remove the extra chars instead: https://github.com/mrtnpaolo/advent-of-code-2021/blob/master/execs/Day08.hs#L12-L15
07:31:25 root1 joins (root@2600:3c02::f03c:92ff:fe1a:c779)
07:31:36 <int-e> xerox: I actually did a post mortem where I tried a bit harder (narrowing it down to 8 out of 5040 cases): https://paste.debian.net/1222686/
07:32:25 <xerox> ah see that's the kind of stuff I go dig into people's repositories to learn from
07:32:53 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
07:32:56 <int-e> > let digits = words "abcefg cf acdeg acdfg bcdf abdfg abdefg acf abcdefg abcdfg" in M.fromListWith (+) [(c,length cs) | cs <- digits, c <- cs] -- fingerprinting segments
07:32:57 <lambdabot> fromList [('a',43),('b',34),('c',38),('d',38),('e',24),('f',44),('g',40)]
07:33:25 <int-e> (that one only made it to IRC)
07:33:47 <int-e> huh, and it doesn't disambiguate c and d :-/
07:34:44 × lagash quits (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
07:35:13 <int-e> > let digits = words "abcefg cf acdeg acdfg bcdf abdfg abdefg acf abcdefg abcdfg" in M.fromListWith (+) [(c,1+length cs) | cs <- digits, c <- cs] -- fixed
07:35:15 <lambdabot> fromList [('a',51),('b',40),('c',46),('d',45),('e',28),('f',53),('g',47)]
07:36:09 lagash joins (lagash@lagash.shelltalk.net)
07:36:12 <int-e> the problem with clever stuff like this is that it usually takes tens of minutes to come up with ;)
07:37:05 <xerox> it's an unbelievable cost these days (:
07:38:35 neurocyte0132889 joins (~neurocyte@45.93.108.168)
07:38:35 × neurocyte0132889 quits (~neurocyte@45.93.108.168) (Changing host)
07:38:35 neurocyte0132889 joins (~neurocyte@user/neurocyte)
07:39:26 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
07:39:54 <int-e> xerox: oh yes I've used words . map quite a bit myself too
07:42:25 <int-e> day 5... map (\c -> if c `elem` ",->" then ' ' else c)
07:43:51 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:44:03 mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
07:44:15 × emf quits (~emf@2620:10d:c091:480::1:f5cb) (Ping timeout: 252 seconds)
07:51:03 <xerox> exactly!
07:51:14 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
07:51:15 nfd joins (~nfd@user/nfd)
07:52:51 cfricke joins (~cfricke@user/cfricke)
07:57:13 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
07:58:30 df_ is now known as df
07:59:58 mc47 joins (~mc47@xmonad/TheMC47)
08:02:23 endor joins (~a@p200300ef97023511e49253ebeea0a61a.dip0.t-ipconnect.de)
08:02:40 × zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection)
08:03:49 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:04:24 <endor> Why is Data.HashTable.new returning an IO value? Why do we need side effects?
08:05:26 zaquest joins (~notzaques@5.130.79.72)
08:06:05 bollu joins (uid233390@id-233390.helmsley.irccloud.com)
08:06:40 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
08:08:48 <int-e> where is Data.HashTable from?
08:10:26 <endor> https://hackage.haskell.org/package/base-4.5.1.0/docs/Data-HashTable.html
08:12:16 × Kevin578 quits (~Kevin578@pool-96-237-112-198.bstnma.fios.verizon.net) (Remote host closed the connection)
08:13:46 vpan joins (~0@212.117.1.172)
08:15:32 <int-e> oops, did I typo the import in ghci... I must have
08:17:12 <int-e> Anyway, that is a mutable hashtable; each `new` must create its own array for storing the elements.
08:17:42 <int-e> (This particular implementation creates an array even when there are no entries, which makes the code simpler.)
08:17:49 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
08:19:04 chele joins (~chele@user/chele)
08:19:36 max22- joins (~maxime@2a01cb088335980094e8e0f1650776df.ipv6.abo.wanadoo.fr)
08:20:56 <endor> If the mutability is the reason for IO why does it not use ST internally?
08:21:08 <int-e> Oh, no, I didn't make a typo. base-4.5.1 is ancient. Data.HashTable was removed in 4.7.0.0, 7 1/2 years ago.
08:21:25 <endor> sorry!
08:22:00 <int-e> There's https://hackage.haskell.org/package/hashtables which works in ST
08:26:03 × deadmarshal quits (~deadmarsh@95.38.230.89) (Ping timeout: 252 seconds)
08:26:05 <endor> It says "the IO wrappers (which most users will probably prefer) ...".
08:26:32 <endor> Why prefer IO wrapper? It makes things more complicated?
08:27:48 <xerox> I guess it's more a comment about users than a comment about the functions
08:28:55 <int-e> Maybe targeted at former users of Data.HashTable?
08:29:53 jgeerds joins (~jgeerds@55d4ac73.access.ecotel.net)
08:30:37 <dminuoso> It seems this library could have been written polymorphically over PrimMonad as well
08:31:04 <dminuoso> Then you would have had just singular versions
08:31:49 × mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 240 seconds)
08:32:07 deadmarshal joins (~deadmarsh@95.38.230.89)
08:34:25 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
08:35:02 × jgeerds quits (~jgeerds@55d4ac73.access.ecotel.net) (Ping timeout: 252 seconds)
08:36:57 w1gz joins (~do@159.89.11.133)
08:43:01 × max22- quits (~maxime@2a01cb088335980094e8e0f1650776df.ipv6.abo.wanadoo.fr) (Ping timeout: 240 seconds)
08:43:03 notzmv joins (~zmv@user/notzmv)
08:43:55 × deadmarshal quits (~deadmarsh@95.38.230.89) (Ping timeout: 265 seconds)
08:45:27 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
08:46:15 AndrejKarpathy joins (~AndrejKar@2409:4053:2e02:82b0:42d:753e:851e:5c65)
08:46:49 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
08:46:59 × AndrejKarpathy quits (~AndrejKar@2409:4053:2e02:82b0:42d:753e:851e:5c65) (Client Quit)
08:47:01 <int-e> dminuoso: Even if I'd target PrimMonad I'd start by implementing everything for ST s first; I don't see how a polymorphic use of `primitive` could ever play well with ghc's optimizer
08:47:32 Angel89 joins (~Angel89@2409:4053:2e02:82b0:42d:753e:851e:5c65)
08:48:33 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
08:51:37 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f80d:43f5:ddf4:fb26)
08:54:57 × Angel89 quits (~Angel89@2409:4053:2e02:82b0:42d:753e:851e:5c65) (Quit: Client closed)
08:55:35 Angel89 joins (~Angel89@2409:4053:2e02:82b0:42d:753e:851e:5c65)
08:56:30 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:f80d:43f5:ddf4:fb26) (Ping timeout: 268 seconds)
08:56:44 Akiva joins (~Akiva@user/Akiva)
08:58:24 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
09:00:06 × OndejSkup[m] quits (~mimivxmat@2001:470:69fc:105::c300) (Quit: You have been kicked for being idle)
09:00:09 × Tavi[m] quits (~factoidde@2001:470:69fc:105::1:819) (Quit: You have been kicked for being idle)
09:00:10 × kosmikus[m] quits (~andresloe@2001:470:69fc:105::95d) (Quit: You have been kicked for being idle)
09:02:01 ubert joins (~Thunderbi@p200300ecdf0ba2f664fe176011d10d59.dip0.t-ipconnect.de)
09:05:28 × bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
09:09:10 × k60`` quits (~user@static.100.218.46.78.clients.your-server.de) (Ping timeout: 256 seconds)
09:10:21 × synthmeat quits (~synthmeat@user/synthmeat) (Quit: WeeChat 3.0)
09:12:34 acidjnk_new joins (~acidjnk@p200300d0c7271e730cb547fb259b1246.dip0.t-ipconnect.de)
09:14:33 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
09:14:36 pfurla joins (~pfurla@2804:14d:5c81:4104:e550:12e4:9dfb:af3c)
09:14:54 xkuru joins (~xkuru@user/xkuru)
09:15:49 nunggu joins (~q@gateway/tor-sasl/nunggu)
09:16:00 m1dnight joins (~christoph@christophe.dev)
09:17:35 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
09:17:35 allbery_b joins (~geekosaur@xmonad/geekosaur)
09:17:38 allbery_b is now known as geekosaur
09:18:37 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 240 seconds)
09:20:17 deadmarshal joins (~deadmarsh@95.38.230.89)
09:20:39 × Akiva quits (~Akiva@user/Akiva) (Ping timeout: 265 seconds)
09:21:37 × xff0x quits (~xff0x@2001:1a81:5338:9c00:2366:f1e5:f2a7:3295) (Ping timeout: 265 seconds)
09:22:22 xff0x joins (~xff0x@2001:1a81:5338:9c00:c1d:978d:6bc0:7433)
09:22:38 × tcard quits (~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp) (Quit: Leaving)
09:22:52 Dansk31 joins (~Dansk31@213.244.23.3)
09:23:51 × Dansk31 quits (~Dansk31@213.244.23.3) (Client Quit)
09:25:59 × Angel89 quits (~Angel89@2409:4053:2e02:82b0:42d:753e:851e:5c65) (Quit: Client closed)
09:27:07 tcard joins (~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp)
09:32:24 Alex_test joins (~al_test@94.233.241.193)
09:32:42 <Profpatsch> GHC can’t derive Show1?
09:32:49 <Profpatsch> That’s a bummer
09:33:58 × mjacob quits (~mjacob@adrastea.uberspace.de) (Read error: Connection reset by peer)
09:34:06 × Alex_test_ quits (~al_test@94.233.241.193) (Ping timeout: 256 seconds)
09:34:25 <Profpatsch> Ah, maybe GHC 9
09:34:40 × vpan quits (~0@212.117.1.172) (Ping timeout: 256 seconds)
09:35:14 × m1dnight quits (~christoph@christophe.dev) (Ping timeout: 256 seconds)
09:35:21 vpan joins (~0@212.117.1.172)
09:35:24 × Arsen quits (arsen@managarm/dev/Arsen) (Quit: Quit.)
09:35:44 Angel89 joins (~Angel89@2409:4053:2e02:82b0:42d:753e:851e:5c65)
09:38:41 m1dnight joins (~christoph@christophe.dev)
09:41:26 × Angel89 quits (~Angel89@2409:4053:2e02:82b0:42d:753e:851e:5c65) (Quit: Client closed)
09:42:20 Arsen joins (arsen@managarm/dev/Arsen)
09:46:12 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
09:46:41 ChaiTRex joins (~ChaiTRex@user/chaitrex)
09:49:30 teo joins (~teo@user/teo)
09:49:55 mjacob joins (~mjacob@adrastea.uberspace.de)
09:52:40 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
09:53:16 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
09:54:29 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 265 seconds)
09:58:50 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 265 seconds)
09:59:19 k60`` joins (~user@static.100.218.46.78.clients.your-server.de)
10:00:13 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
10:03:34 × deadmarshal quits (~deadmarsh@95.38.230.89) (Ping timeout: 256 seconds)
10:06:48 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
10:06:53 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Ping timeout: 252 seconds)
10:07:12 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
10:07:23 × Merfont quits (~Kaiepi@156.34.44.192) (Remote host closed the connection)
10:10:37 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds)
10:11:34 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
10:15:32 × feetwind quits (~mike@user/feetwind) (Ping timeout: 240 seconds)
10:17:03 deadmarshal joins (~deadmarsh@95.38.230.89)
10:17:31 gehmehgeh joins (~user@user/gehmehgeh)
10:17:50 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
10:18:08 <merijn> hmmm
10:18:11 <merijn> rats
10:18:39 <merijn> my AoC solution works fine for the small example, but fails on the big one :\
10:18:52 × nebu quits (~user@user/wavion) (Ping timeout: 256 seconds)
10:19:03 <dminuoso> Mmm, why does executableStripping does less than manually invoking `strip`?
10:19:21 <dminuoso> *executable-stripping in cabal
10:20:09 <dminuoso> With `split-sections: true` and `executable-stripping: true` it brings down the resulting static binary to 74MiB, but calling strip ontop gets it down to 40ish
10:20:48 × teo quits (~teo@user/teo) (Read error: Connection reset by peer)
10:21:42 × deadmarshal quits (~deadmarsh@95.38.230.89) (Ping timeout: 256 seconds)
10:22:01 <merijn> ah, < vs <= strikes again :p
10:25:25 synthmeat joins (~synthmeat@user/synthmeat)
10:27:47 × user0 quits (~aj@langw.roketelkom.co.ug) (Quit: Leaving.)
10:27:54 feetwind joins (~mike@user/feetwind)
10:29:10 user0 joins (~aj@langw.roketelkom.co.ug)
10:30:51 nebu joins (~user@user/wavion)
10:31:57 aveltras joins (~aveltras@2a01:cb1e:4c:f668:5c2f:6f8c:9239:752b)
10:32:56 × obfusk quits (~quassel@a82-161-150-56.adsl.xs4all.nl) (Remote host closed the connection)
10:34:08 obfusk joins (~quassel@a82-161-150-56.adsl.xs4all.nl)
10:36:03 × nebu quits (~user@user/wavion) (Ping timeout: 265 seconds)
10:36:13 × Techcable quits (~Techcable@168.235.93.147) (Ping timeout: 252 seconds)
10:36:39 nebu joins (~user@user/wavion)
10:37:39 × mncheck quits (~mncheck@193.224.205.254) (Read error: Connection reset by peer)
10:38:43 jinsun__ joins (~quassel@user/jinsun)
10:39:04 <aveltras> is anyone aware of some limitations regarding using ghc plugins and at the same time libraries using ffi ? i've setup a minimal repo demonstrating the issue encountered https://github.com/aveltras/pulsar-hs-repro
10:39:25 × jinsun quits (~quassel@user/jinsun) (Ping timeout: 240 seconds)
10:40:44 aveltras[m] joins (~aveltrasm@2001:470:69fc:105::3ef9)
10:41:03 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
10:41:17 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
10:41:25 × nebu quits (~user@user/wavion) (Ping timeout: 240 seconds)
10:49:00 jakalx joins (~jakalx@base.jakalx.net)
10:51:31 fr33domlover joins (~fr33@2.55.41.129)
10:51:43 deadmarshal joins (~deadmarsh@95.38.230.89)
10:53:25 nebu joins (~user@user/wavion)
10:56:41 × feliix42 quits (~felix@gibbs.uberspace.de) (Read error: Connection reset by peer)
10:59:15 × nebu quits (~user@user/wavion) (Ping timeout: 265 seconds)
10:59:52 feliix42 joins (~felix@gibbs.uberspace.de)
11:00:19 namkeleser joins (~namkelese@101.175.128.51)
11:00:40 alx741 joins (~alx741@186.178.108.192)
11:02:00 × Cajun quits (~Cajun@user/cajun) (Quit: Client closed)
11:08:21 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
11:13:55 user01 joins (~aj@154.0.137.32)
11:17:03 jippiedoe joins (~david@2a02-a44c-e14e-1-4578-432f-df10-dcae.fixed6.kpn.net)
11:17:14 × user0 quits (~aj@langw.roketelkom.co.ug) (Ping timeout: 256 seconds)
11:18:58 shriekingnoise joins (~shrieking@186.137.144.80)
11:25:06 teo joins (~teo@user/teo)
11:26:47 Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
11:28:15 smartin joins (~Thunderbi@88.135.18.171)
11:30:45 lavaman joins (~lavaman@98.38.249.169)
11:33:47 <xerox> anybody knows how to attack this? https://i.imgur.com/NsAh0lK.png
11:34:53 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
11:35:01 × k60`` quits (~user@static.100.218.46.78.clients.your-server.de) (Ping timeout: 265 seconds)
11:35:22 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
11:35:32 Franciman suggests switching to ocaml
11:36:26 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:36:37 × xkuru quits (~xkuru@user/xkuru) (Remote host closed the connection)
11:36:38 <geekosaur> are you using head.hackage?
11:36:47 <xerox> no
11:36:59 xkuru joins (~xkuru@user/xkuru)
11:38:33 <geekosaur> you probably need it given the shown compiler version
11:38:47 <xerox> interesting, I guess I can try
11:39:35 <geekosaur> the point of head.hackage is it's patches to various packages needed toi get them to build with newer ghcs (originally intended with ghc HEAD but also helpful with 9.2.1)
11:40:29 <geekosaur> levity/representation polymorphism is still new enough that a number of packages don't know how to deal with it yet
11:40:49 <xerox> hm nope, the head.h.o version does not compile either
11:41:47 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
11:41:51 × whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
11:42:24 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:43:26 × mbuf quits (~Shakthi@122.178.122.215) (Quit: Leaving)
11:44:28 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Remote host closed the connection)
11:45:38 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
11:46:52 k60`` joins (~user@static.100.218.46.78.clients.your-server.de)
11:47:50 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
11:48:14 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:48:27 max22- joins (~maxime@2a01cb08833598006ab9bb661d4b4059.ipv6.abo.wanadoo.fr)
11:48:45 mei joins (~mei@user/mei)
11:49:55 × jippiedoe quits (~david@2a02-a44c-e14e-1-4578-432f-df10-dcae.fixed6.kpn.net) (Ping timeout: 252 seconds)
11:53:25 × cods quits (~fred@82-65-232-44.subs.proxad.net) (Ping timeout: 256 seconds)
11:53:30 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
11:54:06 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:54:17 mncheck joins (~mncheck@193.224.205.254)
11:54:44 × endor quits (~a@p200300ef97023511e49253ebeea0a61a.dip0.t-ipconnect.de) (Quit: WeeChat 3.0.1)
11:56:16 <geekosaur> next step is probably to ask in #ghc then
11:56:59 <geekosaur> you're not going to get much help with ghc 9.3.x in here
11:57:18 × pfurla quits (~pfurla@2804:14d:5c81:4104:e550:12e4:9dfb:af3c) (Quit: gone to sleep. ZZZzzz…)
11:59:39 × noctux quits (~noctux@user/noctux) (Ping timeout: 268 seconds)
12:00:05 pfurla joins (~pfurla@201.17.118.230)
12:01:08 __monty__ joins (~toonn@user/toonn)
12:03:01 × deadmarshal quits (~deadmarsh@95.38.230.89) (Ping timeout: 240 seconds)
12:04:12 Cajun joins (~Cajun@user/cajun)
12:04:30 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
12:04:33 <xerox> - tagToEnum# (unsafeCoerce# reallyUnsafePtrEquality# xs ys)
12:04:33 <xerox> + tagToEnum# (unsafeCoerce# (reallyUnsafePtrEquality# xs ys))
12:04:35 <xerox> this does the trick
12:04:41 <xerox> 🤷‍♂️
12:05:22 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:05:35 <Franciman> *shrugs*
12:06:33 <geekosaur> that does look saner to me. wonder why the original code
12:06:42 <xerox> I'll ask
12:07:46 deadmarshal joins (~deadmarsh@95.38.230.89)
12:09:02 Kaiepi joins (~Kaiepi@156.34.44.192)
12:10:30 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
12:11:08 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:12:26 AlexNoo_ is now known as AlexNoo
12:13:18 noctux joins (~noctux@user/noctux)
12:15:03 × bliminse quits (~bliminse@host86-162-147-196.range86-162.btcentralplus.com) (Quit: leaving)
12:15:35 cods joins (~fred@82-65-232-44.subs.proxad.net)
12:16:13 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
12:16:42 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:19:32 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
12:21:50 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
12:22:52 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:23:17 jakalx joins (~jakalx@base.jakalx.net)
12:26:53 × k60`` quits (~user@static.100.218.46.78.clients.your-server.de) (Remote host closed the connection)
12:28:11 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
12:28:56 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:29:19 × synthmeat quits (~synthmeat@user/synthmeat) (Quit: WeeChat 3.0)
12:30:46 k60`` joins (~user@static.100.218.46.78.clients.your-server.de)
12:31:55 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
12:33:36 burnsidesLlama joins (~burnsides@dhcp168-015.wadham.ox.ac.uk)
12:34:28 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
12:34:53 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:38:27 Techcable joins (~Techcable@168.235.93.147)
12:38:45 × aveltras quits (~aveltras@2a01:cb1e:4c:f668:5c2f:6f8c:9239:752b) (Ping timeout: 256 seconds)
12:43:47 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
12:43:50 bliminse joins (~bliminse@host86-162-147-196.range86-162.btcentralplus.com)
12:44:05 azimut joins (~azimut@gateway/tor-sasl/azimut)
12:47:29 genieliu joins (~genieliu@103.37.140.24)
12:47:59 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
12:51:22 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
12:52:22 × Kaiepi quits (~Kaiepi@156.34.44.192) (Remote host closed the connection)
12:52:42 Kaiepi joins (~Kaiepi@156.34.44.192)
12:55:18 nebu joins (~user@user/wavion)
12:55:50 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 256 seconds)
12:56:13 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f80d:43f5:ddf4:fb26)
13:00:41 × max22- quits (~maxime@2a01cb08833598006ab9bb661d4b4059.ipv6.abo.wanadoo.fr) (Ping timeout: 252 seconds)
13:00:42 × nebu quits (~user@user/wavion) (Ping timeout: 268 seconds)
13:01:19 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:f80d:43f5:ddf4:fb26) (Ping timeout: 268 seconds)
13:02:04 × deadmarshal quits (~deadmarsh@95.38.230.89) (Ping timeout: 256 seconds)
13:02:37 × mrckndt quits (~mrckndt@user/mrckndt) (Quit: mrckndt)
13:03:49 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 240 seconds)
13:04:12 euandreh joins (~euandreh@2804:14c:33:9fe5:cd28:ecf9:b8a2:d95a)
13:09:38 × burnsidesLlama quits (~burnsides@dhcp168-015.wadham.ox.ac.uk) (Remote host closed the connection)
13:10:40 × namkeleser quits (~namkelese@101.175.128.51) (Quit: Client closed)
13:11:46 jakalx parts (~jakalx@base.jakalx.net) (Disconnected: Replaced by new connection)
13:11:46 jakalx joins (~jakalx@base.jakalx.net)
13:12:24 bitmapper joins (uid464869@id-464869.lymington.irccloud.com)
13:13:00 <merijn> Suppose I have a function 'A -> A', an 'A', and a predicate 'A -> Bool', what's the most convenient way to get "the first value satisfying the predicate"?
13:13:21 jippiedoe joins (~david@2a02-a44c-e14e-1-1201-1886-c45a-80e6.fixed6.kpn.net)
13:15:15 <geekosaur> I feel like there's a ppiece missing here
13:15:39 <merijn> How so?
13:16:02 <geekosaur> you have "an A", where do you have multiple values to get the first of?
13:16:08 <maerwald> head . filter p . iterate f
13:16:10 <maerwald> ?
13:16:14 <merijn> geekosaur: Applying the function to the initial value
13:16:22 <geekosaur> ah
13:16:35 <geekosaur> maerwald probably has it
13:16:38 <merijn> maerwald: Yeah, I was thinking along those lines, but wasn't really happy with that :\
13:16:41 <merijn> oh well
13:16:45 <maerwald> well, safeHead
13:16:56 <merijn> Damn control characters in unicode fucking up my use of succ :\
13:17:30 <geekosaur> unicode succs?
13:17:53 <merijn> oh, wait, an idea appears!
13:18:43 <merijn> I'd almost forgot Haskell is lazy there...
13:19:16 <merijn> Problem avoided instead :p
13:20:39 <merijn> I can just generate an infinite list of printable character and take the head at every step, instead of computing the next one
13:23:20 CiaoSen joins (~Jura@p200300c9570204002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
13:23:46 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
13:29:19 kaction joins (~kaction@pool-71-191-91-40.washdc.fios.verizon.net)
13:35:51 × genieliu quits (~genieliu@103.37.140.24) (Ping timeout: 265 seconds)
13:36:34 × Morrow quits (~quassel@bzq-110-168-31-106.red.bezeqint.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
13:40:44 deadmarshal joins (~deadmarsh@95.38.230.89)
13:41:09 burnsidesLlama joins (~burnsides@dhcp168-015.wadham.ox.ac.uk)
13:41:22 Morrow joins (~quassel@bzq-110-168-31-106.red.bezeqint.net)
13:42:08 × jippiedoe quits (~david@2a02-a44c-e14e-1-1201-1886-c45a-80e6.fixed6.kpn.net) (Ping timeout: 265 seconds)
13:42:47 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 256 seconds)
13:43:12 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 26.3))
13:44:00 × vpan quits (~0@212.117.1.172) (Quit: Leaving.)
13:45:26 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
13:46:43 × pfurla quits (~pfurla@201.17.118.230) (Quit: gone to sleep. ZZZzzz…)
13:46:58 × burnsidesLlama quits (~burnsides@dhcp168-015.wadham.ox.ac.uk) (Ping timeout: 265 seconds)
13:48:21 azimut_ joins (~azimut@gateway/tor-sasl/azimut)
13:49:25 burnsidesLlama joins (~burnsides@dhcp168-015.wadham.ox.ac.uk)
13:49:46 <merijn> hmm, I feel like I'm missing some tricks for writing convenient fixpoints
13:51:54 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds)
13:52:46 × xsperry quits (~xs@user/xsperry) (Ping timeout: 265 seconds)
13:53:49 × burnsidesLlama quits (~burnsides@dhcp168-015.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
13:57:23 kupi joins (uid212005@id-212005.hampstead.irccloud.com)
13:59:52 <xerox> how does one get access to the cabal project version in an app's Main.hs ?
13:59:59 xsperry joins (~xs@user/xsperry)
14:00:01 <xerox> could it be the cabal Paths.hs thing
14:00:12 <merijn> xerox: You mean the version from the cabal file?
14:00:34 <merijn> like 0.1.0.0 or whatever
14:01:08 max22- joins (~maxime@2a01cb0883359800d97fa420b95dd877.ipv6.abo.wanadoo.fr)
14:02:47 × fr33domlover quits (~fr33@2.55.41.129) (Quit: fr33domlover)
14:09:21 <boxscape> kind of wish iterate et al. would produce `data Stream a = a :|| Stream a`, and then you could use `head` without worrying about empty lists
14:09:53 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
14:10:36 jippiedoe joins (~david@2a02-a44c-e14e-1-9f6f-678f-3cd5-9f8c.fixed6.kpn.net)
14:10:54 <merijn> You can still use head without worrying about empty lists...
14:11:00 <merijn> That seems like a silly statement
14:11:20 chexum joins (~quassel@gateway/tor-sasl/chexum)
14:11:22 <dminuoso> Btw, if you have both a cabal.project and cabal.project.local, and both specify `packages: .`, then `cabal build` will find the package in your current directory twice and complain
14:11:25 <dminuoso> Is this by design?
14:11:37 <boxscape> Yes, but then I have this nagging thought at the back of my mind that I'll eventually accidentally refactor the code to something that makes the `head` call unsafe, and I'm not protected by the type system
14:12:16 <merijn> dminuoso: The cabal.project.local fields (depending on type) overwrite OR monoidally append the ones from cabal.project
14:12:19 <merijn> dminuoso: So...yes
14:12:28 <boxscape> (presumably something similar is why maerwald suggested safeHead above)
14:12:34 <merijn> dminuoso: Why are you even listing packages in cabal.project.local?
14:13:13 <dminuoso> merijn: Just a copy/paste result.
14:13:25 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
14:13:39 <merijn> My main complaint about Haskell for AOC is that I need to waste to many lines on imports >.>
14:13:44 <dminuoso> I figured if I wanted to customize the cabal.project on my local machine, Id just copy the file and tweak it. Somehow I assumed that this would take predence
14:14:07 <merijn> dminuoso: No, you just take an empty file and only write whatever you wanna change in cabal.project.local
14:14:27 <dminuoso> Where can I find whether fields are overwritten or appended?
14:14:36 <dminuoso> Let me guess. source code?
14:14:38 <merijn> dminuoso: list-y fields should be appended
14:14:51 <merijn> dminuoso: Same logic as in .cabal files
14:15:00 <merijn> Since they use the same field parsers
14:15:42 <merijn> dminuoso: Not having to duplicate the entire original project file is the entire point of having .local files builtin :p
14:16:52 × deadmarshal quits (~deadmarsh@95.38.230.89) (Ping timeout: 256 seconds)
14:16:54 <dminuoso> Fair enough, thanks
14:17:29 dmenz joins (~dmenz@2804:14d:5cd4:5e94::1)
14:17:30 stevenxl joins (~stevenxl@174.128.182.199)
14:21:47 genieliu joins (~genieliu@111.193.167.10)
14:22:54 burnsidesLlama joins (~burnsides@dhcp168-015.wadham.ox.ac.uk)
14:23:42 × CiaoSen quits (~Jura@p200300c9570204002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
14:24:40 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
14:24:40 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
14:24:40 wroathe joins (~wroathe@user/wroathe)
14:25:46 <fizbin> Last night, sm mentioned a "stack script". This is not something I had ever heard of before - did they mean using something like https://www.fpcomplete.com/haskell/tutorial/stack-script/ ?
14:27:03 <byorgey> fizbin: probably, that's the only thing called a "stack script" that I know of.
14:27:34 × burnsidesLlama quits (~burnsides@dhcp168-015.wadham.ox.ac.uk) (Ping timeout: 265 seconds)
14:27:34 × genieliu quits (~genieliu@111.193.167.10) (Ping timeout: 265 seconds)
14:28:58 <fizbin> It definitely does simplify the setup, though having the stack.yaml and package.yaml files there are still convenient because with all three of stack.yaml, package.yaml and hie.yaml working together I now have the haskell language server functioning on this code.
14:29:32 deadmarshal joins (~deadmarsh@95.38.230.89)
14:30:17 <fizbin> merijn: I haven't found the need for too many import lines. Plus, you can always have those import lines prefilled and ready to go before the problem drops.
14:30:35 <fizbin> (Of course, I should talk, since I get my timed solutions done via python)
14:36:46 Successus joins (~Successus@gateway/tor-sasl/successus)
14:37:56 <merijn> fizbin: It depends how you write your code. I could probably get dirty solutions without to many imports
14:38:33 × dmenz quits (~dmenz@2804:14d:5cd4:5e94::1) (Quit: Leaving)
14:38:34 <merijn> fizbin: Personal rule: No unhandled errors and nice abstractions for that sorta thing tend to rack up the imports :p
14:38:54 <merijn> Today's solution has, like, 25 lines of import >.>
14:39:34 <merijn> I could probably optimise it a bit by moving frequent code into a separate library modules and reusing that. But I kinda like each day being standalone. Makes them function better as examples for others
14:39:35 synthmeat joins (~synthmeat@user/synthmeat)
14:40:06 ub joins (~Thunderbi@p200300ecdf0ba2f69d45b59a7f50dcfc.dip0.t-ipconnect.de)
14:43:06 <byorgey> yeah, I make each day standalone too
14:43:15 <fizbin> Combined across my solutions to the first 9 problems, I have 9 distinct 'import' lines: Control.Monad, Data.Char, Data.List, Data.Maybe, Debug.Trace, Numeric, System.Environment, qualified Data.Map as M, and qualified Data.MultiSet as MS.
14:43:38 pfurla joins (~pfurla@2804:14d:5c81:4104:25b5:2708:65a9:4e7d)
14:43:38 <fizbin> It's not so bad to have a template with {-# LANGUAGE Haskell2010 #-} and those 9 lines.
14:44:57 <merijn> fizbin: Control.Monad, Data.Char, Data.Coerce, Data.Foldable, Data.Function, Data.Funtor.Identity, Data.List, Data.List.NonEmpty, 2x Data.Map (qualified and type), Data.Maybe, Data.Monoid, Data.Ord, Data.Semigroup, Data.Text, Data.Text.IO, Data.Void, System.Environment, System.Exist, System.IO and 3 Megaparsec ones :p
14:45:23 <fizbin> Already this year, or is that your template?
14:45:30 <merijn> That's just day9 :p
14:45:57 <byorgey> my template for solving problems on open.kattis.com has ... 46 lines of imports =)
14:46:35 <fizbin> As an aside, I've found this year's input parsing to be much simpler than in earlier years. By this point in 2020, we'd already needed to parse input like "light red bags contain 1 bright white bag, 2 muted yellow bags."
14:46:52 <fizbin> So far this year, I've done all the parsing with "lines" and "words".
14:46:55 <byorgey> fizbin: agreed.
14:47:46 <merijn> fizbin: You can do it with lines/words if you assume only valid input, which violates my attempt to handle all errors explicitly approach :p
14:48:22 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
14:48:28 <merijn> Not sure if I actually handle *everything*, but certainly the vast majority of cases
14:49:05 <byorgey> heh. My day 9 solution only has 6 imports: Control.Arrow, Data.Array.Unboxed, Data.List, Data.Maybe, and 2x Data.Set
14:49:59 <fizbin> TBH if I were doing that, (input validation) I'd do it with regex.
14:50:11 <byorgey> merijn: throw up your solution on a web server and let us try to send it malicious inputs =)
14:50:29 × smartin quits (~Thunderbi@88.135.18.171) (Remote host closed the connection)
14:51:04 jinsun__ is now known as jinsun
14:51:49 <merijn> byorgey: You can clone the repo and throw malicious input at it yourself :p
14:52:00 × curiousgay quits (~curiousga@77-120-141-90.kha.volia.net) (Quit: Leaving)
14:52:12 <fizbin> byorgey: If I remove the Debug.Trace import (that isn't needed in the final version but was very much needed during development), I only have 5 on day 9: Data.List, Data.Maybe, System.Environment, qualified Data.Map as M, qualified Data.MultiSet as MS
14:52:13 motherfsck joins (~motherfsc@user/motherfsck)
14:52:21 <merijn> byorgey: I just want with a Map for the data structure :p
14:52:51 Kevin578 joins (~Kevin578@pool-96-237-112-198.bstnma.fios.verizon.net)
14:52:56 <byorgey> merijn: hehe
14:52:58 <byorgey> fizbin: nice
14:53:00 <merijn> byorgey: https://github.com/merijn/AdventOfCode/blob/master/Day9.hs
14:53:15 <merijn> I did also include a renderer for my maps for debugging purposes
14:54:38 <byorgey> merijn: ah, I like your way of finding basins using repeated convolution
14:54:51 <byorgey> I just used BFS
14:55:01 <fizbin> I'm not sure how people get by without having their "main" get the name of the input file with getArgs, though I guess people could be writing stuff to always read the input from stdin. (Personally, I write my solutions - python and haskell - to take an optional first argument that's the input file with the default being "aocNN.in")
14:55:07 <merijn> byorgey: Yeah, I'm quite pleased with that and (in general) the generic convolution
14:55:30 Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
14:55:40 <merijn> byorgey: Given some of the earlier puzzles I expect more convolutions to come :p
14:55:51 <merijn> byorgey: So I figured I can easily copy and extend this one for future puzzles :p
14:56:07 nebu joins (~user@user/wavion)
14:56:09 <byorgey> merijn: indeed
14:56:22 smartin joins (~Thunderbi@88.135.18.171)
14:56:45 <byorgey> fizbin: meh, I just say runhaskell 09.hs < input or whatever, I can't be bothered to do anything fancy =)
14:57:38 × Widget quits (~widget@2a04:ee41:6:70cd:e189:3667:bb4:f6ac) (Quit: Leaving...)
14:57:55 <byorgey> The optional first argument approach sounds nice though.
14:57:58 <merijn> byorgey: Biggest flaw in my map rendering is that I should probably extend it to automatically detect cell size and account for that, so I can use multi character values instead of the current Char labelling which...does not quite work out for the big problems
14:58:13 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
14:58:18 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
14:58:21 <merijn> because there's basins with characters that fuck up my terminal xD
14:58:26 <byorgey> lol
14:59:23 <merijn> I've been thinking about making a library for my parse wrapper, getting the file and things like rendering maps, since those are so frequent with AOC. OTOH, that'd stop being standalone :\
14:59:53 <merijn> We'll see. This is probably the first year I actually finish AOC, so I will actually need to keep using code the entire time :p
15:00:50 <fizbin> byorgey: Especially because you write that code once and then copy/paste. Just don't forget to update the name of the default input file like I did on day5...
15:01:04 × nebu quits (~user@user/wavion) (Ping timeout: 256 seconds)
15:01:13 <merijn> fizbin: See, my megaparsec parsers would catch that ;)
15:01:36 <fizbin> Oh, I mean, I didn't get the wrong answer and submit it, I got errors.
15:02:22 <fizbin> It's just that errors are naturally showing up at 12:30-1am local time because of where I am and my brain takes a while to think through what might cause things like that.
15:02:52 <merijn> I don't even try to compete, tbh
15:02:56 fizbin does not have a brain that functions at peak at that hour.
15:03:03 <merijn> puzzles are posted at 6 AM local time. Screw that
15:03:16 <merijn> I refuse to acknowledge the existence of times before 9:00
15:04:09 <fizbin> I haven't gotten any main board points since 2018. I got three sub-200 "part 2" times in 2020, and have gotten one so far this year.
15:04:38 <fizbin> Last night was bad though. Sub-2000, but over 1500
15:05:14 <fizbin> I feel like the number of people doing them as the problems come out jumped by a lot in 2019.
15:10:01 cfricke joins (~cfricke@user/cfricke)
15:11:04 × acidjnk_new quits (~acidjnk@p200300d0c7271e730cb547fb259b1246.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
15:13:22 sprout joins (~quassel@2a02:a467:ccd6:1:2835:2428:a8d4:1d95)
15:16:59 × euandreh quits (~euandreh@2804:14c:33:9fe5:cd28:ecf9:b8a2:d95a) (Ping timeout: 268 seconds)
15:18:14 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
15:21:59 fizbin sets up a github repo for aoc2021, like all the cool kids. https://github.com/fizbin/aoc2021/blob/main/aoc9.hs
15:22:26 <fizbin> If the formatting looks weird, that's all hindent's doing.
15:22:30 <yushyin> very cool, much wow
15:25:04 <merijn> fizbin: Isn't multiset just
15:25:10 <merijn> "Map v Int"? :p
15:25:40 <fizbin> merijn: It's "Map v Int" with loads of convenience functions on it.
15:26:01 <merijn> fizbin: I mean, you can just use "M.fromListWith (+) . map (,1)" like I do ;)
15:26:16 <fizbin> Sure. For this problem it's a bit overkill.
15:27:30 <fizbin> But I saw the nice uses people used it for on day 6, so I wanted to start using it for those times when it'd be convenient.
15:28:25 × pfurla quits (~pfurla@2804:14d:5c81:4104:25b5:2708:65a9:4e7d) (Quit: gone to sleep. ZZZzzz…)
15:29:08 <merijn> fizbin: I mean, for Day6 it's even more overkill xD
15:29:11 × n3t quits (n3t@s45.mydevil.net) (Changing host)
15:29:11 n3t joins (n3t@user/n3t)
15:29:26 <fizbin> e.g. "MS.concatMap func myms" is nicer than "M.fromList (+) $ concatMap func $ M.toList mymap", plus the signature of "func" is nicer.
15:30:02 <fizbin> simulate = Data.MultiSet.concatMap (\i -> if i == 0 then [6, 8] else [i - 1])
15:30:28 <merijn> fizbin: https://github.com/merijn/AdventOfCode/blob/master/Day6.hs#L45-L51 :)
15:32:48 meinside joins (uid24933@id-24933.helmsley.irccloud.com)
15:36:16 <fizbin> I'd argue that the one line is faster to type and also easier to read because it follows the flow of the problem rather than needing the mentally invert the "this on day N becomes this on day N+1" story structure to work out "this on day N+1 came form this and that on day N"
15:37:03 <fizbin> But yeah, I did day 6 with just Data.Map: https://github.com/fizbin/aoc2021/blob/main/aoc6.hs#L10-L14
15:37:07 doyougnu joins (~doyougnu@c-73-25-202-122.hsd1.or.comcast.net)
15:39:09 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds)
15:39:34 <fizbin> Huh. I could trim my imports on day 6 down to just Data.Map and System.Environment. Oh well.
15:42:07 × Cajun quits (~Cajun@user/cajun) (Quit: Client closed)
15:42:27 JoshuaBelden joins (~JoshuaBel@131.150.106.37)
15:42:42 <kuribas> Exception instance is rather infectious with Typeable...
15:42:52 <kuribas> if the exception type takes a type variable.
15:45:17 euandreh joins (~euandreh@2804:14c:33:9fe5:1b4:2cec:47c3:871e)
15:45:32 <merijn> kuribas: Don't make parametric exceptions, then? >.>
15:45:49 × deadmarshal quits (~deadmarsh@95.38.230.89) (Ping timeout: 240 seconds)
15:45:53 <kuribas> merijn: it is nice to give some context...
15:46:20 <kuribas> or I pass the context as a string...
15:47:33 × jinsun quits (~quassel@user/jinsun) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
15:47:55 jinsun joins (~quassel@user/jinsun)
15:50:42 × motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 265 seconds)
15:50:54 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 268 seconds)
15:54:02 × JoshuaBelden quits (~JoshuaBel@131.150.106.37) (Quit: Leaving...)
15:54:33 burnsidesLlama joins (~burnsides@dhcp168-015.wadham.ox.ac.uk)
15:59:11 derelict is now known as tetrahedron
15:59:17 nvmd joins (~nvmd@user/nvmd)
15:59:23 × synthmeat quits (~synthmeat@user/synthmeat) (Quit: WeeChat 3.0)
16:00:47 synthmeat joins (~synthmeat@user/synthmeat)
16:02:14 × synthmeat quits (~synthmeat@user/synthmeat) (Client Quit)
16:05:58 deadmarshal joins (~deadmarsh@95.38.230.89)
16:07:49 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
16:08:21 pfurla joins (~pfurla@2804:14d:5c81:4104:25b5:2708:65a9:4e7d)
16:08:29 hololeap joins (~hololeap@user/hololeap)
16:09:15 synthmeat joins (~synthmeat@user/synthmeat)
16:11:07 × synthmeat quits (~synthmeat@user/synthmeat) (Client Quit)
16:11:52 × mncheck quits (~mncheck@193.224.205.254) (Quit: Leaving)
16:12:49 motherfsck joins (~motherfsc@user/motherfsck)
16:15:15 × chele quits (~chele@user/chele) (Remote host closed the connection)
16:17:05 <fizbin> Most of my haskell AOC solutions are just translations of the python versions, but I do like my alternate day 8 solution of https://github.com/fizbin/aoc2021/blob/main/aoc8b.hs which uses the List monad to do logic programming.
16:18:17 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:48df:3af4:d67f:b5a0) (Quit: WeeChat 2.8)
16:20:14 InternetCitizen joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
16:20:15 Neuromancer joins (~Neuromanc@user/neuromancer)
16:20:58 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
16:21:07 synthmeat joins (~synthmeat@user/synthmeat)
16:21:54 <maerwald[m]> You guys make me feel guilty for being too lazy doing AoC
16:24:35 <yushyin> blame it on your rsi syndrome, it is healthier not to do aoc
16:28:03 <fizbin> It's definitely healthier not to for people in the US-East timezone
16:30:46 WHatever666 joins (~fuzzypixe@tchebychev.ensimag.fr)
16:30:49 × InternetCitizen quits (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 265 seconds)
16:33:06 × pfurla quits (~pfurla@2804:14d:5c81:4104:25b5:2708:65a9:4e7d) (Quit: gone to sleep. ZZZzzz…)
16:34:00 cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
16:37:49 × alx741 quits (~alx741@186.178.108.192) (Ping timeout: 240 seconds)
16:40:20 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
16:40:31 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f80d:43f5:ddf4:fb26)
16:41:17 <sm> resist maerwald! just say no
16:41:26 curiousgay joins (~curiousga@77-120-141-90.kha.volia.net)
16:41:45 × max22- quits (~maxime@2a01cb0883359800d97fa420b95dd877.ipv6.abo.wanadoo.fr) (Quit: Leaving)
16:42:17 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
16:46:52 gaff joins (~gaff@49.207.222.161)
16:46:55 jakalx joins (~jakalx@base.jakalx.net)
16:47:21 × maroloccio quits (~marolocci@151.53.155.184) (Quit: WeeChat 3.0)
16:47:38 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
16:47:38 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
16:47:38 wroathe joins (~wroathe@user/wroathe)
16:49:47 <gaff> when you run cabal v2-repl :target, and have some module `m` in scope at GHCi prompt, shouldn't whatever exported functions in modules module `m` imports be visible at GHCi prompt?
16:51:01 alx741 joins (~alx741@157.100.93.160)
16:51:07 kaol_ is now known as kaol
16:51:58 <sm> unless module m re-exports them.. you will need to be "inside" module m, ie seeing all bindings within m. The command is `:m +*M`
16:52:34 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 265 seconds)
16:52:47 × xff0x quits (~xff0x@2001:1a81:5338:9c00:c1d:978d:6bc0:7433) (Ping timeout: 252 seconds)
16:53:28 <xerox> > foldl f a [b,c,d]
16:53:29 <lambdabot> f (f (f a b) c) d
16:53:36 xff0x joins (~xff0x@2001:1a81:5338:9c00:1be4:4471:6bbc:3532)
16:53:54 <xerox> I forget what the module is that gives those show instances, something like simple-expression I thought
16:54:04 <gaff> for example, if module `m` (the one in scope in GHCi) imports `Test.QuickCheck`, then in GHCi,, :t quickCheck should show the type information, correct?
16:54:30 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
16:54:46 <xerox> simple reflect
16:55:01 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:55:14 <monochrom> BTW deliberately confusing (or not):
16:55:22 <monochrom> > foldr f z [a,b,c,d,e,f]
16:55:24 <lambdabot> f a (f b (f c (f d (f e (f f z)))))
16:56:02 <monochrom> Trick question: Expand (x-a)(x-b)(x-c)...(x-z)
16:56:19 <monochrom> Answer: it has an (x-x) so the whole thing is 0 >:)
16:56:20 <xerox> neat
16:56:53 nebu joins (~user@user/wavion)
16:57:57 <gaff> sm: thanks. that worked. i didn't know that!
16:58:13 × deadmarshal quits (~deadmarsh@95.38.230.89) (Ping timeout: 240 seconds)
16:58:54 × jippiedoe quits (~david@2a02-a44c-e14e-1-9f6f-678f-3cd5-9f8c.fixed6.kpn.net) (Quit: Leaving)
16:59:23 lavaman joins (~lavaman@98.38.249.169)
16:59:40 slowButPresent joins (~slowButPr@user/slowbutpresent)
17:00:07 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
17:00:10 <gaff> monochrom: that is nice
17:00:33 × gaff quits (~gaff@49.207.222.161) ()
17:00:50 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:01:58 max22- joins (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr)
17:02:14 × nebu quits (~user@user/wavion) (Ping timeout: 265 seconds)
17:03:47 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
17:04:14 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
17:05:38 <int-e> dminuoso: https://paste.tomsmeding.com/WoV7elom confirms my suspicion that writing polymorphic PrimMonad code is bad for optimization
17:05:59 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
17:06:31 <tomsmeding> xerox: this? https://hackage.haskell.org/package/simple-reflect
17:06:31 <int-e> (unless things are small enough to be fully inlined to where the actual monad is known)
17:06:39 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:06:51 <geekosaur> yes
17:07:26 pfurla joins (~pfurla@2804:14d:5c81:4104:25b5:2708:65a9:4e7d)
17:07:46 <tomsmeding> what's interesting is that searching for Debug.SimpleReflect in the lambdabot repo on github doesn't give any hits
17:08:09 <geekosaur> @where L.hs
17:08:09 <lambdabot> what lambdabot has in scope is at https://silicon.int-e.eu/lambdabot/State/Pristine.hs
17:08:12 <int-e> dminuoso: PrimMonad still solves a problem though: how to avoid exporting all primitives twice, once for ST s and once for IO. (The cost is some extra `cast`-s in the core, which hopefully don't hurt)
17:08:21 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:f80d:43f5:ddf4:fb26) (Remote host closed the connection)
17:08:45 emf joins (~emf@2620:10d:c091:480::1:58ea)
17:11:08 <int-e> tomsmeding: its in the libera branch (which I hardly ever mention because I force-push things there)
17:11:25 <tomsmeding> int-e: ah
17:11:49 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
17:12:21 <int-e> I really need to get on updating lambdabot for 9.0 (maybe 9.2, depending on the level of pain).
17:12:37 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:14:10 JoshuaBelden joins (~JoshuaBel@131.150.106.37)
17:17:10 × synthmeat quits (~synthmeat@user/synthmeat) (Quit: WeeChat 3.0)
17:18:05 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
17:18:25 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:18:49 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f80d:43f5:ddf4:fb26)
17:20:07 <int-e> > unwords $ map (\x -> printf "%.2f" (190-x/18)) [3361,3351,3322,3299,3242,3223,3209,3205,3185,3182] -- still not settled though, cyphase seems to have prioritized sleep over finishing part 2 (can still reach rank 6)
17:20:08 <lambdabot> "3.28 3.83 5.44 6.72 9.89 10.94 11.72 11.94 13.06 13.22"
17:20:23 Akiva joins (~Akiva@user/Akiva)
17:21:33 lavaman joins (~lavaman@98.38.249.169)
17:23:35 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
17:23:51 <xerox> oh no I'll get bumped off if he finishes
17:24:22 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:24:53 × waleee quits (~waleee@h-98-128-229-110.NA.cust.bahnhof.se) (Quit: WeeChat 3.3)
17:27:23 waleee joins (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
17:27:49 deadmarshal joins (~deadmarsh@95.38.230.89)
17:28:59 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:f80d:43f5:ddf4:fb26) (Remote host closed the connection)
17:29:23 cfricke joins (~cfricke@user/cfricke)
17:29:32 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
17:30:23 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:32:22 × deadmarshal quits (~deadmarsh@95.38.230.89) (Ping timeout: 256 seconds)
17:33:36 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:33:36 deadmarshal joins (~deadmarsh@95.38.230.89)
17:33:51 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f80d:43f5:ddf4:fb26)
17:35:03 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
17:35:41 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
17:36:19 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:36:23 synthmeat joins (~synthmeat@user/synthmeat)
17:37:10 × kupi quits (uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
17:37:31 zebrag joins (~chris@user/zebrag)
17:38:00 × xff0x quits (~xff0x@2001:1a81:5338:9c00:1be4:4471:6bbc:3532) (Ping timeout: 265 seconds)
17:38:19 × max22- quits (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Remote host closed the connection)
17:38:53 xff0x joins (~xff0x@2001:1a81:5338:9c00:d04b:38a4:ed4b:d288)
17:39:07 max22- joins (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr)
17:41:39 Guest48 joins (~Guest48@wireless-student-pt3-240-131.lut.ac.uk)
17:41:54 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
17:42:13 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:45:39 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
17:47:10 × Kevin578 quits (~Kevin578@pool-96-237-112-198.bstnma.fios.verizon.net) (Remote host closed the connection)
17:47:23 × d34df00d quits (~d34df00d@2600:1700:8c60:3a10::48) (Remote host closed the connection)
17:49:05 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
17:53:00 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
17:54:20 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:54:55 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 265 seconds)
17:55:30 Guest18 joins (~Guest18@client-8-71.eduroam.oxuni.org.uk)
17:56:47 × Guest18 quits (~Guest18@client-8-71.eduroam.oxuni.org.uk) (Client Quit)
17:56:52 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.3)
17:59:46 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
18:00:30 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:01:27 lky joins (~hbghlyj@client-8-71.eduroam.oxuni.org.uk)
18:02:53 Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
18:03:32 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 256 seconds)
18:04:58 × Guest48 quits (~Guest48@wireless-student-pt3-240-131.lut.ac.uk) (Quit: Client closed)
18:05:04 × teo quits (~teo@user/teo) (Ping timeout: 265 seconds)
18:05:48 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
18:05:55 × whatif quits (~user@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
18:06:06 whatif joins (~user@2400:8902::f03c:92ff:fe60:98d8)
18:06:33 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:11:50 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
18:12:32 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:12:33 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:13:49 × k60`` quits (~user@static.100.218.46.78.clients.your-server.de) (Ping timeout: 240 seconds)
18:16:48 k60`` joins (~user@static.100.218.46.78.clients.your-server.de)
18:17:42 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
18:18:09 × lky quits (~hbghlyj@client-8-71.eduroam.oxuni.org.uk) (Quit: Leaving)
18:18:18 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:23:05 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
18:23:56 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
18:28:57 justsomeguy joins (~justsomeg@user/justsomeguy)
18:34:01 × motherfsck quits (~motherfsc@user/motherfsck) (Read error: Connection reset by peer)
18:37:35 <hololeap> deriving stock instance (forall f. Functor f => Functor (t f), forall f. Foldable f => Foldable (t f), forall f. Traversable f => Traversable (t f)) => Traversable (Row t)
18:37:42 <hololeap> at least I know it's possible now
18:37:43 motherfsck joins (~motherfsc@user/motherfsck)
18:39:35 × pfurla quits (~pfurla@2804:14d:5c81:4104:25b5:2708:65a9:4e7d) (Quit: gone to sleep. ZZZzzz…)
18:40:22 × k60`` quits (~user@static.100.218.46.78.clients.your-server.de) (Ping timeout: 256 seconds)
18:41:42 <EvanR> with enough Functor and Foldable you can do anything it seems
18:41:56 <EvanR> maybe that's why mapreduce is a buzzword
18:44:01 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
18:44:42 <hololeap> I kind of wish "forall f. Traversable f => Traversable (t f)" implied the other two with QuantifiedConstraints, but I don't understand the underlaying type theory well enough to know if that's a reasonable feature
18:50:01 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
18:50:33 <awpr> that should imply `forall f. Traversable f => Functor (t f)` etc., but the left side of the `=>` is effectively contravariant, and that doesn't in turn imply `forall f. Functor f => Functor (t f)`
18:52:02 <awpr> first one is saying the instance expects `Traversable f` in order for `t f` to be `Functor`, but trying to convert it to the second one would mean trying to solve `Functor (t f)` given only `Functor f`, which isn't enough to satisfy that instance's context
18:52:08 × dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3)
18:52:23 <cyphase> int-e, i knew going in to part 1 that i was going to be distracted, and it took me longer than it would have. then yea, i just decided to focus on the (pleasantly) distracting thing and leave part 2 for daylight
18:54:03 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 268 seconds)
18:57:38 nebu joins (~user@user/wavion)
18:58:09 <EvanR> it's getting kind of brutal doing these at midnight xD
18:58:24 Kevin578 joins (~Kevin578@pool-96-237-112-198.bstnma.fios.verizon.net)
19:03:02 × nebu quits (~user@user/wavion) (Ping timeout: 256 seconds)
19:04:57 <dsal> ghc: panic! (the 'impossible' happened)
19:05:00 <dsal> that's kinda my thing.
19:05:03 <dsal> I make the impossible happen.
19:05:43 econo joins (uid147250@user/econo)
19:06:08 <boxscape> % GHC.Utils.Misc.only []
19:06:08 <yahb> boxscape: *** Exception: ghc: panic! (the 'impossible' happened); (GHC version 9.0.1:; Util: only; Please report this as a GHC bug: https://www.haskell.org/ghc/reportabug
19:06:11 <int-e> . o O ( asserted to be a failure )
19:07:11 WilliamJ joins (~WilliamJ@wireless-student-pt10-182-232.lut.ac.uk)
19:07:13 lavaman joins (~lavaman@98.38.249.169)
19:08:25 <EvanR> I hate it when impossible happens
19:08:30 <EvanR> it's the worst
19:09:06 <dsal> EvanR: don't let your dreams be dreams
19:09:15 <EvanR> almost as bad when necessarily doesn't happen
19:13:52 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:f80d:43f5:ddf4:fb26) (Remote host closed the connection)
19:15:16 nebu joins (~user@user/wavion)
19:15:53 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:f80d:43f5:ddf4:fb26)
19:16:15 × deadmarshal quits (~deadmarsh@95.38.230.89) (Ping timeout: 268 seconds)
19:18:05 sluigi joins (~sluigi@18.31.9.106)
19:19:42 <WilliamJ> hi guys, i'm new to haskell and have a task to program a function where it takes the length and width of a rectangle and the number of steps, for example putStr(rectangles 2 3 3) would be
19:19:42 <WilliamJ> ***
19:19:43 <WilliamJ> ***
19:19:43 <WilliamJ>    ******
19:19:44 <WilliamJ>    ******
19:19:44 <WilliamJ>       *********
19:19:45 <WilliamJ>       *********
19:19:45 <WilliamJ> I have managed to program an initial function to get the initial rectangle but stuck on how to do the other 2, the code is here https://paste.tomsmeding.com/OJQyGfBT any help would be appreciated :)
19:20:29 <monochrom> What does "number of step" mean?
19:20:49 × curiousgay quits (~curiousga@77-120-141-90.kha.volia.net) (Quit: Leaving)
19:20:54 <EvanR> is that ascii art accurate
19:21:07 <WilliamJ> there is 3 rectangles outputted
19:21:16 <WilliamJ> steps is the number
19:21:41 <monochrom> That doesn't explain anything.
19:21:49 <monochrom> Why are there 3 rectangles?
19:21:57 <monochrom> Why are some of them bigger?
19:22:05 <monochrom> Why are some of them indented?
19:22:53 <monochrom> I only know that a rectangle has width and height. What is "step" doing with a rectangle?
19:23:11 <aplainzetakind> It's obvious. The first parameter is the height, the second is the number of rectangles, and the third is the increase both in indentation and width as well as the initial width. What's the problem?
19:23:25 <EvanR> so it is accurate
19:23:43 <WilliamJ> Oh sorry, ok so, each step there will be another rectangle created. On each step the width will be the width of the last one + the width inputted by the user step is basically how many rectangles there will be, the indentation therefore is the width of the last rectangle sorry for not explaining
19:23:52 <WilliamJ> currently my code only outputs the first rectangle
19:23:58 <monochrom> No, it is non-obvious. What not three kinds of steps, one for indentation, one for increase in width, one for increase in height
19:24:15 <EvanR> given the picture is accurate, it's a simple IQ test to figure the rest out
19:24:23 <monochrom> And for that matter, why linear growth for any of them, why not logarithmic growth or quadratic growth
19:24:33 <aplainzetakind> monochrom: I was being sarcastic.
19:24:44 <WilliamJ> What I am confused about is how do I make it repeat it with the whitespace and make the width get bigger by that increment each time?
19:24:46 <monochrom> OK sorry, thanks.
19:24:48 <aplainzetakind> WilliamJ: The indentation is not the width of the previous rectangle though.
19:25:08 <WilliamJ> Do I mean length? Habe I gotten them mixed up
19:25:18 <EvanR> width, height
19:25:19 <WilliamJ> The 2nd rectangle is meant to be indented by 3 whitespace
19:25:35 <aplainzetakind> And the third?
19:25:37 <WilliamJ> 6
19:25:38 <EvanR> length is for rods and line segments
19:25:43 <aplainzetakind> But why?
19:25:47 <aplainzetakind> What does it all mean?
19:26:35 <WilliamJ> What does what mean, the output or the indentation? It's meant to be an ascii art creator with asterixes, as EvanR mentioned before
19:26:47 <WilliamJ> the Indentation is part of it
19:26:59 <WilliamJ> sorry if this is unclear
19:27:07 <int-e> aplainzetakind: try ##philosophy ;-)
19:27:47 <aplainzetakind> In any case, I think you should first write a function f i w h, which outputs a single rectangle of the given indentation width and height, and use that to output multiple such rectangles.
19:28:58 × sluigi quits (~sluigi@18.31.9.106) (Quit: Client closed)
19:29:30 <monochrom> https://esmemes.com/t/what-does-it-mean-to-be-a-good-person
19:29:41 <WilliamJ> But on the task, it does not ask specifically for the indentation to be given as an input, it is worked out through the width of the last one
19:30:24 <WilliamJ> hence on the example I gave, it went 3 whitespace, 6 whitespace.
19:30:31 <EvanR> ah yes, the ancient philosopher esmemes
19:31:26 <aplainzetakind> WilliamJ: I understand, you can use the proposed f above with values of i computed in the main task-fulfilling function.
19:33:07 <monochrom> Write a helper function that makes one rectangle of height, width, indentation controlled by parameters.
19:33:34 <monochrom> Now you just have to call that function multiple times, each time with larger numbers.
19:33:36 <monochrom> "just"
19:33:55 <WilliamJ> ok I got it working for the first place of the function, not sure why it isnt working on the other lines.
19:34:00 <WilliamJ> What is a helper function?
19:34:19 <monochrom> A function that the assignment doesn't directly say you have to write.
19:34:33 <monochrom> But the assignment would be trivial if you wrote it first.
19:34:48 <monochrom> This is why the assignment keeps it a secret.
19:34:54 × JoshuaBelden quits (~JoshuaBel@131.150.106.37) (Quit: Leaving...)
19:35:00 <monochrom> Can't tell every student how to get full marks.
19:35:08 <aplainzetakind> Only selected ones?
19:35:27 <WilliamJ> monochrom haha obviously, we have not been introduced to them yet.
19:35:41 Midjak joins (~Midjak@may53-1-78-226-116-92.fbx.proxad.net)
19:35:41 <WilliamJ> aplainzetakind the first line
19:35:53 <WilliamJ> rectangle :: Int -> Int -> Int -> String
19:35:53 <WilliamJ> rectangle i m n = (replicate i ' ' ++ unlines(replicate m(replicate n '*')))
19:36:28 <monochrom> If your rectangle has 10 lines, clearly you have 10 lines to indent.
19:36:30 <aplainzetakind> Not quite.
19:36:31 <monochrom> "clearly"
19:37:40 <WilliamJ> I tried it within the other brackets but it did not work so I put it on the outside hence I got that solution, do I need to do something with the unlines function?
19:38:06 <aplainzetakind> WilliamJ: Are you actually trying what the above function does in the repl?
19:38:16 <WilliamJ> I tried it in GHCI
19:38:24 <aplainzetakind> And did you get what you wanted?
19:38:32 <WilliamJ>    ***
19:38:32 <WilliamJ> ***
19:38:33 <WilliamJ> I got this
19:39:00 <aplainzetakind> So you can see what's wrong with it then.
19:39:41 <WilliamJ> Yeah, I thought at first I had to group it with the other replicate functions but it didnt work so I tried that solution and I got this
19:40:10 <WilliamJ> I know why this isnt working though
19:40:23 <WilliamJ> as I am concatinating with the first line only, it is not being repeated on every line
19:41:53 <aplainzetakind> In what way did it not work in the first try?
19:42:03 <WilliamJ> unlines(replicate i ' '(replicate m(replicate n '*'))) I tried this the first time
19:42:39 <WilliamJ> I receive an error saying it could not match [[Char]] -> [String]
19:43:02 <aplainzetakind> Figuring out what those type errors are telling you is a very important skill.
19:43:23 Erutuon joins (~Erutuon@user/erutuon)
19:43:38 <aplainzetakind> Around that line you can find exactly what it expected to be of that type and what it found instead.
19:43:45 <WilliamJ> My actual type is [Char] which makes sense to me, but why is it telling me the expected type is [[char]]
19:44:15 <aplainzetakind> Paste the whole error (not here, on a paste bin).
19:44:23 <WilliamJ> (y)
19:44:25 <geekosaur> @where paste
19:44:26 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
19:44:54 <WilliamJ> https://paste.tomsmeding.com/gXYCtrZY
19:45:25 <WilliamJ> Is it saying [[Char]] because I am trying to do 2 outputs of different characters? whitespace and asterix
19:45:54 <aplainzetakind> It's sayin something clearer.
19:46:09 <aplainzetakind> Lines 3 and 4
19:46:25 <WilliamJ> Oh ok, I see
19:47:04 <WilliamJ> So because these are all grouped together due to the type of replicate being that it is not possible?
19:47:52 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
19:49:17 <aplainzetakind> "grouped together" sounds a bit off.
19:49:51 <monochrom> replicate wants 2 arguments. Why are you giving it 3?
19:50:19 <aplainzetakind> If something like `f a b c` is supposed to be a valid expression, then f should take at least three arguments.
19:50:39 <WilliamJ> I tried to give it 3 arguments as I thought in order to get the indentation on each line, they had to be together inside the same brackets but it seems that cannot be the case
19:51:00 <aplainzetakind> Whitespace is function application.
19:51:29 × Successus quits (~Successus@gateway/tor-sasl/successus) ()
19:51:37 <WilliamJ> Oh ok, I see now
19:51:43 <monochrom> Did you ever concatenation two strings "abc" and "def" but just coding up "abc" "def"?
19:51:50 <monochrom> s/but/by/
19:51:54 <aplainzetakind> You are trying to apply `replicate i ' '` to that thing that follows, but it's a String and does not take any arguments.
19:52:04 <int-e> aplainzetakind: . o O { and braces and semicolons }
19:52:34 <aplainzetakind> > succ; 5
19:52:35 <WilliamJ> monochrom when using ++ for concatenation, no
19:52:35 <lambdabot> <hint>:1:5: error: parse error on input ‘;’
19:52:48 <aplainzetakind> int-e: Semicolons?
19:52:54 <monochrom> OK so you know ++ for concatenation. Why didn't you use it?
19:53:15 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:53:15 <monochrom> You were writing the equivalent of "abc" "def".
19:53:20 <int-e> > let x = 1;{- ordinarily you'd use a newline and indentation here, that is also whitespace-} y = 2 in x + y
19:53:21 <lambdabot> 3
19:53:21 <dsal> I think my impossible problem is from using stack to grab a thing out of git with different symbols but the same version number.
19:53:27 <dsal> I've scorched the earth.
19:53:27 <WilliamJ> I tried to use it at first when I did it on the outside of the group of brackets but it only did it on the first line, I have an idea now i shall give it a go
19:53:53 lortabac joins (~lortabac@2a01:e0a:541:b8f0:36fe:413:d066:5593)
19:53:54 <aplainzetakind> int-e: I should've said horizontal whitespace.
19:54:00 <WilliamJ> ok, I just tried it and it gave me a different error
19:54:23 <int-e> aplainzetakind: yeah my thought bubbles are not to be taken too seriously :-P
19:54:25 <WilliamJ> I added ++ between unlines(replicate i ' '++(replicate m(replicate n '*')))
19:54:44 <aplainzetakind> And that error must also be pretty clear if you give it a chance.
19:54:49 × averell quits (~averell@user/averell) (Quit: .)
19:55:25 <WilliamJ> Yes, it is talking about the types
19:55:26 <monochrom> > zip"abc""def"
19:55:28 <lambdabot> [('a','d'),('b','e'),('c','f')]
19:55:38 <monochrom> No space, brace, semicolon.
19:55:52 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
19:55:52 <monochrom> Now you have to add quotes to your list.
19:55:53 <int-e> unlines (replicate i ' ' ++ replicate m (replicate n '*')) -- these extra spaces really improve readability though
19:56:06 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
19:56:25 <aplainzetakind> Guys I did not say "ONLY whitespace is function application".
19:56:32 <aplainzetakind> Add $ to the list then.
19:56:36 <WilliamJ> So as it is no longer being applied to a string, it is talking about characters instead
19:56:54 <WilliamJ> https://paste.tomsmeding.com/VDjqp1eA
19:57:02 <int-e> aplainzetakind: eh calm down a little... we nitpick facts, not people, it's not personal
19:57:33 <monochrom> > let snoc = flip (:) in snoc"bcd"'a'
19:57:34 <lambdabot> "abcd"
19:57:49 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
19:57:50 <aplainzetakind> I am calm, I'm nitpicking semantics in return.
19:58:04 <int-e> Okay.
19:58:08 mc47 joins (~mc47@xmonad/TheMC47)
19:58:34 <monochrom> I was not nitpicking you, aplainzetakind. I was nitpicking int-e's list!
19:58:54 <aplainzetakind> WilliamJ: What's not clear about lines 2--5?
19:58:57 <monochrom> $ is no fun, though.
19:59:06 <aplainzetakind> monochrom: & then?
19:59:24 <int-e> monochrom: Hmm, why though? Whitespace doesn't turn into quotes...
19:59:41 <WilliamJ> Ok, I got it running but it does not work as expected
19:59:42 <int-e> monochrom: tbf there's some ambiguity in what that list was
19:59:43 <monochrom> Perhaps quotes turn into whitespace?
20:00:11 <int-e> monochrom: again that would be irrelevant
20:00:11 <monochrom> Consider the zip"abc""def" example.
20:00:19 <WilliamJ> I made the single quotes into double quotes but when I run the program, it outputs the whitespace and separate lines and then the rectangles
20:00:39 <aplainzetakind> You did not read the error.
20:01:03 <aplainzetakind> Lines 4 and 5 in what you pasted.
20:01:13 geekosaur thinks the whole "function application" subthread here can only bve explained in terms of tokens, not what characters count as "application"
20:01:14 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
20:01:28 <aplainzetakind> Don't blindly change things around and hope it works out somehow.
20:01:30 <WilliamJ> Yes, but I don't really understand what it is asking me aplainzetakind
20:02:30 <aplainzetakind> (++) concatenates two Strings, and a String is just a [Char], but the second argument you gave (++) is not a String but a list of Strings. Reread the error to appreciate that this is what it's saying.
20:02:31 × nvmd quits (~nvmd@user/nvmd) (Quit: Later, nerds.)
20:02:36 curiousgay joins (~curiousga@77-120-141-90.kha.volia.net)
20:02:42 <geekosaur> :t replicate 2 (replicate 3 '*')
20:02:43 <lambdabot> [[Char]]
20:02:48 <monochrom> I am OK with blind changes. But you have to learn from the consequences.
20:03:15 <zero> wuld there be any usefulness in distinguishing lazy Sets from strict Sets?
20:03:27 <int-e> +1 on practicing to read ghc's error messages
20:03:44 <geekosaur> zero, not really.
20:03:51 <zero> why?
20:03:55 <aplainzetakind> WilliamJ: To be more precise, (++) concatenates two lists of the same type, but here the first one encountered is a list of Char's.
20:03:56 <WilliamJ> Yes I understand that ++ concatenates 2 strings but why would it not work? as they are both technically strings?
20:04:02 <int-e> they can be scary, they can become very big, but they do follow regular patterns that you can learn to identify relevant information
20:04:12 <monochrom> What do lazy Sets do? Why do strict Sets do?
20:04:15 <aplainzetakind> No, it's telling you that the second one is not.
20:04:26 <int-e> [String] isn't the same type as String
20:04:29 <WilliamJ> How is '***' not a string?
20:04:38 <geekosaur> zero, why would there be value to it when they'd just be duplicates of each other?
20:04:40 <int-e> > '***'
20:04:42 <lambdabot> <hint>:1:2: error: parse error on input ‘***’
20:04:55 × juhp quits (~juhp@128.106.188.82) (Ping timeout: 252 seconds)
20:04:58 <aplainzetakind> In the second argument of `(++)' namely replicate m (replicate n '*')
20:05:07 <aplainzetakind> Is what it's saying.
20:05:11 <geekosaur> > replicate 2 (replicate 3 '*')
20:05:12 <lambdabot> ["***","***"]
20:05:18 <WilliamJ> Ok, so have I done it in the incorrect place?
20:05:21 <geekosaur> is the above a String?
20:05:22 <monochrom> What is the type of replicate m (replicate n '*') ?
20:05:28 <WilliamJ> No, that is a list geekosaur
20:05:34 <zero> are Sets strict or lazy?
20:05:41 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
20:05:41 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
20:05:41 wroathe joins (~wroathe@user/wroathe)
20:05:49 <WilliamJ> monochrom as I see above, that would be a list of strings
20:05:51 <monochrom> False dichotomy.
20:05:51 <aplainzetakind> So that's your problem. You are attmeting something that doesn't make sense.
20:05:56 <geekosaur> zero, both. the data structure is identical, only the operations are striuct/lazy
20:06:00 <aplainzetakind> attempting*
20:06:16 <WilliamJ> Okay, I am seeing where it is coming from now
20:06:20 <monochrom> Data.Set is strict in BST skeleton, lazy in value.
20:06:28 <boxscape> hackage says "A Set is strict in its elements."
20:06:33 <monochrom> err, wait, no, not entirely lazy in value.
20:06:35 <int-e> monochrom: there's no values, only keys
20:06:38 <zero> ah. i get it. thanks
20:06:56 <zero> because order
20:06:57 <aplainzetakind> WilliamJ: You want to prepend i spaces to each chunk of '*', where are they?.
20:07:08 <monochrom> It is somewhat strict in values to the point of resolving x<=y questions.
20:07:18 <geekosaur> and it makes no sense to have a lazy Set because (a) no values to be lazy (b) spine has to be strict due to ordering and balancing
20:07:18 juhp joins (~juhp@128.106.188.82)
20:07:19 <int-e> Oh I guess if your keys are lists they're only evaluated as far as necessary to compare all the keys
20:07:31 <WilliamJ> the chunk of '*' are in a list
20:07:44 <int-e> So yeah there's some laziness in that, though I'd attribute that to Ord, not to the Set
20:07:54 jinsun__ joins (~quassel@user/jinsun)
20:07:56 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:08:19 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
20:08:22 <aplainzetakind> > replicate 5 '*'
20:08:24 <lambdabot> "*****"
20:08:25 <monochrom> Well, Map.Strict is only strict in values to the extent of WHNF anyway.
20:08:37 <aplainzetakind> Such things are what you want to indent right?
20:08:49 <WilliamJ> correct
20:08:56 <monochrom> False dichotomies are false.
20:09:00 <aplainzetakind> Then prepend your spaces to those expressions.
20:09:16 <monochrom> The world is more interesting than "lazy vs strict".
20:09:20 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
20:09:29 <monochrom> And more interesting than "functions vs not functions"
20:09:35 lavaman joins (~lavaman@98.38.249.169)
20:09:43 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
20:09:47 <WilliamJ> Ok, I shall give it a try
20:09:58 lavaman joins (~lavaman@98.38.249.169)
20:10:05 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
20:10:08 <monochrom> I am monochrom but even my avatar is a 256-level gray scale, not just two blobs of white and black.
20:10:13 × vgtw quits (~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se) (Ping timeout: 240 seconds)
20:10:13 × swistak quits (~swistak@185.21.216.141) (Ping timeout: 240 seconds)
20:10:20 lavaman joins (~lavaman@98.38.249.169)
20:10:26 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
20:10:38 vgtw joins (~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se)
20:10:41 lavaman joins (~lavaman@98.38.249.169)
20:10:48 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
20:11:01 × jinsun quits (~quassel@user/jinsun) (Ping timeout: 240 seconds)
20:11:40 <johnw> not 50-level gray scale?
20:11:44 <WilliamJ> I just tried to prepend using : instead of ++ but I am having no luck, am i doing something wrong?
20:11:45 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds)
20:11:58 <aplainzetakind> Yes.
20:12:04 <monochrom> Haha but I made my avatar long before 50 Shades of Grey.
20:12:08 <aplainzetakind> Why did you feel the need to use (:)?
20:12:27 bonz060 joins (~quassel@2001:bc8:47a4:a23::1)
20:12:31 <aplainzetakind> :t replicate 3 ' '
20:12:32 <lambdabot> [Char]
20:12:37 <aplainzetakind> :t replicate 3 '*'
20:12:38 <lambdabot> [Char]
20:12:49 <WilliamJ> Because when I have done other exercises, I have used : to add stuff onto the end of stuff hence I thought it would be the same for this
20:12:53 <WilliamJ> rectangle i m n = unlines (replicate i ' ' : replicate m (replicate n '*')) is what I tried
20:13:07 swistak joins (~swistak@185.21.216.141)
20:13:14 <EvanR> : adds 1 stuff to the beginning
20:13:23 <int-e> well at least it type-checks
20:13:27 <aplainzetakind> I mean that typechecks.
20:13:29 <aplainzetakind> At least.
20:13:32 <monochrom> The vagueness of "add stuff to stuff" is why you are failing.
20:13:34 <WilliamJ> it runs, but doesnt how I expect it to
20:13:35 <aplainzetakind> But does not do what you want.
20:13:49 <int-e> you'll get one line full of spaces
20:14:01 <WilliamJ> yeah
20:14:01 <aplainzetakind> Because you are not putting spaces before the asterisks.
20:14:04 <int-e> followed by a non-idented rectangle
20:14:08 <aplainzetakind> But somewhere else.
20:14:22 <int-e> you need to modify every single line to achieve indentation
20:14:30 <aplainzetakind> replicate 3 ' ' ++ replicate 5 '*'
20:14:35 <aplainzetakind> > replicate 3 ' ' ++ replicate 5 '*'
20:14:37 <lambdabot> " *****"
20:14:43 <aplainzetakind> These are your lines.
20:14:55 <WilliamJ> Yes that is what I want to acheive
20:14:58 <WilliamJ> achieve*
20:15:02 <aplainzetakind> Then please achive it.
20:15:10 <WilliamJ> I am trying
20:17:54 <WilliamJ> ok I got it working
20:18:00 <WilliamJ> rectangle i m n = unlines (replicate m (replicate i ' ' ++ (replicate n '*')))
20:18:00 <aplainzetakind> Great.
20:18:14 <aplainzetakind> The innermost parens are unnecessary.
20:18:16 <WilliamJ> give me the output I want
20:18:33 <WilliamJ> Ok
20:18:35 <aplainzetakind> function application has highest precedence.
20:19:05 <WilliamJ> I understand, I had them there from a previous attempt.
20:19:12 <aplainzetakind> Now you need to call this with appropriate parameters an appropriate number of times as dictated by the parameters of your main function.
20:19:46 × nebu quits (~user@user/wavion) (Ping timeout: 268 seconds)
20:19:57 <aplainzetakind> And "call" can be misleading. Let's say evaluate.
20:20:11 <WilliamJ> yes, so the main function lets say is called rectangles since it will be a plural
20:20:43 <WilliamJ> So for that, it will be similar but now we need to include the steps
20:21:02 <aplainzetakind> Well, it may not be so similar.
20:21:20 <aplainzetakind> So what were your parameters again?
20:21:30 <WilliamJ> Width, Height/length and steps
20:21:43 <WilliamJ> So the type definition would be the same as theyre all integers
20:21:56 averell joins (~averell@user/averell)
20:22:30 <monochrom> I would be surprised if normally the caller of a function is similar to the internals of the called function.
20:22:30 <aplainzetakind> rectangles a b c -> a is height, b is starting width, indentation starts with 0 and both indentation and with increase by c for each successive rectangle?
20:22:47 <WilliamJ> Yes, that is it
20:23:10 <WilliamJ> Hence it would be rectangles :: Int -> Int -> Int -> String?
20:23:16 <aplainzetakind> So first produce your sequence of indentations and widths.
20:23:20 <aplainzetakind> That is correct.
20:23:38 <aplainzetakind> Are you familiar with `let` bindings?
20:23:58 <WilliamJ> We have been shown where bindings but not let I dont think
20:24:10 × phma quits (~phma@host-67-44-208-5.hnremote.net) (Read error: Connection reset by peer)
20:24:11 <aplainzetakind> OK, use where.
20:24:13 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
20:24:45 × alx741 quits (~alx741@157.100.93.160) (Ping timeout: 265 seconds)
20:24:45 <aplainzetakind> Write rectangles h w s = undefined; where ...
20:25:01 × neurocyte0132889 quits (~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat)
20:25:07 phma joins (~phma@host-67-44-209-94.hnremote.net)
20:25:08 <aplainzetakind> And in that where clause create useful building blocks.
20:25:30 <aplainzetakind> I think you need the lists of successive indentations and successive widths.
20:25:31 <WilliamJ> where
20:25:32 <WilliamJ>   h=0 or w = 0 or s = 0?
20:26:02 <WilliamJ> or is the undefinied a place holder for the sequence?
20:26:15 <aplainzetakind> No, such things would shadow the actual parameters.
20:26:24 <aplainzetakind> You will create new names.
20:26:43 <aplainzetakind> Or would they just be errors outright, I'm not sure actually.
20:27:09 <WilliamJ> I think it would just output lines unless s = 0
20:27:27 <WilliamJ> in that case, nothing would be output
20:27:31 <aplainzetakind> Structurally, you want something like the following: addOneToDouble x = y + 1; where y = 2 * x.
20:27:33 jinsun__ is now known as jinsun
20:27:55 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
20:27:55 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
20:27:55 wroathe joins (~wroathe@user/wroathe)
20:28:10 <WilliamJ> ok so, sorry if this is a bit annoying, but why would be use a where binding within this function?
20:29:05 neurocyte0132889 joins (~neurocyte@45.93.108.168)
20:29:05 × neurocyte0132889 quits (~neurocyte@45.93.108.168) (Changing host)
20:29:05 neurocyte0132889 joins (~neurocyte@user/neurocyte)
20:29:11 Flonk7 joins (~Flonk@vps-zap441517-1.zap-srv.com)
20:29:19 <aplainzetakind> In the where clause, define indentSeq :: [Int] and widthSeq :: [Int] in an appropriate manner. After that you will replace undefined with your final expression which will use those as building blocks.
20:30:13 × Flonk quits (~Flonk@vps-zap441517-1.zap-srv.com) (Ping timeout: 252 seconds)
20:30:13 Flonk7 is now known as Flonk
20:30:20 <aplainzetakind> It's not strictly necessary, just makes things cleaner and more structured. It's better practice to write many small and easily readible things then combine them in again small and easily readible things, as opposed to writing a huge expression.
20:31:07 <WilliamJ> ok so, for indentSeq, we should have it as 0 then after each rectangle, we add the value of w to it
20:31:29 <aplainzetakind> You can write addOneToDouble = 2 * x + 1, and in that toy example of course there's no gain in readibility in using where.
20:31:31 <aplainzetakind> Yes.
20:32:14 <WilliamJ> Ok so, I'm going to pastebin to show you what I currently have if that is ok
20:32:20 <aplainzetakind> Sure.
20:32:29 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 265 seconds)
20:32:42 deadmarshal joins (~deadmarsh@95.38.230.89)
20:32:48 <WilliamJ> https://paste.tomsmeding.com/V9aT8LHO
20:33:23 <WilliamJ> so for Indentseq, I should do indentseq = 0 + w correct? Or have I missed something?
20:33:51 <aplainzetakind> That would give you a single number. You want a List.
20:34:15 <aplainzetakind> > [1..10]
20:34:17 <lambdabot> [1,2,3,4,5,6,7,8,9,10]
20:34:24 <aplainzetakind> ^ You are familiar with this notation?
20:34:37 <WilliamJ> Yes, I have used that a few times when we practiced list comprehensions
20:34:52 <aplainzetakind> > [1,7..100]
20:34:53 <lambdabot> [1,7,13,19,25,31,37,43,49,55,61,67,73,79,85,91,97]
20:34:57 <aplainzetakind> ^ This too?
20:35:12 <WilliamJ> mhm, not that one
20:35:22 <aplainzetakind> Well, no you know.
20:35:29 <aplainzetakind> now you know*
20:35:37 <WilliamJ> so does it take the difference of the first 2 numbers and add it to every number afterwards
20:35:56 <aplainzetakind> Yes.
20:35:57 <geekosaur> yes
20:35:58 × Kevin578 quits (~Kevin578@pool-96-237-112-198.bstnma.fios.verizon.net) (Ping timeout: 256 seconds)
20:36:05 <geekosaur> it's also called enumFromThenTo
20:36:28 <WilliamJ> so for indentseq, would we do something online the lines of [0..w+w]?
20:36:37 <WilliamJ> along*
20:36:52 Kevin578 joins (~Kevin578@pool-96-237-112-198.bstnma.fios.verizon.net)
20:37:06 × deadmarshal quits (~deadmarsh@95.38.230.89) (Ping timeout: 256 seconds)
20:37:06 × curiousgay quits (~curiousga@77-120-141-90.kha.volia.net) (Ping timeout: 256 seconds)
20:37:15 <aplainzetakind> Try it in the repl with concrete numbers to see what gives you what you want.
20:37:30 <monochrom> You can try [0 .. 4+4] and see what you get.
20:37:50 <WilliamJ> ok, that is not what i want that gives me numbers up 8
20:37:57 <WilliamJ> I see why it is doing it
20:37:59 k60`` joins (~user@static.100.218.46.78.clients.your-server.de)
20:38:44 <aplainzetakind> Does the indentation increase by the width or the step parameter?
20:39:37 <WilliamJ> width, so for example if we had rectangles 3 2 3, the indentation would be 0,3,6
20:39:52 <WilliamJ> due to that being the width of the last rectangle
20:40:19 <aplainzetakind> By the way, you don't need to specify an end. For example [0,2..] is the infinite list of all even positive integers.
20:40:40 <WilliamJ> sounds good
20:40:54 <aplainzetakind> I thought we said both the width and the indentation increase by the step parameter.
20:41:23 <monochrom> The step parameter is how many rectangles to make.
20:41:28 lavaman joins (~lavaman@98.38.249.169)
20:41:31 <WilliamJ> step parameter is how many rectangles there is, did I not say before? Sorry if I didnt
20:42:57 <monochrom> I am surprised the teacher didn't word it as "count" or "numRects" or "n".
20:43:05 <aplainzetakind> so for `rectangles 2 5 7`, there are 7 rectangles, each of height 2, with widths 5,10,15, ... and indented such that they touch at the corners?
20:43:24 <WilliamJ> yeah that is correct
20:43:33 <WilliamJ> monochrom i'll admit, it did confuse me at the start too
20:43:38 × stevenxl quits (~stevenxl@174.128.182.199) (Quit: leaving)
20:44:06 <aplainzetakind> So indentation depends on width. First write widthseq then.
20:44:28 <int-e> :t scanl
20:44:29 <lambdabot> (b -> a -> b) -> b -> [a] -> [b]
20:44:32 <WilliamJ> so for width, we will start with w
20:44:32 <monochrom> If you look at BASIC or FORTRAN "for i = 1 to 100 step 3" no one would ever guess "it means 3 iterations".
20:45:03 × neurocyte0132889 quits (~neurocyte@user/neurocyte) (Ping timeout: 265 seconds)
20:45:06 <int-e> monochrom: hmm, why not though
20:45:07 <aplainzetakind> WilliamJ: And the next one in line is?
20:45:20 <WilliamJ> w+w
20:45:32 <aplainzetakind> Yes.
20:45:45 <aplainzetakind> Are you familiar with take?
20:45:46 × mrkajetanp quits (~mrkajetan@2a01:4b00:ea36:6c00:7994:941c:3f5d:2b88) (Ping timeout: 245 seconds)
20:45:48 <aplainzetakind> :t take
20:45:49 <lambdabot> Int -> [a] -> [a]
20:45:50 <WilliamJ> but as I saw before, w+w inside the list doesnt add it
20:45:56 <WilliamJ> Yes, we have used it
20:46:03 <aplainzetakind> You put it in the wrong spot.
20:46:05 × Benzi-Junior quits (~BenziJuni@88-149-66-61.du.xdsl.is) (Remote host closed the connection)
20:46:08 <WilliamJ> oh
20:46:12 <aplainzetakind> > [1..7]
20:46:14 <lambdabot> [1,2,3,4,5,6,7]
20:46:21 Benzi-Junior joins (~BenziJuni@88-149-66-61.du.xdsl.is)
20:46:21 <aplainzetakind> > [1,7..]
20:46:22 <lambdabot> [1,7,13,19,25,31,37,43,49,55,61,67,73,79,85,91,97,103,109,115,121,127,133,13...
20:46:26 mrkajetanp joins (~mrkajetan@2a01:4b00:ea36:6c00:7994:941c:3f5d:2b88)
20:46:29 <aplainzetakind> (infinite list)
20:46:36 × mrmonday quits (~robert@what.i.hope.is.not.a.tabernaevagant.es) (Read error: Connection reset by peer)
20:46:39 <WilliamJ> so for take, would take the last index and add w
20:46:55 <aplainzetakind> Don't jump to take for now.
20:46:55 × quantum quits (~quantum@user/quantum/x-8556232) (Ping timeout: 268 seconds)
20:46:55 × utk quits (~utk@2001:470:69fc:105::1:2fe0) (Ping timeout: 268 seconds)
20:46:55 × jophish quits (~jophish@2001:470:69fc:105::670) (Ping timeout: 268 seconds)
20:46:55 × Deide quits (~deide@user/deide) (Ping timeout: 268 seconds)
20:46:59 <WilliamJ> ok
20:47:25 × ServerStatsDisco quits (~serversta@2001:470:69fc:105::1a) (Ping timeout: 240 seconds)
20:47:26 × carmysilna quits (~brightly-@2001:470:69fc:105::2190) (Ping timeout: 245 seconds)
20:47:26 × justosophy[m] quits (~justosoph@2001:470:69fc:105::572f) (Ping timeout: 245 seconds)
20:47:26 × SawyerBergeron[m quits (~sawyerber@2001:470:69fc:105::3036) (Ping timeout: 245 seconds)
20:47:32 × acco[m] quits (~accotedom@2001:470:69fc:105::1:3236) (Ping timeout: 240 seconds)
20:47:32 × unclechu quits (~unclechu@2001:470:69fc:105::354) (Ping timeout: 240 seconds)
20:47:35 × fcortesi quits (~fcortesi@2001:470:69fc:105::f3a9) (Ping timeout: 250 seconds)
20:47:35 × aidy quits (~aidy@2001:470:69fc:105::c7b4) (Ping timeout: 250 seconds)
20:47:36 <aplainzetakind> subtask: create an infinite list of multiples of w: [w, 2*w, 3*w, etc.]
20:47:38 × jinsun_ quits (~jinsun@user/jinsun) (Ping timeout: 252 seconds)
20:47:45 mrmonday joins (~robert@what.i.hope.is.not.a.tabernaevagant.es)
20:47:46 × ilkecan[m] quits (~ilkecanma@2001:470:69fc:105::1:79b) (Ping timeout: 260 seconds)
20:47:46 × thomasjm[m] quits (~thomasjmm@2001:470:69fc:105::c6d9) (Ping timeout: 260 seconds)
20:47:46 × craige[m] quits (~craigemcw@2001:470:69fc:105::35f1) (Ping timeout: 260 seconds)
20:47:46 × fendor[m] quits (~fendormat@2001:470:69fc:105::fcbd) (Ping timeout: 260 seconds)
20:47:46 × Topik[m] quits (~topikmatr@2001:470:69fc:105::a082) (Ping timeout: 260 seconds)
20:47:48 × TomasJakl[m] quits (~jaklttchn@2001:470:69fc:105::a42) (Ping timeout: 250 seconds)
20:47:54 <raehik> Every time I generate Hackage docs to upload, it ends up not linking types like Functor, Eq correctly to their definitions. I'm invoking the v2 cabal command Hackage tells me to. Any potential pointers?
20:48:02 × siraben quits (~siraben@user/siraben) (Ping timeout: 240 seconds)
20:48:02 × inkbottle[m] quits (~inkbottle@2001:470:69fc:105::2ff5) (Ping timeout: 240 seconds)
20:48:02 × benjamin[m]12 quits (~benjaminm@2001:470:69fc:105::1:3f2f) (Ping timeout: 240 seconds)
20:48:02 × denbrahe[m] quits (~denbrahem@2001:470:69fc:105::19c0) (Ping timeout: 240 seconds)
20:48:02 × JoelMcCracken[m] quits (~joelmccra@2001:470:69fc:105::8405) (Ping timeout: 240 seconds)
20:48:02 <raehik> example https://hackage.haskell.org/package/fortran-src-0.7.0/docs/Language-Fortran-AST.html
20:48:13 × bb010g quits (~bb010g@2001:470:69fc:105::9a5) (Ping timeout: 240 seconds)
20:48:13 × thedward[m] quits (~thedwardm@2001:470:69fc:105::f79) (Ping timeout: 250 seconds)
20:48:14 × smichel17[m] quits (~smichel17@2001:470:69fc:105::2d32) (Ping timeout: 250 seconds)
20:48:14 × boxscape quits (~boxscape@user/boxscape) (Ping timeout: 260 seconds)
20:48:16 × ppseafield[m] quits (~elementpp@2001:470:69fc:105::1:250a) (Ping timeout: 245 seconds)
20:48:27 × vaibhavsagar[m] quits (~vaibhavsa@2001:470:69fc:105::ffe) (Ping timeout: 250 seconds)
20:48:27 × fgaz quits (~fgaz@2001:470:69fc:105::842) (Ping timeout: 250 seconds)
20:48:27 × Ollie[m] quits (~ollieocha@2001:470:69fc:105::41a5) (Ping timeout: 250 seconds)
20:48:27 × Movedtosridoneem quits (~sridmatri@2001:470:69fc:105::1c2) (Ping timeout: 250 seconds)
20:48:34 <WilliamJ> ok i'll give that a go now and report back in a minute or 2 if i figure out how to get it to work
20:48:42 × fsckskye[m] quits (~kmatrixth@2001:470:69fc:105::1:3b2f) (Ping timeout: 260 seconds)
20:48:42 × the-coot[m] quits (~the-cootm@2001:470:69fc:105::95f) (Ping timeout: 260 seconds)
20:48:42 × hughjfchen[m] quits (~hughjfche@2001:470:69fc:105::c29d) (Ping timeout: 260 seconds)
20:48:44 × jchia[m] quits (~jchiamatr@2001:470:69fc:105::c50b) (Ping timeout: 252 seconds)
20:49:05 × InternetManaging quits (~imjmatrix@2001:470:69fc:105::1:2ea5) (Ping timeout: 250 seconds)
20:49:06 × shiraeeshi[m] quits (~shiraeesh@2001:470:69fc:105::1:77) (Ping timeout: 245 seconds)
20:49:06 × james[m]12 quits (~jamesnina@2001:470:69fc:105::1:4203) (Ping timeout: 245 seconds)
20:49:06 × surgeon[m] quits (~surge9nma@2001:470:69fc:105::f585) (Ping timeout: 245 seconds)
20:49:06 × octeep[m] quits (~octeepoct@2001:470:69fc:105::1:3dbf) (Ping timeout: 245 seconds)
20:49:17 × unrooted quits (~unrooted@2001:470:69fc:105::a4a) (Ping timeout: 252 seconds)
20:49:17 × hsiktas[m] quits (~hsiktasma@2001:470:69fc:105::30d4) (Ping timeout: 252 seconds)
20:49:19 × schuelermine[m] quits (~schuelerm@user/schuelermine) (Ping timeout: 250 seconds)
20:49:19 × peddie quits (~peddie@2001:470:69fc:105::25d) (Ping timeout: 250 seconds)
20:49:31 × Christoph[m] quits (~hpotsirhc@2001:470:69fc:105::2ff8) (Ping timeout: 245 seconds)
20:49:31 × asdofindia-m quits (~akshaymat@2001:470:69fc:105::831) (Ping timeout: 245 seconds)
20:49:31 × lambdandy[m] quits (~lambdandy@2001:470:69fc:105::1:3045) (Ping timeout: 250 seconds)
20:49:31 × oak- quits (~oakuniver@2001:470:69fc:105::fcd) (Ping timeout: 250 seconds)
20:49:31 × Artem[m] quits (~artemtype@2001:470:69fc:105::75b) (Ping timeout: 250 seconds)
20:49:32 × xddq[m] quits (~xddqmatri@2001:470:69fc:105::bfd8) (Ping timeout: 240 seconds)
20:49:32 × soft quits (~soft@2001:470:69fc:105::c75) (Ping timeout: 240 seconds)
20:49:32 × DemiMarieObenour quits (~alwayscur@2001:470:69fc:105::4886) (Ping timeout: 240 seconds)
20:49:32 × zfnmxt quits (~zfnmxtzfn@2001:470:69fc:105::2b32) (Ping timeout: 240 seconds)
20:49:32 × bitonic quits (~bitonic@2001:470:69fc:105::1812) (Ping timeout: 240 seconds)
20:49:38 × puffnfresh[m] quits (~puffnfres@2001:470:69fc:105::1:22da) (Ping timeout: 260 seconds)
20:49:38 × amesgen[m] quits (~amesgenm]@2001:470:69fc:105::82b) (Ping timeout: 260 seconds)
20:49:38 × tomku[m] quits (~tomkumozi@2001:470:69fc:105::1:2fcb) (Ping timeout: 260 seconds)
20:49:45 × alex[m]121 quits (~alexchete@2001:470:69fc:105::1:1001) (Ping timeout: 250 seconds)
20:49:45 × TomWesterhout[m] quits (~twesterho@2001:470:69fc:105::1:2918) (Ping timeout: 250 seconds)
20:49:45 × cdsmith quits (~cdsmithma@2001:470:69fc:105::284) (Ping timeout: 250 seconds)
20:49:45 × MatrixTravelerbo quits (~voyagert2@2001:470:69fc:105::22) (Ping timeout: 250 seconds)
20:49:45 × chizil[m] quits (~chizilmat@2001:470:69fc:105::1:34ab) (Ping timeout: 250 seconds)
20:49:45 × jneira[m] quits (~jneiramat@2001:470:69fc:105::d729) (Ping timeout: 250 seconds)
20:49:45 × zwro[m] quits (~zwromatri@2001:470:69fc:105::1d4) (Ping timeout: 250 seconds)
20:49:50 <WilliamJ> Ok, it isnt with w's, but I found a way to multiply each index by 2 but not going up in 1
20:49:50 × moats quits (~oats@user/oats) (Ping timeout: 252 seconds)
20:49:50 <aplainzetakind> WilliamJ: If you write something like [1..] in the repl it will flood with infinite numbers, so do things like `take 20 [1..]` so that you can see what's going on.
20:49:53 × reza[m] quits (~rezaphone@2001:470:69fc:105::3eda) (Ping timeout: 265 seconds)
20:49:57 × Magnus[m] quits (~magthetch@2001:470:69fc:105::d1a7) (Ping timeout: 250 seconds)
20:50:02 × sm quits (~sm@plaintextaccounting/sm) (Ping timeout: 240 seconds)
20:50:02 × Tisoxin quits (~ikosit@user/ikosit) (Ping timeout: 240 seconds)
20:50:02 × psydroid quits (~psydroid@user/psydroid) (Ping timeout: 240 seconds)
20:50:06 × ongy[m] quits (~ongymatri@2001:470:69fc:105::5018) (Ping timeout: 260 seconds)
20:50:06 × kadoban quits (~kadoban@user/kadoban) (Ping timeout: 260 seconds)
20:50:06 × maerwald[m] quits (~maerwaldm@2001:470:69fc:105::1ee) (Ping timeout: 260 seconds)
20:50:06 × ManofLetters[m] quits (~manoflett@2001:470:69fc:105::3be) (Ping timeout: 260 seconds)
20:50:17 <aplainzetakind> WilliamJ: What do you mean? Can you paste the expression here?
20:50:22 × aveltras[m] quits (~aveltrasm@2001:470:69fc:105::3ef9) (Ping timeout: 265 seconds)
20:50:27 <WilliamJ> map (*2) [1..5]
20:50:33 <WilliamJ> gives me [2,4,6,8,10]
20:50:37 × iammrinal0[m] quits (~iammrinal@2001:470:69fc:105::1:2248) (Ping timeout: 268 seconds)
20:50:37 × std_mutex[m] quits (~stdmutexm@2001:470:69fc:105::1:4534) (Ping timeout: 268 seconds)
20:50:37 × AlainJourez[m] quits (~sherekahn@2001:470:69fc:105::1:4a71) (Ping timeout: 250 seconds)
20:50:38 × maralorn quits (~maralorn@2001:470:69fc:105::251) (Ping timeout: 268 seconds)
20:50:38 × rednaZ[m] quits (~r3dnazmat@2001:470:69fc:105::ba70) (Ping timeout: 268 seconds)
20:50:38 × ericson2314 quits (~ericson23@2001:470:69fc:105::70c) (Ping timeout: 268 seconds)
20:50:38 × wildsebastian quits (~wildsebas@2001:470:69fc:105::1:14b1) (Ping timeout: 268 seconds)
20:50:38 × meatfeather[m] quits (~meatfeath@2001:470:69fc:105::1:3311) (Ping timeout: 268 seconds)
20:50:38 × ocramz[m] quits (~ocramzmat@2001:470:69fc:105::1:35b0) (Ping timeout: 268 seconds)
20:50:38 × wysteriary[m] quits (~wysteriar@2001:470:69fc:105::a42e) (Ping timeout: 268 seconds)
20:50:38 × marinelli[m] quits (~marinelli@2001:470:69fc:105::2d8) (Ping timeout: 268 seconds)
20:50:40 <aplainzetakind> That's also good.
20:50:50 <aplainzetakind> So you can replace 2 by ...
20:51:03 <WilliamJ> but like you said, w: [w, 2*w, 3*w, etc.] I am not sure how to make it go up each time
20:51:20 <aplainzetakind> What you did does go up each time, just by 2 and not w.
20:51:31 <WilliamJ> wait, i sde
20:51:32 <WilliamJ> see
20:51:38 <WilliamJ> so if i replace 2 with w
20:51:51 × jkachmar quits (~jkachmar@2001:470:69fc:105::c72d) (Ping timeout: 268 seconds)
20:51:51 × RosarioPulella[m quits (~rosariopu@2001:470:69fc:105::a57) (Ping timeout: 268 seconds)
20:51:51 × jmcantrell quits (~jmcantrel@user/jmcantrell) (Ping timeout: 268 seconds)
20:51:51 × Arathorn quits (~arathorn@2001:470:69fc:105::1f) (Ping timeout: 268 seconds)
20:51:51 × alexfmpe[m] quits (~alexfmpem@2001:470:69fc:105::38ba) (Ping timeout: 268 seconds)
20:52:14 WilliamJ17 joins (~WilliamJ@wireless-student-pt10-182-232.lut.ac.uk)
20:52:20 acidjnk_new joins (~acidjnk@pd9e0bdc0.dip0.t-ipconnect.de)
20:52:22 <WilliamJ17> I got disconnected sorry
20:52:23 pfurla joins (~pfurla@2804:14d:5c81:4104:25b5:2708:65a9:4e7d)
20:52:24 <aplainzetakind> Also you want s numbers and not 5.
20:52:27 <WilliamJ17> yes
20:52:28 × Orbstheorem quits (~orbstheor@2001:470:69fc:105::a56) (Ping timeout: 268 seconds)
20:52:44 <WilliamJ17> I was thinking map (*w) [1..s]
20:52:52 pavonia joins (~user@user/siracusa)
20:52:58 <aplainzetakind> That is correct.
20:53:20 <WilliamJ17> widthseq = map (*w) [1..s] is what I have then
20:53:33 <aplainzetakind> Now write out the first few terms of indentseq
20:53:43 <aplainzetakind> Yes that's good.
20:53:55 <WilliamJ17> so is it the same, but starts at 0 and is s-1?
20:54:02 × son0p quits (~ff@181.136.122.143) (Remote host closed the connection)
20:54:03 <aplainzetakind> Yes.
20:54:43 <WilliamJ17> indentseq :: [Int]
20:54:43 <WilliamJ17>  indentseq = map (*w) [1..s-1]
20:54:44 <WilliamJ17>  widthseq :: [Int]
20:54:44 <WilliamJ17>  widthseq = map (*w) [1..s]
20:54:45 <WilliamJ17> is what I have
20:54:56 <WilliamJ17> should be 0 not 1 in indentseq
20:55:23 <aplainzetakind> Now you need a way to call your other rectangle function on these somehow.
20:55:29 <aplainzetakind> :t zipWith
20:55:30 <lambdabot> (a -> b -> c) -> [a] -> [b] -> [c]
20:55:43 std_mutex[m] joins (~stdmutexm@2001:470:69fc:105::1:4534)
20:55:44 RosarioPulella[m joins (~rosariopu@2001:470:69fc:105::a57)
20:55:46 × Morrow quits (~quassel@bzq-110-168-31-106.red.bezeqint.net) (Remote host closed the connection)
20:55:47 <aplainzetakind> Study this type signature and figure out how to make use of this function.
20:55:51 <WilliamJ17> I have seen zip before, but not zipwith
20:56:02 alexfmpe[m] joins (~alexfmpem@2001:470:69fc:105::38ba)
20:56:17 × WilliamJ quits (~WilliamJ@wireless-student-pt10-182-232.lut.ac.uk) (Ping timeout: 256 seconds)
20:56:28 wysteriary[m] joins (~wysteriar@2001:470:69fc:105::a42e)
20:56:46 <WilliamJ17> so it takes 3 parameters and puts them into lists?
20:57:09 <WilliamJ17> wait bo
20:57:10 <WilliamJ17> no
20:57:19 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
20:57:25 xddq[m] joins (~xddqmatri@2001:470:69fc:105::bfd8)
20:57:36 <aplainzetakind> No, (a -> b -> c) is a function type.
20:57:46 Morrow joins (~quassel@bzq-110-168-31-106.red.bezeqint.net)
20:57:59 <aplainzetakind> It is a function which takes an a and a b and gives you a c.
20:58:07 bitonic joins (~bitonic@2001:470:69fc:105::1812)
20:58:07 <WilliamJ17> Ok
20:58:17 <WilliamJ17> So the c would be a list
20:58:21 <aplainzetakind> No.
20:58:26 <WilliamJ17> why not?
20:58:31 <aplainzetakind> c can be anything.
20:58:35 <WilliamJ17> ok
20:58:53 <WilliamJ17> so
20:58:57 <aplainzetakind> An example to inspect:
20:59:01 <WilliamJ17> ok
20:59:25 jgeerds joins (~jgeerds@55d4ac73.access.ecotel.net)
20:59:48 <aplainzetakind> > zipWith take [1,3,5] ["sdofijoi", "wqwqwqwq", "qwertyuio"]
20:59:49 <lambdabot> ["s","wqw","qwert"]
21:00:01 <aplainzetakind> :t take
21:00:04 <lambdabot> Int -> [a] -> [a]
21:00:05 × hgolden quits (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (Quit: Konversation terminated!)
21:00:18 <WilliamJ17> so its taking the first, first 3 and first 5 elements of each index
21:00:39 <aplainzetakind> Yes.
21:01:14 <WilliamJ17> so for us, would we be using it to get each length, width and indentation for each rectangle?
21:01:45 <aplainzetakind> ...of the string at the corresponding index would be a more precise way to put it.
21:01:48 jmcantrell joins (~jmcantrel@user/jmcantrell)
21:02:00 <WilliamJ17> Ok
21:02:06 <aplainzetakind> You mean height, width and indentation?
21:02:12 Orbstheorem joins (~orbstheor@2001:470:69fc:105::a56)
21:02:21 <WilliamJ17> Yes, sorry for saying length keep saying it since that is what I wrote in the first place
21:02:41 <aplainzetakind> We always have the same height, so that's fixed. we have created our lists of the indentations and widths.
21:03:17 <aplainzetakind> Now we want a function of two parameters, width and indentation, but the function you already wrote takes three.
21:03:30 hgolden joins (~hgolden2@cpe-172-114-81-123.socal.res.rr.com)
21:03:37 <WilliamJ17> yes, this one
21:03:38 kadoban joins (~kadoban@user/kadoban)
21:03:38 <WilliamJ17> rectangle :: Int -> Int -> Int -> String
21:03:38 <WilliamJ17> rectangle i m n = unlines replicate m (replicate i ' ' ++ (replicate n '*'))
21:03:46 Arathorn joins (~arathorn@2001:470:69fc:105::1f)
21:04:29 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
21:04:30 moats joins (~oats@user/oats)
21:05:02 <WilliamJ17> so can we just get rid of m?
21:05:03 <aplainzetakind> If you change `rectangle i m n` to `rectangle m i n` on the left hand side of the definition to change the order of the argument, the first parameter becomes the height right?
21:05:11 <WilliamJ17> i shall give it a go
21:05:33 <aplainzetakind> No you can't get rid of it, you will pass h to it in the other function.
21:05:45 <WilliamJ17> ok
21:06:01 psydroid joins (~psydroid@user/psydroid)
21:06:11 <WilliamJ17> ok slight problem, when I am trying to run I am getting a parse error due to where. I can comment this out for the time being right?
21:06:24 MatrixTravelerbo joins (~voyagert2@2001:470:69fc:105::22)
21:06:27 zwro[m] joins (~zwromatri@2001:470:69fc:105::1d4)
21:06:47 InternetManaging joins (~imjmatrix@2001:470:69fc:105::1:2ea5)
21:06:54 surgeon[m] joins (~surge9nma@2001:470:69fc:105::f585)
21:06:59 <WilliamJ17> and Yes it will become the height
21:07:00 <aplainzetakind> When you rearrange the parameter in the way I said, `rectangle 5`, for instance, becomes a function of two parameters, indentation and width, fit to be used in zipWith.
21:07:27 <aplainzetakind> Just indent the lines following where more than where itself.
21:07:28 <WilliamJ17> ok, I get you
21:07:41 schuelermine[m] joins (~schuelerm@user/schuelermine)
21:08:20 <WilliamJ17> https://paste.tomsmeding.com/pvtHk3yv what I currently have
21:09:17 jkachmar joins (~jkachmar@2001:470:69fc:105::c72d)
21:09:22 <aplainzetakind> Now assemble all those things we mentioned in an expression to replace that `undefined` to produce a list of results of appropriate calls to `rectangle`..
21:09:30 <WilliamJ17> ok
21:09:47 quantum joins (~quantum@user/quantum/x-8556232)
21:09:47 <WilliamJ17> so, we need a zipWith function
21:10:19 <aplainzetakind> You already have it.
21:10:32 <aplainzetakind> Yo give appropriate parameters to it.
21:10:42 Deide joins (~deide@user/deide)
21:10:46 <aplainzetakind> First is a function, then two lists.
21:10:50 <WilliamJ17> Ok
21:10:52 <WilliamJ17> I understand now
21:10:54 utk joins (~utk@2001:470:69fc:105::1:2fe0)
21:11:04 <WilliamJ17> So
21:11:11 jophish joins (~jophish@2001:470:69fc:105::670)
21:11:58 <aplainzetakind> You will get a type error because we are not done yet. Temporarily comment out the type signature of rectangles to avoid the complaints.
21:12:18 <WilliamJ17> I am slightly confused, might seem like a rookie error. We need to do zip each corresponding index in widthseq and indentseq correct?
21:12:25 zfnmxt joins (~zfnmxtzfn@2001:470:69fc:105::2b32)
21:12:44 <aplainzetakind> Yes.
21:12:57 <aplainzetakind> zipWith rather.
21:13:07 acco[m] joins (~accotedom@2001:470:69fc:105::1:3236)
21:13:38 deadmarshal joins (~deadmarsh@95.38.230.89)
21:13:50 DemiMarieObenour joins (~alwayscur@2001:470:69fc:105::4886)
21:13:58 soft joins (~soft@2001:470:69fc:105::c75)
21:13:59 <WilliamJ17> Since I'm used to imperative languages, I keep thinkign I can just write i for each index, but in haskell that is not the case
21:14:54 <EvanR> haskell is not opinionated on how you label your items hehe
21:15:14 <aplainzetakind> You don't need to introduce any new names. You have all the building blocks now.
21:15:22 <WilliamJ17> yeah lol im just trying to think what to put to make it so each index is zipped with one another
21:15:42 <aplainzetakind> That's what zipWith does. You don't need to do anything.
21:15:53 <EvanR> > zip [0..] "supercalifragilistic"
21:15:54 <lambdabot> [(0,'s'),(1,'u'),(2,'p'),(3,'e'),(4,'r'),(5,'c'),(6,'a'),(7,'l'),(8,'i'),(9,...
21:15:55 dsrt^ joins (~dsrt@wsip-98-188-240-142.mc.at.cox.net)
21:16:03 <WilliamJ17> yeah like that
21:16:24 <WilliamJ17> but with zipWith, you need a function first correct?
21:16:29 <WilliamJ17> before the 2 lists
21:16:31 <aplainzetakind> Yes.
21:16:58 <WilliamJ17> I'm just confused what to put there, as I just saw with zip it has done it
21:17:02 <EvanR> yeah then you avoid a tuple if you don't want one
21:17:27 <aplainzetakind> The elements of the first list are used as the first parameter to the function, those of second for the second parameter of the function, and the resulting list is the list of the results of the function.
21:18:22 <WilliamJ17> so is it just as simple as zipWith indentseq widthseq?
21:18:31 <WilliamJ17> I dont think it is
21:18:32 <aplainzetakind> zipWith f [x1, x2, x3] [y1, y2, y3] gives you [f x1 y1, f x2 y2, f x3 y3]
21:18:41 <WilliamJ17> Yeah
21:18:46 <aplainzetakind> zipWith needs a function to zip "With".
21:19:01 <WilliamJ17> Yeah, thats what I'm stumped on since Im not sure what it is
21:19:08 <WilliamJ17> is it just rectangle?
21:19:10 <aplainzetakind> What function do you want to feed your widths and indentations into?
21:19:27 Topik[m] joins (~topikmatr@2001:470:69fc:105::a082)
21:19:37 <WilliamJ17> zipWith rectangle widthseq indentseq?
21:19:40 <aplainzetakind> Almost, why did we reorder the parameters of `rectangle`?
21:19:55 <WilliamJ17> so we got m first which was the height
21:19:58 <aplainzetakind> How many parameters does rectangle take? How many are appropriate for zipWith?
21:20:02 <WilliamJ17> so its m?
21:20:20 <WilliamJ17> zipWith m widthseq indentseq?
21:20:36 <aplainzetakind> m is not a function. (rectangle an_integer) however, is.
21:20:59 <aplainzetakind> Do you have a good understanding of currying?
21:21:01 <WilliamJ17> zipWith (rectangle m) widthseq indentseq
21:21:14 <WilliamJ17> We have looked at it
21:21:26 <aplainzetakind> Almost, except m is out of scope in where you want to put this. What do you need m to be?
21:21:34 river joins (~My_user_n@tilde.team/user/river)
21:21:36 <river> hiy
21:21:47 × cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 265 seconds)
21:22:01 <WilliamJ17> wait
21:22:25 <WilliamJ17> we made m as h here
21:22:30 <aplainzetakind> Yes.
21:22:42 <WilliamJ17> so is it just zipWith (rectangles h) widthseq indentseq?
21:22:51 <aplainzetakind> rectangle h, not rectangles.
21:22:53 Christoph[m] joins (~hpotsirhc@2001:470:69fc:105::2ff8)
21:23:13 <WilliamJ17> ok, but why does that work if we havent input h in the rectangle function
21:23:22 <aplainzetakind> Make sure the type signature is commented out.
21:23:24 <WilliamJ17> its part of the rectangles function
21:24:07 <dsal> Does ghc inline stuff within the same module by default?
21:24:08 reza[m] joins (~rezaphone@2001:470:69fc:105::3eda)
21:24:17 <sshine> is there a standard way to perform modular arithmetic in small spaces? e.g. if I do Z_{2^{32}} arithmetic directly in Word32, that's fine. but if I do Z_N arithmetic where N < 2^32 in Word32, then e.g. multiplication would overflow at the wrong place. is there a way to compensate either before or after multiplying if N is prime?
21:24:19 carmysilna joins (~brightly-@2001:470:69fc:105::2190)
21:24:19 <aplainzetakind> Those are variable names. When you write f x = x + 1 and then write f y, it takes whatever y is and adds 1 to it.
21:24:32 <WilliamJ17> ok
21:24:59 justosophy[m] joins (~justosoph@2001:470:69fc:105::572f)
21:25:02 <WilliamJ17> so I've commented out rectangles type signature, but I dont think if I run this, it will give me the solution?
21:25:10 <WilliamJ17> still feel theres something else to do
21:25:11 <aplainzetakind> The letters are not parts of the function, they represent places where things can be put.
21:25:19 <aplainzetakind> Yes, see what this gives you first.
21:25:21 Pickchea joins (~private@user/pickchea)
21:25:24 × _xor quits (~xor@dsl-50-5-233-169.fuse.net) (Read error: Connection reset by peer)
21:25:31 <aplainzetakind> Running it is not a huge chore I suppose.
21:25:35 <WilliamJ17> yeah lol
21:25:49 <WilliamJ17> Ok, It's given me an error on rectangle since we changed the order
21:26:02 <geekosaur> dsal, yes as long as it's not recursive (and a few other rules)
21:26:05 SawyerBergeron[m joins (~sawyerber@2001:470:69fc:105::3036)
21:26:07 <WilliamJ17> https://paste.tomsmeding.com/4WpSDX8w
21:26:49 unclechu joins (~unclechu@2001:470:69fc:105::354)
21:27:00 <geekosaur> dsal, https://downloads.haskell.org/ghc/latest/docs/html/users_guide/exts/pragmas.html#inline-pragma
21:27:02 <WilliamJ17> I am confused as to why this has happened as all we did was change the order or i and m
21:27:39 <aplainzetakind> You removed parentheses after unlines.
21:27:42 <dsal> geekosaur: Thanks. My mental model is "ghc doesn't like inlining"
21:27:52 <WilliamJ17> ok
21:28:16 TomasJakl[m] joins (~jaklttchn@2001:470:69fc:105::a42)
21:28:17 <geekosaur> dsal, mine is "ghc inlines anything it thinks won't explode on it"
21:28:19 <WilliamJ17> Ok, I have gotten the same error as I did before on this I think
21:28:32 <WilliamJ17> https://paste.tomsmeding.com/dMRlFJe6
21:28:40 <geekosaur> you can either force it to inline anyway or fine-tune its notion of "won't explode"
21:28:50 lally joins (sid388228@id-388228.uxbridge.irccloud.com)
21:29:45 ilkecan[m] joins (~ilkecanma@2001:470:69fc:105::1:79b)
21:29:51 ManofLetters[m] joins (~manoflett@2001:470:69fc:105::3be)
21:30:08 <aplainzetakind> I told you twice to comment out the type signature for rectangles, because we're not done yet.
21:30:21 <WilliamJ17> oh sorry, I commented out it in rectangle
21:30:23 fendor[m] joins (~fendormat@2001:470:69fc:105::fcbd)
21:30:24 <aplainzetakind> It doesn't yet give what you declared in the signature.
21:30:29 × xff0x quits (~xff0x@2001:1a81:5338:9c00:d04b:38a4:ed4b:d288) (Ping timeout: 265 seconds)
21:31:01 ServerStatsDisco joins (~serversta@2001:470:69fc:105::1a)
21:31:03 xff0x joins (~xff0x@2001:1a81:5338:9c00:9209:5fa4:fe4c:a1bd)
21:31:17 _xor joins (~xor@dsl-50-5-233-169.fuse.net)
21:31:33 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
21:31:34 <WilliamJ17> Ok
21:31:43 <WilliamJ17> [" \n \n \n"," **\n **\n **\n"," ****\n ****\n ****\n"] is my output
21:31:53 <WilliamJ17> when I ran the function not in a putStr function
21:32:14 jinsun_ joins (~jinsun@user/jinsun)
21:32:41 <aplainzetakind> Can you paste the code?
21:32:44 <[exa]> dsal: ghc _loves_ inlining but widely avoids all these kinds of traps and spikes
21:32:45 Magnus[m] joins (~magthetch@2001:470:69fc:105::d1a7)
21:32:57 <WilliamJ17> https://paste.tomsmeding.com/vfemMaf0
21:34:05 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
21:34:17 lavaman joins (~lavaman@98.38.249.169)
21:34:39 <aplainzetakind> Well you see that the firs string in your list is rectangles of width 0, indented by 2 spaces, as opposed to rectangles of width 2 indented by zero spaces. Why ever could that be?
21:34:50 <dsal> [exa]: I've had issues across modules where dumping INLINE directives everywhere helped.
21:35:12 <[exa]> dumping as in "removing" or "adding"? :D
21:35:13 <geekosaur> cross-module is another thing
21:35:13 <WilliamJ17> is it because I've done widthseq and indentseq the wrong way round?
21:35:25 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
21:35:43 ongy[m] joins (~ongymatri@2001:470:69fc:105::5018)
21:35:48 <aplainzetakind> WilliamJ17: https://twitter.com/ThePracticalDev/status/720257210161311744
21:36:06 <[exa]> anyway yeah that's actually one thing I wanted to ask a long time ago, is the (expectable) content of .hi files documented?
21:36:12 <WilliamJ17> Ok, I've tried it and I get a different output which looks more like it should
21:36:13 × WHatever666 quits (~fuzzypixe@tchebychev.ensimag.fr) (Ping timeout: 240 seconds)
21:36:14 InternetCitizen joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
21:36:19 <WilliamJ17> ["**\n**\n**\n"," ****\n ****\n ****\n"," ******\n ******\n ******\n"]
21:36:56 <[exa]> WilliamJ17: btw what's the target of the exercise?
21:37:02 asdofindia-m joins (~akshaymat@2001:470:69fc:105::831)
21:37:03 <aplainzetakind> Yes. Now what you have is [String] instead of String.
21:37:07 craige[m] joins (~craigemcw@2001:470:69fc:105::35f1)
21:37:12 <dsal> [exa]: littering my files with demands of INLINEs :)
21:37:20 <aplainzetakind> Of course String is [Char].
21:37:20 <WilliamJ17> [exa] it;s kind of an ascii art thing
21:37:22 <dsal> I was just trying them here in this one module and it had no effect.
21:37:35 thomasjm[m] joins (~thomasjmm@2001:470:69fc:105::c6d9)
21:37:36 <[exa]> WilliamJ17: yeah I noticed but where's the hardness, I'd say
21:37:47 <WilliamJ17> I'm a beginner
21:38:11 <aplainzetakind> So you have [[Char]] when you need [Char].
21:38:22 <WilliamJ17> Ok
21:38:35 <[exa]> :t concat
21:38:36 <lambdabot> Foldable t => t [a] -> [a]
21:38:37 river parts (~My_user_n@tilde.team/user/river) (WeeChat 2.3)
21:38:51 <WilliamJ17> what does foldable mean?
21:38:55 <aplainzetakind> https://hoogle.haskell.org/ this lets you search in Haskell libraries. Among other things, by type signatures.
21:39:01 <geekosaur> % :t concat @[]
21:39:01 <yahb> geekosaur: [[a]] -> [a]
21:39:09 <WilliamJ17> (y)
21:39:14 <aplainzetakind> Go there and search for [[a]] -> [a]
21:39:20 <[exa]> WilliamJ17: 't' in there is any type that can be folded, e.g. a list (or a set, vector, ...)
21:39:38 <WilliamJ17> ok so it concats a list of lists
21:39:47 <geekosaur> Foldable means anything that you can do a foldl or foldr on. I just asked the other bot to give the type of concat with lists as the Foldable
21:40:03 <geekosaur> (lambdabot doesn't yet understand that syntax)
21:40:10 <WilliamJ17> Ok, I read about foldl and foldr but havent been introduced to them yet on the course
21:40:13 <fizbin> Or a Vector of lists, or a Set of lists, or a ....
21:40:48 <[exa]> WilliamJ17: anyway since it does [[a]] -> [a] and you need [[Char]] -> [Char], I hoped that it could help.
21:40:50 <fizbin> But basically, yeah, it concats a (some container) of lists, because nearly any sensible container will have a Foldable instance.
21:41:19 <aplainzetakind> WilliamJ17: So concat is what you need, but please note how to find "something that does whatever" on hoogle by putting in an appropriate type signature.
21:41:35 <[exa]> dsal: that stuff is complicated, actually I have no idea if you can force-inline something across modules
21:41:39 <aplainzetakind> Most things already exist.
21:41:41 meatfeather[m] joins (~meatfeath@2001:470:69fc:105::1:3311)
21:41:42 wildsebastian joins (~wildsebas@2001:470:69fc:105::1:14b1)
21:41:44 <WilliamJ17> Ok I appreciate you showing me hoogle, I didn't know about it
21:41:55 <[exa]> hoogle is top
21:42:05 <aplainzetakind> So concat what you have, and you're done.
21:42:32 <WilliamJ17> So do I just concat the zipWith function?
21:42:45 ocramz[m] joins (~ocramzmat@2001:470:69fc:105::1:35b0)
21:42:46 maralorn joins (~maralorn@2001:470:69fc:105::251)
21:42:47 marinelli[m] joins (~marinelli@2001:470:69fc:105::2d8)
21:43:05 <aplainzetakind> You could concat the zipWith function if the zipWith function were a list of lists of things.
21:43:09 <[exa]> WilliamJ17: you mean the result of it, right?
21:43:14 <aplainzetakind> You will concat the entire expression.
21:43:21 Tisoxin joins (~ikosit@user/ikosit)
21:43:27 <WilliamJ17> ok, I got it working
21:43:33 <WilliamJ17> putStr (rectangles 2 3 4)
21:43:34 <WilliamJ17> ***
21:43:34 <WilliamJ17> ***
21:43:35 <WilliamJ17>    ******
21:43:35 <WilliamJ17>    ******
21:43:36 <WilliamJ17>       *********
21:43:36 <WilliamJ17>       *********
21:43:37 <WilliamJ17>          ************
21:43:37 <WilliamJ17>          ************
21:43:40 <[exa]> oh noes
21:43:55 <WilliamJ17> Thank you for being patient with me aplainzetakind
21:43:58 <aplainzetakind> `concat $ ...` or `concat (...)`
21:44:08 <aplainzetakind> But is this the intended behaviour?
21:44:12 <WilliamJ17> Yeah
21:44:16 <aplainzetakind> Really?
21:44:26 <WilliamJ17> Thats what it looks like on the examples given on the exercise sheet
21:44:30 <[exa]> WilliamJ17: please don't paste too many lines at once to IRC, you might get pwned by ops
21:44:36 <WilliamJ17> (y)
21:45:10 <WilliamJ17> If I per say wanted to create a mirror of it going in the other direction once its done all the rectangles, would that be possible?
21:45:21 <aplainzetakind> Try changing to `indentseq = scanl (+) 0 widthseq`
21:45:23 <WilliamJ17> so going back down to 0 on indentation
21:45:31 <aplainzetakind> That would be nicer behaviour I think.
21:45:33 <WilliamJ17> i'll give it a go to see what happens
21:45:36 <aplainzetakind> And you're welcome.
21:45:39 <WilliamJ17> what does scanl do>
21:45:40 <WilliamJ17> ?
21:45:40 <[exa]> WilliamJ17: just expand the lists that you have there with more specifications?
21:45:44 <aplainzetakind> Figure it out.
21:45:51 <[exa]> :t scanl
21:45:52 <lambdabot> (b -> a -> b) -> b -> [a] -> [b]
21:46:15 <WilliamJ17> so it essentially feeds it onto the next
21:46:17 × deadmarshal quits (~deadmarsh@95.38.230.89) (Ping timeout: 250 seconds)
21:46:26 <[exa]> yap
21:46:32 <WilliamJ17> [exa] Yeah I'm going to try that
21:46:38 <WilliamJ17> Want to try test myself
21:46:56 × smartin quits (~Thunderbi@88.135.18.171) (Quit: smartin)
21:47:07 iammrinal0[m] joins (~iammrinal@2001:470:69fc:105::1:2248)
21:47:12 rednaZ[m] joins (~r3dnazmat@2001:470:69fc:105::ba70)
21:47:16 <WilliamJ17> so I'd have to make the lists go back down to 0
21:47:27 <int-e> [exa]: scroll back one hour ;-)
21:48:19 <aplainzetakind> A design improvement could be to remove unlines from rectangle, so it gives you a list of the lines. Then you can call lines at the end to the result of concat.
21:48:34 <[exa]> int-e: ayay.
21:48:45 <hololeap> sshine: this first example looks like what you're looking for, although it's written in C: https://en.wikipedia.org/wiki/Modular_arithmetic#Example_implementations
21:48:51 <WilliamJ17> unlines gives the new lines doesnt it or did i read into the function wrong
21:49:04 <aplainzetakind> Then if you `fmap reverse` before that last unlines is applied, you'll get each line recersed.
21:49:20 boxscape joins (~boxscape@user/boxscape)
21:49:24 <WilliamJ17> (y)
21:49:31 <WilliamJ17> what is the difference between fmap and map?
21:49:38 <[exa]> WilliamJ17: yeah but you can keep the lines nicely separate for longer, then smash them together with one big unlines
21:49:51 <WilliamJ17> I see
21:49:55 <aplainzetakind> map is lists only fmap is polymorphic.
21:50:01 <aplainzetakind> Or is it?
21:50:08 <[exa]> likely saving a bit of code
21:50:11 <aplainzetakind> > fmap succ $ Just 1
21:50:12 <lambdabot> Just 2
21:50:17 <aplainzetakind> > map succ $ Just 1
21:50:19 <lambdabot> error:
21:50:19 <lambdabot> • Couldn't match expected type ‘[b]’ with actual type ‘Maybe a0’
21:50:19 <lambdabot> • In the second argument of ‘($)’, namely ‘Just 1’
21:50:22 <aplainzetakind> Yes.
21:50:25 <WilliamJ17> Ok
21:50:38 <WilliamJ17> is "Just" a built in function within haskell
21:50:50 <[exa]> no
21:50:53 ericson2314 joins (~ericson23@2001:470:69fc:105::70c)
21:50:55 <aplainzetakind> It's a data constructor of the type Maybe.
21:51:09 <[exa]> it's in the standard library, but not "built in" per se
21:51:13 <WilliamJ17> Ok what is it used for?
21:51:22 <[exa]> for distinguishing stuff from Nothing
21:51:31 <aplainzetakind> To model computations which may not return meaningful results.
21:51:38 <geekosaur> some languages call it "optional"
21:52:01 <WilliamJ17> Ok, I kind of understand that
21:52:01 <aplainzetakind> Something like safeDiv x y = if y == 0 then Nothing else Just (x / y)
21:52:10 <WilliamJ17> ah right
21:52:22 <dsal> Some languages call it "null pointer exception"
21:52:22 <WilliamJ17> so its essentially a blank line
21:52:37 denbrahe[m] joins (~denbrahem@2001:470:69fc:105::19c0)
21:52:38 JoelMcCracken[m] joins (~joelmccra@2001:470:69fc:105::8405)
21:52:39 <[exa]> blank value, yes.
21:52:40 inkbottle[m] joins (~inkbottle@2001:470:69fc:105::2ff5)
21:53:03 sm joins (~sm@plaintextaccounting/sm)
21:53:05 siraben joins (~siraben@user/siraben)
21:53:13 <WilliamJ17> I see
21:53:26 <aplainzetakind> WilliamJ17: I suggest reading lyah.
21:53:28 maerwald[m] joins (~maerwaldm@2001:470:69fc:105::1ee)
21:53:38 <dsal> If you think about it in terms of value cardinality, Maybe adds one additional value to whatever type it's applied to. So if you have a Maybe Bool, there are now three possibilities. Nothing, Just True, and Just False.
21:53:45 <WilliamJ17> learn you a haskell? I have been looking at it when doing previous exercises
21:53:52 gehmehgeh joins (~user@user/gehmehgeh)
21:55:04 <aplainzetakind> Are those exercises for a course?
21:55:10 <aplainzetakind> Where do they come from?
21:55:23 <WilliamJ17> they're weekly exercises set by our lecturer
21:55:29 benjamin[m]12 joins (~benjaminm@2001:470:69fc:105::1:3f2f)
21:55:37 <WilliamJ17> for practice
21:55:40 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
21:55:51 <dsal> Advent of Code is currently giving us daily exercises that are pretty fun.
21:56:21 <WilliamJ17> I come from an imperative background so I have been trying to do some AoC in python whenever I can
21:56:37 son0p joins (~ff@2800:484:1d81:b700:d40b:900:b387:320)
21:56:48 <dsal> Your background can be repaired with time and practice.
21:57:34 <WilliamJ17> I have used functional concepts such as lambdas before when doing exercises on per say hackerrank so I did run into it before I did start the course
21:58:23 <dsal> I'm not sure I'd call lambda a particularly significant functional concept, but nobody can agree on what functional programming is. heh
21:59:21 <WilliamJ17> I thought haskell is based upon the lambda? Or am I being silly
21:59:38 vicfred joins (~vicfred@user/vicfred)
21:59:50 <[exa]> you mean lambda calculus?
22:00:11 <[exa]> (in that case, yeah, mostly, but that's by far not only lambdas)
22:00:41 <int-e> > (\f g x -> f x + g x) (\x -> 2 * x) (\x -> 3 - x) 42
22:00:43 <lambdabot> 45
22:00:48 <dsal> Yeah, lambda calculus, but if you didn't have lambda in haskell, you'd still be able to do all the functional things. Just some stuff would be annoying because you'd have to name things you didn't' want to name.
22:01:16 <exarkun> WilliamJ17: If you are thinking of "lambda" from Python then it's really just syntactic sugar for a certain subset of "regular" Python functions. It doesn't have much to do with anything Haskell is based on.
22:01:40 <WilliamJ17> yeah I must mean lambda calculus
22:01:50 <WilliamJ17> exarkun ah I see
22:02:18 <dsal> At a high level, functional programming (to me), is more about telling the computer what you want done without telling it all the details of how to do it.
22:02:19 <int-e> there are lambda abstractions but it's often useful to name functions... so they're kind of rare
22:02:48 <exarkun> dsal: Like what we do in SQL, right
22:02:49 <int-e> (it's also a matter of style; some people use them more than others)
22:03:07 <dsal> exarkun: Yeah, kind of.
22:03:09 dmenz joins (~dmenz@2804:14d:5cd4:5e94::1)
22:03:54 MOTERF joins (~MOTERF@105.66.3.166)
22:04:19 <int-e> There's also useful operators that avoid lambdas. Function composition is a commone one: `f . g` can be used instead of `\x -> f (g x)`.
22:04:31 <WilliamJ17> Yeah I read about function composition
22:04:40 <WilliamJ17> Haven't used it though yet
22:04:41 <xsperry> also partial application and setions
22:04:49 × chomwitt quits (~chomwitt@2a02:587:dc0d:3700:12c3:7bff:fe6d:d374) (Ping timeout: 252 seconds)
22:04:56 <xsperry> instead of (\x -> x + 1) you can just do (+1)
22:04:56 <int-e> *sections
22:05:03 <xsperry> ^^
22:05:10 <dsal> A friend of mine is trying to do some of the AoC stuff in Haskell with ~no FP background. His first attempt at the first problem was pages of code opening a file and reading it line by line while trying to convert stuff and accumulate it and all this other junk. It was a screenful of code to do something like `map read . words <$> readFile p`
22:05:33 <dsal> One of the greatest things we get from FP is being able to actually compose things.
22:05:44 <int-e> :t interact
22:05:45 <lambdabot> (String -> String) -> IO ()
22:06:12 <dsal> It takes so much planning to be able to do any sort of composition in most languages.
22:06:20 <WilliamJ17> I have found since I started the FP course that in haskell and maybe FP in general, everything does seem shorter
22:06:29 <int-e> (it's my get-out-of-IO-for-free card ;-)
22:07:06 <dsal> WilliamJ17: It's not so much shorter, it's just that you write the parts you care about and don't have to spend as much effort describing *how* to do all the things (at least, not in the same place).
22:07:09 nebu joins (~user@user/wavion)
22:07:15 <xsperry> > map (\xs -> map (\x -> x * 10) xs) [[1,2,3],[4,5,6]]
22:07:17 <lambdabot> [[10,20,30],[40,50,60]]
22:07:21 <xsperry> now compare that to:
22:07:25 <int-e> FP is really good at abstraction
22:07:28 aveltras[m] joins (~aveltrasm@2001:470:69fc:105::3ef9)
22:07:29 <xsperry> > map (map (*10)) [[1,2,3],[4,5,6]]
22:07:30 <lambdabot> [[10,20,30],[40,50,60]]
22:08:17 <dsal> > [[1,2,3],[4,5,6]] & traversed . traversed *~ 10
22:08:19 <lambdabot> [[10,20,30],[40,50,60]]
22:08:27 <dsal> If you want clarity, you have to use lens.
22:08:49 <int-e> ...after spending years of mastering the vocabulary
22:08:59 <exarkun> int-e++
22:09:02 <dsal> You only need that to read it.
22:09:02 kennyd joins (~bc8147f2@cerf.good1.com)
22:09:35 <WilliamJ17> mhm that looks quite complex dsal to me at least
22:09:36 × MOTERF quits (~MOTERF@105.66.3.166) (Remote host closed the connection)
22:09:59 × dmenz quits (~dmenz@2804:14d:5cd4:5e94::1) (Quit: Leaving)
22:10:06 <dsal> WilliamJ17: It's a whole category of concepts that you aren't expected to care about.
22:10:12 <WilliamJ17> ah
22:10:27 <int-e> > ((10*) <$>) <$> [[1,2,3],[4,5,6]] -- needed more sections
22:10:28 <lambdabot> [[10,20,30],[40,50,60]]
22:10:32 <dsal> It solves a class of problems, but has overlap with other solutions that may fit better. Such as (fmap.fmap)
22:10:57 <dsal> @pl (((10*) <$>) <$>)
22:10:57 <lambdabot> (((10 *) <$>) <$>)
22:11:06 <dsal> not even pl can make that worse
22:11:11 <int-e> <$> is too new for pl
22:12:23 <dsal> > let (<$$>) = (fmap.fmap) in (10 *) <$$> [[10,20,30],[40,50,60]]
22:12:25 <lambdabot> [[100,200,300],[400,500,600]]
22:12:32 <dsal> oops, pasted the wrong input
22:13:14 <kennyd> I'd prefer <<$>>
22:13:28 <dsal> > let (<<$>>) = (fmap.fmap) in (10 *) <<$>> [[10,20,30],[40,50,60]]
22:13:29 <lambdabot> [[100,200,300],[400,500,600]]
22:13:33 <dsal> Yeah, that makes sense.
22:13:58 <dsal> I've never written one of those. Starts getting bad once you start getting really deep, though.
22:14:16 <kennyd> yeah, we are approaching caaddr
22:14:18 <geekosaur> next someone'll drag in type level programming
22:14:21 <dsal> > let (<<<$>>>) = (fmap.fmap.fmap) in (10 *) <<<$>>> cycle [[10,20,30],[40,50,60]]
22:14:22 <lambdabot> error:
22:14:23 <lambdabot> • Ambiguous type variable ‘f0’ arising from a use of ‘show_M827152648093...
22:14:23 <lambdabot> prevents the constraint ‘(Show (f0 Integer))’ from being solved.
22:14:40 <dsal> > let (<<<$>>>) = (fmap.fmap.fmap) in (10 *) <<<$>>> repeat [[10,20,30],[40,50,60]]
22:14:41 <lambdabot> [[[100,200,300],[400,500,600]],[[100,200,300],[400,500,600]],[[100,200,300],...
22:17:45 ppseafield[m] joins (~elementpp@2001:470:69fc:105::1:250a)
22:17:55 <kennyd> hopefully we didn't scare WilliamJ17 away with these silly examples. :P
22:18:02 hsiktas[m] joins (~hsiktasma@2001:470:69fc:105::30d4)
22:18:35 <dsal> I think structured learning is more helpful than just seeing random stuff and asking questions about how to say French idioms in Japanese.
22:18:52 <dsal> Imperative instincts are hard to unlearn.
22:19:22 smichel17[m] joins (~smichel17@2001:470:69fc:105::2d32)
22:20:38 <kennyd> that's true. but curiosity and interest is often sparked by the first two, before deciding to spend more time learning something
22:21:54 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
22:22:04 × smichel17[m] quits (~smichel17@2001:470:69fc:105::2d32) (Read error: Connection reset by peer)
22:22:04 × hsiktas[m] quits (~hsiktasma@2001:470:69fc:105::30d4) (Write error: Connection reset by peer)
22:22:04 × JoelMcCracken[m] quits (~joelmccra@2001:470:69fc:105::8405) (Write error: Connection reset by peer)
22:22:04 × benjamin[m]12 quits (~benjaminm@2001:470:69fc:105::1:3f2f) (Write error: Connection reset by peer)
22:22:04 × aveltras[m] quits (~aveltrasm@2001:470:69fc:105::3ef9) (Read error: Connection reset by peer)
22:22:04 × marinelli[m] quits (~marinelli@2001:470:69fc:105::2d8) (Read error: Connection reset by peer)
22:22:05 × ppseafield[m] quits (~elementpp@2001:470:69fc:105::1:250a) (Read error: Connection reset by peer)
22:22:05 × sm quits (~sm@plaintextaccounting/sm) (Write error: Connection reset by peer)
22:22:05 × maralorn quits (~maralorn@2001:470:69fc:105::251) (Write error: Connection reset by peer)
22:22:05 × ServerStatsDisco quits (~serversta@2001:470:69fc:105::1a) (Read error: Connection reset by peer)
22:22:05 × alexfmpe[m] quits (~alexfmpem@2001:470:69fc:105::38ba) (Read error: Connection reset by peer)
22:22:05 × carmysilna quits (~brightly-@2001:470:69fc:105::2190) (Read error: Connection reset by peer)
22:22:05 × ericson2314 quits (~ericson23@2001:470:69fc:105::70c) (Write error: Connection reset by peer)
22:22:05 × wildsebastian quits (~wildsebas@2001:470:69fc:105::1:14b1) (Read error: Connection reset by peer)
22:22:05 × schuelermine[m] quits (~schuelerm@user/schuelermine) (Write error: Connection reset by peer)
22:22:05 × maerwald[m] quits (~maerwaldm@2001:470:69fc:105::1ee) (Read error: Connection reset by peer)
22:22:05 × std_mutex[m] quits (~stdmutexm@2001:470:69fc:105::1:4534) (Write error: Connection reset by peer)
22:22:05 × jkachmar quits (~jkachmar@2001:470:69fc:105::c72d) (Read error: Connection reset by peer)
22:22:05 × boxscape quits (~boxscape@user/boxscape) (Write error: Connection reset by peer)
22:22:05 × iammrinal0[m] quits (~iammrinal@2001:470:69fc:105::1:2248) (Write error: Connection reset by peer)
22:22:05 × fendor[m] quits (~fendormat@2001:470:69fc:105::fcbd) (Write error: Connection reset by peer)
22:22:05 × quantum quits (~quantum@user/quantum/x-8556232) (Write error: Connection reset by peer)
22:22:05 × meatfeather[m] quits (~meatfeath@2001:470:69fc:105::1:3311) (Write error: Connection reset by peer)
22:22:05 × Topik[m] quits (~topikmatr@2001:470:69fc:105::a082) (Read error: Connection reset by peer)
22:22:05 × rednaZ[m] quits (~r3dnazmat@2001:470:69fc:105::ba70) (Write error: Connection reset by peer)
22:22:05 × jinsun_ quits (~jinsun@user/jinsun) (Write error: Connection reset by peer)
22:22:06 × justosophy[m] quits (~justosoph@2001:470:69fc:105::572f) (Read error: Connection reset by peer)
22:22:06 × inkbottle[m] quits (~inkbottle@2001:470:69fc:105::2ff5) (Write error: Connection reset by peer)
22:22:06 × Orbstheorem quits (~orbstheor@2001:470:69fc:105::a56) (Read error: Connection reset by peer)
22:22:06 × Deide quits (~deide@user/deide) (Read error: Connection reset by peer)
22:22:06 × surgeon[m] quits (~surge9nma@2001:470:69fc:105::f585) (Write error: Connection reset by peer)
22:22:06 × moats quits (~oats@user/oats) (Write error: Connection reset by peer)
22:22:06 × InternetManaging quits (~imjmatrix@2001:470:69fc:105::1:2ea5) (Write error: Connection reset by peer)
22:22:06 × jmcantrell quits (~jmcantrel@user/jmcantrell) (Read error: Connection reset by peer)
22:22:06 × zwro[m] quits (~zwromatri@2001:470:69fc:105::1d4) (Read error: Connection reset by peer)
22:22:06 × denbrahe[m] quits (~denbrahem@2001:470:69fc:105::19c0) (Write error: Connection reset by peer)
22:22:06 × ManofLetters[m] quits (~manoflett@2001:470:69fc:105::3be) (Write error: Connection reset by peer)
22:22:06 × ocramz[m] quits (~ocramzmat@2001:470:69fc:105::1:35b0) (Read error: Connection reset by peer)
22:22:06 × acco[m] quits (~accotedom@2001:470:69fc:105::1:3236) (Read error: Connection reset by peer)
22:22:06 × craige[m] quits (~craigemcw@2001:470:69fc:105::35f1) (Read error: Connection reset by peer)
22:22:06 × RosarioPulella[m quits (~rosariopu@2001:470:69fc:105::a57) (Write error: Connection reset by peer)
22:22:06 × kadoban quits (~kadoban@user/kadoban) (Read error: Connection reset by peer)
22:22:06 × Arathorn quits (~arathorn@2001:470:69fc:105::1f) (Write error: Connection reset by peer)
22:22:06 × TomasJakl[m] quits (~jaklttchn@2001:470:69fc:105::a42) (Write error: Connection reset by peer)
22:22:06 × utk quits (~utk@2001:470:69fc:105::1:2fe0) (Write error: Connection reset by peer)
22:22:06 × wysteriary[m] quits (~wysteriar@2001:470:69fc:105::a42e) (Write error: Connection reset by peer)
22:22:06 × SawyerBergeron[m quits (~sawyerber@2001:470:69fc:105::3036) (Read error: Connection reset by peer)
22:22:07 × xddq[m] quits (~xddqmatri@2001:470:69fc:105::bfd8) (Read error: Connection reset by peer)
22:22:07 × unclechu quits (~unclechu@2001:470:69fc:105::354) (Read error: Connection reset by peer)
22:22:07 × bitonic quits (~bitonic@2001:470:69fc:105::1812) (Write error: Connection reset by peer)
22:22:07 × soft quits (~soft@2001:470:69fc:105::c75) (Read error: Connection reset by peer)
22:22:07 × thomasjm[m] quits (~thomasjmm@2001:470:69fc:105::c6d9) (Write error: Connection reset by peer)
22:22:07 × zfnmxt quits (~zfnmxtzfn@2001:470:69fc:105::2b32) (Read error: Connection reset by peer)
22:22:07 × Tisoxin quits (~ikosit@user/ikosit) (Write error: Connection reset by peer)
22:22:07 × psydroid quits (~psydroid@user/psydroid) (Write error: Connection reset by peer)
22:22:07 × ongy[m] quits (~ongymatri@2001:470:69fc:105::5018) (Write error: Connection reset by peer)
22:22:07 × DemiMarieObenour quits (~alwayscur@2001:470:69fc:105::4886) (Read error: Connection reset by peer)
22:22:07 × MatrixTravelerbo quits (~voyagert2@2001:470:69fc:105::22) (Read error: Connection reset by peer)
22:22:07 × Magnus[m] quits (~magthetch@2001:470:69fc:105::d1a7) (Write error: Connection reset by peer)
22:22:07 × reza[m] quits (~rezaphone@2001:470:69fc:105::3eda) (Write error: Connection reset by peer)
22:22:07 × asdofindia-m quits (~akshaymat@2001:470:69fc:105::831) (Write error: Connection reset by peer)
22:22:07 × ilkecan[m] quits (~ilkecanma@2001:470:69fc:105::1:79b) (Read error: Connection reset by peer)
22:22:07 × siraben quits (~siraben@user/siraben) (Write error: Connection reset by peer)
22:22:07 × jophish quits (~jophish@2001:470:69fc:105::670) (Write error: Connection reset by peer)
22:22:07 × Christoph[m] quits (~hpotsirhc@2001:470:69fc:105::2ff8) (Read error: Connection reset by peer)
22:22:12 <dsal> Yeah. It's possibly counterintuitive, but I like working in Haskell because it's easier than just about any other language I've worked in.
22:22:26 <dsal> Which is a rather long list.
22:23:39 × michalz quits (~michalz@185.246.204.55) (Remote host closed the connection)
22:24:44 jchia[m] joins (~jchiamatr@2001:470:69fc:105::c50b)
22:26:37 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
22:29:41 <monochrom> Yeah, "shorter code" is a very first impression but is also just a side effect. The benefit of Haskell I go for is "less micromanagement".
22:29:41 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:36fe:413:d066:5593) (Quit: WeeChat 2.8)
22:29:41 MatrixTravelerbo joins (~voyagert2@2001:470:69fc:105::22)
22:29:41 fgaz joins (~fgaz@2001:470:69fc:105::842)
22:29:42 peddie joins (~peddie@2001:470:69fc:105::25d)
22:29:42 cdsmith joins (~cdsmithma@2001:470:69fc:105::284)
22:29:42 thomasjm[m] joins (~thomasjmm@2001:470:69fc:105::c6d9)
22:29:56 bb010g joins (~bb010g@2001:470:69fc:105::9a5)
22:29:56 ServerStatsDisco joins (~serversta@2001:470:69fc:105::1a)
22:29:56 amesgen[m] joins (~amesgenm]@2001:470:69fc:105::82b)
22:29:56 the-coot[m] joins (~the-cootm@2001:470:69fc:105::95f)
22:29:56 moats joins (~oats@user/oats)
22:29:57 × nunggu quits (~q@gateway/tor-sasl/nunggu) (Ping timeout: 276 seconds)
22:29:58 <Square> Right, thats what im trying say to my colleagues at work. But they assume its just massive extra work.
22:30:06 <Square> to*
22:30:09 soft joins (~soft@2001:470:69fc:105::c75)
22:30:09 zfnmxt joins (~zfnmxtzfn@2001:470:69fc:105::2b32)
22:30:22 oak- joins (~oakuniver@2001:470:69fc:105::fcd)
22:30:22 kadoban joins (~kadoban@user/kadoban)
22:30:22 bitonic joins (~bitonic@2001:470:69fc:105::1812)
22:30:22 jophish joins (~jophish@2001:470:69fc:105::670)
22:30:22 ericson2314 joins (~ericson23@2001:470:69fc:105::70c)
22:30:23 Arathorn joins (~arathorn@2001:470:69fc:105::1f)
22:30:23 Ollie[m] joins (~ollieocha@2001:470:69fc:105::41a5)
22:30:23 unclechu joins (~unclechu@2001:470:69fc:105::354)
22:30:23 rednaZ[m] joins (~r3dnazmat@2001:470:69fc:105::ba70)
22:30:35 xddq[m] joins (~xddqmatri@2001:470:69fc:105::bfd8)
22:30:35 maralorn joins (~maralorn@2001:470:69fc:105::251)
22:30:35 denbrahe[m] joins (~denbrahem@2001:470:69fc:105::19c0)
22:30:48 reza[m] joins (~rezaphone@2001:470:69fc:105::3eda)
22:30:48 quantum joins (~quantum@user/quantum/x-8556232)
22:30:48 marinelli[m] joins (~marinelli@2001:470:69fc:105::2d8)
22:30:48 hsiktas[m] joins (~hsiktasma@2001:470:69fc:105::30d4)
22:30:49 <monochrom> But self-selection bias implies that programmers are control freaks. Good luck telling them to even learn to let go.
22:31:01 chizil[m] joins (~chizilmat@2001:470:69fc:105::1:34ab)
22:31:16 craige[m] joins (~craigemcw@2001:470:69fc:105::35f1)
22:31:16 schuelermine[m] joins (~schuelerm@user/schuelermine)
22:31:16 sm joins (~sm@plaintextaccounting/sm)
22:31:30 Orbstheorem joins (~orbstheor@2001:470:69fc:105::a56)
22:31:36 nunggu joins (~q@gateway/tor-sasl/nunggu)
22:31:41 <hpc> on a mac they are command freaks
22:31:42 justosophy[m] joins (~justosoph@2001:470:69fc:105::572f)
22:31:45 <monochrom> Or at least, self-selection bias of von-Neumann-model (so, mainstream languages, the lot of them) programmers.
22:31:54 <monochrom> hahaha
22:31:54 ppseafield[m] joins (~elementpp@2001:470:69fc:105::1:250a)
22:31:54 Deide joins (~deide@user/deide)
22:31:55 hughjfchen[m] joins (~hughjfche@2001:470:69fc:105::c29d)
22:31:55 Artem[m] joins (~artemtype@2001:470:69fc:105::75b)
22:31:55 Christoph[m] joins (~hpotsirhc@2001:470:69fc:105::2ff8)
22:31:55 psydroid joins (~psydroid@user/psydroid)
22:32:07 wysteriary[m] joins (~wysteriar@2001:470:69fc:105::a42e)
22:32:07 zwro[m] joins (~zwromatri@2001:470:69fc:105::1d4)
22:32:22 fsckskye[m] joins (~kmatrixth@2001:470:69fc:105::1:3b2f)
22:32:22 Topik[m] joins (~topikmatr@2001:470:69fc:105::a082)
22:32:22 asdofindia-m joins (~akshaymat@2001:470:69fc:105::831)
22:32:22 alexfmpe[m] joins (~alexfmpem@2001:470:69fc:105::38ba)
22:32:23 ongy[m] joins (~ongymatri@2001:470:69fc:105::5018)
22:32:23 jneira[m] joins (~jneiramat@2001:470:69fc:105::d729)
22:32:23 Magnus[m] joins (~magthetch@2001:470:69fc:105::d1a7)
22:32:23 siraben joins (~siraben@user/siraben)
22:32:23 Movedtosridoneem joins (~sridmatri@2001:470:69fc:105::1c2)
22:32:23 smichel17[m] joins (~smichel17@2001:470:69fc:105::2d32)
22:32:24 SawyerBergeron[m joins (~sawyerber@2001:470:69fc:105::3036)
22:32:24 alex[m] joins (~alexchete@2001:470:69fc:105::1:1001)
22:32:24 ManofLetters[m] joins (~manoflett@2001:470:69fc:105::3be)
22:32:24 Tisoxin joins (~ikosit@user/ikosit)
22:32:24 carmysilna joins (~brightly-@2001:470:69fc:105::2190)
22:32:24 fendor[m] joins (~fendormat@2001:470:69fc:105::fcbd)
22:32:24 aidy joins (~aidy@2001:470:69fc:105::c7b4)
22:32:24 DemiMarieObenour joins (~alwayscur@2001:470:69fc:105::4886)
22:32:28 <hpc> anecdote along the same lines: i wanted to mess around with one of those quantum programming simulators
22:32:37 iammrinal0[m] joins (~iammrinal@2001:470:69fc:105::1:2248)
22:32:38 <monochrom> You know I'm telling the truth because every Haskell beginner begins by asking "so how do I say c=c+1"
22:32:42 <hpc> i tried microsoft's Q# thing, ran into an endless parade of python issues
22:32:50 ocramz[m] joins (~ocramzmat@2001:470:69fc:105::1:35b0)
22:32:50 TomasJakl[m] joins (~jaklttchn@2001:470:69fc:105::a42)
22:32:50 ilkecan[m] joins (~ilkecanma@2001:470:69fc:105::1:79b)
22:32:50 vaibhavsagar[m] joins (~vaibhavsa@2001:470:69fc:105::ffe)
22:32:50 jmcantrell joins (~jmcantrel@user/jmcantrell)
22:32:50 maerwald[m] joins (~maerwaldm@2001:470:69fc:105::1ee)
22:32:52 <monochrom> micromanagement mentality right there.
22:32:53 <hpc> then just finally went "screw it", switched to haskell
22:32:57 <hpc> looked at the time first
22:33:04 jkachmar joins (~jkachmar@2001:470:69fc:105::c72d)
22:33:09 <hpc> went to hackage, installed the first package i could find, wrote some code, built and ran it
22:33:12 <hpc> done in under an hour
22:33:16 JoelMcCracken[m] joins (~joelmccra@2001:470:69fc:105::8405)
22:33:30 RosarioPulella[m joins (~rosariopu@2001:470:69fc:105::a57)
22:33:30 puffnfresh[m] joins (~puffnfres@2001:470:69fc:105::1:22da)
22:33:40 <EvanR> c=c+1, 0=1, programmer gets a punishing shock from the type checker
22:33:42 TomWesterhout[m] joins (~twesterho@2001:470:69fc:105::1:2918)
22:33:42 wildsebastian joins (~wildsebas@2001:470:69fc:105::1:14b1)
22:33:42 jinsun_ joins (~jinsun@user/jinsun)
22:33:57 benjamin[m]1234 joins (~benjaminm@2001:470:69fc:105::1:3f2f)
22:34:09 <hpc> that's just refusing to approach the language on its own terms
22:34:09 acco[m] joins (~accotedom@2001:470:69fc:105::1:3236)
22:34:09 surgeon[m] joins (~surge9nma@2001:470:69fc:105::f585)
22:34:09 octeep[m] joins (~octeepoct@2001:470:69fc:105::1:3dbf)
22:34:09 unrooted joins (~unrooted@2001:470:69fc:105::a4a)
22:34:09 inkbottle[m] joins (~inkbottle@2001:470:69fc:105::2ff5)
22:34:09 tomku[m] joins (~tomkumozi@2001:470:69fc:105::1:2fcb)
22:34:09 fcortesi joins (~fcortesi@2001:470:69fc:105::f3a9)
22:34:10 utk joins (~utk@2001:470:69fc:105::1:2fe0)
22:34:21 <hpc> it's like writing
22:34:22 thedward[m] joins (~thedwardm@2001:470:69fc:105::f79)
22:34:22 meatfeather[m] joins (~meatfeath@2001:470:69fc:105::1:3311)
22:34:29 <hpc> % putStrLn("abc")
22:34:30 <yahb> hpc: abc
22:34:34 lambdandy[m] joins (~lambdandy@2001:470:69fc:105::1:3045)
22:34:34 <monochrom> BTW is it "micromanagement" as one word or is it 2 words "micro management"?
22:34:34 std_mutex[m] joins (~stdmutexm@2001:470:69fc:105::1:4534)
22:34:34 InternetManaging joins (~imjmatrix@2001:470:69fc:105::1:2ea5)
22:34:43 monochrom micro-managers his language >:)
22:34:45 <EvanR> it's one word
22:34:46 shiraeeshi[m] joins (~shiraeesh@2001:470:69fc:105::1:77)
22:34:46 boxscape joins (~boxscape@user/boxscape)
22:34:47 <hpc> or trying to find the lambdas in java, or the types in javascript
22:34:51 <dsal> Lisp programmers are macromanagers
22:34:56 <monochrom> hahaha
22:34:59 james[m]12 joins (~jamesnina@2001:470:69fc:105::1:4203)
22:35:05 <hpc> lol
22:35:10 <monochrom> @remember dsal Lisp programmers are macromanagers
22:35:10 <lambdabot> It is stored.
22:35:11 AlainJourez[m] joins (~sherekahn@2001:470:69fc:105::1:4a71)
22:35:24 aveltras[m] joins (~aveltrasm@2001:470:69fc:105::3ef9)
22:35:25 <hpc> java programmers are SingletonManagers
22:35:35 <dsal> A whole factory of them
22:36:12 dsal suddenly wonders how many singleton factories there are
22:37:00 <hpc> i searched for "singleton factory" and the first result is a stack overflow question, "singleton factories, good or bad?"
22:37:09 <EvanR> a singleton factory sounds like a contradiction
22:37:33 <monochrom> NFT factory
22:38:31 × infinity0 quits (~infinity0@occupy.ecodis.net) (Ping timeout: 268 seconds)
22:39:39 infinity0 joins (~infinity0@occupy.ecodis.net)
22:42:29 <kennyd> hpc, I'm pretty sure new java has lambda
22:43:13 <hpc> sure, but everyone's going to be on 1.8 for at least the next 10 years :P
22:43:16 <dsal> You probably have to give them really long names, though.
22:43:25 × euandreh quits (~euandreh@2804:14c:33:9fe5:1b4:2cec:47c3:871e) (Ping timeout: 240 seconds)
22:43:49 deadmarshal joins (~deadmarsh@95.38.116.82)
22:44:23 <kennyd> not bad! https://www.w3schools.com/java/java_lambda.asp
22:44:57 <dsal> OMG. Is Java copying JavaScript now?
22:46:21 × MatrixTravelerbo quits (~voyagert2@2001:470:69fc:105::22) (Quit: Client limit exceeded: 20000)
22:46:28 <Pickchea> Hello! In the Hindley-Milner type system, the expression `\f.((g (f 0)) (f "foo")) (\x.x)' cannot be typed because `\x.x' would have to be monomorphic in order for the application inference rule to apply. This restriction exists because type inference in polymorphic lambda calculus is not decidable. But I can do that in Haskell and Haskell type inference in Haskell is decidable. So what gives?
22:46:33 × siraben quits (~siraben@user/siraben) (Quit: Client limit exceeded: 20000)
22:46:37 MatrixTravelerbo joins (~voyagert2@2001:470:69fc:105::22)
22:46:40 × puffnfresh[m] quits (~puffnfres@2001:470:69fc:105::1:22da) (Quit: Client limit exceeded: 20000)
22:46:42 × denbrahe[m] quits (~denbrahem@2001:470:69fc:105::19c0) (Quit: Client limit exceeded: 20000)
22:46:49 × kadoban quits (~kadoban@user/kadoban) (Quit: Client limit exceeded: 20000)
22:46:52 siraben joins (~siraben@user/siraben)
22:46:54 × peddie quits (~peddie@2001:470:69fc:105::25d) (Quit: Client limit exceeded: 20000)
22:46:58 × fgaz quits (~fgaz@2001:470:69fc:105::842) (Quit: Client limit exceeded: 20000)
22:47:01 <hpc> :t \x -> x
22:47:02 <lambdabot> p -> p
22:47:04 × Arathorn quits (~arathorn@2001:470:69fc:105::1f) (Quit: Client limit exceeded: 20000)
22:47:05 puffnfresh[m] joins (~puffnfres@2001:470:69fc:105::1:22da)
22:47:06 × wildsebastian quits (~wildsebas@2001:470:69fc:105::1:14b1) (Quit: Client limit exceeded: 20000)
22:47:10 × cdsmith quits (~cdsmithma@2001:470:69fc:105::284) (Quit: Client limit exceeded: 20000)
22:47:16 fgaz joins (~fgaz@2001:470:69fc:105::842)
22:47:17 kadoban joins (~kadoban@user/kadoban)
22:47:20 <hpc> er, somehow i read that as \x -> x x
22:47:21 <monochrom> You cannot do \f.((g (f 0)) (f "foo")) (\x.x) in Haskell either.
22:47:27 × Tisoxin quits (~ikosit@user/ikosit) (Quit: Client limit exceeded: 20000)
22:47:27 × InternetManaging quits (~imjmatrix@2001:470:69fc:105::1:2ea5) (Quit: Client limit exceeded: 20000)
22:47:30 peddie joins (~peddie@2001:470:69fc:105::25d)
22:47:31 denbrahe[m] joins (~denbrahem@2001:470:69fc:105::19c0)
22:47:31 × rednaZ[m] quits (~r3dnazmat@2001:470:69fc:105::ba70) (Quit: Client limit exceeded: 20000)
22:47:31 × ongy[m] quits (~ongymatri@2001:470:69fc:105::5018) (Quit: Client limit exceeded: 20000)
22:47:31 cdsmith joins (~cdsmithma@2001:470:69fc:105::284)
22:47:33 Arathorn joins (~arathorn@2001:470:69fc:105::1f)
22:47:33 wildsebastian joins (~wildsebas@2001:470:69fc:105::1:14b1)
22:47:33 × amesgen[m] quits (~amesgenm]@2001:470:69fc:105::82b) (Quit: Client limit exceeded: 20000)
22:47:33 × ericson2314 quits (~ericson23@2001:470:69fc:105::70c) (Quit: Client limit exceeded: 20000)
22:47:36 × the-coot[m] quits (~the-cootm@2001:470:69fc:105::95f) (Quit: Client limit exceeded: 20000)
22:47:36 × jophish quits (~jophish@2001:470:69fc:105::670) (Quit: Client limit exceeded: 20000)
22:47:45 × unclechu quits (~unclechu@2001:470:69fc:105::354) (Quit: Client limit exceeded: 20000)
22:47:47 × hsiktas[m] quits (~hsiktasma@2001:470:69fc:105::30d4) (Quit: Client limit exceeded: 20000)
22:47:48 rednaZ[m] joins (~r3dnazmat@2001:470:69fc:105::ba70)
22:47:51 × unrooted quits (~unrooted@2001:470:69fc:105::a4a) (Quit: Client limit exceeded: 20000)
22:47:56 × boxscape quits (~boxscape@user/boxscape) (Quit: Client limit exceeded: 20000)
22:47:59 × maralorn quits (~maralorn@2001:470:69fc:105::251) (Quit: Client limit exceeded: 20000)
22:47:59 × vaibhavsagar[m] quits (~vaibhavsa@2001:470:69fc:105::ffe) (Quit: Client limit exceeded: 20000)
22:48:00 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
22:48:02 hsiktas[m] joins (~hsiktasma@2001:470:69fc:105::30d4)
22:48:08 × carmysilna quits (~brightly-@2001:470:69fc:105::2190) (Quit: Client limit exceeded: 20000)
22:48:09 × zfnmxt quits (~zfnmxtzfn@2001:470:69fc:105::2b32) (Quit: Client limit exceeded: 20000)
22:48:14 ongy[m] joins (~ongymatri@2001:470:69fc:105::5018)
22:48:14 × quantum quits (~quantum@user/quantum/x-8556232) (Quit: Client limit exceeded: 20000)
22:48:19 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:48:25 <monochrom> What you can do, and this is right from HM again, is "let f = \x.x in ((g (f 0)) (f "foo"))". So, a "let" construct that polymorphizes "f = \x.x".
22:48:29 Tisoxin joins (~ikosit@user/ikosit)
22:48:29 × Deide quits (~deide@user/deide) (Quit: Client limit exceeded: 20000)
22:48:29 × bitonic quits (~bitonic@2001:470:69fc:105::1812) (Quit: Client limit exceeded: 20000)
22:48:40 amesgen[m] joins (~amesgenm]@2001:470:69fc:105::82b)
22:48:40 × smichel17[m] quits (~smichel17@2001:470:69fc:105::2d32) (Quit: Client limit exceeded: 20000)
22:48:43 carmysilna joins (~brightly-@2001:470:69fc:105::2190)
22:48:48 <hpc> wouldn't that work if the lambda was rank-2?
22:48:53 × Artem[m] quits (~artemtype@2001:470:69fc:105::75b) (Quit: Client limit exceeded: 20000)
22:48:54 the-coot[m] joins (~the-cootm@2001:470:69fc:105::95f)
22:48:54 bitonic joins (~bitonic@2001:470:69fc:105::1812)
22:48:57 × jchia[m] quits (~jchiamatr@2001:470:69fc:105::c50b) (Quit: Client limit exceeded: 20000)
22:48:58 × jmcantrell quits (~jmcantrel@user/jmcantrell) (Quit: Client limit exceeded: 20000)
22:49:02 × zwro[m] quits (~zwromatri@2001:470:69fc:105::1d4) (Quit: Client limit exceeded: 20000)
22:49:03 vaibhavsagar[m] joins (~vaibhavsa@2001:470:69fc:105::ffe)
22:49:07 <monochrom> Yes but you have to hand-write some type annotations.
22:49:08 zfnmxt joins (~zfnmxtzfn@2001:470:69fc:105::2b32)
22:49:08 × jneira[m] quits (~jneiramat@2001:470:69fc:105::d729) (Quit: Client limit exceeded: 20000)
22:49:08 <hpc> (granted, that's haskell deviating from H-M)
22:49:15 jmcantrell joins (~jmcantrel@user/jmcantrell)
22:49:21 jchia[m] joins (~jchiamatr@2001:470:69fc:105::c50b)
22:49:22 jophish joins (~jophish@2001:470:69fc:105::670)
22:49:27 × surgeon[m] quits (~surge9nma@2001:470:69fc:105::f585) (Quit: Client limit exceeded: 20000)
22:49:29 unrooted joins (~unrooted@2001:470:69fc:105::a4a)
22:49:29 InternetManaging joins (~imjmatrix@2001:470:69fc:105::1:2ea5)
22:49:36 × Topik[m] quits (~topikmatr@2001:470:69fc:105::a082) (Quit: Client limit exceeded: 20000)
22:49:39 ericson2314 joins (~ericson23@2001:470:69fc:105::70c)
22:49:39 <monochrom> Even in Haskell, you have to write at least "\(f :: forall a. a -> a)"
22:49:40 × Christoph[m] quits (~hpotsirhc@2001:470:69fc:105::2ff8) (Quit: Client limit exceeded: 20000)
22:49:43 boxscape joins (~boxscape@user/boxscape)
22:49:45 × DemiMarieObenour quits (~alwayscur@2001:470:69fc:105::4886) (Quit: Client limit exceeded: 20000)
22:49:53 unclechu joins (~unclechu@2001:470:69fc:105::354)
22:49:55 × jinsun_ quits (~jinsun@user/jinsun) (Quit: Client limit exceeded: 20000)
22:50:06 × alex[m] quits (~alexchete@2001:470:69fc:105::1:1001) (Quit: Client limit exceeded: 20000)
22:50:08 maralorn joins (~maralorn@2001:470:69fc:105::251)
22:50:12 quantum joins (~quantum@user/quantum/x-8556232)
22:50:13 Deide joins (~deide@user/deide)
22:50:16 × Ollie[m] quits (~ollieocha@2001:470:69fc:105::41a5) (Quit: Client limit exceeded: 20000)
22:50:17 × tomku[m] quits (~tomkumozi@2001:470:69fc:105::1:2fcb) (Quit: Client limit exceeded: 20000)
22:50:28 Artem[m] joins (~artemtype@2001:470:69fc:105::75b)
22:50:34 CiaoSen joins (~Jura@p200300c9570204002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
22:50:38 × ManofLetters[m] quits (~manoflett@2001:470:69fc:105::3be) (Quit: Client limit exceeded: 20000)
22:50:40 Christoph[m] joins (~hpotsirhc@2001:470:69fc:105::2ff8)
22:50:40 zwro[m] joins (~zwromatri@2001:470:69fc:105::1d4)
22:50:53 Topik[m] joins (~topikmatr@2001:470:69fc:105::a082)
22:50:58 × deadmarshal quits (~deadmarsh@95.38.116.82) (Ping timeout: 260 seconds)
22:50:59 × fendor[m] quits (~fendormat@2001:470:69fc:105::fcbd) (Quit: Client limit exceeded: 20000)
22:51:02 × SawyerBergeron[m quits (~sawyerber@2001:470:69fc:105::3036) (Quit: Client limit exceeded: 20000)
22:51:02 × moats quits (~oats@user/oats) (Quit: Client limit exceeded: 20000)
22:51:03 × alexfmpe[m] quits (~alexfmpem@2001:470:69fc:105::38ba) (Quit: Client limit exceeded: 20000)
22:51:05 × maerwald[m] quits (~maerwaldm@2001:470:69fc:105::1ee) (Quit: Client limit exceeded: 20000)
22:51:07 jneira[m] joins (~jneiramat@2001:470:69fc:105::d729)
22:51:07 smichel17[m] joins (~smichel17@2001:470:69fc:105::2d32)
22:51:07 × schuelermine[m] quits (~schuelerm@user/schuelermine) (Quit: Client limit exceeded: 20000)
22:51:19 SawyerBergeron[m joins (~sawyerber@2001:470:69fc:105::3036)
22:51:53 geekosaur wonders how long before they do something about that "Client limit exceeded" error on the bridge
22:52:01 <geekosaur> 20000 is clearly too small
22:52:08 × utk quits (~utk@2001:470:69fc:105::1:2fe0) (Quit: Client limit exceeded: 20000)
22:52:08 moats joins (~oats@user/oats)
22:52:10 × marinelli[m] quits (~marinelli@2001:470:69fc:105::2d8) (Quit: Client limit exceeded: 20000)
22:52:22 Ollie[m] joins (~ollieocha@2001:470:69fc:105::41a5)
22:52:22 <EvanR> oof
22:52:31 × Magnus[m] quits (~magthetch@2001:470:69fc:105::d1a7) (Quit: Client limit exceeded: 20000)
22:52:36 marinelli[m] joins (~marinelli@2001:470:69fc:105::2d8)
22:52:36 schuelermine[m] joins (~schuelerm@user/schuelermine)
22:52:36 alexfmpe[m] joins (~alexfmpem@2001:470:69fc:105::38ba)
22:52:50 Magnus[m] joins (~magthetch@2001:470:69fc:105::d1a7)
22:53:21 <hpc> wouldn't they have at least matched the limit they set on freenode?
22:53:56 <geekosaur> presumably they did. but I gather a lot of folks switched to matrix to get a more modern ux
22:54:24 × fcortesi quits (~fcortesi@2001:470:69fc:105::f3a9) (Quit: Client limit exceeded: 20000)
22:54:32 <geekosaur> for example there was a fair amount of talk about #ghc switching to matrix, and discussing other folks who were doing so
22:54:47 <hpc> ah
22:54:51 <perro> I've never understsood matrix dev
22:55:02 <Pickchea> monochrom, right, I actually can't do that in Haskell, I thought wrong!
22:55:07 <perro> it's just never seemed consistent to me
22:55:46 <mniip> (not on our side btw)
22:55:57 <dsal> I've wanted to try matrix, but it seems like I either have to do a tremendous amount of work with a static IP address and stuff, or just like, use a different central service.
22:55:59 dsal misses xmpp
22:56:26 <perro> that's what I don't get. xmpp existed if you wanted to make a better system work off that
22:56:30 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
22:56:37 <perro> the bikeshedding ti has taken to get to where it is is like wow
22:56:42 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
22:57:10 lavaman joins (~lavaman@98.38.249.169)
22:57:14 <perro> it would be one thing if it was actually noticably superior and simpler but.... /me hushes
22:58:06 <dsal> https://xkcd.com/927/
22:58:54 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
22:59:38 <geekosaur> matrix fairly obviously wanted to be a better irc, not a different paradigm
22:59:50 <geekosaur> although I guess this is -offtopic fodder
23:01:41 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
23:02:38 <monochrom> Bikeshedding is just a symptom. The underlying mentality is not-invented-here.
23:03:16 <geekosaur> "I can do it better!" aka that xkcd
23:04:15 <monochrom> Indeed, even the whole notion of "web forum" was created out of a few PHP programmers wanting an excuse to reinvent something, as opposed to, like, why not build upon NNTP.
23:05:11 <monochrom> Corollary: Since they're PHP fanatics, of course they couldn't grok the tree model of a discussion thread.
23:05:38 <perro> yowch
23:05:42 <perro> to be fair, progress is hard
23:05:46 <monochrom> It took humanity about 10 years to rediscover the fact that a thread is really a tree, i.e., until Reddit came about.
23:07:49 jeetelongname joins (~jeet@eduroam-public-20.nat.port.ac.uk)
23:08:01 <monochrom> Progress is hard, but one would think that stagnation would be easier than regress.
23:08:15 × emf quits (~emf@2620:10d:c091:480::1:58ea) (Ping timeout: 252 seconds)
23:08:28 <geekosaur> ask Alan Cox about that one
23:08:47 <perro> we're still working on really small timescales
23:08:51 <geekosaur> (ex-Linux networking guru)
23:11:30 × nebu quits (~user@user/wavion) (Ping timeout: 260 seconds)
23:12:50 × doyougnu quits (~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 252 seconds)
23:16:13 Sgeo joins (~Sgeo@user/sgeo)
23:16:30 <boxscape> <dsal> You probably have to give them really long names, though -- close enough: lambdas don't have type inference in Java, so unless you pass one as a monomorphic argument you always have to specify the type, e.g. Function<Int, Bool>, or Predicte<Int>, etc (there's not one function type like Haskell's (->), there's as many different ones as you want)
23:16:54 <EvanR> wait a thread is really a tree?
23:16:59 <EvanR> that sounds random
23:18:07 <geekosaur> huh?
23:20:52 <monochrom> I'm OK if you say "online discussion is a social construct, so it is random". >:)
23:21:01 × user01 quits (~aj@154.0.137.32) (Quit: Leaving.)
23:21:19 <perro> is the ambiguity "thread"?
23:21:26 <EvanR> oh
23:21:28 <EvanR> reddit
23:21:33 <EvanR> not concurrency
23:21:38 <perro> ha
23:22:15 × ilkecan[m] quits (~ilkecanma@2001:470:69fc:105::1:79b) (Quit: Client limit exceeded: 20000)
23:22:19 <monochrom> You know what, it is concurrency that causes a tree. Mutiple people reply to the same post concurrently...
23:22:42 <EvanR> and when you make retroactive edits, it becomes a general graph
23:24:49 <monochrom> sheafification of reddit fibre bundles
23:25:47 × waleee quits (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Quit: WeeChat 3.3)
23:26:45 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
23:26:49 × burnsidesLlama quits (~burnsides@dhcp168-015.wadham.ox.ac.uk) (Remote host closed the connection)
23:28:15 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
23:30:51 nebu joins (~user@user/wavion)
23:31:09 <geekosaur> yeh, read back a few more lines and you find "discussion thread"
23:31:13 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.3)
23:35:58 × Midjak quits (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: Leaving)
23:41:33 × nebu quits (~user@user/wavion) (Ping timeout: 250 seconds)
23:43:00 nebu joins (~user@user/wavion)
23:45:44 euandreh joins (~euandreh@2804:14c:33:9fe5:9808:86a6:acca:9c5)
23:48:26 × CiaoSen quits (~Jura@p200300c9570204002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Quit: CiaoSen)
23:49:46 × nebu quits (~user@user/wavion) (Ping timeout: 260 seconds)
23:49:49 genieliu joins (~genieliu@111.193.167.10)
23:51:27 × WilliamJ17 quits (~WilliamJ@wireless-student-pt10-182-232.lut.ac.uk) (Quit: Client closed)
23:55:57 CiaoSen joins (~Jura@p200300c9570204002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
23:56:58 <dsal> EvanR: I discuss things in parallel because I type with both hands.
23:57:28 × son0p quits (~ff@2800:484:1d81:b700:d40b:900:b387:320) (Ping timeout: 268 seconds)
23:58:40 <monochrom> If there are two projects due, my left hand and left eye work on one, my right hand and right eye work on the other.
23:59:10 <hpc> dsal: but you have 10 fingers :P
23:59:30 <hpc> you could be 5 times faster
23:59:37 <dsal> hpc: there's a lot of contention. Managing the mutex at that level is too hard.
23:59:53 <monochrom> All 10 fingers fight for the Z key.

All times are in UTC on 2021-12-09.