Home liberachat/#haskell: Logs Calendar

Logs on 2022-01-19 (liberachat/#haskell)

00:01:59 Henson joins (~kvirc@107-179-133-201.cpe.teksavvy.com)
00:04:11 × shapr quits (~user@2601:7c0:c37c:46d0:9d97:8334:355a:b331) (Remote host closed the connection)
00:04:24 shapr joins (~user@2601:7c0:c37c:46d0:9d97:8334:355a:b331)
00:05:14 × Sindai quits (~Sindai@2a01cb0583e8cd008d228a3c88136061.ipv6.abo.wanadoo.fr) (Quit: Client closed)
00:06:03 × mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Read error: Connection reset by peer)
00:06:20 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
00:06:28 × Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 250 seconds)
00:07:02 × jkaye quits (~jkaye@2601:281:200:1958:2b64:9a7d:6899:8349) (Ping timeout: 240 seconds)
00:07:11 × perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4)
00:07:16 <qhong> Q: given (Typeable a, Typeable b) in a function signature, how can I call a function requiring a->b to be Typeable in its body?
00:07:19 machinedgod joins (~machinedg@24.105.81.50)
00:08:02 <EvanR> well there is a support function in Data.Dynamic called dynApply :: Dynamic -> Dynamic -> Maybe Dynamic
00:08:09 <EvanR> Dynamic is basically a wrapped Typeable
00:09:25 <jackdk> I don't understand the question, I'm sorry
00:09:33 <EvanR> actually me neither sorry
00:10:28 <Axman6> yeah, qhong can you give an example of what's not working?
00:10:56 × qwedfg quits (~qwedfg@user/qwedfg) (Quit: ZNC - https://znc.in)
00:11:24 <qhong> so I have a library function with type f :: (Typeable a => Bool -> IO (Every a))
00:11:55 <qhong> I want to use it as (f True :: IO (Every (a -> b)))
00:12:23 <qhong> I declared type variable a and b to be Typeable, but GHC don't buy that a->b is Typeable
00:12:47 <Axman6> You probably also need a Typeable (a -> b) constraint?
00:12:48 qwedfg joins (~qwedfg@user/qwedfg)
00:12:49 <jackdk> what is Every?
00:13:46 <qhong> jackdk: it's just a newtype alias, prob not relevant
00:14:04 <qhong> Axman6: Let me try. Seems that need to turn on some extension
00:14:29 <Axman6> I just follow whatever advice GHC gives me and turn on extensions until it stops complaining >_>
00:14:53 <jackdk> probably FlexibleContexts at a guess
00:15:20 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
00:15:31 <EvanR> {-# LANGUAGE WhateverYouWantDamn! #-}
00:15:31 <Axman6> with that constraint you might only need Typeable (a -> b) and can leave out the other two
00:15:39 geekosaur joins (~geekosaur@xmonad/geekosaur)
00:15:49 <qhong> jackdk: Yes!
00:15:50 <Axman6> EvanR: It's spelled {-# LANGUAGE DeferredTypeErrors #-}
00:16:20 <EvanR> no that's to stop the programmer from complaining
00:16:21 <qhong> Axman6: weird, it still says "Could not deduce (Typeable a1)"
00:16:31 <Axman6> huh, well add it back then :)
00:16:32 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 240 seconds)
00:16:39 <geekosaur> that sounds like a different problem
00:16:56 <Axman6> I would've thought that (Typeable a, Typeable b) => Typeable (a -> b) was a thing
00:17:01 <jackdk> @where paste -- any chance you could share some code?
00:17:01 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
00:17:07 <geekosaur> usually means you have either missed some connection between types, or you tried to reuse a type from the function signature
00:17:17 × shapr quits (~user@2601:7c0:c37c:46d0:9d97:8334:355a:b331) (Remote host closed the connection)
00:17:37 <geekosaur> (the types in the signature do *not* scope over the function)
00:17:39 <EvanR> Axman6, might overlap, since function types (of some sort) is already Typeable
00:18:17 <qhong> geekosaur: Ah. so I can't use type variables in the type signature of a function?
00:19:03 <geekosaur> yiou can use them there, yyou just can't reference them in the body by default
00:19:25 × jgeerds quits (~jgeerds@55d4090e.access.ecotel.net) (Ping timeout: 268 seconds)
00:19:32 <geekosaur> you need the ScopedTypeVariables extension *and* "declare" a;; the type variables with an explicit "forall"
00:19:46 <qhong> geekosaur: I see. Thanks!
00:19:52 <geekosaur> I agree with jackdk, please show code
00:20:40 shapr joins (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d)
00:20:49 lavaman joins (~lavaman@98.38.249.169)
00:21:22 <qhong> geekosaur: it's working now after added forall. thanks a lot!
00:21:34 cyphase joins (~cyphase@user/cyphase)
00:21:48 <Axman6> I got bitten by that in a job interview (for the job I'm doing now, so not such a big deal =)
00:23:05 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
00:23:07 × wmacmil quits (~wmacmil@83-233-165-97.cust.bredband2.com) (Ping timeout: 268 seconds)
00:25:02 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
00:25:27 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
00:26:40 <EvanR> the ScopeTypeVariables "ritual" should be in the FAQ
00:26:54 <EvanR> Scoped
00:27:04 <EvanR> also there should be an FAQ
00:27:10 × shapr quits (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d) (Remote host closed the connection)
00:27:23 shapr joins (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d)
00:27:30 <Axman6> 360NoScopeTypeVaariables
00:27:43 <jackdk> Vaariables?
00:27:47 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
00:28:13 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
00:28:13 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
00:28:13 wroathe joins (~wroathe@user/wroathe)
00:29:05 × laslmtduuuk^ quits (~laslmtduu@wsip-98-188-242-61.mc.at.cox.net) (Remote host closed the connection)
00:29:14 <Axman6> like normal variables but even more 1337
00:29:51 <Axman6> On a completely unrelated note, I found out the other day that PPC has both sub-normal and super-normal floating point numbers
00:33:09 <EvanR> ah, super-normals...
00:34:14 perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
00:34:14 <EvanR> I'm starting to realize why I never understood the extreme ends of floating point
00:34:36 <Henson> is there a way I can get Haskell to redo a computation it's already done? Say I'm benchmarking something and want to use the same inputs over and over again 1 million times just to see how long it takes. I'm under the impression that Haskell will not evaluate a function with the exact same arguments twice, right? Or is that not correct?
00:34:55 <EvanR> compute it in a function that takes a ()
00:34:59 <EvanR> scheme style
00:35:01 <Axman6> trying to figure out what they are, came across this code - the definition of fastfloor is making me cry: https://opensource.apple.com/source/Libm/Libm-315/Source/PowerPC/fpmacros.c.auto.html
00:35:31 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
00:35:32 <Henson> EvanR: can you elaborate on that or give me a simple example? I'm not sure I understand.
00:35:34 <Axman6> Henson: you've just described exactly what criterion will do for you, but also give you pretty reports
00:35:36 <EvanR> haskell will evaluate a function with the exact same arguments twice, unless you saved the result to some variable and use that
00:35:50 <EvanR> or optimizations happen
00:35:56 <Axman6> @hackage criterion
00:35:56 <lambdabot> https://hackage.haskell.org/package/criterion
00:36:04 Henson loads
00:36:20 <EvanR> let f () = 2^1000 :: Integer in (f (), f ())
00:36:36 × Kaiepi quits (~Kaiepi@156.34.47.253) (Remote host closed the connection)
00:36:37 <ephemient> Axman6, https://en.wikipedia.org/wiki/Long_double "On some PowerPC systems, long double is implemented as a double-double arithmetic, where a long double value is regarded as the exact sum of two double-precision values" TIL, that's weird and I had no idea
00:37:18 <Axman6> huh, interesting, that's just compensated arithmetic - see edwardk's compensated package
00:38:08 <Axman6> also, I think I've realised why the alignment is so weird in that fpmacros file above - it's aligned to show which FP units should be running in parallel on the CPU
00:38:13 <Axman6> (a guess)
00:38:17 <EvanR> my example may not work because of Common Subexpression Elimination
00:38:52 <EvanR> but you can try things to get that optimization to fail, anyway, a test suite is probably better
00:38:59 <Axman6> does GHC actually do CSE? I thought it didn't because it can change the laziness of functions considerably
00:39:13 <EvanR> yeah it does sometimes!
00:39:22 Kaiepi joins (~Kaiepi@156.34.47.253)
00:40:00 <monochrom> I once saw it happen to a very simple toy example.
00:40:08 <ephemient> it's not clear to me from the wiki whether that's just a software thing or if double-double is in ppc hardware
00:41:03 <monochrom> But usually it is very easy to discourage GHC from doing CSE.
00:41:47 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
00:43:45 <monochrom> BTW fpmacros.c contains misalignments too, look at where it uses tabs. :)
00:44:36 Erutuon joins (~Erutuon@user/erutuon)
00:44:36 × Midjak quits (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: This computer has gone to sleep)
00:44:47 <Axman6> yeah it's definitely kinda gross
00:45:05 <Axman6> Apple: We'll do open source, but we won't like it, and we'll make your eyes bleed
00:45:11 × jackson99 quits (~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Session timeout))
00:47:19 <ephemient> bad code indentation was present in Apple's goto fail; too
00:48:43 <Axman6> you know you're having fun when you -funroll-all-loops
00:50:52 × shapr quits (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d) (Remote host closed the connection)
00:51:05 shapr joins (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d)
00:53:43 unyu joins (~pyon@user/pyon)
00:54:04 × shapr quits (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d) (Remote host closed the connection)
00:54:17 shapr joins (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d)
00:54:23 × Kaiepi quits (~Kaiepi@156.34.47.253) (Remote host closed the connection)
00:54:56 <Henson> Axman6: thanks for the pointer to Criterion
00:55:41 <Axman6> if you use it, getting the output as HTML is very useful, definitely easier to read than the command line output
00:58:16 × ksqsf quits (~user@134.209.106.31) (Ping timeout: 268 seconds)
00:59:44 <Henson> EvanR: so a function that takes an () will get computed no matter how many times you call it, unless you save the output? Is there a way, in pure code, that I can get something to be evaluated many times even though the output isn't important. If I were to use a map or a fold, the results would somehow have to be used, otherwise the code would never be called. Would I use "evaluate" in IO?
01:00:12 <EvanR> you foldl seq over the results
01:00:25 <EvanR> and evaluate the result somehow, maybe with evaluate in IO
01:01:14 <EvanR> > foldl seq () [(),(),(),(),()]
01:01:16 <lambdabot> ()
01:01:23 <EvanR> > foldl seq () [(),(),(),error "bomb",()]
01:01:25 <lambdabot> *Exception: bomb
01:01:42 × califax quits (~califax@user/califx) (Remote host closed the connection)
01:02:32 <EvanR> > foldl seq () [(),(),let expensive = last [1..10000000] in expensive,(),()]
01:02:33 <lambdabot> error:
01:02:33 <lambdabot> • No instance for (Num ()) arising from a use of ‘expensive’
01:02:33 <lambdabot> • In the expression: expensive
01:02:56 califax joins (~califax@user/califx)
01:02:57 <EvanR> > foldl seq 0 [1,1,let expensive = last [1..10000000] in expensive,1,1]
01:02:59 <lambdabot> 1
01:03:15 Kaiepi joins (~Kaiepi@156.34.47.253)
01:03:15 <EvanR> that was surprisingly inexpensive
01:03:28 <Henson> haha
01:03:50 <EvanR> > foldl seq 0 [1,1,let expensive = last [1..10000000000] in expensive,1,1]
01:03:56 <lambdabot> mueval-core: Time limit exceeded
01:03:59 <EvanR> k
01:05:21 <EvanR> and you probably want foldl' if it's a long list
01:06:02 × waleee-cl quits (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds)
01:06:50 <Henson> EvanR: so like foldl' seq 0 $ replicate numIterations functionToTest
01:06:55 <albet70> can liftIO lift a series IO actions? liftIO $ do { ... }?
01:07:03 wyrd joins (~wyrd@gateway/tor-sasl/wyrd)
01:07:20 <EvanR> > foldl' seq 0 []
01:07:20 <Henson> EvanR: maybe with an "evaluate $" in front of everything?
01:07:21 <lambdabot> 0
01:07:34 <monochrom> albet70: Yes.
01:07:42 <EvanR> > foldl' seq 0 (replicate 1000 1)
01:07:43 <lambdabot> 1
01:07:44 <albet70> ok
01:07:48 <EvanR> Henson, sounds right
01:08:11 <EvanR> if the results are all numbers
01:08:27 × lbseale quits (~ep1ctetus@user/ep1ctetus) (Quit: Leaving)
01:08:34 <EvanR> if they are non-flat data, seq might not be a good indicator of "cost"
01:08:53 <Henson> EvanR: right, if the results were all tuples of numbers, then the seq wouldn't work properly, it would only evaluate to (_,_) and not evaluate the contents, right?
01:09:00 <EvanR> right
01:09:12 <monochrom> IIRC criterion has a function for re-computing a thing n times.
01:09:40 <monochrom> If this is also the nth time you hear "criterion", well, let this be the (n+1)th time.
01:09:41 <Henson> EvanR: so I'd just have to wrap it in a function that would add the tuple contents together into a single number. Or would that not be sufficient?
01:09:49 <monochrom> Let this be an omen.
01:10:02 <EvanR> a strict tuple would solve it
01:10:18 <Henson> monochrom: I've already used Criterion to test my simple example and will use it tomorrow on my more complex production code
01:10:19 <EvanR> data SP a b = SP !a !b
01:10:21 waleee-cl joins (~waleee@h-98-128-229-110.NA.cust.bahnhof.se)
01:10:54 <EvanR> again assuming a and b are numbers or flat-ass values
01:11:03 <monochrom> Also consider the deepseq library (comes with GHC).
01:11:30 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:12:40 × whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
01:14:04 <Henson> monochrom: c_wraith said earlier than deepseq is more of a debugging tool, and probably wouldn't show up in production code. Is it something that some people use in their libraries, or should it just be used for testing?
01:14:52 <EvanR> maybe it's useful for stress testing, but I'm having a hard time seeing what else is tests xD
01:15:28 <EvanR> performance testing, I'm not sure it makes sense
01:15:39 <EvanR> not evaluating stuff is faster than deepseqing it, if you don't need it
01:15:54 <EvanR> *huge memory footprints slowdown gc
01:16:26 × Kaiepi quits (~Kaiepi@156.34.47.253) (Remote host closed the connection)
01:16:44 <Henson> I think I've got some ideas and tools now to help me probe this. The Criterion library and EvanR's suggestions on evaluating functions many times will simplify my performance testing. I've got some webpages on space leak probing to investigate as well.
01:17:15 <Henson> thanks so much, everyone, for your advice and suggestions. I'll be back tomorrow with more questions, but hopefully some answers, too :-)
01:17:30 <monochrom> If you're too lazy to roll your own "data SP a b = SP !a !b" (I know I am) then "rnf mytuple" does the job just as well.
01:17:36 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:17:45 × shapr quits (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d) (Remote host closed the connection)
01:17:55 <EvanR> ah true
01:17:59 shapr joins (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d)
01:18:13 <monochrom> So much for "not used in production".
01:18:29 <monochrom> And then there is the history of deepseq.
01:18:43 <jackdk> "space leak" - is that the name of a haskell Q&A platform?
01:18:47 <monochrom> It used to be part of the parallelization library.
01:19:25 <EvanR> still, like, "what is the airspeed velocity that I can construct a tuple with values in it" leaves some questions unanswered about how itll be used later, or not used
01:19:25 <monochrom> By popular demand, there was enough people wanting the rnf feature but didn't want the whole parallelization library because they're using rnf outside parallelization.
01:19:36 <monochrom> So tell me again how useless it is?
01:20:06 <dolio> Just because a lot of people use it doesn't mean it's a good idea. :þ
01:21:19 ksqsf joins (~user@134.209.106.31)
01:21:52 <Henson> javascript?
01:22:48 <EvanR> not used in the production much
01:26:02 × ksqsf quits (~user@134.209.106.31) (Ping timeout: 240 seconds)
01:26:43 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
01:27:20 SummerSonw joins (~The_viole@203.77.49.232)
01:28:52 × nek0 quits (~nek0@nek0.eu) (Quit: The Lounge - https://thelounge.chat)
01:31:15 × myShoggoth quits (~myShoggot@97-120-67-120.ptld.qwest.net) (Ping timeout: 256 seconds)
01:32:57 × rtsn quits (~nstr@user/rtsn) (Ping timeout: 256 seconds)
01:40:06 Guest|38 joins (~Guest|38@50.38.63.144)
01:40:32 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 240 seconds)
01:40:34 × Guest|38 quits (~Guest|38@50.38.63.144) (Client Quit)
01:43:40 Kaiepi joins (~Kaiepi@156.34.47.253)
01:44:02 nek0 joins (~nek0@nek0.eu)
01:46:53 × Kaiepi quits (~Kaiepi@156.34.47.253) (Remote host closed the connection)
01:47:03 × ProfSimm quits (~ProfSimm@87.227.196.109) (Remote host closed the connection)
01:48:17 little_mac joins (~little_ma@2601:410:4300:3ce0:1c4:1928:78d1:c799)
01:51:21 Kaiepi joins (~Kaiepi@156.34.47.253)
01:51:51 × SummerSonw quits (~The_viole@203.77.49.232) (Quit: Leaving)
01:58:05 × Kaiepi quits (~Kaiepi@156.34.47.253) (Remote host closed the connection)
02:00:09 Kaiepi joins (~Kaiepi@156.34.47.253)
02:04:37 califax- joins (~califax@user/califx)
02:04:48 × waleee-cl quits (~waleee@h-98-128-229-110.NA.cust.bahnhof.se) (Remote host closed the connection)
02:05:13 waleee-cl joins (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
02:05:34 × califax quits (~califax@user/califx) (Remote host closed the connection)
02:05:40 califax- is now known as califax
02:09:58 Erutuon joins (~Erutuon@user/erutuon)
02:10:50 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 250 seconds)
02:11:51 × little_mac quits (~little_ma@2601:410:4300:3ce0:1c4:1928:78d1:c799) (Remote host closed the connection)
02:15:24 ksqsf joins (~user@134.209.106.31)
02:15:39 vysn joins (~vysn@user/vysn)
02:18:43 Cajun joins (~Cajun@user/cajun)
02:20:22 × ksqsf quits (~user@134.209.106.31) (Ping timeout: 250 seconds)
02:20:57 × xff0x quits (~xff0x@2001:1a81:5209:df00:b3fa:3a32:fd8e:f809) (Ping timeout: 240 seconds)
02:21:41 TonyStone joins (~TonyStone@2603-7080-8607-c36a-9841-fdb7-086b-ec04.res6.spectrum.com)
02:23:11 xff0x joins (~xff0x@2001:1a81:5244:9c00:ed3e:b304:fdc1:f902)
02:24:09 merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
02:25:12 <Cajun> so im running into a problem when i try to avoid the State effect/monad in which i end up requiring constant binds to pass the game state. is there any better solution than this? https://paste.tomsmeding.com/LV3XYPLl
02:25:34 × neurocyte0917090 quits (~neurocyte@user/neurocyte) (Ping timeout: 250 seconds)
02:27:04 × waleee-cl quits (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 268 seconds)
02:31:13 <EvanR> name all the gameprimes the same so they shadow and you don't accidentally use an old one xD
02:32:46 <EvanR> what the heck is that (>>) = (>>=) trick
02:34:07 <Cajun> its set up such that using bind will compile (since the game gets passed to the drawN) but i cant use >>= in do notation without the arrow <-, and >> means i dont have to use an arrow, so it looks cleaner. problem being i cant use the normal >>......
02:34:30 <Cajun> the extension that allows for (>>) = (>>=) is -XRebindableSyntax
02:34:35 <EvanR> oh
02:35:36 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
02:35:39 <Cajun> and the shadowing idea isnt bad, but doesnt solve the constant binding issue. i am not affront to it though
02:36:35 <Cajun> i could use state in the interpreter for those functions, but i tried that and my code got messy *fast*
02:36:38 <EvanR> also in a chain of commands that looks like f x y foo >>= \foo' -> g z w foo' >>= \foo'' -> ...
02:36:57 <EvanR> that's f x y >=> g z w >=> ...
02:37:18 <EvanR> or something
02:37:26 <Cajun> well preferably none of the >>, >>=, >=>, or their ilk appear in the code, as do notation makes it cleaner
02:38:05 <Cajun> s/appear/do not appear
02:38:28 <Cajun> (wait dont change that, reading is hard)
02:38:59 × shapr quits (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d) (Remote host closed the connection)
02:39:12 shapr joins (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d)
02:42:51 <dsal> Well, if >> doesn't work for you and you don't want to keep naming the thing, then it sounds like do notation is making it less clean by your requirements.
02:42:51 <Cajun> EvanR: thats >>= in that instance. more specifically, `f x y foo >>= g z w` is the same as `f x y foo >>= \foo' -> g z w foo'`
02:43:43 <EvanR> I doubtted >=> would work
02:43:49 <EvanR> never helped me none
02:48:50 mbuf joins (~Shakthi@110.225.233.59)
02:50:19 jackson99 joins (~bc8147f2@cerf.good1.com)
02:50:39 <EvanR> yeah I dunno how clear do notation is for someone who didn't write it 30 minutes ago, unless it's a very straightforward monad
02:51:07 <dsal> I always find >=> weird -- I am confused by what it is or I need it and it's obvious.
02:51:39 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
02:51:42 <Cajun> monadic function composition
02:52:03 <EvanR> >=> and <=< feel like we left purely functional land and were composing functions that have side effects
02:52:15 <EvanR> which... I never did
02:52:28 <EvanR> applying functions with side effects is bad enough
02:52:58 zmt01 joins (~zmt00@user/zmt00)
02:53:35 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
02:54:16 akurilin_ joins (uid322841@id-322841.ilkley.irccloud.com)
02:54:22 × Swahili quits (~Swahili@a95-94-208-187.cpe.netcabo.pt) (Remote host closed the connection)
02:55:02 × zmt01 quits (~zmt00@user/zmt00) (Read error: Connection reset by peer)
02:56:16 zmt01 joins (~zmt00@user/zmt00)
02:56:20 × zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 250 seconds)
02:58:31 × Henson quits (~kvirc@107-179-133-201.cpe.teksavvy.com) (Ping timeout: 268 seconds)
03:00:17 <Cajun> i might try making a quasi quoter for it, but thatll be done later *shrug*
03:01:43 ksqsf joins (~user@134.209.106.31)
03:04:08 × amk quits (~amk@109.255.169.126) (Ping timeout: 250 seconds)
03:06:44 amk joins (~amk@109.255.169.126)
03:07:17 <Axman6> Hmm, just had a possible terrible idea - when processing data which comes in as serialised binary, we usually parse it into a Haskell type with all the relevant fields, which can increase the size of the data quite a lot. Instead, we could read the data, parser it, but then use data MyType = MyType_ !ByteArray#; and provide pattern synonyms for the parsed type. Anyone know of this being done?
03:07:53 <Axman6> (ByteArray# being somewhat arbitrary, it could be any representation of bytes with a length)
03:08:26 <c_wraith> I'm not familiar with that exact technique, but I've certainly seen libraries that just allocate a thunk and only parse the inner elements if the thunk is demanded
03:09:01 <c_wraith> which works very well on length-prefixed encodings. Still works on other encodings, but it takes a little more effort.
03:09:03 <EvanR> similar to javascript typed arrays
03:09:57 × raym quits (~raym@user/raym) (Remote host closed the connection)
03:10:20 <EvanR> Axman6, so compact region, but skip the compacting part because it's already compacted xD
03:10:44 <Axman6> possibly* yeah, sort of
03:11:25 <EvanR> how complex is your data, just some value backed by bytes, or does it represent nested levels of stuff
03:11:35 <Axman6> IIRC this is how capt'n proto or... one of those other serialisation libraries works, which aim to keep the in memory representation the same as the on the wire one
03:13:29 raym joins (~raym@user/raym)
03:15:39 lavaman joins (~lavaman@98.38.249.169)
03:17:21 <EvanR> an ADT programming interface on top of some big buffer of bytes would be cool
03:18:01 <Axman6> on a somewhat related note, I wish we had the binary pattern matching syntax that Erlang has
03:18:15 <EvanR> pattern matching would look into the buffer. Construction on the other hand
03:21:16 <c_wraith> There is a big question of whether you do a check to see that the data parses correctly up-front
03:21:28 <c_wraith> You probably *should*
03:21:47 <c_wraith> unless you're able to trust the data, for some reason. (It was signed by another instance of the same program, for instance)
03:22:13 <Axman6> yeah, the only way to create them would be to parse them
03:22:33 <c_wraith> not in length-prefixed binary data.
03:22:43 <c_wraith> If you could trust it, you wouldn't even need to parse it
03:23:55 <Axman6> sure - my question is mostly about the interface for working with the data, using pattern synonyms over some bytes
03:24:35 <c_wraith> I think it has some value. The real trick would be how to make it into a library
03:24:38 <Axman6> storing things in memory encoded using CBOR :thinking-face:
03:25:08 <c_wraith> there's no way to abstract over patterns :(
03:25:55 <c_wraith> (you can abstract over encoding them as an algebra, but that's pretty far away from your suggestion in terms of usability)
03:29:21 × alp quits (~alp@user/alp) (Ping timeout: 268 seconds)
03:29:40 rtsn joins (~nstr@h-155-4-221-229.NA.cust.bahnhof.se)
03:30:02 × ksqsf quits (~user@134.209.106.31) (Ping timeout: 240 seconds)
03:34:47 × td_ quits (~td@muedsl-82-207-238-179.citykom.de) (Ping timeout: 256 seconds)
03:35:20 <Axman6> not sure what you mean
03:35:51 <Axman6> Also, I'm only considering the product types
03:36:16 td_ joins (~td@muedsl-82-207-238-121.citykom.de)
03:36:17 <EvanR> 'structs' xD
03:36:42 <EvanR> that's what you should call the lib
03:36:47 <Axman6> I'll give you one guess who wrote https://hackage.haskell.org/package/structs
03:36:54 <EvanR> dangit
03:36:56 <c_wraith> I don't need a guess, I know.
03:37:14 <c_wraith> I feel like that library was never quite finished, somehow
03:39:00 × hgolden quits (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (Quit: Konversation terminated!)
03:40:11 <c_wraith> anyway - my point was that this is not the sort of thing that easily fits into a library. The kinds of library designs currently used for parsers tend to be very Applicative-centric, and it's hard to get the guarantees this needs out of Applicative.
03:41:46 hgolden joins (~hgolden2@cpe-172-114-81-123.socal.res.rr.com)
03:42:14 <Axman6> yeah it would need to be monadic
03:42:38 <Axman6> assuming there are length prefixed values contained within
03:43:24 <c_wraith> I don't think you can get the guarantees you need from that, either.
03:43:34 <c_wraith> the problem is that they allow arbitrary functions to be embedded
03:43:37 × zmt01 quits (~zmt00@user/zmt00) (Ping timeout: 240 seconds)
03:43:50 <c_wraith> So that people can and will happily parse things early
03:44:19 <c_wraith> You need a more restrictive interface.
03:44:40 zmt00 joins (~zmt00@user/zmt00)
03:45:27 <c_wraith> I guess there's QualifiedDo now. That might solve a lot of issues.
03:47:02 × zmt00 quits (~zmt00@user/zmt00) (Client Quit)
03:48:31 × nunggu quits (~q@user/nunggu) (Remote host closed the connection)
03:49:36 zmt00 joins (~zmt00@user/zmt00)
03:50:05 Henson joins (~kvirc@107-179-133-201.cpe.teksavvy.com)
03:50:35 myShoggoth joins (~myShoggot@97-120-67-120.ptld.qwest.net)
03:56:01 ksqsf joins (~user@134.209.106.31)
03:58:11 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:58:11 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:58:11 finn_elija is now known as FinnElija
04:00:32 × ksqsf quits (~user@134.209.106.31) (Ping timeout: 240 seconds)
04:01:29 × hgolden quits (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (Remote host closed the connection)
04:02:23 russruss joins (~russruss@my.russellmcc.com)
04:03:25 hgolden joins (~hgolden2@cpe-172-114-81-123.socal.res.rr.com)
04:03:32 × burnsidesLlama quits (~burnsides@dhcp168-015.wadham.ox.ac.uk) (Remote host closed the connection)
04:03:44 razetime joins (~quassel@49.207.203.87)
04:07:15 <Axman6> I think if this were to be a library, it would be a TH based library, which would provide a quasiquoter which is passed a data declaration and it would produce the type and pattern synonyms
04:09:43 <Axman6> so if you pass it data MyType = MyType { w8 :: Word8; i64 :: Int64; bs :: ByteString {- maybe not easy to handle? -}; } you'd get back data MyType = MyType_ !ByteArray#; pattern MyType w8 i64 bs = ... but I'm not sure what other problems you'd run into
04:10:41 <Axman6> I'm imagining it working like a C struct though, where fields are indexable by offset ot offset plus the size of dynamically sized members appearing before
04:12:28 lbseale joins (~ep1ctetus@user/ep1ctetus)
04:13:30 × lbseale quits (~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer)
04:13:32 ksqsf joins (~user@134.209.106.31)
04:18:25 × ksqsf quits (~user@134.209.106.31) (Ping timeout: 256 seconds)
04:19:06 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
04:20:15 ksqsf joins (~user@134.209.106.31)
04:25:09 hololeap_ is now known as hololeap
04:31:30 zmt01 joins (~zmt00@user/zmt00)
04:31:47 deadmarshal joins (~deadmarsh@95.38.228.70)
04:32:20 × jenna8912 quits (~jenna@c-107-5-104-51.hsd1.mi.comcast.net) (Quit: Reconnecting)
04:32:32 jenna8912 joins (~jenna@c-107-5-104-51.hsd1.mi.comcast.net)
04:33:46 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
04:34:43 × zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 250 seconds)
04:35:20 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 268 seconds)
04:36:17 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds)
04:36:54 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
04:38:44 lavaman joins (~lavaman@98.38.249.169)
04:40:38 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
04:43:13 Guest48 joins (~Guest48@133.8.220.53)
04:44:51 qeqeqw1 joins (~qeqeqw3@2001:861:3a04:e320:31ea:a59b:1c06:51f4)
04:49:46 merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
04:51:32 × pavonia quits (~user@user/siracusa) (Ping timeout: 240 seconds)
04:52:44 Guest48 is now known as faustind
04:59:20 pavonia joins (~user@user/siracusa)
04:59:22 × pfurla quits (~pfurla@2804:d41:4331:4800:31ef:1aaf:1e7:47d) (Quit: gone to sleep. ZZZzzz…)
05:07:43 yauhsien joins (~yauhsien@61-231-62-246.dynamic-ip.hinet.net)
05:08:52 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
05:09:47 <EvanR> I see there is no Stream type in base? Is there a conventional :ctor operator name for it
05:09:50 <EvanR> :> or such
05:10:10 × shapr quits (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d) (Remote host closed the connection)
05:10:24 shapr joins (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d)
05:10:49 <faustind> Hi. My question is about the simplifier of the compiler. Specifically
05:10:50 <faustind> about the interaction of inlining and rewrite rules.
05:10:50 <faustind> I know that we can control the interaction of inlining and rules with phase numbers.
05:10:51 <faustind> But I am curious, in the same run of the simplifier,
05:10:51 <faustind> between inlining and rules application which one takes place first?
05:10:52 <faustind> I read that inlining is relied upon to expose more opportunities
05:10:52 <faustind> for optimization. So I think inlining happens first. But I am not sure.
05:12:20 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 268 seconds)
05:15:18 × Erutuon quits (~Erutuon@user/erutuon) (Quit: WeeChat 2.8)
05:16:29 Erutuon joins (~Erutuon@user/erutuon)
05:17:19 <Axman6> I don't know the answer but GHC has quite a lot of information on its wiki, so I would start there
05:19:27 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 256 seconds)
05:20:45 × amk quits (~amk@109.255.169.126) (Ping timeout: 256 seconds)
05:21:51 amk joins (~amk@109.255.169.126)
05:22:41 geekosaur joins (~geekosaur@xmonad/geekosaur)
05:23:01 × jackson99 quits (~bc8147f2@cerf.good1.com) (Quit: quit)
05:23:25 × xsperry quits (~xs@user/xsperry) ()
05:24:03 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
05:25:37 × n3rdy1 quits (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) (Ping timeout: 240 seconds)
05:27:05 <sclv> EvanR: in a lazy language, streams can often be just lazy lists
05:27:39 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds)
05:27:52 <Axman6> @hoogle (:>)
05:27:52 <lambdabot> Data.Sequence (:>) :: Seq a -> a -> ViewR a
05:27:52 <lambdabot> Data.Sequence.Internal (:>) :: Seq a -> a -> ViewR a
05:27:52 <lambdabot> Control.Lens.Cons pattern (:>) :: forall a b . Snoc a a b b => () => a -> b -> a
05:27:55 <sclv> parameterized streams are also often done as cofree comonads like so https://hackage.haskell.org/package/free-5.1.7/docs/Control-Comonad-Cofree.html
05:29:08 <EvanR> I mean specifically this data type
05:29:17 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
05:29:23 <EvanR> data Stream a = a :? Stream a deriving everything
05:29:43 <EvanR> a list that can't end
05:30:09 <EvanR> i can't remember if there is a conventional ctor name
05:30:35 <Axman6> :> feels familiar for that...
05:31:12 <EvanR> yeah I knew it conflicted with Sequence
05:31:37 <EvanR> apparently something in Lens
05:31:49 <Axman6> it makes me uneasy that it should probably be a Foldable, but things like length will never work
05:32:21 <EvanR> doctor, it hurts when I try to length an infinite structure!
05:32:55 <EvanR> actually
05:33:06 <EvanR> the length of a stream can be expressed as a lazy natural
05:33:17 <EvanR> so "never work" for some value of work
05:33:44 <EvanR> it could usefully be compared to finite lazy nats
05:33:56 xsperry joins (~xs@user/xsperry)
05:34:03 <Axman6> "Hopw long is that stream?" "At least this long.... S (S (S (S (S ..."
05:34:32 × deadmarshal quits (~deadmarsh@95.38.228.70) (Ping timeout: 268 seconds)
05:35:08 <EvanR> exactly!
05:35:57 <monochrom> Maybe is an instance of Alternative, and some (Just 0) hurts. I think it's OK for length (your stream) to hurt, too. :)
05:36:51 <EvanR> I don't particularly understand Alternative
05:37:30 <Axman6> Alternative: or do you?
05:37:33 <Axman6> ly*
05:37:34 <Axman6> damn
05:38:47 <EvanR> well, STM is an instance of Alternative, and I get that
05:39:11 <EvanR> is some broken there too
05:39:18 n3rdy1 joins (~n3rdy1@2600:1700:4570:3480::41)
05:39:27 <Axman6> I feel both Maybe and list's instances make sense
05:40:25 × ishutin quits (~ishutin@91-83-11-240.pool.digikabel.hu) (Ping timeout: 256 seconds)
05:40:37 × shapr quits (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d) (Ping timeout: 240 seconds)
05:42:02 ishutin joins (~ishutin@84-236-1-73.pool.digikabel.hu)
05:45:32 _ht joins (~quassel@82-168-34-160.fixed.kpn.net)
05:52:42 × mvk quits (~mvk@2607:fea8:5cdd:f000::55f8) (Ping timeout: 250 seconds)
05:55:18 × qeqeqw1 quits (~qeqeqw3@2001:861:3a04:e320:31ea:a59b:1c06:51f4) (Ping timeout: 250 seconds)
05:55:38 × wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Quit: leaving)
05:58:43 namkeleser joins (~namkelese@124.188.192.57)
05:59:07 × zaquest quits (~notzaques@5.130.79.72) (Quit: Leaving)
06:06:17 × n3rdy1 quits (~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 240 seconds)
06:09:01 Jing joins (~hedgehog@240e:390:7c53:a7e1:a11d:216c:4ca3:2c86)
06:09:32 × ksqsf quits (~user@134.209.106.31) (Ping timeout: 240 seconds)
06:10:12 × yauhsien quits (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) (Remote host closed the connection)
06:10:47 yauhsien joins (~yauhsien@61-231-62-246.dynamic-ip.hinet.net)
06:11:42 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
06:14:37 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds)
06:16:53 <jackdk> I would've expected `some (Just 0)` to be an infinite list, not an infinite loop. What am I doing wrong?
06:17:03 <jackdk> (in my brain, I mean)
06:17:17 rusrushal13 joins (~rusrushal@2401:4900:5d14:5eb2:ab40:4205:c981:41c3)
06:17:30 <hololeap> I think it tries to keep going until it hits a Nothing, which never happens
06:18:15 <dsal> Hmm... I think I also misunderstand some that way. I expect it to be lazy and start giving me stuff.
06:18:19 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 268 seconds)
06:18:56 × xff0x quits (~xff0x@2001:1a81:5244:9c00:ed3e:b304:fdc1:f902) (Ping timeout: 268 seconds)
06:19:25 <hololeap> @src some
06:19:25 <lambdabot> some v = some_v
06:19:25 <lambdabot> where many_v = some_v <|> pure []
06:19:25 <lambdabot> some_v = (:) <$> v <*> many_v
06:20:21 xff0x joins (~xff0x@2001:1a81:525d:1e00:f1de:1cfe:e8a8:d6c0)
06:21:50 <hololeap> % let some_v = (:) <$> Just 0 <*> some_v
06:21:50 <yahb> hololeap:
06:22:02 <hololeap> % some_v
06:22:03 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
06:22:03 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
06:22:03 wroathe joins (~wroathe@user/wroathe)
06:22:07 <yahb> hololeap: [Timed out]
06:23:31 <jackdk> right, but I need to case on the tail to know whether to return Just at all
06:23:51 <jackdk> and because there's no tail, we spin forever
06:24:05 <hololeap> since some_v always succeeds, it never gets to the second part of the <|> inside many_v
06:24:31 <hololeap> I'm also trying to understand it more fully :)
06:26:01 <hololeap> so it ends up being equivalent to: fix $ liftA2 (:) (Just 0)
06:26:32 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
06:29:02 chomwitt joins (~chomwitt@2a02:587:dc0b:200:12c3:7bff:fe6d:d374)
06:31:25 × rusrushal13 quits (~rusrushal@2401:4900:5d14:5eb2:ab40:4205:c981:41c3) (Ping timeout: 256 seconds)
06:31:50 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
06:32:09 geekosaur joins (~geekosaur@xmonad/geekosaur)
06:34:32 × zmt01 quits (~zmt00@user/zmt00) (Ping timeout: 240 seconds)
06:35:25 michalz joins (~michalz@185.246.204.101)
06:35:48 ksqsf joins (~user@134.209.106.31)
06:36:39 Erutuon joins (~Erutuon@user/erutuon)
06:37:59 <hololeap> % foo :: StateT Int Maybe () ; foo = get >>= bool (modify (+1)) empty . (>=5)
06:38:00 <yahb> hololeap:
06:38:10 <hololeap> % evalStateT (some foo) 0
06:38:10 <yahb> hololeap: Just [(),(),(),(),()]
06:41:13 × ksqsf quits (~user@134.209.106.31) (Ping timeout: 256 seconds)
06:41:24 <hololeap> % fix $ liftA2 (:) (Identity 0)
06:41:29 <yahb> hololeap: Identity [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
06:42:06 <hololeap> so it might have something to do with Maybe being more strict than Identity?
06:42:22 × myShoggoth quits (~myShoggot@97-120-67-120.ptld.qwest.net) (Ping timeout: 268 seconds)
06:43:16 <int-e> > liftA2 (:) (Just 0) $ liftA2 (:) (Just 0) $ liftA2 (:) (Just 0) $ Nothing
06:43:17 <lambdabot> Nothing
06:43:48 <EvanR> at first I was boggling at how Maybe could be *more* strict than Identity, but I guess we're talking about Alternative instance
06:43:53 × vglfr quits (~vglfr@46.96.165.111) (Ping timeout: 256 seconds)
06:44:11 <EvanR> @src Identity
06:44:11 <lambdabot> newtype Identity a = Identity { runIdentity :: a }
06:44:42 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:45:01 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 256 seconds)
06:45:25 <int-e> > liftA2 (:) (pure 0) undefined :: Identity [Int]
06:45:26 <lambdabot> Identity [0*Exception: Prelude.undefined
06:45:32 <int-e> > liftA2 (:) (pure 0) undefined :: Maybe [Int]
06:45:33 <lambdabot> *Exception: Prelude.undefined
06:45:39 <hololeap> I'm pivoting to talking about why in ghci `fix $ liftA2 (:) (Just 0)` hangs but `fix $ liftA2 (:) (Identity 0)` will try to give you an infinite list ... it might explain why `some (Just 0)` also seems to hang
06:45:55 <int-e> there you have your additional strictness demonstrated with actual bottoms
06:46:20 <hololeap> right, that makes sense
06:46:49 <int-e> but the *reason* is that you can't know that a later part of the computation won't be Nothing, which would collapse the result
06:47:24 <hololeap> I see
06:47:51 geekosaur joins (~geekosaur@xmonad/geekosaur)
06:48:20 <hololeap> that's a good way to explain it
06:51:01 deadmarshal joins (~deadmarsh@95.38.228.70)
06:51:47 zaquest joins (~notzaques@5.130.79.72)
06:55:16 ksqsf joins (~user@134.209.106.31)
07:00:02 × ksqsf quits (~user@134.209.106.31) (Ping timeout: 240 seconds)
07:00:02 × deadmarshal quits (~deadmarsh@95.38.228.70) (Ping timeout: 240 seconds)
07:17:50 kuribas joins (~user@ptr-25vy0i81lhv78yduvdy.18120a2.ip6.access.telenet.be)
07:20:53 Midjak joins (~Midjak@may53-1-78-226-116-92.fbx.proxad.net)
07:25:29 merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
07:28:51 deadmarshal joins (~deadmarsh@95.38.230.192)
07:31:26 cfricke joins (~cfricke@user/cfricke)
07:31:59 × shriekingnoise quits (~shrieking@201.231.16.156) (Quit: Quit)
07:31:59 ksqsf joins (~user@134.209.106.31)
07:32:26 coot joins (~coot@89-64-85-93.dynamic.chello.pl)
07:37:15 × ksqsf quits (~user@134.209.106.31) (Ping timeout: 268 seconds)
07:37:21 falafel joins (~falafel@2603-8000-d800-688c-7d7e-a81e-32e3-0736.res6.spectrum.com)
07:38:25 dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be)
07:45:21 MajorBiscuit joins (~MajorBisc@86-88-79-148.fixed.kpn.net)
07:45:23 × MajorBiscuit quits (~MajorBisc@86-88-79-148.fixed.kpn.net) (Client Quit)
07:45:39 MajorBiscuit joins (~MajorBisc@86-88-79-148.fixed.kpn.net)
07:45:41 ksqsf joins (~user@134.209.106.31)
07:45:50 <qrpnxz> Maybe kills laziness because you need to finish to know if it's Just or Nothing, Identity doesn't have that problem.
07:46:02 <qrpnxz> ah my bad, already explained
07:46:23 notzmv joins (~zmv@user/notzmv)
07:46:33 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
07:49:11 fef joins (~thedawn@user/thedawn)
07:51:29 × deadmarshal quits (~deadmarsh@95.38.230.192) (Ping timeout: 256 seconds)
07:53:40 jakalx joins (~jakalx@base.jakalx.net)
07:54:08 slac13033 joins (~slack1256@191.126.227.199)
07:54:43 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
07:55:30 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
07:56:02 × slack1256 quits (~slack1256@186.11.27.197) (Ping timeout: 240 seconds)
07:56:04 gehmehgeh joins (~user@user/gehmehgeh)
07:57:56 × vysn quits (~vysn@user/vysn) (Ping timeout: 250 seconds)
08:01:10 simendsjo joins (~user@84.211.91.241)
08:04:30 deadmarshal joins (~deadmarsh@95.38.230.192)
08:04:37 × falafel quits (~falafel@2603-8000-d800-688c-7d7e-a81e-32e3-0736.res6.spectrum.com) (Ping timeout: 240 seconds)
08:05:56 × gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection)
08:06:35 gehmehgeh joins (~user@user/gehmehgeh)
08:09:26 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
08:10:49 fr33domlover joins (~fr33@5.102.195.159)
08:15:08 × yauhsien quits (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) (Remote host closed the connection)
08:20:47 × faustind quits (~Guest48@133.8.220.53) (Ping timeout: 256 seconds)
08:22:16 × simendsjo quits (~user@84.211.91.241) (Ping timeout: 268 seconds)
08:24:53 yauhsien joins (~yauhsien@61-231-62-246.dynamic-ip.hinet.net)
08:25:30 chele joins (~chele@user/chele)
08:25:48 Major_Biscuit joins (~MajorBisc@c-001-018-021.client.tudelft.eduvpn.nl)
08:28:53 × MajorBiscuit quits (~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 256 seconds)
08:29:40 × yauhsien quits (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
08:30:00 falafel joins (~falafel@2603-8000-d800-688c-7d7e-a81e-32e3-0736.res6.spectrum.com)
08:34:20 × falafel quits (~falafel@2603-8000-d800-688c-7d7e-a81e-32e3-0736.res6.spectrum.com) (Ping timeout: 250 seconds)
08:35:07 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
08:37:49 Erutuon joins (~Erutuon@user/erutuon)
08:38:32 × deadmarshal quits (~deadmarsh@95.38.230.192) (Ping timeout: 256 seconds)
08:45:29 deadmarshal joins (~deadmarsh@95.38.230.192)
08:47:02 ubert joins (~Thunderbi@p200300ecdf099420d5ce6ee7616221b3.dip0.t-ipconnect.de)
08:48:15 machinedgod joins (~machinedg@24.105.81.50)
08:50:30 max22- joins (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr)
08:50:44 mastarija joins (~mastarija@2a05:4f46:e0e:5000:c96c:6830:df6b:3edb)
08:53:17 × rtsn quits (~nstr@h-155-4-221-229.NA.cust.bahnhof.se) (Changing host)
08:53:17 rtsn joins (~nstr@user/rtsn)
08:58:36 × dut quits (~dut@user/dut) (Quit: Leaving)
08:58:37 wmacmil joins (~wmacmil@83-233-165-97.cust.bredband2.com)
09:00:24 mmhat joins (~mmh@55d4fa95.access.ecotel.net)
09:02:17 mc47 joins (~mc47@xmonad/TheMC47)
09:02:37 DNH joins (~DNH@2a02:8108:1100:16d8:edf9:3833:cff9:92b3)
09:03:47 merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
09:06:05 alp joins (~alp@user/alp)
09:06:46 × mastarija quits (~mastarija@2a05:4f46:e0e:5000:c96c:6830:df6b:3edb) (Quit: Leaving)
09:07:05 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
09:08:38 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
09:09:14 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
09:09:40 ubert1 joins (~Thunderbi@p200300ecdf0994208629362fe72747a7.dip0.t-ipconnect.de)
09:09:59 SummerSonw joins (~The_viole@203.77.49.232)
09:10:16 × lemonsnicks quits (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Ping timeout: 256 seconds)
09:11:26 × SummerSonw quits (~The_viole@203.77.49.232) (Client Quit)
09:11:44 SummerSonw joins (~The_viole@203.77.49.232)
09:12:03 antony joins (~The_viole@203.77.49.232)
09:12:27 lemonsnicks joins (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
09:14:58 Codaraxis joins (~Codaraxis@user/codaraxis)
09:14:59 ardell joins (~ardell@user/ardell)
09:15:18 × antony quits (~The_viole@203.77.49.232) (Client Quit)
09:15:38 antony joins (~The_viole@203.77.49.232)
09:15:39 PVPANTHONY joins (~The_viole@203.77.49.232)
09:16:07 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:81c9:f67f:1443:f972) (Remote host closed the connection)
09:16:32 × SummerSonw quits (~The_viole@203.77.49.232) (Ping timeout: 268 seconds)
09:17:16 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
09:17:39 geekosaur joins (~geekosaur@xmonad/geekosaur)
09:19:12 × PVPANTHONY quits (~The_viole@203.77.49.232) (Client Quit)
09:19:17 × antony quits (~The_viole@203.77.49.232) (Client Quit)
09:20:22 SummerSonw joins (~The_viole@203.77.49.232)
09:21:53 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
09:22:55 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
09:24:18 × DNH quits (~DNH@2a02:8108:1100:16d8:edf9:3833:cff9:92b3) (Quit: My MacBook has gone to sleep. ZZZzzz…)
09:32:05 jgeerds joins (~jgeerds@55d4090e.access.ecotel.net)
09:32:34 × Akiva quits (~Akiva@user/Akiva) (Ping timeout: 268 seconds)
09:35:18 Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
09:37:22 × namkeleser quits (~namkelese@124.188.192.57) (Quit: Client closed)
09:40:32 × raym quits (~raym@user/raym) (Ping timeout: 240 seconds)
09:44:48 `2jt joins (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net)
09:46:29 × SummerSonw quits (~The_viole@203.77.49.232) (Quit: Leaving)
09:46:42 raym joins (~raym@user/raym)
09:46:50 SummerSonw joins (~The_viole@203.77.49.232)
09:46:55 × slac13033 quits (~slack1256@191.126.227.199) (Ping timeout: 256 seconds)
09:47:41 × SummerSonw quits (~The_viole@203.77.49.232) (Client Quit)
09:47:59 SummerSonw joins (~The_viole@203.77.49.232)
09:50:34 sprout_ joins (~quassel@2a02:a467:ccd6:1:5d8f:20db:5ddd:bcf4)
09:51:32 × sprout quits (~quassel@2a02:a467:ccd6:1:798d:4129:9f07:fe5b) (Ping timeout: 240 seconds)
09:55:20 × phma quits (phma@2001:5b0:211b:a618:dfa3:a13:fe81:dc84) (Read error: Connection reset by peer)
09:55:22 × Jing quits (~hedgehog@240e:390:7c53:a7e1:a11d:216c:4ca3:2c86) (Quit: My MacBook has gone to sleep. ZZZzzz…)
09:56:19 DNH joins (~DNH@2a02:8108:1100:16d8:edf9:3833:cff9:92b3)
09:56:43 phma joins (phma@2001:5b0:215d:e318:4fbc:412:b7cd:6bd5)
09:58:05 vglfr joins (~vglfr@88.155.46.9)
10:05:34 Jing joins (~hedgehog@115.207.51.203)
10:08:29 × Midjak quits (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Read error: Connection reset by peer)
10:09:17 Midjak joins (~Midjak@may53-1-78-226-116-92.fbx.proxad.net)
10:10:21 rusrushal13 joins (~rusrushal@2401:4900:5d18:76e4:7b06:d89d:4706:dcce)
10:12:02 × raym quits (~raym@user/raym) (Ping timeout: 256 seconds)
10:13:49 raym joins (~raym@user/raym)
10:15:51 Guest48 joins (~Guest48@M014008067225.v4.enabler.ne.jp)
10:17:08 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:b976:af3b:634a:9904)
10:18:49 Codaraxis_ joins (~Codaraxis@user/codaraxis)
10:19:08 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
10:21:22 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:b976:af3b:634a:9904) (Ping timeout: 250 seconds)
10:21:29 × Codaraxis quits (~Codaraxis@user/codaraxis) (Ping timeout: 256 seconds)
10:22:02 × jgeerds quits (~jgeerds@55d4090e.access.ecotel.net) (Ping timeout: 240 seconds)
10:28:41 × razetime quits (~quassel@49.207.203.87) (Ping timeout: 268 seconds)
10:28:54 razetime joins (~quassel@49.207.203.87)
10:41:52 qeqeqw1 joins (~qeqeqw3@2001:861:3a04:e320:31ea:a59b:1c06:51f4)
10:42:21 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
10:43:02 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds)
10:43:38 Lord_of_Life_ is now known as Lord_of_Life
10:47:04 pfurla joins (~pfurla@2804:d41:4331:4800:31ef:1aaf:1e7:47d)
10:48:23 yauhsien joins (~yauhsien@61-231-62-246.dynamic-ip.hinet.net)
10:48:24 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
10:48:32 × qeqeqw1 quits (~qeqeqw3@2001:861:3a04:e320:31ea:a59b:1c06:51f4) (Ping timeout: 240 seconds)
10:52:32 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
10:55:59 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
10:56:38 Codaraxis joins (~Codaraxis@user/codaraxis)
10:57:02 × Codaraxis_ quits (~Codaraxis@user/codaraxis) (Ping timeout: 240 seconds)
10:59:31 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 268 seconds)
11:01:48 wyrd joins (~wyrd@gateway/tor-sasl/wyrd)
11:03:59 × rusrushal13 quits (~rusrushal@2401:4900:5d18:76e4:7b06:d89d:4706:dcce) (Ping timeout: 256 seconds)
11:04:37 × fr33domlover quits (~fr33@5.102.195.159) (Ping timeout: 240 seconds)
11:05:29 fr33domlover joins (~fr33@2.55.33.131)
11:09:04 Codaraxis_ joins (~Codaraxis@user/codaraxis)
11:09:57 d0ku joins (~d0ku@178.43.152.233.ipv4.supernova.orange.pl)
11:12:05 MiguelNegrao joins (~MiguelNeg@2001:818:dc71:d100:9e5a:44ff:fe17:1240)
11:12:24 × yauhsien quits (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) (Remote host closed the connection)
11:12:28 × Codaraxis quits (~Codaraxis@user/codaraxis) (Ping timeout: 268 seconds)
11:13:07 <MiguelNegrao> Hi all. What is the best/most popular solution for a generic uncurry function that uncurries for tuples of any length ?
11:14:03 <MiguelNegrao> I found this one https://hackage.haskell.org/package/tuple-0.3.0.2/docs/Data-Tuple-Curry.html#v:uncurryN
11:14:42 × ubert quits (~Thunderbi@p200300ecdf099420d5ce6ee7616221b3.dip0.t-ipconnect.de) (Quit: ubert)
11:14:42 ubert1 is now known as ubert
11:15:52 <MiguelNegrao> I found this issue also ("curry & uncurry family of functions"): https://github.com/haskell-foundation/foundation/issues/223
11:16:56 <MiguelNegrao> The solution here doesn't seem to be viable as type class instance is needed for the result type: https://ro-che.info/articles/2013-01-29-generic-uncurry
11:16:59 <sshine> MiguelNegrao, I'd go with lists :D
11:17:14 yauhsien joins (~yauhsien@61-231-62-246.dynamic-ip.hinet.net)
11:17:39 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:4901:95ce:aaba:4aa1)
11:17:42 <MiguelNegrao> lists, hum... ?
11:17:52 <MiguelNegrao> How would that work ?
11:18:14 <sshine> (what I mean is, if you want to perform an operation on a tuple of a variable size, then lists are data structures with a variable size.)
11:18:31 <MiguelNegrao> basicaly, I need to transform any function of type (a1 -> b, a1 -> a2 -> b, a1 -> a2 -> a3 -> b, etc) into ( a -> b)
11:18:35 × kjak quits (~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Ping timeout: 250 seconds)
11:19:01 <MiguelNegrao> because I need to use that function as arrow (think `arr` combinator) and the input must go in as a tuple
11:19:41 <MiguelNegrao> The functions I need to turn into arrows, are any function of gi-gtk, so they already exist and I can't change them.
11:22:02 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:4901:95ce:aaba:4aa1) (Ping timeout: 240 seconds)
11:22:07 × yauhsien quits (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
11:22:07 <MiguelNegrao> In this case not exactly `arr` but `arrM :: Monad m => (a -> m b) -> MSF m a b` , e.g., from [here](https://hackage.haskell.org/package/dunai-0.8.1/docs/Data-MonadicStreamFunction-Core.html#v:arrM)
11:23:49 × ardell quits (~ardell@user/ardell) (Quit: Konversation terminated!)
11:30:13 vysn joins (~vysn@user/vysn)
11:35:54 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 268 seconds)
11:42:56 × perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4)
11:45:07 faustind joins (~faustin@240b:12:43e1:7b00:fc04:33:8474:c903)
11:46:45 × Guest48 quits (~Guest48@M014008067225.v4.enabler.ne.jp) (Quit: Connection closed)
11:47:17 perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
11:47:23 <tomsmeding> MiguelNegrao: you can also do this, but type inference breaks quite badly and you probably have to add type annotations everywhere: https://paste.tomsmeding.com/UflC766M
11:47:49 <tomsmeding> this then works: `uncurryN (\x y z -> x + y + z :: Int) (1::Int, (2::Int, (3::Int, ()))) :: Int`
11:48:09 × perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Client Quit)
11:48:34 <tomsmeding> advantage: works for any function arity. disadvantages: everything
11:51:22 <MiguelNegrao> This approach with Generics looks promising: https://stackoverflow.com/a/28942478
11:52:32 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
11:53:10 <tomsmeding> (another disadvantage of my approach: you can't choose how far to uncurry, i.e. the codomain of the uncurried function cannot be a function type)
11:54:09 merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
11:55:50 × pfurla quits (~pfurla@2804:d41:4331:4800:31ef:1aaf:1e7:47d) (Quit: gone to sleep. ZZZzzz…)
11:57:27 <MiguelNegrao> I think I will go with https://hackage.haskell.org/package/tuple-0.3.0.2/docs/Data-Tuple-Curry.html#v:uncurryN
11:59:41 perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
11:59:49 yauhsien joins (~yauhsien@61-231-62-246.dynamic-ip.hinet.net)
12:04:53 × yauhsien quits (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
12:08:04 pfurla joins (~pfurla@2804:d41:4331:4800:31ef:1aaf:1e7:47d)
12:12:34 simendsjo joins (~user@2a02:2121:6c0:42f8:d80b:8f5a:9182:35dd)
12:17:10 × bravespear|2 quits (~Ranhir@157.97.53.139) (Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/)
12:17:56 qeqeqw1 joins (~qeqeqw3@2001:861:3a04:e320:31ea:a59b:1c06:51f4)
12:18:24 × deadmarshal quits (~deadmarsh@95.38.230.192) (Ping timeout: 256 seconds)
12:19:28 Guest5233 joins (~Guest52@80-100-97-100.ip.xs4all.nl)
12:20:44 <qeqeqw1> Hi. I'm reading "learn you a haskell for great good" and the examples of function type declarations don't work. Like this one for example: "factorial :: Integer -> Integer" What is the correct syntax ?
12:21:33 Ranhir joins (~Ranhir@157.97.53.139)
12:21:58 <Guest5233> qeqeqw1 What is the error you're getting?
12:22:09 <Guest5233> That type signature should work
12:22:56 <qeqeqw1> I'm getting this : • No instance for (Show (Integer -> Integer))
12:22:56 <qeqeqw1> arising from a use of ‘print’
12:22:56 <qeqeqw1> (maybe you haven't applied a function to enough arguments?)
12:22:56 <qeqeqw1> • In a stmt of an interactive GHCi command: print it
12:23:01 × pfurla quits (~pfurla@2804:d41:4331:4800:31ef:1aaf:1e7:47d) (Quit: Textual IRC Client: www.textualapp.com)
12:24:51 <Guest5233> That error is not related to the type signature
12:25:12 <Guest5233> Are trying to do the following?
12:25:13 <Guest5233> show factorial
12:25:35 <qeqeqw1> this is the factorial: "factorial n = product [1..n]"
12:26:00 <Guest5233> The error is telling you that you're trying to `show` something that has the type `Integer -> Integer`. In other words, you're trying to `show` a _function_, rather than the _result_ of a function
12:26:56 <Guest5233> (`show` is used by `print`, by the way)
12:27:16 <qeqeqw1> I understand what you're saying but I do not understand what I am doing wrong
12:27:40 <AWizzArd> HLS in vs code: how can I turn off formatting when saving a file? I only want to manually mark the area that I want to format. I already tried in my settings.json to do "haskell.formattingProvider": "none"
12:28:45 <Guest5233> qeqeqw1 Can you show me your full code?
12:28:46 × Jing quits (~hedgehog@115.207.51.203) (Quit: My MacBook has gone to sleep. ZZZzzz…)
12:29:31 <qeqeqw1> Guest5233, this is the full code :
12:29:34 <qeqeqw1> $ ghci
12:29:34 <qeqeqw1> GHCi, version 9.0.2: https://www.haskell.org/ghc/ :? for help
12:29:34 <qeqeqw1> ghci> factorial n = product [1..n]
12:29:34 <qeqeqw1> ghci> factorial :: Integer -> Integer
12:29:34 <qeqeqw1> <interactive>:2:1: error:
12:29:37 <qeqeqw1> • No instance for (Show (Integer -> Integer))
12:29:39 <qeqeqw1> arising from a use of ‘print’
12:29:41 <qeqeqw1> (maybe you haven't applied a function to enough arguments?)
12:29:43 <qeqeqw1> • In a stmt of an interactive GHCi command: print it
12:29:45 <qeqeqw1> ghci>
12:30:22 <Guest5233> Ah, I see
12:31:12 <Guest5233> When you want to include a type signature in GHCi, you should wrap your code in `:{` and `:}`
12:31:27 xb0o2 joins (~xb0o2@user/xb0o2)
12:31:31 <Guest5233> :{
12:31:31 <Guest5233> factorial n = product [1..n]
12:31:32 <Guest5233> factorial :: Integer -> Integer
12:31:32 <Guest5233> :}
12:31:33 <Guest5233> factorial 5
12:31:33 <Guest5233> > 120
12:31:35 <lambdabot> 120
12:32:05 jgeerds joins (~jgeerds@55d4090e.access.ecotel.net)
12:32:09 <Guest5233> More info here: https://downloads.haskell.org/~ghc/9.0.1/docs/html/users_guide/ghci.html#ghci-cmd-:{
12:32:58 <qeqeqw1> Guest5233, Yes that worked! Thank you very much!
12:33:45 <Guest5233> No problem!
12:34:08 <qeqeqw1> Guest5233, I will read this. First time on #haskell and not disapointed :)
12:34:59 CiaoSen joins (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
12:35:24 lortabac joins (~lortabac@2a01:e0a:541:b8f0:ac4b:acb4:af59:598f)
12:38:48 cfricke joins (~cfricke@user/cfricke)
12:39:16 jakalx parts (~jakalx@base.jakalx.net) (Disconnected: Replaced by new connection)
12:39:16 jakalx joins (~jakalx@base.jakalx.net)
12:40:16 biberu\ joins (~biberu@user/biberu)
12:40:19 mikoto-chan joins (~mikoto-ch@213.177.151.239)
12:41:01 phma_ joins (phma@2001:5b0:215d:e318:4fbc:412:b7cd:6bd5)
12:41:48 × ubert quits (~Thunderbi@p200300ecdf0994208629362fe72747a7.dip0.t-ipconnect.de) (Quit: ubert)
12:41:49 erisco_ joins (~erisco@d24-57-249-233.home.cgocable.net)
12:42:05 ubert joins (~Thunderbi@p200300ecdf0994202d2de89ac733253b.dip0.t-ipconnect.de)
12:42:36 jkaye joins (~jkaye@2601:281:200:1958:cc69:95b3:52f2:6773)
12:42:38 jmct__ joins (sid160793@id-160793.tinside.irccloud.com)
12:42:40 terrorjack0 joins (~terrorjac@2a01:4f8:1c1e:509a::1)
12:42:41 wallymathieu_ joins (sid533252@id-533252.uxbridge.irccloud.com)
12:42:41 davetapley_ joins (sid666@id-666.uxbridge.irccloud.com)
12:42:41 awpr_ joins (uid446117@id-446117.lymington.irccloud.com)
12:42:46 b20n_ joins (sid115913@id-115913.uxbridge.irccloud.com)
12:42:47 rtpg_ joins (sid443069@id-443069.ilkley.irccloud.com)
12:42:47 lagash_ joins (lagash@lagash.shelltalk.net)
12:42:51 megeve_ joins (sid523379@id-523379.hampstead.irccloud.com)
12:42:52 elvishjerricco_ joins (sid237756@id-237756.helmsley.irccloud.com)
12:42:52 joel135_ joins (sid136450@id-136450.hampstead.irccloud.com)
12:42:53 choucavalier_ joins (~choucaval@peanutbuttervibes.com)
12:42:54 akurilin__ joins (uid322841@id-322841.ilkley.irccloud.com)
12:43:00 hugo- joins (znc@verdigris.lysator.liu.se)
12:43:00 codedmart_ joins (~codedmart@li335-49.members.linode.com)
12:43:01 tafama joins (~tafa@user/tafa)
12:43:02 greyrat_ joins (~greyrat@ip202.ip-51-178-215.eu)
12:43:02 Hash_ joins (~Hash@hashsecurity.org)
12:43:03 rembo10_ joins (~rembo10@remulis.com)
12:43:07 kristjansson_ joins (sid126207@id-126207.tinside.irccloud.com)
12:43:28 rubin55_ joins (sid175221@id-175221.hampstead.irccloud.com)
12:43:31 EvanR_ joins (~EvanR@user/evanr)
12:43:32 vgtw_ joins (~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se)
12:43:45 the_proffesor joins (~theproffe@2601:282:847f:8010::85ac)
12:43:45 × the_proffesor quits (~theproffe@2601:282:847f:8010::85ac) (Changing host)
12:43:45 the_proffesor joins (~theproffe@user/theproffesor)
12:44:10 obfusk_ joins (~quassel@a82-161-150-56.adsl.xs4all.nl)
12:44:21 carbolymer_ joins (~carbolyme@dropacid.net)
12:44:29 szkl_ joins (uid110435@uxbridge.irccloud.com)
12:44:46 caubert_ joins (~caubert@136.244.111.235)
12:45:04 aforemny_ joins (~aforemny@static.248.158.34.188.clients.your-server.de)
12:45:06 stilgart_ joins (~Christoph@chezlefab.net)
12:45:09 mal1 joins (~mal@ns2.wyrd.be)
12:45:12 Clint_ joins (~Clint@user/clint)
12:45:12 Logio_ joins (em@kapsi.fi)
12:45:14 jlamothe_ joins (~jlamothe@198.251.61.229)
12:45:16 opqdonut_ joins (opqdonut@pseudo.fixme.fi)
12:45:17 cls_ joins (~cls@chalk.lubutu.com)
12:45:17 andjjj23_ joins (~irc@107.170.228.47)
12:45:19 ddb1 joins (~ddb@ipv6two.tilde.club)
12:45:20 hrdl_ joins (~hrdl@mail.hrdl.eu)
12:45:21 perro_ joins (~perro@072-191-245-069.res.spectrum.com)
12:45:21 PHO`__ joins (~pho@akari.cielonegro.org)
12:45:26 farn_ joins (~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505)
12:45:26 enicar joins (~enikar@user/enikar)
12:45:29 kmein_ joins (~weechat@user/kmein)
12:45:31 ridcully_ joins (~ridcully@p57b52a9a.dip0.t-ipconnect.de)
12:45:36 bravespear|2 joins (~Ranhir@157.97.53.139)
12:45:37 w1gz_ joins (~do@159.89.11.133)
12:45:44 sabx_ joins (~sabbas@user/sabbas)
12:45:51 emf_ joins (~emf@2620:10d:c090:400::5:2d26)
12:45:52 noddy_ joins (~user@user/noddy)
12:45:55 Megant_ joins (megant@user/megant)
12:46:04 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
12:46:05 × yaroot quits (~yaroot@2409:12:ac0:2300:680e:dbff:fe1e:4953) (Ping timeout: 240 seconds)
12:46:05 × b20n quits (sid115913@id-115913.uxbridge.irccloud.com) (Ping timeout: 240 seconds)
12:46:05 × totte quits (~totte@h-82-196-112-155.A166.priv.bahnhof.se) (Ping timeout: 240 seconds)
12:46:05 × davetapley quits (sid666@id-666.uxbridge.irccloud.com) (Ping timeout: 240 seconds)
12:46:06 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 240 seconds)
12:46:06 × remexre quits (~remexre@user/remexre) (Ping timeout: 240 seconds)
12:46:06 × tito quits (tito@tilde.team) (Ping timeout: 240 seconds)
12:46:06 × erisco quits (~erisco@d24-57-249-233.home.cgocable.net) (Ping timeout: 240 seconds)
12:46:06 × greyrat quits (~greyrat@ip202.ip-51-178-215.eu) (Ping timeout: 240 seconds)
12:46:06 × kristjansson quits (sid126207@id-126207.tinside.irccloud.com) (Ping timeout: 240 seconds)
12:46:06 × lieven quits (~mal@ns2.wyrd.be) (Ping timeout: 240 seconds)
12:46:06 × rtpg quits (sid443069@id-443069.ilkley.irccloud.com) (Ping timeout: 240 seconds)
12:46:06 × lagash quits (lagash@lagash.shelltalk.net) (Ping timeout: 240 seconds)
12:46:06 × jmct_ quits (sid160793@id-160793.tinside.irccloud.com) (Ping timeout: 240 seconds)
12:46:06 × koolazer quits (~koo@user/koolazer) (Ping timeout: 240 seconds)
12:46:06 × flukiluke quits (~m-7humut@2603:c023:c000:6c7e:8945:ad24:9113:a962) (Ping timeout: 240 seconds)
12:46:06 × megeve quits (sid523379@id-523379.hampstead.irccloud.com) (Ping timeout: 240 seconds)
12:46:06 × ddb quits (~ddb@ipv6two.tilde.club) (Ping timeout: 240 seconds)
12:46:06 × akurilin_ quits (uid322841@id-322841.ilkley.irccloud.com) (Ping timeout: 240 seconds)
12:46:06 × jlamothe quits (~jlamothe@198.251.61.229) (Ping timeout: 240 seconds)
12:46:06 × Flow quits (~none@gentoo/developer/flow) (Ping timeout: 240 seconds)
12:46:06 × cocreature quits (~moritz@2a03:b0c0:3:d0::c8:f001) (Ping timeout: 240 seconds)
12:46:06 × PHO`_ quits (~pho@akari.cielonegro.org) (Ping timeout: 240 seconds)
12:46:06 × wallymathieu quits (uid533252@id-533252.uxbridge.irccloud.com) (Ping timeout: 240 seconds)
12:46:06 × tafa quits (~tafa@user/tafa) (Ping timeout: 240 seconds)
12:46:06 × awpr quits (uid446117@id-446117.lymington.irccloud.com) (Ping timeout: 240 seconds)
12:46:06 × aforemny quits (~aforemny@static.248.158.34.188.clients.your-server.de) (Ping timeout: 240 seconds)
12:46:06 × choucavalier quits (~choucaval@peanutbuttervibes.com) (Ping timeout: 240 seconds)
12:46:06 × Hafydd quits (~Hafydd@user/hafydd) (Ping timeout: 240 seconds)
12:46:06 × Clint quits (~Clint@user/clint) (Ping timeout: 240 seconds)
12:46:06 × Logio quits (em@kapsi.fi) (Ping timeout: 240 seconds)
12:46:06 × Ranhir quits (~Ranhir@157.97.53.139) (Ping timeout: 240 seconds)
12:46:06 × phma quits (phma@2001:5b0:215d:e318:4fbc:412:b7cd:6bd5) (Ping timeout: 240 seconds)
12:46:06 × kmein quits (~weechat@user/kmein) (Ping timeout: 240 seconds)
12:46:06 × emf quits (~emf@2620:10d:c090:400::5:2d26) (Ping timeout: 240 seconds)
12:46:06 × hays quits (rootvegeta@fsf/member/hays) (Ping timeout: 240 seconds)
12:46:06 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Ping timeout: 240 seconds)
12:46:06 × terrorjack quits (~terrorjac@2a01:4f8:1c1e:509a::1) (Ping timeout: 240 seconds)
12:46:06 × EvanR quits (~EvanR@user/evanr) (Ping timeout: 240 seconds)
12:46:06 × mtjm quits (~mutantmel@2604:a880:2:d0::208b:d001) (Ping timeout: 240 seconds)
12:46:06 × biberu quits (~biberu@user/biberu) (Ping timeout: 240 seconds)
12:46:06 × vgtw quits (~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se) (Ping timeout: 240 seconds)
12:46:06 × emergence quits (thelounge@2607:5300:60:5910:dcad:beff:feef:5bc) (Ping timeout: 240 seconds)
12:46:06 × sabx quits (~sabbas@user/sabbas) (Ping timeout: 240 seconds)
12:46:06 × cls quits (~cls@chalk.lubutu.com) (Ping timeout: 240 seconds)
12:46:06 × stefan-_ quits (~cri@42dots.de) (Ping timeout: 240 seconds)
12:46:06 × Hash quits (~Hash@hashsecurity.org) (Ping timeout: 240 seconds)
12:46:06 × caubert quits (~caubert@136.244.111.235) (Ping timeout: 240 seconds)
12:46:06 × rubin55 quits (sid175221@id-175221.hampstead.irccloud.com) (Ping timeout: 240 seconds)
12:46:06 × carbolymer quits (~carbolyme@dropacid.net) (Ping timeout: 240 seconds)
12:46:06 × hrdl quits (~hrdl@mail.hrdl.eu) (Ping timeout: 240 seconds)
12:46:06 × obfusk quits (~quassel@a82-161-150-56.adsl.xs4all.nl) (Ping timeout: 240 seconds)
12:46:06 × opqdonut quits (opqdonut@pseudo.fixme.fi) (Ping timeout: 240 seconds)
12:46:06 × nisstyre quits (~wes@user/nisstyre) (Ping timeout: 240 seconds)
12:46:06 × hexology quits (~hexology@user/hexology) (Ping timeout: 240 seconds)
12:46:06 × landonf quits (landonf@mac68k.info) (Ping timeout: 240 seconds)
12:46:06 × stilgart quits (~Christoph@chezlefab.net) (Ping timeout: 240 seconds)
12:46:06 × farn quits (~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505) (Ping timeout: 240 seconds)
12:46:06 × andjjj23 quits (~irc@107.170.228.47) (Ping timeout: 240 seconds)
12:46:07 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Ping timeout: 240 seconds)
12:46:07 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Ping timeout: 240 seconds)
12:46:07 × rembo10 quits (~rembo10@remulis.com) (Ping timeout: 240 seconds)
12:46:07 × theproffesor quits (~theproffe@user/theproffesor) (Ping timeout: 240 seconds)
12:46:07 × codedmart quits (codedmart@2600:3c01::f03c:92ff:fefe:8511) (Ping timeout: 240 seconds)
12:46:07 × hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 240 seconds)
12:46:07 × joel135 quits (sid136450@id-136450.hampstead.irccloud.com) (Ping timeout: 240 seconds)
12:46:07 × noddy quits (~user@user/noddy) (Ping timeout: 240 seconds)
12:46:07 × elvishjerricco quits (sid237756@id-237756.helmsley.irccloud.com) (Ping timeout: 240 seconds)
12:46:07 × perro quits (~perro@072-191-245-069.res.spectrum.com) (Ping timeout: 240 seconds)
12:46:07 × Megant quits (megant@user/megant) (Ping timeout: 240 seconds)
12:46:07 × w1gz quits (~do@159.89.11.133) (Ping timeout: 240 seconds)
12:46:07 × ridcully quits (~ridcully@p57b52a9a.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
12:46:07 × enikar quits (~enikar@user/enikar) (Ping timeout: 240 seconds)
12:46:08 landonf joins (landonf@mac68k.info)
12:46:08 jmct__ is now known as jmct_
12:46:08 awpr_ is now known as awpr
12:46:08 rtpg_ is now known as rtpg
12:46:13 b20n_ is now known as b20n
12:46:13 davetapley_ is now known as davetapley
12:46:13 erisco_ is now known as erisco
12:46:13 akurilin__ is now known as akurilin_
12:46:13 wallymathieu_ is now known as wallymathieu
12:46:13 kristjansson_ is now known as kristjansson
12:46:13 terrorjack0 is now known as terrorjack
12:46:14 joel135_ is now known as joel135
12:46:14 elvishjerricco_ is now known as elvishjerricco
12:46:15 rubin55_ is now known as rubin55
12:46:20 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
12:46:20 flukiluke joins (~m-7humut@2603:c023:c000:6c7e:8945:ad24:9113:a962)
12:46:23 remexre joins (~remexre@user/remexre)
12:46:29 stefan-_ joins (~cri@42dots.de)
12:46:31 yaroot joins (~yaroot@2409:12:ac0:2300:680e:dbff:fe1e:4953)
12:46:31 mtjm joins (~mutantmel@2604:a880:2:d0::208b:d001)
12:46:32 kmein_ is now known as kmein
12:46:38 biberu joins (~biberu@user/biberu)
12:46:38 koolazer joins (~koo@user/koolazer)
12:46:38 fef joins (~thedawn@user/thedawn)
12:46:45 hays joins (rootvegeta@fsf/member/hays)
12:47:05 cocreature joins (~moritz@2a03:b0c0:3:d0::c8:f001)
12:47:08 Hafydd joins (~Hafydd@user/hafydd)
12:47:16 nisstyre joins (~wes@user/nisstyre)
12:47:17 Flow joins (~none@gentoo/developer/flow)
12:47:24 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
12:47:29 totte joins (~totte@h-82-196-112-155.A166.priv.bahnhof.se)
12:49:17 × jgeerds quits (~jgeerds@55d4090e.access.ecotel.net) (Ping timeout: 268 seconds)
12:49:54 × fr33domlover quits (~fr33@2.55.33.131) (Ping timeout: 268 seconds)
12:49:57 × hrdl_ quits (~hrdl@mail.hrdl.eu) (Ping timeout: 256 seconds)
12:49:57 × cls_ quits (~cls@chalk.lubutu.com) (Ping timeout: 256 seconds)
12:49:57 × szkl_ quits (uid110435@uxbridge.irccloud.com) (Ping timeout: 256 seconds)
12:49:57 × vgtw_ quits (~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se) (Ping timeout: 256 seconds)
12:50:06 Jing joins (~hedgehog@240e:390:7c53:a7e1:84bf:ceba:6161:c1f6)
12:50:31 × opqdonut_ quits (opqdonut@pseudo.fixme.fi) (Ping timeout: 256 seconds)
12:50:31 × biberu\ quits (~biberu@user/biberu) (Ping timeout: 256 seconds)
12:50:34 vgtw joins (~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se)
12:51:34 hrdl joins (~hrdl@mail.hrdl.eu)
12:51:39 cls joins (~cls@chalk.lubutu.com)
12:51:46 szkl_ joins (uid110435@id-110435.uxbridge.irccloud.com)
12:51:54 opqdonut joins (opqdonut@pseudo.fixme.fi)
12:52:24 × wmacmil quits (~wmacmil@83-233-165-97.cust.bredband2.com) (Ping timeout: 256 seconds)
12:52:37 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
12:53:15 <merijn> qeqeqw1: fwiw, I (and most people) would generally recommend not trying to write multiline code in ghci
12:53:31 <merijn> qeqeqw1: It's generally easier to just write it in an editor, then load the file in ghci to play with
12:56:31 <raehik> I've got an instance that I needed QuantifiedConstraints for to allow me to say "given an instance that works with any KnownNat n, we have an instance X". Now I can't figure out how to use it!
12:57:07 deadmarshal joins (~deadmarsh@95.38.230.192)
12:57:35 <hpc> in fact, i would recommend that anyway
12:57:51 <hpc> vim foo.hs, ghci foo.hs, and :r in ghci as you make edits
12:58:12 <hpc> easier than whatever fancy :l and :{ :} nonsense anyone could possibly come up with
12:58:37 <hpc> the hardest part of the whole thing is exiting vim when you're done :D
13:02:40 <raehik> is what I'm trying currently disallowed in the first place? https://gitlab.haskell.org/ghc/ghc/-/issues/18150
13:04:01 <raehik> feels weird, I just want an instance that knows it can use any KnownNat rather than having to put each type nat in the instance head
13:04:42 × max22- quits (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Ping timeout: 268 seconds)
13:06:44 <merijn> is there a name for generalising quad-tree/oct-trees to N-dimensions?
13:08:01 <hpc> space partition?
13:08:48 slack1256 joins (~slack1256@191.125.227.223)
13:09:02 <merijn> as in data structure name
13:09:32 <merijn> so binary trees, quad trees, and oct trees are 1, 2, and 3 dimensional instance of ?? trees
13:09:45 <merijn> Trying to figure out the ?? :p
13:09:52 <qeqeqw1> merijn, Right I will start this habit then. That's a good tip. I'm not really the repl type anyway so it'all good
13:10:01 <hpc> ah
13:10:30 × Kaiepi quits (~Kaiepi@156.34.47.253) (Quit: Leaving)
13:10:43 <merijn> qeqeqw1: You can simply do ":l yourfile.hs" and everything will be accessible
13:10:45 Kaiepi joins (~Kaiepi@156.34.47.253)
13:10:48 <qeqeqw1> merijn, I think the term you're looking for is N-ary tree
13:11:20 <merijn> (and ":r" or ":reload" to reload file after changes)
13:11:25 <qeqeqw1> merijn, Yes, I've read it in the tutorial but thanks anyway
13:12:03 <qeqeqw1> Does modifying functions in the repl and then do reload change the file, though ?
13:12:36 <merijn> you can't really modify things in the repl, only define new things
13:13:44 <qeqeqw1> right, that's a sensible behavior
13:15:18 <hpc> qeqeqw1: that's "no more than N children" instead of "exactly N children", and N doesn't have to be a power of two
13:17:40 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
13:18:41 <hpc> merijn: maybe give up on finding an existing term and call it a 2**n-ary space partition?
13:19:19 <merijn> hpc: I need a name so I can search for whatever people have written about them :p
13:19:25 <hpc> ah
13:19:26 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:ede6:9f76:f2c5:9990)
13:20:12 <hpc> if it was me, i would try a search for "space partition" and just deal with the extra results
13:20:35 <hpc> unless there's an ungodly huge number of search results, that seems easiest
13:20:36 <merijn> especially how to get self-balancing right :p
13:23:20 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
13:23:37 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:ede6:9f76:f2c5:9990) (Ping timeout: 240 seconds)
13:25:03 × simendsjo quits (~user@2a02:2121:6c0:42f8:d80b:8f5a:9182:35dd) (Ping timeout: 268 seconds)
13:25:52 ChaiTRex joins (~ChaiTRex@user/chaitrex)
13:27:05 aforemny_ is now known as aforemny
13:28:58 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
13:31:39 fr33domlover joins (~fr33@141.226.10.136)
13:31:58 × alp quits (~alp@user/alp) (Remote host closed the connection)
13:32:02 × deadmarshal quits (~deadmarsh@95.38.230.192) (Ping timeout: 250 seconds)
13:32:18 alp joins (~alp@user/alp)
13:33:55 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
13:34:26 ChaiTRex joins (~ChaiTRex@user/chaitrex)
13:34:55 × `2jt quits (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net) (Ping timeout: 268 seconds)
13:34:58 PHO`__ is now known as PHO`
13:37:19 epolanski joins (uid312403@id-312403.helmsley.irccloud.com)
13:37:56 <merijn> ah, feck, I don't think quad/oct trees are quite right for my problem anyway :\
13:39:01 × faustind quits (~faustin@240b:12:43e1:7b00:fc04:33:8474:c903) (Quit: Leaving.)
13:44:38 __monty__ joins (~toonn@user/toonn)
13:45:18 `2jt joins (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net)
13:46:03 × vglfr quits (~vglfr@88.155.46.9) (Ping timeout: 256 seconds)
13:46:16 deadmarshal joins (~deadmarsh@95.38.230.192)
13:46:20 vglfr joins (~vglfr@88.155.46.9)
13:48:55 × troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
13:55:07 × deadmarshal quits (~deadmarsh@95.38.230.192) (Ping timeout: 256 seconds)
13:56:16 max22- joins (~maxime@2a01cb0883359800afbe144533f29e72.ipv6.abo.wanadoo.fr)
13:56:17 yauhsien joins (~yauhsien@61-231-62-246.dynamic-ip.hinet.net)
13:57:12 Clint_ is now known as Clint
13:58:57 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
13:59:17 ChaiTRex joins (~ChaiTRex@user/chaitrex)
13:59:29 <merijn> ok, so help me out. I'm trying to invent something like IntervalMap from data-interval
13:59:34 <merijn> @hackage data-interval
13:59:34 <lambdabot> https://hackage.haskell.org/package/data-interval
13:59:44 <merijn> Except, that only deals with 1-dimensional intervals
13:59:47 mal1 is now known as lieven
13:59:55 <merijn> And I need N-dimensional
14:00:37 × yauhsien quits (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
14:02:53 shriekingnoise joins (~shrieking@201.231.16.156)
14:03:57 <merijn> I was looking at the data-interval implementation, but that stores the smallest point for each interval and then does a lookup, but that's...not as doable with N dimensions. At least I'm not sure how...
14:04:25 <merijn> And octtrees seems like they'd inflict a lot of additional storage
14:08:17 azimut_ joins (~azimut@gateway/tor-sasl/azimut)
14:08:57 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds)
14:09:03 × joo-_ quits (~joo-_@fsf/member/joo--) (Quit: leaving)
14:09:10 <__monty__> Oof, are you a day ahead in AoC or something? : )
14:09:18 joo-_ joins (~joo-_@80-62-117-53-mobile.dk.customer.tdc.net)
14:09:18 × joo-_ quits (~joo-_@80-62-117-53-mobile.dk.customer.tdc.net) (Changing host)
14:09:18 joo-_ joins (~joo-_@fsf/member/joo--)
14:10:53 deadmarshal joins (~deadmarsh@95.38.230.192)
14:11:50 <merijn> __monty__: This is actual work >.>
14:12:41 × `2jt quits (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net) (Ping timeout: 256 seconds)
14:13:06 shapr joins (~user@2601:7c0:c37c:46d0:f28:8342:f51d:c5e2)
14:13:10 troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua)
14:14:58 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
14:17:03 <__monty__> Yeah, it's just that Octrees kinda popped up this year, for 3D intervals. It sounds like a pretty hard problem.
14:17:22 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Client Quit)
14:18:06 wombat875 joins (~neilfulwi@pool-72-89-24-154.nycmny.fios.verizon.net)
14:20:12 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:dd9f:9c7:a4ae:c7f9)
14:21:49 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
14:22:03 lavaman joins (~lavaman@98.38.249.169)
14:22:10 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
14:22:28 lavaman joins (~lavaman@98.38.249.169)
14:22:30 gdd joins (~gdd@129.199.146.230)
14:22:35 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
14:24:13 × max22- quits (~maxime@2a01cb0883359800afbe144533f29e72.ipv6.abo.wanadoo.fr) (Ping timeout: 250 seconds)
14:24:17 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:dd9f:9c7:a4ae:c7f9) (Ping timeout: 240 seconds)
14:25:43 × jlamothe_ quits (~jlamothe@198.251.61.229) (Quit: leaving)
14:26:37 × deadmarshal quits (~deadmarsh@95.38.230.192) (Ping timeout: 240 seconds)
14:27:21 <tomsmeding> merijn: why are oct trees not right for your problem?
14:29:45 dut joins (~dut@user/dut)
14:30:50 bontaq joins (~user@ool-45779fe5.dyn.optonline.net)
14:31:57 `2jt joins (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net)
14:32:09 <tomsmeding> note that BVH also exists, but you probably already found that, and without knowing more about the problem it's impossible to say whether it will be more suitable anyway :)
14:32:15 <xerox> people might be interested in POPL streamed live https://www.youtube.com/watch?v=83D2k5pgFlM
14:32:28 <merijn> tomsmeding: Intervals that cover multiple branches will have to be split a lot
14:32:54 × wombat875 quits (~neilfulwi@pool-72-89-24-154.nycmny.fios.verizon.net) (Read error: Connection reset by peer)
14:32:58 <tomsmeding> ah
14:33:13 <merijn> tomsmeding: My intervals will most be large and dense
14:33:16 <merijn> *mostly
14:33:23 <tomsmeding> does IntervalMap even solve that issue? from a peek at the implementation it looked like it doesn't deal with overlapping intervals _at all_
14:33:32 <merijn> tomsmeding: Which is, like, the pessimal case for octtrees
14:33:42 <merijn> tomsmeding: There can't be overlap
14:34:46 <merijn> tomsmeding: But with quad/octrees you end up doing a lot of gratuitous splitting to fit into the 4/8 quads/octs of the space
14:34:58 <tomsmeding> yeah I see
14:35:13 <merijn> Aha!
14:35:25 qeqeqw1 parts (~qeqeqw3@2001:861:3a04:e320:31ea:a59b:1c06:51f4) (Leaving)
14:35:26 <merijn> kd-tree, that was the name I was looking for earlier, I think
14:35:29 <tomsmeding> BVH won't split (with the standard implementation -- you can make it split if you want), but it will just have an inefficient tree structure probably
14:36:42 <tomsmeding> what dimensions are you looking at? <=3? <=10? <=10000?
14:36:58 <merijn> tomsmeding: BVH seems more general than I want anyway, since I will never have overlap
14:37:12 <merijn> tomsmeding: Let's say *at least* up to 5
14:37:15 x_kuru joins (~xkuru@user/xkuru)
14:37:20 <tomsmeding> bvh is just an alternative on kd trees
14:37:40 <tomsmeding> the bounding volumes of the internal nodes will overlap
14:37:55 <tomsmeding> where a kd tree would split things
14:38:16 <tomsmeding> (that is, if I remember graphics class correctly :p )
14:39:00 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
14:39:00 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
14:39:00 wroathe joins (~wroathe@user/wroathe)
14:40:14 <merijn> tomsmeding: That makes sense for sparse items, in my case I'm looking more at dense things. That is most (if not all) of the space is assigned a value
14:40:17 × xkuru quits (~xkuru@user/xkuru) (Ping timeout: 268 seconds)
14:40:18 eron joins (~eron@2804:431:c7c2:3848:2c26:bc50:f8a2:a008)
14:41:40 <merijn> So it's more like (in the 3d case) I have a collection of (non-overlapping) volumes and wanna efficiently query "what's the volume of point (x, y, z)?"
14:42:04 <merijn> (I guess "what volume does (x, y, z) fall within?" is a more natural formulation)
14:42:04 × shapr quits (~user@2601:7c0:c37c:46d0:f28:8342:f51d:c5e2) (Remote host closed the connection)
14:42:17 shapr joins (~user@2601:7c0:c37c:46d0:d31:791c:8c24:e54b)
14:42:32 × vysn quits (~vysn@user/vysn) (Ping timeout: 240 seconds)
14:43:33 <merijn> Which seems like it should be a solved problem, I just dunno what the solution is called :p
14:43:37 <tomsmeding> store a list of neighbour volumes for each volume, and walk towards your destination
14:43:44 jlamothe joins (~jlamothe@198.251.61.229)
14:43:58 <tomsmeding> more seriously, I don't know of anything better or more recent than a kd tree or bvh
14:44:35 <tomsmeding> note that you can make a kd tree adaptive: select its split points depending on the volumes in your set
14:44:36 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
14:44:41 <tomsmeding> instead of always in the middle
14:44:57 <tomsmeding> whether that helps depends on your dataset I guess :p
14:46:36 <merijn> tomsmeding: Yeah, but then I still need a sensible way to build a (semi-balanced) tree with the kd solution, which is unclear :p
14:47:53 <merijn> That's my problem, most of these are talking about partitioning "sets of points" when constructing, but that only makes sense for sparse things
14:49:51 ardell joins (~ardell@user/ardell)
14:50:41 × SummerSonw quits (~The_viole@203.77.49.232) (Quit: Leaving)
14:51:53 wombat875 joins (~neilfulwi@pool-72-89-24-154.nycmny.fios.verizon.net)
14:52:06 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
14:52:55 × `2jt quits (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net) (Ping timeout: 256 seconds)
14:53:25 lavaman joins (~lavaman@98.38.249.169)
14:53:44 <wombat875> \quit
14:53:46 × wombat875 quits (~neilfulwi@pool-72-89-24-154.nycmny.fios.verizon.net) (Client Quit)
14:54:22 wombat875 joins (~neilfulwi@72.89.24.154)
14:54:57 × wombat875 quits (~neilfulwi@72.89.24.154) (Client Quit)
14:56:05 wombat875 joins (~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net)
14:56:29 × wombat875 quits (~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Client Quit)
14:56:31 slac74781 joins (~slack1256@186.11.27.197)
14:57:18 wombat875 joins (~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net)
14:57:37 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
14:58:33 max22- joins (~maxime@2a01cb08833598003263d82d70b82807.ipv6.abo.wanadoo.fr)
14:58:55 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
14:59:34 × slack1256 quits (~slack1256@191.125.227.223) (Ping timeout: 250 seconds)
15:00:43 Vajb joins (~Vajb@2001:999:50:e6be:1e98:9376:d93e:4506)
15:02:51 Sgeo joins (~Sgeo@user/sgeo)
15:05:37 × fr33domlover quits (~fr33@141.226.10.136) (Ping timeout: 240 seconds)
15:06:03 × rembo10_ quits (~rembo10@remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
15:06:06 <merijn> man, I seem to have accidentally stumbled into some really tricky nerd-snipy shit >.>
15:06:23 rembo10 joins (~rembo10@remulis.com)
15:07:42 deadmarshal joins (~deadmarsh@95.38.230.192)
15:13:17 <merijn> I stumbled across R-trees, but I think something more efficient should be possible, since I *can* simply split my volumes if needed. But this whole thing requires more thinking than my brain can handle >.>
15:16:54 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
15:16:54 × polyphem quits (~rod@2a02:810d:840:8754:e450:3ca3:b389:687a) (Ping timeout: 250 seconds)
15:18:33 wmacmil joins (~wmacmil@83-233-165-97.cust.bredband2.com)
15:22:50 hugo- is now known as hugo
15:23:35 Guest70 joins (~Guest70@2a00:1fa1:8247:926e:abaa:e5d4:d634:d5d9)
15:23:55 Guest70 parts (~Guest70@2a00:1fa1:8247:926e:abaa:e5d4:d634:d5d9) ()
15:23:58 × mmhat quits (~mmh@55d4fa95.access.ecotel.net) (Quit: WeeChat 3.4)
15:25:10 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
15:25:10 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
15:25:10 wroathe joins (~wroathe@user/wroathe)
15:25:45 LukeHoersten joins (~LukeHoers@user/lukehoersten)
15:26:09 darchitect joins (~darchitec@2a00:23c6:3584:df00:8fb:65a6:c5ec:35ce)
15:26:32 polyphem joins (~rod@2a02:810d:840:8754:e450:3ca3:b389:687a)
15:28:03 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 256 seconds)
15:29:25 ec joins (~ec@gateway/tor-sasl/ec)
15:29:45 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
15:32:12 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
15:33:39 × ksqsf quits (~user@134.209.106.31) (Remote host closed the connection)
15:34:50 ksqsf joins (~user@2001:da8:d800:611:d4b0:39ea:c0c9:ff22)
15:38:13 fr33domlover joins (~fr33@141.226.170.143)
15:38:53 <zwro[m]> question: are "bound" variables in let expressions called "closed" variables, and are these terms interchangeable?
15:41:22 × michalz quits (~michalz@185.246.204.101) (Remote host closed the connection)
15:42:14 <merijn> tomsmeding: Oh!
15:43:02 <merijn> tomsmeding: I think I *can* reformulate it into a (simple) 1D case, iff I only admit simple, "rectangular" (however that's called in higher dimensions) shapes
15:43:06 <merijn> )
15:43:07 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
15:43:31 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
15:46:12 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:49:38 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
15:52:11 <zzz> zwro[m]: you mean bound vs free / closed vs _ ?
15:52:26 <zwro[m]> zzz: exactly
15:52:51 myShoggoth joins (~myShoggot@97-120-67-120.ptld.qwest.net)
15:54:37 zebrag joins (~chris@user/zebrag)
15:55:45 <zzz> as i understading there's a suble difference between bound vs free in math and in programming. in programming, a free variable is one that needs to be looked up the function call stack
15:56:18 <zzz> no sure if that exactly correlates with all let/where bindings
15:57:22 × d0ku quits (~d0ku@178.43.152.233.ipv4.supernova.orange.pl) (Ping timeout: 268 seconds)
15:58:02 <lortabac> zwro[m]: IIRC a term is called "closed" if it doesn't contain free variables
15:58:29 <lortabac> a variable can't be closed, a term can
15:59:04 <zwro[m]> i see. are terms called "open" in opposition?
15:59:36 `2jt joins (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net)
16:00:08 <zwro[m]> and can we set warnings for closed terms?
16:01:34 <zwro[m]> i want to enforce (for stylistic purposes) defining all terms at the highest level
16:02:52 Topsi joins (~Tobias@dyndsl-095-033-018-085.ewe-ip-backbone.de)
16:04:14 <lortabac> zwro[m]: these are two different things
16:05:16 <zzz> which things?
16:05:22 <lortabac> you want to emit a warning when let or where is used?
16:05:30 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
16:05:32 <lortabac> open/closed and toplevel/nested
16:06:11 <zzz> i think they want to avoid let/where bindings without free variables
16:06:38 <zzz> force defining them at the highest possile level
16:07:51 <lortabac> so for example (f x = y + 1 where y = x + 2) would be allowed and (f = x where x = 1) would emit a warning?
16:12:04 <zwro[m]> lortabac: yes
16:12:20 <lortabac> I don't think such a warning exists in GHC, but it shouldn't be too hard to implement, I suppose
16:14:15 jgeerds joins (~jgeerds@55d4090e.access.ecotel.net)
16:14:47 <zzz> i was going to say that's superfulous because ghc probably treats all "closed" bindings the same as top-level but i see a point in zwro[m]'s style
16:15:34 <zwro[m]> lortabac: it should be trivial
16:16:14 <zwro[m]> how can i make sure the setting doesn't exist yet?
16:16:24 HyperTimeBreaker joins (~HyperTime@202.3.77.166)
16:16:31 × MiguelNegrao quits (~MiguelNeg@2001:818:dc71:d100:9e5a:44ff:fe17:1240) (Quit: Client closed)
16:17:13 <zwro[m]> zzz: mostly for conciseness and to avoid duplication, but there are other advantages
16:17:58 × HyperTimeBreaker quits (~HyperTime@202.3.77.166) (Client Quit)
16:18:27 <lortabac> zzz: let expressions can be considered syntactic sugar for lambdas (it is the case in Scheme for example)
16:19:31 <lortabac> (let x = 1 in x) is just sugar for ((\x -> x) 1)
16:20:02 <lortabac> that's why we can say bound/free for both lambdas and lets
16:21:51 <tomsmeding> merijn: cuboidal?
16:22:02 <zzz> lortabac: there are some caveats regarding generalization of polymorphic types
16:22:38 <EvanR_> is zwro[m] talking about supercombinators
16:22:39 <merijn> tomsmeding: Anyway, I realised I'm wrong because I have a partial order that's screwing me over >.>
16:23:24 <zwro[m]> EvanR_: am I?
16:24:10 <EvanR_> nvm, I'm not sure why f = x where x = 1 would not be allowed
16:24:15 <merijn> tomsmeding: I was thinking I could just order by (in 2d land, but generalises to N) by like the "top-most, leftmost point of an interval" and then lookup the greatest one "smaller than my target" and identify the volume it's in.
16:24:31 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:ac4b:acb4:af59:598f) (Quit: WeeChat 2.8)
16:24:41 <merijn> But that doesn't quite work, because a total (lexicographical) order on points gets you the wrong one sometimes
16:24:55 <merijn> But a partial order doesn't play nice with a BST
16:25:28 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
16:25:28 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
16:25:28 wroathe joins (~wroathe@user/wroathe)
16:26:53 <zwro[m]> EvanR_: i just checked what supercombinators are. i guess that's more useful! that example not being allowed would just be an unfortunate side-effect
16:27:29 <zwro[m]> if i'm understanding, any combinator can be trivially turned into a supercombinator, right?
16:29:12 <zzz> (lortabac: MonoLocalBinds)
16:29:26 <EvanR_> actually, sometimes just "combinator" is what people call a top level thing with no free vars
16:30:00 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
16:30:11 <zzz> i see
16:30:17 <EvanR_> whereas supercombinator is in an implementation context and often has an explicit arity for compiler purposes
16:30:57 geranim0 joins (~geranim0@modemcable242.171-178-173.mc.videotron.ca)
16:31:02 <zzz> haskell needs a compreehensive list of common terminology
16:32:39 × hyiltiz_ quits (~quassel@31.220.5.250) (Ping timeout: 256 seconds)
16:33:00 hyiltiz joins (~quassel@31.220.5.250)
16:33:23 <zwro[m]> so i guess i was not talking about it, exactly
16:34:13 <zwro[m]> i just want to avoid having stuff limited by a function's scope when it has no reason to
16:34:27 fendor joins (~fendor@77.119.169.94.wireless.dyn.drei.com)
16:34:58 <EvanR_> sounds like xkcd style, there are only so many functions, we should never write the same combinator twice
16:35:17 <zwro[m]> ScopedTypeVariables, which i have always on, complicates things
16:35:21 <EvanR_> oh oh, there's the birding combinator book
16:36:01 random-jellyfish joins (~random-je@user/random-jellyfish)
16:36:23 <EvanR_> https://hackage.haskell.org/package/data-aviary haven't thought of this in a while
16:36:48 × eron quits (~eron@2804:431:c7c2:3848:2c26:bc50:f8a2:a008) (Quit: Client closed)
16:37:56 <dolio> The really technical definition is that combinators are defined like `f x y z ... = E` where `E` contains only application and previously defined combinators.
16:38:07 <merijn> oh, wait, maybe this is rescuable by using manhattan distance to induce a total ordering!
16:38:08 <zwro[m]> EvanR_: xkcd style? now i need a link
16:38:10 <dolio> Oh, and the bound variables, of course.
16:38:28 ProfSimm joins (~ProfSimm@176-12-60-137.pon.spectrumnet.bg)
16:38:46 <EvanR_> on xkcd's irc network (who has their own irc network anyway) there is a channel where the bot is set up to stop you from using a previously spoken message
16:38:47 <dolio> I.E. it's a formalism without lambda expressions.
16:39:13 <EvanR_> seems similar to your not wanting to write the same combinator again xD
16:39:59 <EvanR_> dolio, but doesn't e.g. Y combinator use lambdas
16:40:21 <zzz> EvanR_: is Data.Aviary a reference to Smullyan?
16:40:53 <EvanR_> yes
16:40:59 <dolio> Not if you define it in a combinator calculus.
16:41:24 laslmtdwbcs^ joins (~laslmtdwb@wsip-98-188-242-61.mc.at.cox.net)
16:41:24 <zzz> how can Y be defined in Haskell?
16:41:31 <zzz> fix ?
16:41:45 <zzz> you can't excape the let
16:42:26 <dolio> I don't have the combinator definition memorized, though, and don't really feel like working it out. :þ
16:42:34 johnjaye joins (~pi@154.6.152.74)
16:42:55 <johnjaye> i'm looking at a build script and it has names like 'v1-install' as commands for building a haskell project. is that reasonable?
16:42:59 <dolio> @pl \f -> (\x -> f (x x)) (\x -> f (x x))
16:42:59 <lambdabot> ap (. join id) (. join id)
16:43:13 <dolio> @pl (\x -> f (x x)) (\x -> f (x x))
16:43:16 <lambdabot> (f . ap id id) (f . ap id id)
16:43:16 <lambdabot> optimization suspended, use @pl-resume to continue.
16:43:36 <EvanR_> @pl-resume
16:43:42 <lambdabot> (f . ap id id) (f . ap id id)
16:43:42 <lambdabot> optimization suspended, use @pl-resume to continue.
16:43:45 <dolio> :)
16:43:46 <maerwald> johnjaye: what do you mean witth reasonable?
16:43:47 <EvanR_> nice
16:43:52 <EvanR_> partiality monad
16:44:18 <EvanR_> could be used for a "loading" screen in a video game
16:44:30 <johnjaye> maerwald: i'm trying to figure out if it's an option to cabal, ghc, or something else
16:44:41 <johnjaye> man cabal doesn't exist. oops
16:44:47 <geekosaur> v1-install would be cabal
16:45:06 <geekosaur> https://cabal.readthedocs.io/
16:45:08 <johnjaye> ok --help works
16:45:14 <johnjaye> i see i there
16:45:21 <geekosaur> but the v1-* commands are deprecated at this point
16:45:25 <johnjaye> ok
16:45:38 <geekosaur> they're a good way to make unsolvable messes
16:45:45 <maerwald> johnjaye: cabal man
16:46:27 <johnjaye> maerwald: illegal option -l
16:46:32 <johnjaye> then some usage message about man. lol
16:46:34 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
16:46:35 <johnjaye> on bsd
16:46:55 <maerwald> yeah, it's a bug https://github.com/haskell/cabal/issues/7714
16:47:25 <zzz> @type \f -> (\x -> f (x x)) (\x -> f (x x))
16:47:26 <lambdabot> error:
16:47:26 <lambdabot> • Occurs check: cannot construct the infinite type: t0 ~ t0 -> t
16:47:26 <lambdabot> • In the first argument of ‘x’, namely ‘x’
16:47:31 <zzz> ^
16:48:33 zmt01 joins (~zmt00@user/zmt00)
16:48:37 <zzz> @type ap (. join id) (. join id)
16:48:38 <lambdabot> error:
16:48:38 <lambdabot> • Occurs check: cannot construct the infinite type: a0 ~ a0 -> b
16:48:38 <lambdabot> Expected type: (a0 -> b) -> (a0 -> b) -> b
16:48:40 enicar is now known as enikar
16:49:04 <zzz> computer says no
16:49:57 <zzz> dolio EvanR_
16:50:06 <ksqsf> you'll need some recursive type to guide the type checking
16:50:24 <ksqsf> a simpler and more evil way is to use unsafeCoerce
16:50:51 Sgeo_ joins (~Sgeo@user/sgeo)
16:50:57 × Sgeo quits (~Sgeo@user/sgeo) (Ping timeout: 240 seconds)
16:51:04 × ProfSimm quits (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection)
16:51:07 <zzz> ksqsf: can we make it typecheck with a recursive type?
16:51:08 <EvanR_> zzz, you wrote a Y combinator for untyped lambda calculus
16:51:23 ProfSimm joins (~ProfSimm@176-12-60-137.pon.spectrumnet.bg)
16:51:30 <zzz> EvanR_: yes, that's my point
16:51:31 <EvanR_> many things from untyped lambda calculus don't work as is when you add types
16:52:26 <tomsmeding> merijn: probably a bad idea, but (in 2d land): store for each rect with left-top (x,y) the other rect with left-top (a,b) such that a<=x, b>=y, and b is minimal with tiebreaker (a is maximal). Also store the symmetric thing on the top. Then by following these "other rect" pointers you kind of walk a convex hull thing around your query point, if you start with a rect with left-top (x,y) with x <=
16:52:26 <tomsmeding> queryx and y <= queryy, optimised by some metric. Not sure if this actually works
16:52:35 <ksqsf> zzz: yes, try newtype Mu a = Mu (Mu a -> a)
16:54:04 <tomsmeding> @let newtype Mu a = Mu (Mu a -> a)
16:54:05 <lambdabot> Defined.
16:54:21 <tomsmeding> @type \f -> (\(Mu x) -> f (x (Mu x))) (\x -> f (x (Mu x)))
16:54:22 <lambdabot> error:
16:54:22 <lambdabot> • Couldn't match expected type ‘Mu t’
16:54:22 <lambdabot> with actual type ‘(Mu t -> t) -> t1’
16:54:33 burnsidesLlama joins (~burnsides@dhcp168-042.wadham.ox.ac.uk)
16:54:37 × jgeerds quits (~jgeerds@55d4090e.access.ecotel.net) (Ping timeout: 240 seconds)
16:54:46 <tomsmeding> @type \f -> (\x -> f (x (Mu x))) (\(Mu x) -> f (x (Mu x)))
16:54:47 <lambdabot> (a -> a) -> a
16:55:01 <merijn> tomsmeding: That's what I was thinking, but I don't think I can get a good enough ordering for "closest, left-top"
16:55:18 <merijn> Because lexicographical ordering produces the wrong order
16:55:25 <tomsmeding> also I now realise that this suffers from combinatorial explosion if d > 2
16:55:44 <dolio> Ruling out the Y combinator is one of the reasons types were invented.
16:55:53 × ProfSimm quits (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Ping timeout: 256 seconds)
16:55:59 <merijn> If you can smash the ordering into a 1-d total order the problem is "solved"
16:56:18 <merijn> But I can't make that work
16:56:19 × Vajb quits (~Vajb@2001:999:50:e6be:1e98:9376:d93e:4506) (Read error: Connection reset by peer)
16:57:16 <johnjaye> is building with ghc -O1 a lot slower than with -O0?
16:57:23 ProfSimm joins (~ProfSimm@176-12-60-137.pon.spectrumnet.bg)
16:57:27 <johnjaye> ah there's a #ghc channel ok
16:57:32 <geekosaur> not usually a "lot" slower
16:57:43 <geekosaur> note that #ghc is a dev channel, they send user questions here
16:57:50 <johnjaye> ok. i notice my processors aren't really working that hard
16:58:01 <johnjaye> like one goes to 100% every few seconds
16:58:26 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
16:58:56 <tomsmeding> johnjaye: soundsd like you're compiling using one thread, which makes sense since ghc compiles one component (library or executable) single-threaded
16:59:09 <tomsmeding> the build parallelism is in compiling multiple packages in parallel, not really within one package
16:59:16 × burnsidesLlama quits (~burnsides@dhcp168-042.wadham.ox.ac.uk) (Remote host closed the connection)
16:59:37 × fr33domlover quits (~fr33@141.226.170.143) (Ping timeout: 240 seconds)
17:00:24 neverfindme joins (~hayden@158.123.160.43)
17:00:41 × neverfindme quits (~hayden@158.123.160.43) (Max SendQ exceeded)
17:00:46 <tomsmeding> merijn: also my idea doesn't work, found a counterexample (in the walking even, not the selection of the first rect)
17:01:01 neverfindme joins (~hayden@158.123.160.43)
17:01:50 × coot quits (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
17:01:51 × mbuf quits (~Shakthi@110.225.233.59) (Quit: Leaving)
17:02:01 <merijn> tomsmeding: it feels like there *should* be an efficient/simple solution, but I just can't make it work :(
17:02:27 <johnjaye> i see
17:02:55 <tomsmeding> johnjaye: there technically is a -j argument to ghc, but in my experience that is very successful in using more cores and keeping total compilation time roughly constant
17:03:14 × neverfindme quits (~hayden@158.123.160.43) (Remote host closed the connection)
17:03:31 neverfindme joins (~hayden@158.123.160.43)
17:03:44 lbseale joins (~ep1ctetus@user/ep1ctetus)
17:03:59 × neverfindme quits (~hayden@158.123.160.43) (Remote host closed the connection)
17:05:11 <tomsmeding> (that's a different -j argument than the one to cabal; the cabal one is on by default and is for cross-package parallelism and works well)
17:05:43 <tomsmeding> merijn: combination of these three examples defeated my idea https://tomsmeding.com/ss/get/tomsmeding/XEkacx
17:06:05 × random-jellyfish quits (~random-je@user/random-jellyfish) (Ping timeout: 256 seconds)
17:06:24 <[itchyjunk]> Trying to see if i remember foldr. it took a function , element of type a, list [a] and returned [b] so foldr :: a -> a -> b -> a -> [a] -> [b] ?
17:06:27 <[itchyjunk]> :t foldr
17:06:28 <lambdabot> Foldable t => (a -> b -> b) -> b -> t a -> b
17:06:33 <[itchyjunk]> ree
17:06:39 <[itchyjunk]> thats what i had first lol
17:06:55 <tomsmeding> missing some parens in your suggestion
17:06:56 <[itchyjunk]> hmm
17:07:02 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
17:07:02 <[itchyjunk]> oh right, oops
17:07:06 <tomsmeding> a -> b -> c is not the same as (a -> b) -> c
17:07:12 <tomsmeding> though it _is_ the same as a -> (b -> c)
17:07:30 <[itchyjunk]> right, the second one suggests a function (a -> b)
17:07:37 <tomsmeding> not only suggests
17:07:38 <[itchyjunk]> right associativity
17:07:52 <[itchyjunk]> implies is a better word, maybe
17:08:02 <tomsmeding> 'a -> b -> c' = 'a -> (b -> c)' can be remembered by knowing that \x -> \y -> E is the same as \x y -> E
17:08:41 <[itchyjunk]> hmm
17:08:42 <EvanR_> a -> (b -> c) could be read as `a' implies `b -> c' xD
17:08:56 <tomsmeding> EvanR_: or is that a => (b -> c) :p
17:09:02 <johnjaye> incredibly the command line argument to ghc is 2,000 characters long
17:09:13 <tomsmeding> or are => and -> secretly the same thing? hmmmmmmmmmm
17:09:17 × myShoggoth quits (~myShoggot@97-120-67-120.ptld.qwest.net) (Ping timeout: 240 seconds)
17:09:21 EvanR_ dumps out a big bin of arrow glyphs on the table and starts searching through them
17:09:24 <johnjaye> i think it put every submodule to build for the project on the command argument
17:09:25 <zzz> ksqsf: tomsmeding: wow
17:09:34 <tomsmeding> johnjaye: it does :p
17:09:44 × nvmd quits (~nvmd@user/nvmd) (Quit: Later, nerds.)
17:09:56 <tomsmeding> cabal collects what modules belong in the component, then passes the full list to ghc, which then compiles them all
17:10:02 <[itchyjunk]> :t unfoldr
17:10:04 <johnjaye> i see
17:10:04 <lambdabot> (b -> Maybe (a, b)) -> b -> [a]
17:10:10 <[itchyjunk]> now this monstrosity..
17:10:14 <tomsmeding> the reason why it's one ghc process instead of one per module is that ghc does a _lot_ of caching of intermediate products
17:10:24 <[itchyjunk]> it takes a function and another argument and returns a list
17:10:59 <tomsmeding> > unfoldr (\x -> if x > 10 then Nothing else Just (-x, x + 1)) 1
17:11:01 <lambdabot> [-1,-2,-3,-4,-5,-6,-7,-8,-9,-10]
17:11:01 <[itchyjunk]> ah, i need to find function with type b -> Maybe (a,b) first!
17:11:08 <zzz> dolio: if types were invented to rule out the Y combinator, howcome we can still define it?
17:11:14 <johnjaye> i guess it's time to use the old fashioned progress indicator - du
17:11:25 <tomsmeding> zzz: because we then went on and introduced recursive types
17:11:39 tito joins (tito@tilde.team)
17:11:44 <tomsmeding> we can also leave those out; then you end up with the simply-typed lambda calculus, in which general recursion is not expressible
17:12:35 <[itchyjunk]> okay, i can read you function up there i think, the \x one. but wouldn't it keep checking higher values of x forever and keep getting Nothing back?
17:12:40 <[itchyjunk]> how does it know when to stop?
17:12:43 <zzz> what wuold be a good book to read to introduce myself to these concepts?
17:12:44 <tomsmeding> @src unfold
17:12:44 <lambdabot> Source not found. Just what do you think you're doing Dave?
17:12:47 <dolio> zzz: You can't. It's re-added as a basic thing when desired.
17:12:51 <EvanR_> haskell restores the chaos of uncontrolled recursion with recursive bindings and recursive ADTs
17:13:07 <tomsmeding> [itchyjunk]: https://hackage.haskell.org/package/base-4.14.0.0/docs/src/Data.OldList.html#unfoldr
17:13:08 <[itchyjunk]> ahh, i'll file that under magic for now
17:13:18 <EvanR_> but recursive ADTs are nice because they are lazy
17:13:27 <tomsmeding> oh that's not very helpful with build there
17:13:45 <tomsmeding> [itchyjunk]: read (:) instead of c, and [] instead of n
17:14:15 <EvanR_> ADTs are necessarily guarded recursion
17:14:25 <EvanR_> unlike let x = x in x
17:14:52 <johnjaye> well that didn't work either. guess i'll go break and come back and hope ghc finished properly
17:15:09 <tomsmeding> johnjaye: what are you even compiling :p
17:15:15 <johnjaye> tomsmeding: agda
17:15:26 <tomsmeding> and getting no progress feedback?
17:15:29 <johnjaye> yes
17:15:36 <zzz> EvanR_: but let x = f x in x is ok
17:15:42 <tomsmeding> that's very odd
17:15:47 <EvanR_> it depends on f
17:15:56 phma_ is now known as phma
17:16:03 <johnjaye> says Starting Agda-2.6.3 (all, legacy fallback)
17:16:08 <johnjaye> then building. then nothing
17:16:11 <tomsmeding> ah right, as a dependency
17:16:14 <zzz> EvanR_: oh i see
17:16:17 <zzz> nice
17:16:18 <[itchyjunk]> I need an exercise where i can practice writing functions with Maybe blah in the return type. :x what do i google for?
17:16:28 <tomsmeding> johnjaye: yeah it's probably working, agda is a _really_ large package
17:16:41 <johnjaye> ok. i should probably learn how cabal works
17:16:43 <[itchyjunk]> adga is written in haskell?
17:16:45 <johnjaye> that might help
17:16:49 <johnjaye> [itchyjunk]: maybe
17:16:53 <tomsmeding> yes
17:16:54 <[itchyjunk]> hmmm
17:16:57 <[itchyjunk]> i didn't know that
17:17:25 <tomsmeding> idris too, raku too, ghc itself too, whitespace too
17:17:28 <johnjaye> only 55.1% haskell
17:17:36 <[itchyjunk]> never heard of any of those :D
17:17:44 <johnjaye> 26.7% agda
17:17:53 <ksqsf> the law of haskell syntax: if a language looks like haskell, its compiler is probably written in haskell
17:18:06 <EvanR_> wait, I thought that was law of perl
17:18:10 <zzz> [itchyjunk]: you should know ghc at least
17:18:11 <johnjaye> tomsmeding: the raku one seems odd to me. wouldn't that defeat self-hosting?
17:18:14 <[itchyjunk]> I don't really know what agda looks like other than seeing it on youtube
17:18:16 <geekosaur> mm, raku's not written in haskell. pugs was
17:18:25 <[itchyjunk]> zzz, i know of ghci
17:18:45 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
17:18:48 <johnjaye> someone linked me to a youtube video about agda but i don't remember. it was like CS410 and had a whiteboard
17:18:59 <johnjaye> yes one of those types of vids
17:19:04 <[itchyjunk]> i watched it on that computerphile video.
17:19:07 <zzz> [itchyjunk]: ghci stands for ghc interactive [environment]
17:19:13 ec joins (~ec@gateway/tor-sasl/ec)
17:19:14 <tomsmeding> geekosaur: ah, I misremembered
17:19:21 <[itchyjunk]> the claim was you can turn run time type error into compile time type error
17:19:31 <zzz> [itchyjunk]: ghc is the haskell compiler you're probably using
17:19:53 <johnjaye> i'm using ghc right now
17:19:55 <[itchyjunk]> zzz, right. i still need to learn to compile my stuff :< its on the todo
17:19:57 <tomsmeding> johnjaye: seems like all the .agda files are in test/
17:19:57 <zzz> the glorious/glasgow haskell compiler
17:20:28 <monochrom> [itchyjunk]: Have you done this? Recall that "maximum []" is undefined. Implement a "nicerMaximum :: Ord a => [a] -> Maybe a" such that nicerMaximum [] = Nothing, nicerMaximum non_empty_list = Just (the answer).
17:20:49 <johnjaye> tomsmeding: do you think it will go way faster i if i turn off tests?
17:21:03 <tomsmeding> johnjaye: turn off which tests how exactly?
17:21:18 <[itchyjunk]> Oh i haven't learned maximum. so i could work on this. i suppose i take a list an return the largest element in it
17:21:22 <tomsmeding> johnjaye: also, what process is taking cpu at the moment?
17:21:31 <monochrom> yeah
17:21:45 coot joins (~coot@89-64-85-93.dynamic.chello.pl)
17:23:16 <johnjaye> it involves --ghc-options=O0
17:23:32 × tomku quits (~tomku@user/tomku) (Ping timeout: 240 seconds)
17:23:41 <johnjaye> ghc is taking 100% of one cpu
17:23:44 <tomsmeding> johnjaye: the command is ghc with flags? Then it's still building
17:23:55 tomku joins (~tomku@user/tomku)
17:23:59 <tomsmeding> I don't think it will be running any tests unless you specifically asked it somehow
17:24:08 <johnjaye> no i mean the makefile has an option for a quick build. and the quick bu ild is adding --ghc-options=O0
17:24:23 lavaman joins (~lavaman@98.38.249.169)
17:24:28 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
17:24:28 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
17:24:28 wroathe joins (~wroathe@user/wroathe)
17:24:51 <tomsmeding> with O0 the resulting Agda binary will be a lot slower
17:24:54 <ksqsf> Agda sure takes a long time to build, but I don't recall the compile time being so bad
17:25:26 <ksqsf> probably due to GHC 9 being faster
17:25:31 <tomsmeding> johnjaye: it has to build all these modules https://github.com/agda/agda/blob/master/Agda.cabal#L287-L645
17:26:18 <tomsmeding> johnjaye: if you're on linux, open htop, select the ghc process taking cpu, and press the L key, then look at which .hs file it's currently looking at
17:26:27 <johnjaye> ksqsf: how did you know i was using ghc-8.10.7?
17:26:41 <tomsmeding> doesn't tell you much about how far it is, but it should show progress :p
17:26:45 econo joins (uid147250@user/econo)
17:26:50 <tomsmeding> s/progress/action/
17:27:57 n3rdy1 joins (~n3rdy1@2600:1700:4570:3480::41)
17:28:02 × CiaoSen quits (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
17:28:50 throwaaaa[m] joins (~throwaaaa@2001:470:69fc:105::1:6fe6)
17:28:56 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
17:28:57 × alp quits (~alp@user/alp) (Ping timeout: 240 seconds)
17:29:19 × razetime quits (~quassel@49.207.203.87) (Ping timeout: 256 seconds)
17:31:12 burnsidesLlama joins (~burnsides@dhcp168-042.wadham.ox.ac.uk)
17:31:58 <[itchyjunk]> I tried to write the regular version of maximum first, it's kinda works but it seems to have a weird issue
17:31:59 <[itchyjunk]> https://bpa.st/TRLA
17:32:19 <[itchyjunk]> i tried "apple", [1..10], [1..100]. works fine for first 2
17:32:32 <[itchyjunk]> the thrid one just freezes
17:33:10 Akiva joins (~Akiva@user/Akiva)
17:33:40 <[itchyjunk]> myMaximum [2,1,6,0,3]
17:33:40 <[itchyjunk]> 6
17:33:57 slowButPresent joins (~slowButPr@user/slowbutpresent)
17:34:01 <[itchyjunk]> So works for some list, but definately not for myMaximum [1..100] and i am wondering where i went wrong
17:34:15 kjak joins (~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
17:34:15 <tomsmeding> try 'myMaximum [1..20]'
17:34:30 <monochrom> OK, do you know the efficiency difference between "f (n+1) = let y = f n in y+y" and "f (n+1) = f n + f n"?
17:34:38 <[itchyjunk]> that worked but took a second.
17:34:49 <[itchyjunk]> i do not know the efficiency difference there :<
17:34:53 <monochrom> That is, one of them takes time proportional to n, the other exponential time.
17:34:57 tomsmeding is happy to have guessed the right number there
17:35:03 × xb0o2 quits (~xb0o2@user/xb0o2) (Quit: Client closed)
17:35:11 × ProfSimm quits (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection)
17:35:31 <[itchyjunk]> ah i will file this under complexity theory and move on then :x
17:35:31 ProfSimm joins (~ProfSimm@176-12-60-137.pon.spectrumnet.bg)
17:35:50 <tomsmeding> first one: f 2 = let y = (let y = (let y = f 0 in y+y) in y+y) in y+y
17:36:17 <tomsmeding> ahem, f 3 is that
17:36:36 <tomsmeding> second one: f 3 = ((f 0 + f 0) + (f 0 + f 0)) + ((f 0 + f 0) + (f 0 + f 0))
17:36:42 <monochrom> This one is very easy baby-level complexity.
17:37:20 <monochrom> If you use "f (n+1) = f n + f n", f n makes 2^n calls to f 0.
17:37:26 fr33domlover joins (~fr33@141.226.170.143)
17:38:00 × burnsidesLlama quits (~burnsides@dhcp168-042.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
17:38:52 Guest80 joins (~Guest80@host-95-245-231-154.retail.telecomitalia.it)
17:39:31 <monochrom> This is also why DRY is important.
17:39:41 <[itchyjunk]> right, it makes 2^n calls for all f n it seems
17:39:55 <[itchyjunk]> hmm my function looks pretty dry :x
17:40:09 <monochrom> OK, why are you saying "myMaximum xs" twice?
17:40:27 <monochrom> In the same way my "f (n+1) = f n + f n" says "f n" twice?
17:40:38 <[itchyjunk]> oh
17:42:17 × Akiva quits (~Akiva@user/Akiva) (Ping timeout: 240 seconds)
17:42:20 <monochrom> I have had students who, for other problems, said "f (x:xs) = .... f xs .... f xs .... f xs ...", so, 3 times.
17:42:35 <[itchyjunk]> https://bpa.st/B2XQ
17:42:51 <monochrom> OK good.
17:43:10 <monochrom> Did you also know: 2-argument "max" exists >:)
17:43:20 <[itchyjunk]> no i did not
17:43:46 <monochrom> "Based on your past searches, Amazon thinks you may be interested in..."
17:43:54 Hildegunst joins (~luc@80.248.12.109.rev.sfr.net)
17:45:12 <[itchyjunk]> oh max blah blah returns maximum of two
17:45:33 <[itchyjunk]> right, i saw that. i used somethign similar to find the longest length of nodes in itchyTree
17:46:18 <EvanR_> max is cool, it can potentially return an answer without knowing everything about the arguments, which is important if the arguments are infinite or otherwise inconvenient to get all of
17:47:20 <EvanR_> where as maximum can't return if you give it an empty list or an infinite list
17:47:34 <janus> EvanR_: can't (<>) of Max do the same?
17:48:18 <janus> sconcat only works for NonEmpty lists, so that issue is also taken care of
17:48:48 <janus> NonEmpty also supports infinite lists, i guess
17:49:33 <EvanR_> isn't <> of Max just max
17:50:04 yauhsien joins (~yauhsien@61-231-62-246.dynamic-ip.hinet.net)
17:50:15 <EvanR_> but yeah any combination of maxes also work
17:50:23 <EvanR_> finite
17:50:39 myShoggoth joins (~myShoggot@97-120-67-120.ptld.qwest.net)
17:50:59 <Guest80> does anyone have any experience using Haskell on Mac M1 and VSCode? I'm getting some weird "relocateSection: unexpected internal relocation type 10" errors
17:51:14 <janus> EvanR_: yes https://hackage.haskell.org/package/base-4.16.0.0/docs/src/Data.Semigroup.html#line-238
17:51:27 × Major_Biscuit quits (~MajorBisc@c-001-018-021.client.tudelft.eduvpn.nl) (Ping timeout: 268 seconds)
17:51:39 <janus> Guest80: which version of ghc are you using?
17:51:55 <EvanR_> semigroups in general are cool
17:52:07 <Guest80> 8.10.7
17:52:16 <Guest80> (sorry I'm not used to IRC)
17:52:24 <geekosaur> also which version of llvm?
17:52:47 <geekosaur> (and where did you get it?)
17:53:06 CiaoSen joins (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
17:53:46 <[itchyjunk]> this seems to work : https://bpa.st/PSQA
17:53:47 × Jing quits (~hedgehog@240e:390:7c53:a7e1:84bf:ceba:6161:c1f6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
17:53:56 <Guest80> This is what I get running llvm-gcc --version
17:53:57 <Guest80> Apple clang version 13.0.0 (clang-1300.0.29.30)
17:53:57 <Guest80> Target: arm64-apple-darwin21.2.0
17:54:17 <[itchyjunk]> althought this makes me wonder how you would use the result of improvedMaximum for a function that wants type `a` as parameter and not `Just a`
17:54:26 × Henson quits (~kvirc@107-179-133-201.cpe.teksavvy.com) (Ping timeout: 256 seconds)
17:55:04 × ksqsf quits (~user@2001:da8:d800:611:d4b0:39ea:c0c9:ff22) (Ping timeout: 250 seconds)
17:55:06 <Guest80> I installed my GHC from brew, I believe
17:56:19 × DNH quits (~DNH@2a02:8108:1100:16d8:edf9:3833:cff9:92b3) (Quit: My MacBook has gone to sleep. ZZZzzz…)
17:56:19 <Guest80> from a bit of digging around it looks like there is a missing case in ghc/MachO.hs, in GHC, type 10 seems to be ARM64_RELOC_ADDEND
17:56:32 <Guest80> but I'm not really familiar with the compiler
17:58:13 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 256 seconds)
17:58:46 <fgaz> johnjaye: if you want to see building progress at the module level _and_ disable parallelism you can build with -j1
17:59:17 neurocyte0917090 joins (~neurocyte@IP-195080055024.dynamic.medianet-world.de)
17:59:17 × neurocyte0917090 quits (~neurocyte@IP-195080055024.dynamic.medianet-world.de) (Changing host)
17:59:17 neurocyte0917090 joins (~neurocyte@user/neurocyte)
17:59:57 burnsidesLlama joins (~burnsides@dhcp168-042.wadham.ox.ac.uk)
18:01:19 × Guest5233 quits (~Guest52@80-100-97-100.ip.xs4all.nl) (Ping timeout: 268 seconds)
18:03:53 × johnjaye quits (~pi@154.6.152.74) (Ping timeout: 256 seconds)
18:05:16 <janus> Guest80: i don't think many in here are super familiar with the compiler, you could try asking in #ghc regarding your patch
18:08:30 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds)
18:08:32 <Guest80> janus: thanks, I'll give it a try
18:09:37 × fr33domlover quits (~fr33@141.226.170.143) (Quit: fr33domlover)
18:10:08 <supersven> Guest80: You may want to try a newer version of GHC. AFAIK there were many changes on the AARCH support lately.
18:12:26 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:12:36 <Guest80> supersven: that would be great, I'll try
18:12:57 × Hildegunst quits (~luc@80.248.12.109.rev.sfr.net) (Ping timeout: 256 seconds)
18:13:20 ksqsf joins (~user@2001:da8:d800:611:d4b0:39ea:c0c9:ff22)
18:13:20 Henson joins (~kvirc@107-179-133-201.cpe.teksavvy.com)
18:14:30 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
18:15:52 × Codaraxis_ quits (~Codaraxis@user/codaraxis) (Ping timeout: 250 seconds)
18:15:57 alp joins (~alp@user/alp)
18:16:17 × n3rdy1 quits (~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 240 seconds)
18:16:39 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
18:16:39 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
18:16:39 wroathe joins (~wroathe@user/wroathe)
18:16:42 <Guest80> supersven: by newer version do you mean GHC version 9 or above?
18:17:20 <geekosaur> I would avoid 9.2.1: it has native (instead if LLVM) support but severe bugs were found in its code generation post-release
18:17:27 <geekosaur> 9.0.2 might work better
18:17:36 <geekosaur> *instead of
18:18:37 × ksqsf quits (~user@2001:da8:d800:611:d4b0:39ea:c0c9:ff22) (Ping timeout: 240 seconds)
18:18:39 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
18:19:49 <geekosaur> there was a bit of a bobble with releases through that whole period so 9.0.2 is actually the most recent version of ghc. 9.2.2 is due later this month, I think
18:20:57 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
18:22:31 random-jellyfish joins (~random-je@user/random-jellyfish)
18:22:35 <Guest80> geekosaur: thanks, sorry for the newbie question but how do I install GHC 9.0.2 on an M1? I can't see binaries for M1, do I need to compile it from source?
18:23:38 <geekosaur> in general we use ghcup instead of brew or other platform repo to install ghc these days
18:24:07 <geekosaur> it's possible brew has a cask (I think that's the right term?) for it
18:24:14 Akiva joins (~Akiva@user/Akiva)
18:24:23 <maerwald> also make sure to install 9.2.1, because that's the only one with native codegen... the others require llvm and may cause linker bugs
18:24:44 <geekosaur> native codegen has sign extension bugs and produces bad code :(
18:24:49 <maerwald> GG
18:24:52 <yushyin> but also avoid 9.2.1 :)
18:24:58 <maerwald> ok, so don't install Haskell
18:25:26 <EvanR_> obviously ghc is shit and we should start writing a new compiler
18:25:32 <geekosaur> glwt
18:25:35 <EvanR_> lol
18:25:36 <Guest80> lol
18:26:03 <geekosaur> although sometimes I really wish jhc hadn't dropped off into the ether
18:27:13 × mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 268 seconds)
18:28:38 mikoto-chan joins (~mikoto-ch@213.177.151.239)
18:28:49 × bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 256 seconds)
18:29:17 × Akiva quits (~Akiva@user/Akiva) (Ping timeout: 240 seconds)
18:29:52 n3rdy1 joins (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293)
18:30:23 <Guest80> how do I specify GHC version on GHCup?
18:30:43 <Guest80> the command curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh.  reinstalled 8.10.7 for me
18:30:58 <maerwald> Guest80: https://www.haskell.org/ghcup/guide/#basic-usage
18:31:31 Erutuon joins (~Erutuon@user/erutuon)
18:31:39 ksqsf joins (~user@2001:da8:d800:611:5d60:36d8:624a:54af)
18:33:32 × jkaye quits (~jkaye@2601:281:200:1958:cc69:95b3:52f2:6773) (Ping timeout: 240 seconds)
18:33:55 × mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 256 seconds)
18:35:42 fizzsegfaultbuzz joins (~segfaultf@135-180-0-138.static.sonic.net)
18:35:54 mikoto-chan joins (~mikoto-ch@213.177.151.239)
18:36:14 × ksqsf quits (~user@2001:da8:d800:611:5d60:36d8:624a:54af) (Ping timeout: 250 seconds)
18:36:25 <fizzsegfaultbuzz> so this isn't haskell per-se so feel free to tell me to buzz off, but i thought a programmer with more expertise might have a good answer to this question:
18:38:10 ksqsf joins (~user@2001:da8:d800:611:5d60:36d8:624a:54af)
18:38:27 <fizzsegfaultbuzz> i have a function which maps points onto points (2d points onto 2d points). if i start from a uniform distribution of 2d points and apply f iteratively, i get a "limit" distribution
18:38:31 cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
18:38:52 <fizzsegfaultbuzz> my problem is that f samples extremely un-evenly from the region of the XY plane i am interested in
18:39:07 jgeerds joins (~jgeerds@55d4090e.access.ecotel.net)
18:39:42 <EvanR_> using floats?
18:40:05 fef joins (~thedawn@user/thedawn)
18:40:07 <fizzsegfaultbuzz> so i have X in [0,1] and Y in [0,1] and i want to know what the limit distribution of f looks like in those regions, although i only care about a fixed resolution for X an Y (think of pixelization,...)
18:40:33 <fizzsegfaultbuzz> my two dimensional points are floats, yes
18:40:59 <EvanR_> if you were at [1,2] x [1,2] uniform float would be a lot simpler xD
18:41:02 <fizzsegfaultbuzz> what happens is that f sends nearly all points to (0.5, 0.5) but once in a rare while they will land somewhere else
18:42:47 xb0o2 joins (~xb0o2@user/xb0o2)
18:47:07 × epolanski quits (uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
18:47:31 × deadmarshal quits (~deadmarsh@95.38.230.192) (Ping timeout: 256 seconds)
18:48:13 <tomsmeding> fizzsegfaultbuzz: wouldn't the limit distribution then be just [(0.5, 0.5)]?
18:48:23 <tomsmeding> oh wait no that's not true
18:48:26 <Henson> EvanR_: according to Criterion, I've been able to get a 10-15 times speed increase in my code by using a custom recursive function that uses a strict data type and completely avoids tuples and zipping/unzipping anywhere, as well as inlining one of the functions.
18:48:43 <monochrom> We don't know the actual f enough to tell.
18:48:44 <tomsmeding> fizzsegfaultbuzz: is f random?
18:48:46 × Guest80 quits (~Guest80@host-95-245-231-154.retail.telecomitalia.it) (Quit: Client closed)
18:49:13 <monochrom> I also refuse to believe that a program actually iterates f for infinitely many times and actually hits the limit.
18:49:34 <EvanR_> Henson, by avoid tuples, do you mean the usual tuple type, or any form of tupling (strict tuples too)
18:49:37 <monochrom> There is still a difference between iterating 100 times and the limit.
18:49:50 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
18:50:32 <Henson> EvanR_: any form of tupling. I needed to return 7 numbers from the function, so instead of a 7-tuple, I just made a new datatype with 7 strict Double fields in it.
18:51:03 <monochrom> Sounds like s/tupling/lazy tupling/
18:51:17 × ksqsf quits (~user@2001:da8:d800:611:5d60:36d8:624a:54af) (Ping timeout: 240 seconds)
18:51:23 <EvanR_> that's a 7 tuple
18:51:29 <fizzsegfaultbuzz> i was thinking of creating a table mapping the preimage to the image and then uniformly perturbing the preimage of points which map to locations i like
18:51:47 <fizzsegfaultbuzz> then i would iterate, updating that table
18:52:21 <Henson> EvanR_: ok, well, it's not using a (Double,Double,Double,Double,Double,Double,Double)
18:52:31 <fizzsegfaultbuzz> that would probably create a bit of a fixed error with respect to the limit distribution but that is probably ok
18:52:36 <EvanR_> yeah strict records for that kind of data is often a big win
18:52:52 <EvanR_> like data V2 a = V2 !a !a
18:53:03 <EvanR_> good for Int, Double, etc
18:53:21 <Henson> EvanR_: yes, like that
18:53:27 <Henson> monochrom: right, no more lazy tupling
18:53:52 <EvanR_> another way is to make sure the components of the lazy tuple are evaluated before constructing the tuple
18:54:08 <EvanR_> which might be a pain in the ass or not, hence these types
18:54:09 <Henson> EvanR_: like seq a $ seq b (a,b)
18:54:13 <EvanR_> yes
18:54:13 <tomsmeding> fizzsegfaultbuzz: so your function is [0,1]x[0,1] -> [0,1]x[0,1], and you want the distribution of lim_{n -> \infty} f^n((x, y)) if (x, y) is uniformly chosen from [0,1]x[0,1]?
18:54:22 <EvanR_> Henson, or bang patterns
18:54:39 <Henson> EvanR_: but bang patterns can only be used on the left hand side, correct?
18:54:50 × coot quits (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
18:54:51 × ProfSimm quits (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection)
18:54:54 <EvanR_> yes
18:55:02 <tomsmeding> if so, if f sends most (as in, more than half or something) of the points to (0.5,0.5), wouldn't the limit distribution then not just be {f((0.5,0.5))} ?
18:55:02 <EvanR_> which is often a convenient place to put them
18:55:10 ProfSimm joins (~ProfSimm@176-12-60-137.pon.spectrumnet.bg)
18:55:11 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
18:55:22 coot joins (~coot@89-64-85-93.dynamic.chello.pl)
18:55:30 <fizzsegfaultbuzz> tomsmeding: a bit of a correction there is that i initialize the distribution of points to be uniform
18:55:37 <Henson> EvanR_: I did try seqing the variables before putting them in to a lazy 7-tuple, and that made the code about 2 times faster. But using the strict data type made it 10-15 times faster.
18:55:38 × Kaiepi quits (~Kaiepi@156.34.47.253) (Remote host closed the connection)
18:55:40 <tomsmeding> fizzsegfaultbuzz: is f random or deterministic?
18:55:45 <fizzsegfaultbuzz> tomsmeding: and then iterative application of f leads to a fixed, complex, non-uniform distribution
18:55:48 × ProfSimm quits (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection)
18:55:56 <fizzsegfaultbuzz> f is fixed
18:56:00 <fizzsegfaultbuzz> no, sorry
18:56:03 <fizzsegfaultbuzz> f is stochastic
18:56:05 <tomsmeding> is f random or deterministic? :p
18:56:06 <tomsmeding> ah
18:56:07 ProfSimm joins (~ProfSimm@176-12-60-137.pon.spectrumnet.bg)
18:56:15 <fizzsegfaultbuzz> so there's a sort of a coinflip with each call to f
18:56:15 Kaiepi joins (~Kaiepi@156.34.47.253)
18:56:19 <tomsmeding> so f is a markov chain
18:56:58 <EvanR_> Henson, I bet there was another optimization where your strict 7 tuple was also UNPACKed, hence having the Doubles in the record instead of pointers to something in the record
18:57:41 <Henson> EvanR_: can you elaborate on that? I don't really understand.
18:57:53 <tomsmeding> fizzsegfaultbuzz: is f easily describable, you might be able to compute the limit distribution algebraically
18:59:18 <tomsmeding> fizzsegfaultbuzz: what do you mean when you say "what the limit distribution of f looks like in a particular region"? What the limit distribution looks like when you sample input points only from that region, or what that portion of the limit distribution looks like if you start with fully uniform inputs?
18:59:18 <tomjagua1paw> Henson: I would be very interested to know the performance if you put Strict around your tuple: https://hackage.haskell.org/package/strict-wrapper-0.0.0.0/docs/Data-Strict-Wrapper.html#v:Strict
18:59:21 × chele quits (~chele@user/chele) (Remote host closed the connection)
18:59:38 <EvanR_> most values in haskell are boxed, meaning they are manipulated as a pointer to heap object, containing the value. A tree data type is made of a bunch of pointer to boxes
19:00:03 <EvanR_> a record or tuple is at best just a really flat tree
19:00:19 <EvanR_> unpacking a record field means the value is stored in the record object itself
19:01:22 tomjagua1paw is now known as tomjaguarpaw
19:01:50 <EvanR_> now the verb "unpack" makes no sense to me, coffee failing me
19:02:10 <tomsmeding> "do not pack inside a box"
19:02:27 <monochrom> yeah, analogous to "unbox".
19:02:53 <monochrom> Now, it is the name "Boxing Day" that makes no sense to me, why is it not "Unboxing Day"? >:)
19:02:54 <tomjaguarpaw> Reversing the packing that implicitly happened. Perhaps "nonpack" and "nonbox" would be better.
19:03:09 vicfred joins (~vicfred@user/vicfred)
19:03:31 <tomsmeding> monochrom: because the ones that pack the boxes are always late and still have to do it frantically on the unboxing day?
19:05:20 bontaq joins (~user@ool-45779fe5.dyn.optonline.net)
19:05:51 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:05:54 johnjaye joins (~pi@173.209.65.233)
19:06:17 <monochrom> {-# language Dec26 #-} = implies StrictData, and moreover, adds {-# UNPACK #-} wherever valid. >:)
19:06:44 <tomsmeding> isn't that gibbon
19:06:55 <monochrom> I don't know!
19:06:57 yassernasc joins (~yassernas@ec2-54-87-145-249.compute-1.amazonaws.com)
19:07:19 <tomsmeding> https://github.com/iu-parfunc/gibbon
19:07:26 <tomsmeding> read some papers but never tried
19:07:37 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:dd9f:9c7:a4ae:c7f9)
19:07:42 × cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection)
19:07:55 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 268 seconds)
19:08:18 cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
19:09:01 × darchitect quits (~darchitec@2a00:23c6:3584:df00:8fb:65a6:c5ec:35ce) (Ping timeout: 240 seconds)
19:09:10 <monochrom> Interesting, but Dec26 does not optimize data layout order.
19:09:28 zincy_ joins (~zincy@host86-151-99-97.range86-151.btcentralplus.com)
19:09:28 <tomsmeding> not sure gibbon does either
19:09:52 <tomsmeding> but there is also parallel gibbon, which attemps to get a nice middle ground between serialising everything and still being able to process parts of a tree in parallel
19:10:00 Tuplanolla joins (~Tuplanoll@91-159-68-166.elisa-laajakaista.fi)
19:10:05 <monochrom> It sounds like one of the goals of gibbon. Although, "goal" also means work in progress.
19:10:23 <tomsmeding> ah, could be
19:10:37 × myShoggoth quits (~myShoggot@97-120-67-120.ptld.qwest.net) (Ping timeout: 240 seconds)
19:11:19 × `2jt quits (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net) (Ping timeout: 256 seconds)
19:11:19 × random-jellyfish quits (~random-je@user/random-jellyfish) (Ping timeout: 256 seconds)
19:11:24 Hildegunst joins (~luc@80.248.12.109.rev.sfr.net)
19:13:06 <[itchyjunk]> behold, i am monading https://bpa.st/ZHTQ
19:13:27 <monochrom> That's just functoring.
19:13:53 <EvanR_> just a functor wound
19:14:18 <monochrom> OK OK fine! "I'm Haskelling" can also mean doing just a little part of Haskell.
19:14:50 <monochrom> I'm humaning.
19:15:04 <[itchyjunk]> I am lifting a -> b to Maybe a -> Maybe b hence monading?
19:15:09 <tomsmeding> monochrom: is a cat, I always knew it
19:15:14 <ephemient> :t maybe Nothing . (Just .) -- pointless
19:15:15 <lambdabot> (a1 -> a2) -> Maybe a1 -> Maybe a2
19:15:33 <tomsmeding> [itchyjunk]: that's what fmap does, and fmap is in the Functor typeclass
19:15:41 <tomsmeding> every Monad is a Functor, but a Functor does not make a Monad
19:15:50 <monochrom> Actually that is not entirely pointless. Behind it is the theorem that a lot of fmap's are catamorphisms.
19:16:51 boxscape_ joins (~boxscape_@p4ff0b9d5.dip0.t-ipconnect.de)
19:17:14 <EvanR_> [itchyjunk], lifting an (a -> b) to (f a -> f b) is decidedly functoring
19:17:14 × coot quits (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
19:17:15 <boxscape_> Is there a way to have an export list that exports everything except for a single name (without explicitly listing everything else)?
19:17:34 <tomsmeding> why does everyone have _ today
19:17:42 <boxscape_> It's underscore day
19:18:14 `2jt joins (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net)
19:18:17 <tomsmeding> boxscape_: no, but you can put all the stuff in an internal module, then have the public module be 'module Public (module Internal) where import Internal hiding (stuff)'
19:18:21 × fef quits (~thedawn@user/thedawn) (Ping timeout: 276 seconds)
19:18:23 <monochrom> It's on the wishlists of many people.
19:18:26 <boxscape_> okay, thanks
19:18:32 × Hildegunst quits (~luc@80.248.12.109.rev.sfr.net) (Quit: leaving)
19:19:00 myShoggoth joins (~myShoggot@97-120-67-120.ptld.qwest.net)
19:19:26 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
19:20:29 Akiva joins (~Akiva@user/Akiva)
19:23:37 × `2jt quits (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net) (Ping timeout: 240 seconds)
19:26:49 simendsjo joins (~user@84.211.91.241)
19:28:28 <maerwald> tomsmeding: that produces annoying haddock, doesn't it?
19:28:38 <tomsmeding> yeah it does
19:30:11 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:30:41 o-90 joins (~o-90@gateway/tor-sasl/o-90)
19:32:09 <awpr> `{-# OPTIONS_HADDOCK not-home #-}` on the internal module should help: https://haskell-haddock.readthedocs.io/en/latest/markup.html#module-attributes
19:36:47 × o-90 quits (~o-90@gateway/tor-sasl/o-90) (Remote host closed the connection)
19:36:58 darchitect joins (~darchitec@2a00:23c6:3584:df00:8fb:65a6:c5ec:35ce)
19:39:21 <boxscape_> ah, good to know
19:40:34 Hildegunst joins (~luc@80.248.12.109.rev.sfr.net)
19:41:09 × acidsys quits (~LSD@2.lsd.systems) (Excess Flood)
19:41:49 acidsys joins (~LSD@2.lsd.systems)
19:42:06 Codaraxis joins (~Codaraxis@user/codaraxis)
19:42:06 × Hildegunst quits (~luc@80.248.12.109.rev.sfr.net) (Client Quit)
19:42:27 × darchitect quits (~darchitec@2a00:23c6:3584:df00:8fb:65a6:c5ec:35ce) (Ping timeout: 268 seconds)
19:42:31 Codaraxis_ joins (~Codaraxis@user/codaraxis)
19:42:50 merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
19:42:53 × yauhsien quits (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) (Remote host closed the connection)
19:43:27 × vicfred quits (~vicfred@user/vicfred) (Quit: Leaving)
19:43:45 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
19:44:09 geekosaur joins (~geekosaur@xmonad/geekosaur)
19:44:42 Codaraxis__ joins (~Codaraxis@user/codaraxis)
19:45:26 jkaye joins (~jkaye@2601:281:200:1958:837d:401b:4a0:3b8f)
19:45:40 × ubert quits (~Thunderbi@p200300ecdf0994202d2de89ac733253b.dip0.t-ipconnect.de) (Remote host closed the connection)
19:46:38 × Codaraxis quits (~Codaraxis@user/codaraxis) (Ping timeout: 256 seconds)
19:46:39 × ProfSimm quits (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection)
19:46:58 ProfSimm joins (~ProfSimm@176-12-60-137.pon.spectrumnet.bg)
19:47:38 yauhsien joins (~yauhsien@61-231-62-246.dynamic-ip.hinet.net)
19:47:46 × Codaraxis_ quits (~Codaraxis@user/codaraxis) (Ping timeout: 256 seconds)
19:49:50 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
19:51:33 × ProfSimm quits (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Ping timeout: 256 seconds)
19:52:12 Morrow joins (~Morrow@ool-1826f675.dyn.optonline.net)
19:52:17 × yauhsien quits (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
19:53:07 Guest80 joins (~Guest80@host-95-245-231-154.retail.telecomitalia.it)
19:53:33 × alp quits (~alp@user/alp) (Ping timeout: 268 seconds)
19:55:54 Hildegunst joins (~luc@80.248.12.109.rev.sfr.net)
19:58:37 × Morrow quits (~Morrow@ool-1826f675.dyn.optonline.net) (Ping timeout: 240 seconds)
20:00:34 lavaman joins (~lavaman@98.38.249.169)
20:03:35 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:dd9f:9c7:a4ae:c7f9) (Remote host closed the connection)
20:04:33 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:05:02 × juhp quits (~juhp@128.106.188.82) (Ping timeout: 240 seconds)
20:05:42 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:dd9f:9c7:a4ae:c7f9)
20:07:48 juhp joins (~juhp@128.106.188.82)
20:10:18 darchitect joins (~darchitec@2a00:23c6:3584:df00:8fb:65a6:c5ec:35ce)
20:10:40 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
20:11:11 ec joins (~ec@gateway/tor-sasl/ec)
20:11:57 × myShoggoth quits (~myShoggot@97-120-67-120.ptld.qwest.net) (Ping timeout: 240 seconds)
20:12:08 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
20:14:11 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
20:15:50 × ardell quits (~ardell@user/ardell) (Quit: Konversation terminated!)
20:16:13 × Hildegunst quits (~luc@80.248.12.109.rev.sfr.net) (Ping timeout: 240 seconds)
20:16:37 Pickchea joins (~private@user/pickchea)
20:17:10 × kuribas quits (~user@ptr-25vy0i81lhv78yduvdy.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
20:17:36 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 268 seconds)
20:18:23 Hildegunst joins (~luc@80.248.12.109.rev.sfr.net)
20:19:17 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
20:23:22 ProfSimm joins (~ProfSimm@87.227.196.109)
20:23:35 briandaed joins (~briandaed@185.234.208.208.r.toneticgroup.pl)
20:24:33 × Hildegunst quits (~luc@80.248.12.109.rev.sfr.net) (Quit: leaving)
20:24:48 <fizzsegfaultbuzz> tomsmeding: i think that as long as the starting distribution isn't "strange" the limit distribution is always the same, although that's an informal statement
20:24:55 <fizzsegfaultbuzz> tomsmeding: f is very nonlinear
20:26:41 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
20:28:27 × azimut_ quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
20:28:52 azimut joins (~azimut@gateway/tor-sasl/azimut)
20:29:15 × yassernasc quits (~yassernas@ec2-54-87-145-249.compute-1.amazonaws.com) (Remote host closed the connection)
20:29:33 Erutuon joins (~Erutuon@user/erutuon)
20:30:33 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:35:15 you joins (~ShmoSeph@173-167-220-193-ip-static.hfc.comcastbusiness.net)
20:36:55 johnw joins (~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0)
20:37:25 <tomsmeding> fizzsegfaultbuzz: the limit distribution doesn't change if f lets every point go to every other point with nonzero probability after some number of steps
20:44:58 <tomsmeding> also this is not a buddhabrot, is ot?
20:45:00 <tomsmeding> *it
20:47:00 × Guest80 quits (~Guest80@host-95-245-231-154.retail.telecomitalia.it) (Quit: Client closed)
20:47:18 DNH joins (~DNH@2a02:8108:1100:16d8:edf9:3833:cff9:92b3)
20:48:30 × you quits (~ShmoSeph@173-167-220-193-ip-static.hfc.comcastbusiness.net) (Remote host closed the connection)
20:50:29 × dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4)
21:00:18 coot joins (~coot@89-64-85-93.dynamic.chello.pl)
21:04:03 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:dd9f:9c7:a4ae:c7f9) (Remote host closed the connection)
21:04:04 × TonyStone quits (~TonyStone@2603-7080-8607-c36a-9841-fdb7-086b-ec04.res6.spectrum.com) (Remote host closed the connection)
21:04:05 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
21:04:05 × simendsjo quits (~user@84.211.91.241) (Ping timeout: 256 seconds)
21:06:12 TonyStone joins (~TonyStone@cpe-74-76-51-197.nycap.res.rr.com)
21:09:38 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:09:43 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
21:12:23 vicfred joins (~vicfred@user/vicfred)
21:12:57 × mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 240 seconds)
21:14:17 × _ht quits (~quassel@82-168-34-160.fixed.kpn.net) (Remote host closed the connection)
21:17:49 LukeHoersten joins (~LukeHoers@user/lukehoersten)
21:19:56 alp joins (~alp@user/alp)
21:20:44 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
21:21:09 spaceseller joins (~spacesell@31.147.205.13)
21:21:37 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:23:04 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:25:34 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
21:25:34 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
21:25:34 wroathe joins (~wroathe@user/wroathe)
21:32:20 × zincy_ quits (~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Remote host closed the connection)
21:33:51 <EvanR_> what's going on here
21:35:09 justsomeguy joins (~justsomeg@user/justsomeguy)
21:35:53 <EvanR_> morphisms in a category support this operation, f b c -> f a b -> f a c. What about f a (f b c) -> f a b -> f a c. What's that
21:37:21 <awpr> that looks kinda like a variant on the eval morphism of a cartesian closed category?
21:37:42 <EvanR_> CCC... of course
21:38:40 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
21:39:17 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
21:40:05 <awpr> in a bit more detail: "closed" means you have an internal "exponential" object representing morphisms between two objects: by putting `f b c` inside `f a _`, you're asserting one of the objects of the category is the morphisms between `b` and `c`
21:41:28 <EvanR_> seems like mixing levels in a gnarly way
21:41:52 × briandaed quits (~briandaed@185.234.208.208.r.toneticgroup.pl) (Quit: Lost terminal)
21:42:12 <awpr> yeah, that presentation is restricting the objects of the category to be Type
21:42:46 <awpr> because it uses the same `f` for the Hask-level functions and the exponential object
21:43:22 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 256 seconds)
21:43:40 little_mac joins (~little_ma@2601:410:4300:3ce0:d001:2aa2:4908:56e6)
21:43:41 <awpr> if it's cartesian closed, there's also a cartesian product that can support `forall a. f a (a, a)` and `forall a b c d. f a b -> f c d -> f (a, c) (b, d)`, and an eval morphism `forall a b. f (a, f a b) b`
21:43:58 myShoggoth joins (~myShoggot@97-120-67-120.ptld.qwest.net)
21:44:42 <awpr> if you plug all those together with the given `f a (f b c)` and `f a b`, you can get to `f a c`
21:45:12 <EvanR_> I started talking about f a (f b c) -> f a b -> f a c, or the flip of that. Are products necessary for this to make sense, or are they implied, or
21:45:12 × spaceseller quits (~spacesell@31.147.205.13) (Quit: Leaving)
21:45:28 <EvanR_> like where did the cartesian come from
21:45:46 <EvanR_> or is it just a possible thing to add
21:47:49 <awpr> I had to invoke the product and diagonal morphism `f a (a, a)` to be able to "use the `a` twice" (both in the input of `f a (f b c)` and in the input of `f a b`). categories in general can't automatically do that, so they need some extra structure. I'm not sure whether there's a "smaller" way to gain that power instead of CCCs
21:48:27 <EvanR_> it's funny because a product seems much more mundane than an exponential object, but it's critical
21:48:43 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
21:48:59 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
21:49:24 <awpr> yeah, I was just looking at the definition of a closed category, and it looks like it doesn't even involve an apply morphism, just an internal composition `f (f a b)
21:49:54 <EvanR_> I think you got cut off
21:50:20 <awpr> `f (f b c) (f (f a b) (f a c))` (still abusing `f` as both hom-set and internal-hom)
21:50:39 <EvanR_> oh that's confusing
21:51:03 <awpr> [for some reason I made enter be adjacent to backspace on my keyboard layout...)
21:51:31 <EvanR_> OK placed next to ABORT
21:51:46 <EvanR_> nice UI/UX principle
21:53:01 <awpr> try plugging `->` in for `f`: `(->) ((->) b c) ((->) ((->) a b) ((->) a c))`, or in infix form, `(b -> c) -> (a -> b) -> (a -> c)`
21:53:42 <EvanR_> there are two kinds of f going on right?
21:53:53 <geekosaur> I noticed the other one you had earlier looked suspiciously like an Arrow
21:55:12 <awpr> in general, yeah, there would be two different ones. but in `Set` the hom-set and the internal hom are exactly the same, so if we're specializing to Haskell functions they both collapse onto functions anyway
21:55:13 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:55:16 <EvanR_> :t app
21:55:17 <lambdabot> ArrowApply a => a (a b c, b) c
21:55:54 <EvanR_> awpr, haskell as a specialization of set which itself a confusing specialization is confusing xD
21:55:58 merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
21:56:50 <EvanR_> speaking of which, I guess we assumed we're talking about morphisms which are haskell values of a type implementing Category
21:57:42 <EvanR_> this automatically brings in Hask somehow?
21:57:59 <EvanR_> if so, is there a sane way to work with other kinds of categories
21:58:28 <int-e> Heh, that type is nearly unreadable.
21:58:44 <awpr> yeah, I think that's a reasonable assumption as long as we're pretending Hask = Set. ignoring enriched category theory, the morphisms are always a set, and things like functors' actions on morphisms are functions
21:59:12 <int-e> app :: ArrowApply (~>) => (b ~> c, b) ~> c
21:59:24 <EvanR_> ah
21:59:59 <EvanR_> ok yeah, in that type there, b and c are haskell types
22:00:24 <EvanR_> what if you wanted them to be restricted to some special kind of types
22:00:27 <awpr> the place we're artificially limiting things is by identifying the objects with Type, by reusing the same `f` in both levels
22:00:32 <awpr> yeah, that
22:01:00 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
22:01:10 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
22:02:01 <EvanR_> *b and c are any arbitrary haskell types (I guess of compatible kind)
22:03:07 <awpr> because we have `something :: f _ _`, then `f :: k1 -> k1 -> Type`, and because we have `f _ (f _ _)`, `f :: k2 -> k2 -> k2`, which forces everything to be `Type`. that's where it becomes important to distinguish the hom-set `f _ _` from the internal hom object which we've also been calling `f _ _`
22:03:17 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
22:04:57 <awpr> so an extra step towards real CT would be `eval :: f (_Product a (_Exp a b)) b` etc., with some form of type family or fundeps or something to tell you what `_Product` and `_Exp` should be
22:06:22 × wombat875 quits (~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Quit: WeeChat 2.2-dev)
22:06:45 × shapr quits (~user@2601:7c0:c37c:46d0:d31:791c:8c24:e54b) (Remote host closed the connection)
22:06:49 bitmapper joins (uid464869@id-464869.lymington.irccloud.com)
22:06:58 shapr joins (~user@2601:7c0:c37c:46d0:d31:791c:8c24:e54b)
22:09:49 × kaph quits (~kaph@net-2-47-208-144.cust.vodafonedsl.it) (Ping timeout: 256 seconds)
22:12:56 <EvanR_> so an _Exp is better than just implementing an apply function?
22:13:29 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:13:32 × Megant_ quits (megant@user/megant) (Ping timeout: 268 seconds)
22:14:39 Megant joins (megant@user/megant)
22:15:27 <awpr> having the exponential object be distinct from the Haskell-value-level representation of morphisms is what lets you use something other than Type for the objects: since Haskell values' types are of kind Type, making the exponential object the same as the type of morphisms forces the objects to be Types
22:15:50 <EvanR_> oh
22:18:00 × cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection)
22:18:41 cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
22:27:29 × cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection)
22:30:47 cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
22:32:19 × fendor quits (~fendor@77.119.169.94.wireless.dyn.drei.com) (Remote host closed the connection)
22:32:26 × shapr quits (~user@2601:7c0:c37c:46d0:d31:791c:8c24:e54b) (Remote host closed the connection)
22:32:39 shapr joins (~user@2601:7c0:c37c:46d0:d31:791c:8c24:e54b)
22:35:46 merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
22:37:01 × Sgeo_ quits (~Sgeo@user/sgeo) (Ping timeout: 256 seconds)
22:38:47 × coot quits (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
22:39:37 Sgeo joins (~Sgeo@user/sgeo)
22:40:02 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
22:41:39 × Topsi quits (~Tobias@dyndsl-095-033-018-085.ewe-ip-backbone.de) (Read error: Connection reset by peer)
22:42:32 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:dd9f:9c7:a4ae:c7f9)
22:42:34 <monochrom> Hahaha, Oleg wrote a Scheme syntax-rule for the CPS transform, and commented "the standard CPS transformation written in Latin rather than in Greek"
22:42:44 <monochrom> https://okmij.org/ftp/Scheme/callcc-calc-page.html
22:43:39 × cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection)
22:43:44 × burnsidesLlama quits (~burnsides@dhcp168-042.wadham.ox.ac.uk) (Remote host closed the connection)
22:44:22 × chomwitt quits (~chomwitt@2a02:587:dc0b:200:12c3:7bff:fe6d:d374) (Ping timeout: 268 seconds)
22:44:26 cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
22:44:43 Sgeo_ joins (~Sgeo@user/sgeo)
22:46:57 × Sgeo quits (~Sgeo@user/sgeo) (Ping timeout: 240 seconds)
22:52:51 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
22:54:35 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:dd9f:9c7:a4ae:c7f9) (Remote host closed the connection)
22:56:20 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
23:01:57 × little_mac quits (~little_ma@2601:410:4300:3ce0:d001:2aa2:4908:56e6) (Ping timeout: 240 seconds)
23:05:50 little_mac joins (~little_ma@2601:410:4300:3ce0:d001:2aa2:4908:56e6)
23:07:09 × alMalsamo quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 276 seconds)
23:09:59 merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
23:12:24 waleee joins (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
23:17:06 namkeleser joins (~namkelese@124.188.192.57)
23:19:29 × perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4)
23:20:05 × Codaraxis__ quits (~Codaraxis@user/codaraxis) (Ping timeout: 256 seconds)
23:20:35 × szkl_ quits (uid110435@id-110435.uxbridge.irccloud.com) ()
23:21:08 szkl_ joins (uid110435@id-110435.uxbridge.irccloud.com)
23:21:25 × szkl_ quits (uid110435@id-110435.uxbridge.irccloud.com) (Client Quit)
23:21:54 szkl joins (uid110435@id-110435.uxbridge.irccloud.com)
23:24:32 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
23:25:53 kaph joins (~kaph@net-2-47-208-144.cust.vodafonedsl.it)
23:26:45 alMalsamo joins (~alMalsamo@gateway/tor-sasl/almalsamo)
23:28:09 `2jt joins (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net)
23:28:15 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
23:30:20 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:dd9f:9c7:a4ae:c7f9)
23:30:39 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
23:31:28 AlexNoo_ joins (~AlexNoo@94.233.241.14)
23:32:42 × little_mac quits (~little_ma@2601:410:4300:3ce0:d001:2aa2:4908:56e6) (Remote host closed the connection)
23:33:32 × AlexZenon quits (~alzenon@178.34.162.42) (Ping timeout: 240 seconds)
23:33:56 × cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 250 seconds)
23:34:32 × Alex_test quits (~al_test@178.34.162.42) (Ping timeout: 240 seconds)
23:34:48 × AlexNoo quits (~AlexNoo@178.34.162.42) (Ping timeout: 250 seconds)
23:35:46 × waleee quits (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Quit: WeeChat 3.4)
23:36:28 waleee joins (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
23:39:11 Alex_test joins (~al_test@94.233.241.14)
23:39:28 AlexZenon joins (~alzenon@94.233.241.14)
23:43:19 × merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
23:49:59 × DNH quits (~DNH@2a02:8108:1100:16d8:edf9:3833:cff9:92b3) (Quit: Textual IRC Client: www.textualapp.com)
23:50:24 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds)
23:53:48 burnsidesLlama joins (~burnsides@dhcp168-042.wadham.ox.ac.uk)
23:55:17 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 268 seconds)
23:56:55 × Akiva quits (~Akiva@user/Akiva) (Ping timeout: 256 seconds)
23:57:42 ski joins (~ski@remote11.chalmers.se)
23:58:58 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
23:58:58 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
23:58:58 wroathe joins (~wroathe@user/wroathe)
23:59:11 × burnsidesLlama quits (~burnsides@dhcp168-042.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
23:59:55 × max22- quits (~maxime@2a01cb08833598003263d82d70b82807.ipv6.abo.wanadoo.fr) (Remote host closed the connection)

All times are in UTC on 2022-01-19.