2021/12/21

2021-12-21 00:00:08 +0100kupi(uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-21 00:00:12 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b)
2021-12-21 00:00:39 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-21 00:01:15 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 00:01:42 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: closed)
2021-12-21 00:01:48 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 00:02:20 +0100ksqsf(~user@134.209.106.31)
2021-12-21 00:03:39 +0100 <pfurla-matrix> I am adopting https://inutile.club/estatis/falso/ for all my logic needs https://inutile.club/estatis/falso/
2021-12-21 00:04:02 +0100 <EvanR> prop_huh x = not (0 < x && x < 0.001) -- passes 10000 tests
2021-12-21 00:05:30 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b) (Ping timeout: 260 seconds)
2021-12-21 00:05:35 +0100justsomeguy(~justsomeg@user/justsomeguy)
2021-12-21 00:06:57 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 240 seconds)
2021-12-21 00:07:04 +0100 <EvanR> ok, it doesn't pass 1000000 tests
2021-12-21 00:08:03 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-21 00:11:49 +0100 <janus> that's why hedgehog is better ;)
2021-12-21 00:11:55 +0100 <janus> @check \x -> not $ 0 < x && x < 0.1
2021-12-21 00:11:57 +0100 <lambdabot> +++ OK, passed 100 tests.
2021-12-21 00:15:00 +0100typeswitch(~textual@2001:8a0:da87:e500:68bf:9d74:2322:5a5b)
2021-12-21 00:15:57 +0100zer0bitz(~zer0bitz@2001:2003:f444:a000:81c1:fdbc:2b2:4c4a) (Read error: Connection reset by peer)
2021-12-21 00:16:09 +0100 <Christoph[m]> <janus> "why can't i coerce Int32 -> Int..." <- In Which, Int32 -> Int is instanciated as TryFrom:
2021-12-21 00:16:09 +0100 <Christoph[m]> https://hackage.haskell.org/package/witch-0.3.4.1/docs/Witch.html
2021-12-21 00:16:10 +0100 <Christoph[m]> But it doesn't say why.
2021-12-21 00:16:37 +0100python476(~user@88.160.31.174) (Ping timeout: 240 seconds)
2021-12-21 00:16:59 +0100 <EvanR> Int32 isn't guaranteed promotable to Int
2021-12-21 00:17:19 +0100 <Axman6> Int is defined as being at least 30 bits
2021-12-21 00:17:19 +0100 <EvanR> there's multiverse where haskell runs on 30 bit computers
2021-12-21 00:17:50 +0100 <Axman6> well, not quite, there was some space left for tagging if implementations wanted to do that
2021-12-21 00:17:56 +0100 <euouae> lisp machines
2021-12-21 00:17:59 +0100 <Axman6> having Int take up one Word would be quite nice
2021-12-21 00:18:02 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2021-12-21 00:18:04 +0100 <euouae> do the tagging too
2021-12-21 00:18:26 +0100 <Axman6> GHC does too, but on pointers, since everything is word aligned
2021-12-21 00:19:06 +0100 <euouae> has anyone looked into F*? I've been learning more of it recently and it's fun
2021-12-21 00:19:16 +0100 <euouae> The language F*
2021-12-21 00:20:04 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-21 00:21:45 +0100 <janus> it seems really focused on cryptography
2021-12-21 00:21:48 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: This computer has gone to sleep)
2021-12-21 00:24:45 +0100 <euouae> From what I've learned so far I can do some elementary proofs. So a property such as (reverse (reverse l)) == l can be proven in the type system
2021-12-21 00:25:21 +0100 <euouae> and so you wouldn't need e.g. hedgehog to run tests on such a property, because you've proven it true
2021-12-21 00:26:21 +0100 <janus> right, it has dependent types. some people want haskell to have this also
2021-12-21 00:26:48 +0100 <EvanR> funny "workflow" in idris is to write the property as a type at the top level, the definition of it is the proof, checked by the type checker
2021-12-21 00:27:44 +0100 <EvanR> you may or may not run or use the value
2021-12-21 00:28:08 +0100 <euouae> the other component of F* is that it uses the Z3 theorem prover, and that means you can get automation and other things, and I think Idris does not have that.
2021-12-21 00:28:24 +0100 <euouae> There's also other projects like Liquid Haskell? Lean, ...
2021-12-21 00:30:00 +0100 <euouae> so that's the sort of thing that blew my mind because when you're trying to prove properties for your functions, the implementation matters, and the "black box abstraction" of functions is out the window!
2021-12-21 00:30:13 +0100AlexNoo_(~AlexNoo@178.34.150.63)
2021-12-21 00:30:57 +0100ksqsf(~user@134.209.106.31)
2021-12-21 00:31:59 +0100 <euouae> but ok -- not much enthusiasm. I really hope to learn more because I'm fascinated about the application of extracting correct programs.
2021-12-21 00:32:17 +0100AlexZenon(~alzenon@178.34.163.82) (Ping timeout: 240 seconds)
2021-12-21 00:32:38 +0100 <EvanR> that's what some people say, you can't hide implementation details with dependent types
2021-12-21 00:33:04 +0100 <EvanR> also it seems like there might be like 5 people on earth who know what they're doing with dependent types
2021-12-21 00:33:24 +0100Alex_test(~al_test@178.34.163.82) (Ping timeout: 256 seconds)
2021-12-21 00:33:32 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b)
2021-12-21 00:34:17 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 252 seconds)
2021-12-21 00:34:21 +0100AlexNoo(~AlexNoo@178.34.163.82) (Ping timeout: 268 seconds)
2021-12-21 00:34:41 +0100 <justsomeguy> How can I seek to the beginning of an open file handle?
2021-12-21 00:35:29 +0100 <EvanR> hSeek
2021-12-21 00:35:34 +0100 <EvanR> in System.IO
2021-12-21 00:35:44 +0100 <Henson> tomsmeding: vscode seems to be a pretty similar experience Atom, and HLS support was very easy to get working.
2021-12-21 00:36:14 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 256 seconds)
2021-12-21 00:37:02 +0100AlexZenon(~alzenon@178.34.150.63)
2021-12-21 00:37:42 +0100Alex_test(~al_test@178.34.150.63)
2021-12-21 00:38:23 +0100AlexNoo_AlexNoo
2021-12-21 00:38:37 +0100kranius(~kranius@user/kranius) (Ping timeout: 240 seconds)
2021-12-21 00:38:50 +0100typeswitch(~textual@2001:8a0:da87:e500:68bf:9d74:2322:5a5b) (Changing host)
2021-12-21 00:38:50 +0100typeswitch(~textual@user/typeswitch)
2021-12-21 00:39:17 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b) (Ping timeout: 268 seconds)
2021-12-21 00:40:15 +0100kupi(uid212005@id-212005.hampstead.irccloud.com)
2021-12-21 00:47:01 +0100Jing(~hedgehog@2604:a840:3::103b) (Remote host closed the connection)
2021-12-21 00:47:42 +0100Jing(~hedgehog@2604:a840:3::103b)
2021-12-21 00:50:01 +0100justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3)
2021-12-21 00:51:02 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b)
2021-12-21 00:55:17 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b) (Ping timeout: 240 seconds)
2021-12-21 00:56:37 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 240 seconds)
2021-12-21 00:57:12 +0100euouae(~euouae@user/euouae) (Ping timeout: 256 seconds)
2021-12-21 00:57:17 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2021-12-21 00:58:12 +0100ksqsf(~user@134.209.106.31)
2021-12-21 00:58:42 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-12-21 01:00:15 +0100 <zero> f 0 = 1 ; f n = n + n * f (pred n) -- should i expect ghci to be faster at running `f x` after i run `f (x-1)` ?
2021-12-21 01:00:28 +0100 <Axman6> no
2021-12-21 01:00:41 +0100 <Axman6> there is no automatic memoisation in Haskell
2021-12-21 01:00:47 +0100 <Axman6> (*)
2021-12-21 01:01:32 +0100 <zero> what about `map f [0..] ; f !! x` ?
2021-12-21 01:01:38 +0100 <zero> i mean
2021-12-21 01:02:00 +0100 <zero> `fx = map f [0..] ; fx !! x`
2021-12-21 01:02:06 +0100 <Axman6> yes
2021-12-21 01:02:15 +0100 <zero> got it
2021-12-21 01:02:17 +0100euouae(~euouae@user/euouae)
2021-12-21 01:02:21 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-21 01:02:22 +0100 <Axman6> because fx is still in scope
2021-12-21 01:02:54 +0100 <geekosaur> and it behaves like a constant, not a function
2021-12-21 01:02:57 +0100 <monochrom> Memoization happens if you go "fs = 1 : map (\n -> n + fs !! (pred n)) [1..]
2021-12-21 01:03:00 +0100 <Axman6> uh, well, actually if you ran f n, f (n-1) wouldn't be any faster
2021-12-21 01:03:00 +0100 <zero> question #2: why can't there be automatic memoisation in Haskell? :p
2021-12-21 01:03:26 +0100 <geekosaur> how much of your memory do you want to spend on inadvertently memoized stuff you'll never look at again?
2021-12-21 01:03:31 +0100 <Axman6> because it's generally a bad idea that leads to slow programs that use a lot of RAM
2021-12-21 01:03:33 +0100 <monochrom> It is a pessimization.
2021-12-21 01:04:02 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-12-21 01:04:11 +0100 <monochrom> Imagine a web server that memoizations all webscale transactions in the past.
2021-12-21 01:04:32 +0100acidjnk(~acidjnk@p200300d0c7271e5430c1f3c646e9c4d1.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2021-12-21 01:04:34 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2021-12-21 01:04:37 +0100 <Axman6> Why does that immediately make me thing of blockchain...
2021-12-21 01:04:39 +0100 <Axman6> think*
2021-12-21 01:04:47 +0100 <monochrom> :)
2021-12-21 01:05:54 +0100 <Axman6> zero: if you had fibs = 0:1:zipWith (+) fibs (tail fibs), then fibs !! n would compute fibs !! (n-1) for you
2021-12-21 01:05:54 +0100 <zero> what about annotating? like `{-# MEMO f #-}`
2021-12-21 01:06:10 +0100 <Axman6> why annotate when you can just use a function?
2021-12-21 01:06:15 +0100max22-(~maxime@2a01cb0883359800b82a50c14ca08cd9.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
2021-12-21 01:06:17 +0100 <Axman6> @hoogle memo
2021-12-21 01:06:18 +0100 <lambdabot> Data.MemoTrie memo :: HasTrie t => (t -> a) -> t -> a
2021-12-21 01:06:18 +0100 <lambdabot> FRP.Elerea.Param memo :: Signal a -> SignalGen p (Signal a)
2021-12-21 01:06:18 +0100 <lambdabot> FRP.Elerea.Simple memo :: Signal a -> SignalGen (Signal a)
2021-12-21 01:06:50 +0100 <Axman6> hmmmm could Ed's discrimination library be used for memoisation?
2021-12-21 01:08:28 +0100 <Axman6> should be trivial actually...
2021-12-21 01:08:28 +0100euouae(~euouae@user/euouae) (Read error: Connection reset by peer)
2021-12-21 01:08:49 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b)
2021-12-21 01:11:04 +0100 <zero> @.@
2021-12-21 01:11:05 +0100 <lambdabot> Maybe you meant: @ .
2021-12-21 01:11:45 +0100 <zero> i would have to invest some time in understanding that
2021-12-21 01:12:42 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3)
2021-12-21 01:13:40 +0100 <mrianbloom> @Janus, thanks for that suggestion. It worked but I also sent myself in cabal hell for an hour.
2021-12-21 01:13:40 +0100 <lambdabot> Unknown command, try @list
2021-12-21 01:13:48 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b) (Ping timeout: 268 seconds)
2021-12-21 01:15:37 +0100 <Axman6> s/trivial/"trivial"
2021-12-21 01:16:19 +0100 <mrianbloom> I'm out now.
2021-12-21 01:20:19 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
2021-12-21 01:23:10 +0100 <zero> ok what abut this one: Data.Map.Strict.fromList [(1,let fibs = 0 : 1 : zipWith (+) fibs (tail fibs) in fibs)]
2021-12-21 01:23:57 +0100 <zero> should I expect ghci to give me `mymap M.! 1 !! x` faster after (x-1)?
2021-12-21 01:24:01 +0100 <zero> because it's not
2021-12-21 01:25:38 +0100lragyslmtdwnbt^(~lragyslmt@64.253.22.77)
2021-12-21 01:27:17 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-21 01:27:17 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-21 01:27:17 +0100wroathe(~wroathe@user/wroathe)
2021-12-21 01:27:34 +0100 <jkaye> Why would it?
2021-12-21 01:27:35 +0100 <typeswitch> should be, `mymap M.! 1` should be the same `fibs` every time
2021-12-21 01:28:12 +0100 <zero> actually i'm not even seeing any improvement on fibs !! x... strange
2021-12-21 01:28:21 +0100 <typeswitch> seems a bit convoluted to put it in a map tho
2021-12-21 01:29:26 +0100 <geekosaur> if you're doing this in ghci it may not work because it relies on the monomorphism restriction
2021-12-21 01:29:48 +0100 <zero> geekosaur: how's that?
2021-12-21 01:29:51 +0100 <geekosaur> otherwise it's secretly a function because your numbers are Num a => a
2021-12-21 01:30:05 +0100 <zero> ah..
2021-12-21 01:30:54 +0100 <zero> ok it works now
2021-12-21 01:31:00 +0100 <zero> thanks geekosaur
2021-12-21 01:34:22 +0100 <zero> that's an important detail
2021-12-21 01:34:36 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
2021-12-21 01:36:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-12-21 01:40:12 +0100sander(~sander@user/sander) (Quit: So long! :))
2021-12-21 01:41:34 +0100sander(~sander@user/sander)
2021-12-21 01:42:15 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b)
2021-12-21 01:44:15 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
2021-12-21 01:45:47 +0100Tuplanolla(~Tuplanoll@91-159-68-169.elisa-laajakaista.fi) (Quit: Leaving.)
2021-12-21 01:47:26 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b) (Ping timeout: 252 seconds)
2021-12-21 01:49:15 +0100 <mrianbloom> So if I want to use linear types do I need to replace every monad usage with the monad definition from Prelude.Linear?
2021-12-21 01:52:48 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 276 seconds)
2021-12-21 01:53:18 +0100 <mrianbloom> What is the right way to override Prelude by using mixins?
2021-12-21 01:53:43 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2021-12-21 01:54:50 +0100Erutuon(~Erutuon@user/erutuon)
2021-12-21 01:54:51 +0100Morrow(~quassel@bzq-110-168-31-106.red.bezeqint.net) (Read error: Connection reset by peer)
2021-12-21 01:55:00 +0100aeka(~aeka@pool-100-4-208-71.albyny.fios.verizon.net) (Ping timeout: 256 seconds)
2021-12-21 01:55:25 +0100Morrow(~quassel@bzq-110-168-31-106.red.bezeqint.net)
2021-12-21 01:55:45 +0100Erutuon(~Erutuon@user/erutuon) (Client Quit)
2021-12-21 01:56:34 +0100Erutuon(~Erutuon@user/erutuon)
2021-12-21 01:57:10 +0100aeka(~aeka@pool-100-4-208-71.albyny.fios.verizon.net)
2021-12-21 01:57:18 +0100 <geekosaur> I don't think mixins will work. You need to use Prelude.Linear in place of Prelude
2021-12-21 01:58:48 +0100Morrow(~quassel@bzq-110-168-31-106.red.bezeqint.net) (Remote host closed the connection)
2021-12-21 01:59:04 +0100 <mrianbloom> Thanks, so is the right way to make base-noprelude and linear-base dependencies?
2021-12-21 01:59:17 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b)
2021-12-21 02:01:37 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 240 seconds)
2021-12-21 02:02:15 +0100Morrow(~quassel@bzq-110-168-31-106.red.bezeqint.net)
2021-12-21 02:02:41 +0100 <mrianbloom> My hope is to avoid changing the header of every file.
2021-12-21 02:03:32 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b) (Ping timeout: 240 seconds)
2021-12-21 02:03:46 +0100 <geekosaur> I don't think you will succeed
2021-12-21 02:04:10 +0100 <geekosaur> the documented use is to {-# LANGUAGE NoImplicitPrelude #-} and import Prelude.Linear
2021-12-21 02:04:25 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:84c9:5514:9bd3:b2f5)
2021-12-21 02:04:49 +0100 <geekosaur> if you want it to be more transparent, I guess you'll have to talk to the folks at Tweag
2021-12-21 02:05:28 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-21 02:05:57 +0100 <geekosaur> but I'm not sure they want it to be transparent because too much would break
2021-12-21 02:06:24 +0100 <geekosaur> you really need to start out with linear types in mind, from what I am seeing
2021-12-21 02:08:18 +0100Morrow(~quassel@bzq-110-168-31-106.red.bezeqint.net) (Remote host closed the connection)
2021-12-21 02:08:27 +0100 <mrianbloom> Alright, I'm actually trying to integrate them into the futhark wrapper, futhask, to try and eliminate gpu space leaks, but I'll try it with a very simple example first.
2021-12-21 02:08:30 +0100 <geekosaur> they don't even use compatible module names (Monad is in Control.Functor.Linear)
2021-12-21 02:08:37 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:84c9:5514:9bd3:b2f5) (Ping timeout: 240 seconds)
2021-12-21 02:08:45 +0100Morrow(~quassel@bzq-110-168-31-106.red.bezeqint.net)
2021-12-21 02:08:48 +0100 <mrianbloom> I see.
2021-12-21 02:09:30 +0100machinedgod(~machinedg@24.105.81.50)
2021-12-21 02:09:42 +0100Morrow(~quassel@bzq-110-168-31-106.red.bezeqint.net) (Remote host closed the connection)
2021-12-21 02:09:58 +0100 <mrianbloom> I'll try a common import module for Monad, MonadIO etc.
2021-12-21 02:10:08 +0100Morrow(~quassel@bzq-110-168-31-106.red.bezeqint.net)
2021-12-21 02:10:32 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-12-21 02:11:19 +0100Morrow(~quassel@bzq-110-168-31-106.red.bezeqint.net) (Remote host closed the connection)
2021-12-21 02:11:48 +0100Morrow(~quassel@bzq-110-168-31-106.red.bezeqint.net)
2021-12-21 02:11:52 +0100Morrow(~quassel@bzq-110-168-31-106.red.bezeqint.net) (Remote host closed the connection)
2021-12-21 02:13:37 +0100lavaman(~lavaman@98.38.249.169)
2021-12-21 02:13:53 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:84c9:5514:9bd3:b2f5)
2021-12-21 02:13:57 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b)
2021-12-21 02:17:17 +0100danso(~danso@d67-193-121-2.home3.cgocable.net) (Ping timeout: 240 seconds)
2021-12-21 02:17:20 +0100[_](~itchyjunk@user/itchyjunk/x-7353470)
2021-12-21 02:17:57 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds)
2021-12-21 02:17:57 +0100trollRoger(~trollroge@ti0017q161-1333.bb.online.no)
2021-12-21 02:18:14 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-12-21 02:18:17 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b) (Ping timeout: 240 seconds)
2021-12-21 02:22:26 +0100chomwitt(~chomwitt@2a02:587:dc19:a500:12c3:7bff:fe6d:d374) (Ping timeout: 245 seconds)
2021-12-21 02:22:37 +0100aeka(~aeka@pool-100-4-208-71.albyny.fios.verizon.net) (Ping timeout: 240 seconds)
2021-12-21 02:25:13 +0100ksqsf(~user@134.209.106.31)
2021-12-21 02:28:45 +0100[_][itchyjunk]
2021-12-21 02:29:57 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 240 seconds)
2021-12-21 02:31:38 +0100aeka(~aeka@pool-100-4-208-71.albyny.fios.verizon.net)
2021-12-21 02:32:32 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b)
2021-12-21 02:38:18 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b) (Ping timeout: 268 seconds)
2021-12-21 02:41:22 +0100aeka(~aeka@pool-100-4-208-71.albyny.fios.verizon.net) (Ping timeout: 268 seconds)
2021-12-21 02:41:29 +0100trollRoger(~trollroge@ti0017q161-1333.bb.online.no) (Quit: WeeChat 3.4)
2021-12-21 02:41:39 +0100aeka(~aeka@2606:6080:1001:d:c59c:6e9a:3115:6f2f)
2021-12-21 02:45:09 +0100danso(~danso@d67-193-121-2.home3.cgocable.net)
2021-12-21 02:47:50 +0100bollu(uid233390@id-233390.helmsley.irccloud.com)
2021-12-21 02:49:01 +0100hololeap_(~hololeap@user/hololeap)
2021-12-21 02:49:31 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b)
2021-12-21 02:49:59 +0100hololeap(~hololeap@user/hololeap) (Read error: Connection reset by peer)
2021-12-21 02:50:28 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving)
2021-12-21 02:53:57 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b) (Ping timeout: 240 seconds)
2021-12-21 02:59:16 +0100danso(~danso@d67-193-121-2.home3.cgocable.net) (Ping timeout: 268 seconds)
2021-12-21 02:59:36 +0100waleee(~waleee@h-98-128-229-110.NA.cust.bahnhof.se) (Ping timeout: 256 seconds)
2021-12-21 02:59:39 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 02:59:40 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 03:01:56 +0100danso(~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009)
2021-12-21 03:02:20 +0100johnw(~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0) (Ping timeout: 268 seconds)
2021-12-21 03:02:54 +0100Guest17(~Guest17@2001:19f0:7001:3383:5400:3ff:fea2:fee5)
2021-12-21 03:05:57 +0100danso(~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Ping timeout: 240 seconds)
2021-12-21 03:07:14 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b)
2021-12-21 03:07:17 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Ping timeout: 268 seconds)
2021-12-21 03:07:28 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
2021-12-21 03:09:04 +0100typeswitch(~textual@user/typeswitch) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-12-21 03:11:42 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b) (Ping timeout: 260 seconds)
2021-12-21 03:13:29 +0100berberman_(~berberman@user/berberman)
2021-12-21 03:14:32 +0100berberman(~berberman@user/berberman) (Ping timeout: 240 seconds)
2021-12-21 03:15:11 +0100Guest26(~Guest26@209.141.167.143)
2021-12-21 03:15:35 +0100Guest26(~Guest26@209.141.167.143) (Client Quit)
2021-12-21 03:19:14 +0100Guest23(~Guest23@cpec025e909512d-cm00fc8d8c9620.cpe.net.cable.rogers.com)
2021-12-21 03:19:19 +0100ksqsf(~user@134.209.106.31)
2021-12-21 03:21:48 +0100Guest23(~Guest23@cpec025e909512d-cm00fc8d8c9620.cpe.net.cable.rogers.com) (Client Quit)
2021-12-21 03:24:32 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 256 seconds)
2021-12-21 03:25:14 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-12-21 03:25:14 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2021-12-21 03:25:14 +0100finn_elijaFinnElija
2021-12-21 03:33:17 +0100jkaye(~jkaye@2601:281:8300:7530:bdb2:1444:46f4:adc7) (Ping timeout: 240 seconds)
2021-12-21 03:40:59 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b)
2021-12-21 03:41:29 +0100finstern1sfinsternis
2021-12-21 03:45:37 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b) (Ping timeout: 240 seconds)
2021-12-21 03:46:14 +0100Morrow(~quassel@bzq-110-168-31-106.red.bezeqint.net)
2021-12-21 03:48:11 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
2021-12-21 03:49:37 +0100danso(~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009)
2021-12-21 03:52:00 +0100finsternis(~X@23.226.237.192) (Quit: leaving)
2021-12-21 03:52:40 +0100finsternis(~X@23.226.237.192)
2021-12-21 03:52:52 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2021-12-21 03:53:48 +0100slowButPresent(~slowButPr@user/slowbutpresent)
2021-12-21 03:55:21 +0100xff0x(~xff0x@2001:1a81:5214:2e00:3a40:685:1119:99d6) (Ping timeout: 245 seconds)
2021-12-21 03:57:24 +0100xff0x(~xff0x@2001:1a81:5251:6900:31bd:c473:a01b:db9e)
2021-12-21 03:57:27 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2021-12-21 04:00:55 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 268 seconds)
2021-12-21 04:02:01 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2021-12-21 04:07:06 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-21 04:12:57 +0100mikail(~mikail@2a02:c7f:bc1f:4a00:fc9:3da5:3e1e:8303)
2021-12-21 04:13:30 +0100ksqsf(~user@134.209.106.31)
2021-12-21 04:14:55 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b)
2021-12-21 04:17:14 +0100Guest17(~Guest17@2001:19f0:7001:3383:5400:3ff:fea2:fee5) (Quit: Client closed)
2021-12-21 04:18:06 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2021-12-21 04:18:22 +0100td_(~td@94.134.91.10) (Ping timeout: 256 seconds)
2021-12-21 04:18:26 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 260 seconds)
2021-12-21 04:18:27 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2021-12-21 04:19:17 +0100mikail(~mikail@2a02:c7f:bc1f:4a00:fc9:3da5:3e1e:8303) (Ping timeout: 240 seconds)
2021-12-21 04:19:47 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b) (Ping timeout: 252 seconds)
2021-12-21 04:20:06 +0100td_(~td@94.134.91.4)
2021-12-21 04:21:41 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-12-21 04:23:42 +0100lragyslmtdwnbt^(~lragyslmt@64.253.22.77) (Remote host closed the connection)
2021-12-21 04:25:48 +0100mbuf(~Shakthi@122.164.195.237)
2021-12-21 04:26:22 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 260 seconds)
2021-12-21 04:33:04 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b)
2021-12-21 04:36:34 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2021-12-21 04:36:34 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-12-21 04:36:34 +0100finn_elijaFinnElija
2021-12-21 04:37:37 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b) (Ping timeout: 240 seconds)
2021-12-21 04:40:28 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-21 04:40:57 +0100hololeap_hololeap
2021-12-21 04:44:17 +0100kaph(~kaph@net-2-47-236-216.cust.vodafonedsl.it) (Read error: Connection reset by peer)
2021-12-21 04:45:46 +0100kaph(~kaph@net-2-47-236-216.cust.vodafonedsl.it)
2021-12-21 04:50:08 +0100kupi(uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-21 04:50:20 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b)
2021-12-21 04:55:12 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b) (Ping timeout: 268 seconds)
2021-12-21 04:57:47 +0100mikail(~mikail@2a02:c7f:bc1f:4a00:fc9:3da5:3e1e:8303)
2021-12-21 04:58:13 +0100mikail(~mikail@2a02:c7f:bc1f:4a00:fc9:3da5:3e1e:8303) (Client Quit)
2021-12-21 04:58:37 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 240 seconds)
2021-12-21 05:02:02 +0100BrokenClutch(~pioneer@2804:d41:c251:8e00:2f95:d3cd:d94f:7520)
2021-12-21 05:04:39 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-21 05:07:09 +0100Neuromancer(~Neuromanc@user/neuromancer)
2021-12-21 05:07:37 +0100ksqsf(~user@134.209.106.31)
2021-12-21 05:07:53 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b)
2021-12-21 05:09:17 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 05:09:19 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 05:09:22 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-12-21 05:09:48 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: closed)
2021-12-21 05:10:00 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 05:12:17 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 240 seconds)
2021-12-21 05:12:23 +0100Guest9348(~mike@user/feetwind) (Quit: WeeChat 3.1)
2021-12-21 05:12:42 +0100BrokenClutch(~pioneer@2804:d41:c251:8e00:2f95:d3cd:d94f:7520) ()
2021-12-21 05:13:42 +0100feetwind(~mike@user/feetwind)
2021-12-21 05:15:14 +0100puke(~puke@user/puke) (Quit: puke)
2021-12-21 05:15:40 +0100cjb(~cjb@user/cjb) (Ping timeout: 260 seconds)
2021-12-21 05:17:58 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-21 05:20:31 +0100Erutuon(~Erutuon@user/erutuon)
2021-12-21 05:21:44 +0100 <Square> Im planning on making a simple text serialization module. Possibly just work as Show and Read, wo replacing them, but not be stock derivable. I wonder if anyone knows a lib that does this or any other simple short cut before i start shoving tons of time this way.
2021-12-21 05:22:40 +0100 <dsal> Square: How do you want it to worok?
2021-12-21 05:23:05 +0100 <dsal> There's generic related things like Aeson, or DerivingVia
2021-12-21 05:25:04 +0100 <Square> dsal, basically i want it to work like quick (https://hackage.haskell.org/package/quiet) wo replacement of show / read
2021-12-21 05:25:53 +0100 <Square> dsal, ...and generics seems to be a the be a good approach to shorten time doing this.
2021-12-21 05:26:10 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-12-21 05:26:13 +0100 <dsal> Yeah, that uses DerivingVia
2021-12-21 05:26:56 +0100 <Square> And if i dont want to replace show / read - deriving via is no go right?
2021-12-21 05:27:15 +0100 <dsal> Orthogonal.
2021-12-21 05:27:35 +0100 <dsal> This is specifically making Show/Read instances. You can make up your own type class and do the same thing.
2021-12-21 05:28:25 +0100 <Square> So you suggest i make a copy of Show / Read and then wire it up by deriving via?
2021-12-21 05:30:09 +0100 <dsal> Well, you can click source on that and see what it does. It's not much. There are two things: 1: make it do the thing for Generic and 2: make it do the thing for whatever class you want.
2021-12-21 05:30:14 +0100 <Square> (copy in the sense of structure (not the class function names)
2021-12-21 05:30:57 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 268 seconds)
2021-12-21 05:34:17 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-12-21 05:35:02 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-21 05:37:29 +0100bollu(uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-21 05:39:57 +0100emf(~emf@2620:10d:c091:480::1:8fa6) (Ping timeout: 240 seconds)
2021-12-21 05:39:58 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-12-21 05:41:51 +0100ymh(~ym@pool-96-253-29-94.prvdri.fios.verizon.net)
2021-12-21 05:44:17 +0100mvk(~mvk@2607:fea8:5cdd:f000::917a) (Ping timeout: 240 seconds)
2021-12-21 05:44:59 +0100pfurla(~pfurla@2804:d41:4331:4800:5835:b5d3:9cc8:104b) (Quit: gone to sleep. ZZZzzz…)
2021-12-21 05:45:16 +0100lavaman(~lavaman@98.38.249.169)
2021-12-21 05:45:21 +0100deadmarshal(~deadmarsh@95.38.229.7)
2021-12-21 05:50:04 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-12-21 05:59:01 +0100oatsfactsandlogic
2021-12-21 05:59:49 +0100Guest83(~Guest83@122-199-1-30.ip4.superloop.com)
2021-12-21 05:59:49 +0100jimmys(~jimmys@2001:8004:11a0:5d05:1516:3364:d6ab:71dd)
2021-12-21 05:59:57 +0100ksqsf(~user@134.209.106.31)
2021-12-21 06:00:11 +0100factsandlogicoats
2021-12-21 06:00:57 +0100Guest83(~Guest83@122-199-1-30.ip4.superloop.com) (Client Quit)
2021-12-21 06:01:37 +0100Guest23(~Guest23@cpec025e909512d-cm00fc8d8c9620.cpe.net.cable.rogers.com)
2021-12-21 06:01:39 +0100Guest83(~Guest83@122-199-1-30.ip4.superloop.com)
2021-12-21 06:01:56 +0100Guest83(~Guest83@122-199-1-30.ip4.superloop.com) (Client Quit)
2021-12-21 06:03:01 +0100kaph(~kaph@net-2-47-236-216.cust.vodafonedsl.it) (Read error: Connection reset by peer)
2021-12-21 06:03:26 +0100sagax(~sagax_nb@user/sagax)
2021-12-21 06:09:38 +0100slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-12-21 06:11:03 +0100eruditass(uid248673@id-248673.uxbridge.irccloud.com)
2021-12-21 06:14:21 +0100kaph(~kaph@net-2-47-236-216.cust.vodafonedsl.it)
2021-12-21 06:15:40 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
2021-12-21 06:22:10 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-21 06:26:11 +0100Guest138(~Guest1@2601:18c:4300:36d0:480a:3125:fad9:df2e)
2021-12-21 06:36:54 +0100jimmys(~jimmys@2001:8004:11a0:5d05:1516:3364:d6ab:71dd) (Quit: Client closed)
2021-12-21 06:36:59 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-21 06:37:44 +0100emf(~emf@2620:10d:c091:480::1:3482)
2021-12-21 06:39:38 +0100zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-12-21 06:44:12 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-12-21 06:44:17 +0100emf(~emf@2620:10d:c091:480::1:3482) (Ping timeout: 240 seconds)
2021-12-21 06:45:18 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-21 06:47:58 +0100deadmarshal(~deadmarsh@95.38.229.7) (Ping timeout: 256 seconds)
2021-12-21 06:48:32 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2021-12-21 06:53:00 +0100dsrt^(~dsrt@64.253.22.77)
2021-12-21 06:53:45 +0100juhp(~juhp@128.106.188.82) (Read error: Connection reset by peer)
2021-12-21 06:53:53 +0100Guest23(~Guest23@cpec025e909512d-cm00fc8d8c9620.cpe.net.cable.rogers.com) (Quit: Client closed)
2021-12-21 06:53:57 +0100juhp(~juhp@128.106.188.82)
2021-12-21 06:54:02 +0100deadmarshal(~deadmarsh@95.38.229.7)
2021-12-21 06:54:12 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
2021-12-21 06:55:03 +0100notzmv(~zmv@user/notzmv)
2021-12-21 06:57:36 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 256 seconds)
2021-12-21 07:00:26 +0100ymh(~ym@pool-96-253-29-94.prvdri.fios.verizon.net) (Ping timeout: 256 seconds)
2021-12-21 07:02:56 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-12-21 07:03:48 +0100Guest138(~Guest1@2601:18c:4300:36d0:480a:3125:fad9:df2e) (Quit: Client closed)
2021-12-21 07:05:56 +0100matthias1(~igloo@cpe-76-170-236-166.socal.res.rr.com)
2021-12-21 07:08:06 +0100hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-12-21 07:09:43 +0100hololeap(~hololeap@user/hololeap)
2021-12-21 07:11:28 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-12-21 07:11:49 +0100emf(~emf@163.114.130.6)
2021-12-21 07:18:34 +0100emf(~emf@163.114.130.6) (Ping timeout: 256 seconds)
2021-12-21 07:19:09 +0100falafel(~falafel@2603-8000-d800-688c-f998-9914-c722-4c43.res6.spectrum.com)
2021-12-21 07:21:58 +0100matthias1(~igloo@cpe-76-170-236-166.socal.res.rr.com) (Ping timeout: 256 seconds)
2021-12-21 07:23:48 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2021-12-21 07:23:54 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2021-12-21 07:24:24 +0100joo-_(~joo-_@80-62-117-215-mobile.dk.customer.tdc.net)
2021-12-21 07:24:24 +0100joo-_(~joo-_@80-62-117-215-mobile.dk.customer.tdc.net) (Changing host)
2021-12-21 07:24:24 +0100joo-_(~joo-_@fsf/member/joo--)
2021-12-21 07:27:17 +0100falafel(~falafel@2603-8000-d800-688c-f998-9914-c722-4c43.res6.spectrum.com) (Ping timeout: 240 seconds)
2021-12-21 07:27:36 +0100 <Axman6> edwardk: I might have nerdsniped myself and given myself an impossible challenge: is it possible to write: memo :: forall t a. Grouping t => (t -> a) -> (t -> a)
2021-12-21 07:27:57 +0100deadmarshal(~deadmarsh@95.38.229.7) (Ping timeout: 240 seconds)
2021-12-21 07:29:01 +0100Erutuon(~Erutuon@user/erutuon)
2021-12-21 07:32:41 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2021-12-21 07:36:28 +0100 <int-e> how can you write `instance Divisible Group where` with a straight face
2021-12-21 07:36:37 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2021-12-21 07:36:51 +0100 <int-e> (cf. https://en.wikipedia.org/wiki/Divisible_group )
2021-12-21 07:38:11 +0100deadmarshal(~deadmarsh@95.38.229.7)
2021-12-21 07:42:57 +0100kaph(~kaph@net-2-47-236-216.cust.vodafonedsl.it) (Ping timeout: 240 seconds)
2021-12-21 07:42:58 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-21 07:42:58 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-21 07:42:58 +0100wroathe(~wroathe@user/wroathe)
2021-12-21 07:43:58 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Quit: mikoto-chan)
2021-12-21 07:45:46 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-12-21 07:47:37 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2021-12-21 07:50:09 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-21 07:51:35 +0100sweater1(~sweater@206.81.18.26) (Read error: Connection reset by peer)
2021-12-21 07:53:11 +0100ksqsf(~user@134.209.106.31)
2021-12-21 07:53:54 +0100emf(~emf@2620:10d:c091:480::1:3482)
2021-12-21 07:54:37 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2021-12-21 07:54:50 +0100td_(~td@94.134.91.4) (Ping timeout: 256 seconds)
2021-12-21 07:56:26 +0100johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2021-12-21 07:56:45 +0100td_(~td@muedsl-82-207-238-131.citykom.de)
2021-12-21 08:00:11 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b) (Ping timeout: 268 seconds)
2021-12-21 08:01:57 +0100emf(~emf@2620:10d:c091:480::1:3482) (Ping timeout: 240 seconds)
2021-12-21 08:03:13 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com)
2021-12-21 08:04:04 +0100 <int-e> > unwords $ map (\x -> printf "%.2f" (191-x/42)) [7885,7880,7803,7737,7636,7610,7600,7539,7452,7385]
2021-12-21 08:04:05 +0100 <lambdabot> "3.26 3.38 5.21 6.79 9.19 9.81 10.05 11.50 13.57 15.17"
2021-12-21 08:05:09 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-21 08:08:11 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Read error: Connection reset by peer)
2021-12-21 08:09:48 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-21 08:11:32 +0100xff0x(~xff0x@2001:1a81:5251:6900:31bd:c473:a01b:db9e) (Ping timeout: 240 seconds)
2021-12-21 08:11:54 +0100deadmarshal(~deadmarsh@95.38.229.7) (Ping timeout: 268 seconds)
2021-12-21 08:12:07 +0100zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2021-12-21 08:12:35 +0100xff0x(~xff0x@2001:1a81:5251:6900:24dc:6835:7948:5232)
2021-12-21 08:14:24 +0100zaquest(~notzaques@5.130.79.72)
2021-12-21 08:18:42 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-12-21 08:19:39 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-12-21 08:24:18 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2021-12-21 08:25:46 +0100ksqsf(~user@134.209.106.31) (Remote host closed the connection)
2021-12-21 08:26:36 +0100xff0x(~xff0x@2001:1a81:5251:6900:24dc:6835:7948:5232) (Ping timeout: 245 seconds)
2021-12-21 08:26:41 +0100deadmarshal(~deadmarsh@95.38.229.7)
2021-12-21 08:27:21 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b)
2021-12-21 08:27:47 +0100xff0x(~xff0x@2001:1a81:5251:6900:442a:7d08:a5db:f300)
2021-12-21 08:29:57 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-12-21 08:38:53 +0100kaph(~kaph@151.35.8.156)
2021-12-21 08:41:00 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:84c9:5514:9bd3:b2f5) (Remote host closed the connection)
2021-12-21 08:42:21 +0100betelgeuse9(~betelgeus@94-225-47-8.access.telenet.be)
2021-12-21 08:45:55 +0100betelgeuse9(~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-12-21 08:48:41 +0100 <iqubic> What are impredictive types?
2021-12-21 08:49:07 +0100 <iqubic> I'm getting a compiler error saying that GHC doesn't yet support them.
2021-12-21 08:51:36 +0100 <tomsmeding> iqubic: https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/exts/impredicative_types.html#exte…
2021-12-21 08:51:56 +0100 <tomsmeding> the extension has existed for a long time, but the mentioned robust Quick Look algorithm is only since 9.2
2021-12-21 08:52:10 +0100 <tomsmeding> the earlier implementation was (apparently, I wouldn't know) wonky
2021-12-21 08:55:19 +0100kaph(~kaph@151.35.8.156) (Remote host closed the connection)
2021-12-21 08:56:50 +0100 <EvanR> more like GHC finally admitted that they aren't supported
2021-12-21 08:57:21 +0100 <EvanR> maybe that changed in 9.2
2021-12-21 08:57:32 +0100 <tomsmeding> that certainly changed in 9.2
2021-12-21 08:57:44 +0100 <tomsmeding> there's a paper! :p
2021-12-21 08:59:36 +0100gehmehgeh(~user@user/gehmehgeh)
2021-12-21 09:00:52 +0100 <dminuoso> tomsmeding: Im not happy with these boolean tags somehow.
2021-12-21 09:01:16 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:c53a:6a45:8ba8:8ed6)
2021-12-21 09:02:44 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2021-12-21 09:03:00 +0100 <tomsmeding> :(
2021-12-21 09:07:02 +0100 <iqubic> I'm running into a bit of an issue with Data.Finite. I need the following function: "add :: (KnownNat n) => Finite n -> (Int/Integer) -> Finite n"
2021-12-21 09:07:20 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-21 09:07:33 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-21 09:09:13 +0100 <dsal> modulo :: KnownNat n => Integer -> Finite n
2021-12-21 09:09:45 +0100 <dminuoso> tomsmeding: Im thinking that patricia tries offer this out of the box.
2021-12-21 09:09:54 +0100 <tomsmeding> do they?
2021-12-21 09:10:13 +0100 <tomsmeding> can you distinguish ["fo", "foo", "fob"] from ["foo", "fob"] without tags?
2021-12-21 09:10:21 +0100 <dminuoso> Yes, because ["google", "com"] would not give me something like [["google"], ["com"]]
2021-12-21 09:10:30 +0100 <tomsmeding> (honest question)
2021-12-21 09:10:31 +0100 <dminuoso> Unless we already had ["com"]
2021-12-21 09:10:51 +0100 <dminuoso> tomsmeding: Well it doesnt matter whether we can "distinguish" them
2021-12-21 09:10:56 +0100 <dminuoso> Oh
2021-12-21 09:11:04 +0100 <dminuoso> I dont think this actually matters though
2021-12-21 09:11:04 +0100 <tomsmeding> (use 'map (map (\c -> [c]))' if you like the Domain version)
2021-12-21 09:11:21 +0100 <dminuoso> The question is whether the subsequent lookup will behave correctly
2021-12-21 09:11:43 +0100 <dminuoso> The patricia trie will give you the least number of nodes always
2021-12-21 09:11:48 +0100 <tomsmeding> if the tree contains "foo" and "fob", and you do a longest-prefix lookup for "fom", won't it give "fo"?
2021-12-21 09:12:00 +0100 <dminuoso> darn you are right again.
2021-12-21 09:12:02 +0100 <tomsmeding> which, in my understanding of the problem, is the wrong answer, because "fo" is not in the tree
2021-12-21 09:12:27 +0100 <dminuoso> I should look at what iproute does
2021-12-21 09:12:38 +0100 <tomsmeding> well, in the tree, but not in the set it's supposed to model :p
2021-12-21 09:12:40 +0100 <dminuoso> Because forwarding decisions are longest prefix matching
2021-12-21 09:12:45 +0100 <tomsmeding> ah
2021-12-21 09:13:05 +0100 <dminuoso> Its just that every time I looked at it, I found stuff inside it bizarre
2021-12-21 09:13:20 +0100 <dminuoso> data IPRTable k a = Nil | Node !(AddrRange k) !k !(Maybe a) !(IPRTable k a) !(IPRTable k a)
2021-12-21 09:13:32 +0100 <dminuoso> And there's a comment stating that this is a TRIE with one way branching removed, not sure what that means here
2021-12-21 09:13:39 +0100 <dminuoso> Because it seems like you can have one way branches?
2021-12-21 09:13:47 +0100 <tomsmeding> sounds like patricia tree to me, that comment :p
2021-12-21 09:13:57 +0100 <tomsmeding> what's the k and a here
2021-12-21 09:14:08 +0100 <dminuoso> k is just to track address family, whether its ipv4 or ipv6
2021-12-21 09:14:16 +0100 <tomsmeding> then why is there a k in every node
2021-12-21 09:14:16 +0100 <dminuoso> And `a` is some additional payload I think
2021-12-21 09:14:36 +0100 <tomsmeding> or is this the bizarre thing you mentioned? :p
2021-12-21 09:14:44 +0100 <dminuoso> That as well
2021-12-21 09:15:50 +0100 <tomsmeding> seems the k is either IPv4 or IPv6, which are both full addresses
2021-12-21 09:15:57 +0100 <dminuoso> Right
2021-12-21 09:16:09 +0100 <dminuoso> Ah hold on I know why
2021-12-21 09:16:17 +0100 <dminuoso> tomsmeding: The `AddrRange k` is what we care about
2021-12-21 09:16:21 +0100 <dminuoso> the `k` is some additional payload we can ignroe
2021-12-21 09:16:30 +0100 <dminuoso> its the `next hop address` in your routing table
2021-12-21 09:16:43 +0100 <dminuoso> but what really matters here, is the "what network to route for", which is `AddrRange k
2021-12-21 09:17:25 +0100 <dminuoso> tomsmeding: Very broadly, a simple router would be supplied with some `lookupRoute :: k -> IPRTable k a -> Maybe k
2021-12-21 09:17:48 +0100 <dminuoso> Such that you provide some address, it finds the matching AddrRange with longest prefix, and then returns the contained `k`
2021-12-21 09:18:13 +0100 <tomsmeding> ah, AddrRange a = { addr :: a, mask :: a, mlen :: Int {- mask prefix length -} }
2021-12-21 09:18:52 +0100 <dminuoso> Yeah
2021-12-21 09:19:09 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-12-21 09:19:31 +0100 <dminuoso> Though, Im not entirely sure because that library offers: lookup :: Routable k => AddrRange k -> IPRTable k a -> Maybe a
2021-12-21 09:19:58 +0100 <tomsmeding> that keyToTestBit function is weird
2021-12-21 09:20:19 +0100 <tomsmeding> it converts an AddrRange to a prefix of 1-bits as long as the mask was
2021-12-21 09:20:23 +0100 <tomsmeding> or so it seems
2021-12-21 09:20:37 +0100 <dminuoso> That is very reasonable
2021-12-21 09:20:52 +0100tomsmedingwonders why they use an intmap for a statically fixed table of max 128 entries
2021-12-21 09:21:09 +0100 <dminuoso> Why max 128 entries?
2021-12-21 09:21:35 +0100 <tomsmeding> ipv6 has length 128, right?
2021-12-21 09:21:38 +0100 <dminuoso> Yes
2021-12-21 09:21:43 +0100 <tomsmeding> the intmap is keyed on the mlen
2021-12-21 09:21:46 +0100 <tomsmeding> from the AddrRange
2021-12-21 09:22:47 +0100 <dminuoso> tomsmeding: Ah and I think I get why you understand that "with one way branching removed" as patricia trie.
2021-12-21 09:23:05 +0100 <dminuoso> The only way for one way branching to ever occur, is if you turned "foo" into ["f", "o", "o"]
2021-12-21 09:23:17 +0100deadmarshal(~deadmarsh@95.38.229.7) (Ping timeout: 240 seconds)
2021-12-21 09:23:23 +0100 <tomsmeding> that's what it sounded like to my naive ears
2021-12-21 09:24:15 +0100chomwitt(~chomwitt@94.66.63.187)
2021-12-21 09:26:26 +0100 <tomsmeding> dminuoso: from scanning through `insert`, I get the feeling that that Maybe is precisely my boolean tag
2021-12-21 09:26:30 +0100 <tomsmeding> the Maybe a, that is
2021-12-21 09:26:58 +0100xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2021-12-21 09:27:07 +0100 <tomsmeding> because it retains them on normal insert and creates Just values for the places where it puts the inserted value, but it puts Nothing in the weird splitting code in `link` that I haven't yet figured out
2021-12-21 09:27:44 +0100 <tomsmeding> (which makes sense: there only is an associated value `a` if that prefix is actually in the set)
2021-12-21 09:29:25 +0100 <tomsmeding> dminuoso: that recursion loop in `glue` is weird -- wouldn't that be more efficiently written as `let n = countLeadingZeros (addr k1 `xor` addr k2)`
2021-12-21 09:30:36 +0100lavaman(~lavaman@98.38.249.169)
2021-12-21 09:31:59 +0100 <tomsmeding> (followed by the 'otherwise' branch)
2021-12-21 09:33:00 +0100nattiestnate(~nate@2001:448a:20a0:4134:25e:715f:d637:5263)
2021-12-21 09:34:00 +0100deech(~user@024-217-244-075.res.spectrum.com) (Ping timeout: 256 seconds)
2021-12-21 09:35:35 +0100mattil(~mattil@helsinki.portalify.com)
2021-12-21 09:36:40 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-12-21 09:37:12 +0100deech(~user@024-217-244-075.res.spectrum.com)
2021-12-21 09:37:51 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-12-21 09:38:25 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-21 09:38:30 +0100ProfSimm(~ProfSimm@87.227.196.109)
2021-12-21 09:40:39 +0100deadmarshal(~deadmarsh@95.38.229.7)
2021-12-21 09:41:25 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:84c9:5514:9bd3:b2f5)
2021-12-21 09:41:27 +0100phma(phma@2001:5b0:211f:b348:59d8:7cb7:9451:9394) (Read error: Connection reset by peer)
2021-12-21 09:41:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-21 09:42:40 +0100jespada(~jespada@87.74.33.157) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-12-21 09:42:47 +0100phma(phma@2001:5b0:211f:1938:f16a:3063:a09d:1c4c)
2021-12-21 09:43:08 +0100jespada(~jespada@87.74.33.157)
2021-12-21 09:43:08 +0100jespada(~jespada@87.74.33.157) (Client Quit)
2021-12-21 09:43:44 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-21 09:43:44 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-21 09:43:44 +0100wroathe(~wroathe@user/wroathe)
2021-12-21 09:45:37 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:84c9:5514:9bd3:b2f5) (Ping timeout: 240 seconds)
2021-12-21 09:46:45 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2021-12-21 09:47:07 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2021-12-21 09:48:32 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2021-12-21 09:52:48 +0100 <dminuoso> tomsmeding: Im not sure what glue or link do exactly
2021-12-21 09:52:54 +0100gehmehgeh(~user@user/gehmehgeh) (Remote host closed the connection)
2021-12-21 09:53:15 +0100 <dminuoso> Or hold on
2021-12-21 09:53:30 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 260 seconds)
2021-12-21 09:53:35 +0100gehmehgeh(~user@user/gehmehgeh)
2021-12-21 09:53:36 +0100 <dminuoso> I think `link` takes two addresses that are disjoint, and forms a new node that contains them both I think
2021-12-21 09:53:44 +0100 <dminuoso> this is just an assumption based on its usage and the guards in `insert`
2021-12-21 09:54:32 +0100 <dminuoso> And presumably `glue` gives you the longest common prefix that contains them both
2021-12-21 09:55:40 +0100acidjnk(~acidjnk@p200300d0c7271e54d135507ad6b9a309.dip0.t-ipconnect.de)
2021-12-21 09:57:11 +0100 <dminuoso> Yeah, that seems to be it
2021-12-21 09:58:57 +0100 <dminuoso> tomsmeding: Then yeah, the countLeadingZeros approach is definitely faster
2021-12-21 09:59:12 +0100 <dminuoso> It's probably not a big deal, since rarely will you be spending much time in insertion
2021-12-21 09:59:54 +0100jespada(~jespada@87.74.33.157)
2021-12-21 10:00:10 +0100tomku[m](~tomkumozi@2001:470:69fc:105::1:2fcb) (Quit: You have been kicked for being idle)
2021-12-21 10:00:44 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-21 10:01:17 +0100deadmarshal(~deadmarsh@95.38.229.7) (Ping timeout: 240 seconds)
2021-12-21 10:05:55 +0100nattiestnate(~nate@2001:448a:20a0:4134:25e:715f:d637:5263) (Quit: WeeChat 3.3)
2021-12-21 10:17:24 +0100deech`(~user@024-217-244-075.res.spectrum.com)
2021-12-21 10:19:20 +0100deech(~user@024-217-244-075.res.spectrum.com) (Ping timeout: 256 seconds)
2021-12-21 10:21:03 +0100Topsi(~Tobias@dyndsl-095-033-094-005.ewe-ip-backbone.de)
2021-12-21 10:22:13 +0100deadmarshal(~deadmarsh@95.38.229.7)
2021-12-21 10:22:57 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-12-21 10:23:34 +0100 <tomsmeding> fair point about the time spent in insertion :p
2021-12-21 10:23:53 +0100 <tomsmeding> and yes that's also what I concluded from the usage in `insert`
2021-12-21 10:25:53 +0100 <tomsmeding> dminuoso: do you agree about the `Maybe a` containing the information of the boolean tag?
2021-12-21 10:26:27 +0100 <dminuoso> Yeah
2021-12-21 10:26:41 +0100 <dminuoso> Thanks I think I get the implementation now
2021-12-21 10:26:49 +0100 <dminuoso> I took your implementation and twisted it a bit around
2021-12-21 10:27:02 +0100 <tomsmeding> sounds good
2021-12-21 10:27:08 +0100 <dminuoso> https://gist.github.com/dminuoso/dc8cccaff1e72592b4f285153fbe4605
2021-12-21 10:27:18 +0100 <dminuoso> Find that a bit easier to read
2021-12-21 10:27:33 +0100 <dminuoso> Oh hold on
2021-12-21 10:27:43 +0100 <dminuoso> Note how I dont need that reverse on domain anymore? (I forgot to delete it in that gist)
2021-12-21 10:28:28 +0100 <dminuoso> Mm, some bug lingering still
2021-12-21 10:28:31 +0100 <dminuoso> But Ill find it
2021-12-21 10:28:48 +0100 <tomsmeding> dminuoso: what do you return for looking up "abc" in ["ab", "abcd"]
2021-12-21 10:28:53 +0100 <tomsmeding> under map (map (\c -> [c]))
2021-12-21 10:29:15 +0100kranius(~kranius@162.19.149.77.rev.sfr.net)
2021-12-21 10:30:07 +0100 <tomsmeding> oh and perhaps more interestingly, for looking up "abcd" in ["a", "abc", "abcde"] -- but untested
2021-12-21 10:30:39 +0100tomsmedingthinks you're going to get "ac" as the prefix
2021-12-21 10:30:47 +0100 <dminuoso> Mmm yeah
2021-12-21 10:30:52 +0100 <dminuoso> I had the same thought just when I hit enter
2021-12-21 10:30:56 +0100 <tomsmeding> lol
2021-12-21 10:31:08 +0100 <dminuoso> Im going to pursue this, could be really cool if I dont need reverse here. :)
2021-12-21 10:31:20 +0100kranius(~kranius@162.19.149.77.rev.sfr.net) (Client Quit)
2021-12-21 10:31:38 +0100 <tomsmeding> you can have two additional parameters, one that always accumulates, and the other that gets overwritten with the accumulating parameter if b == True
2021-12-21 10:31:45 +0100 <dminuoso> tomsmeding: One thing I could do is keep the full domain at the label instead.
2021-12-21 10:31:48 +0100 <dminuoso> instead of a bool
2021-12-21 10:31:54 +0100 <dminuoso> That would simplify everything
2021-12-21 10:32:05 +0100 <tomsmeding> or that, but more memory usage :p
2021-12-21 10:32:27 +0100 <dminuoso> That's fine, it's short lived
2021-12-21 10:32:36 +0100 <dminuoso> Decisions decisions!
2021-12-21 10:34:22 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-12-21 10:34:37 +0100 <dminuoso> tomsmeding: And the insert becomes less pretty :(
2021-12-21 10:34:46 +0100 <dminuoso> But a quick application of `tails` can solve that
2021-12-21 10:34:50 +0100 <tomsmeding> :p
2021-12-21 10:35:03 +0100 <tomsmeding> my two-extra-parameters is also still a possibility, think that would work
2021-12-21 10:35:07 +0100 <dminuoso> or inits I suppose
2021-12-21 10:35:30 +0100 <dminuoso> tomsmeding: Yeah, but I think we've already ruined fusion.
2021-12-21 10:35:40 +0100 <dminuoso> We should do two-extra-parameters with continuations!
2021-12-21 10:36:13 +0100 <dminuoso> Is this the point where I should mention Im going to start out with 10 domains in the trie?
2021-12-21 10:36:22 +0100 <tomsmeding> :p
2021-12-21 10:36:23 +0100 <dminuoso> No but seriously, in production there will be more
2021-12-21 10:37:38 +0100darchitect(~darchitec@2a00:23c6:3584:df00:7dec:bf13:8fa:748c) (Ping timeout: 252 seconds)
2021-12-21 10:39:37 +0100joo-_(~joo-_@fsf/member/joo--) (Ping timeout: 240 seconds)
2021-12-21 10:41:41 +0100joo-_(~joo-_@fsf/member/joo--)
2021-12-21 10:43:46 +0100neurocyte0132889(~neurocyte@IP-185117070150.dynamic.medianet-world.de)
2021-12-21 10:43:46 +0100neurocyte0132889(~neurocyte@IP-185117070150.dynamic.medianet-world.de) (Changing host)
2021-12-21 10:43:46 +0100neurocyte0132889(~neurocyte@user/neurocyte)
2021-12-21 10:44:43 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-12-21 10:45:45 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-21 10:48:17 +0100dsrt^(~dsrt@64.253.22.77) (Ping timeout: 240 seconds)
2021-12-21 10:48:56 +0100kuribas(~user@ptr-25vy0i8itabkuxqpwp8.18120a2.ip6.access.telenet.be)
2021-12-21 10:49:06 +0100dyeplexer(~dyeplexer@user/dyeplexer)
2021-12-21 10:50:46 +0100shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-12-21 10:55:47 +0100Tuplanolla(~Tuplanoll@91-159-68-169.elisa-laajakaista.fi)
2021-12-21 11:08:17 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-12-21 11:09:03 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-21 11:14:26 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-12-21 11:14:48 +0100darchitect(~darchitec@82-132-215-233.dab.02.net)
2021-12-21 11:17:54 +0100epolanski(uid312403@id-312403.helmsley.irccloud.com)
2021-12-21 11:18:31 +0100machinedgod(~machinedg@24.105.81.50)
2021-12-21 11:19:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-12-21 11:19:34 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-12-21 11:19:58 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
2021-12-21 11:22:20 +0100Lord_of_Life_Lord_of_Life
2021-12-21 11:27:46 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
2021-12-21 11:27:54 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2021-12-21 11:29:39 +0100jinsun__(~quassel@user/jinsun)
2021-12-21 11:30:37 +0100jinsun(~quassel@user/jinsun) (Ping timeout: 240 seconds)
2021-12-21 11:32:10 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-21 11:33:38 +0100jinsun(~quassel@user/jinsun)
2021-12-21 11:34:52 +0100jinsun___(~quassel@user/jinsun)
2021-12-21 11:37:17 +0100jinsun__(~quassel@user/jinsun) (Ping timeout: 240 seconds)
2021-12-21 11:37:37 +0100jinsun(~quassel@user/jinsun) (Ping timeout: 240 seconds)
2021-12-21 11:43:15 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:84c9:5514:9bd3:b2f5)
2021-12-21 11:44:00 +0100mikoto-chan(~mikoto-ch@2a00:1d50:3:0:d35c:a450:4ccc:94ac)
2021-12-21 11:44:32 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-21 11:44:32 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-21 11:44:32 +0100wroathe(~wroathe@user/wroathe)
2021-12-21 11:47:17 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:84c9:5514:9bd3:b2f5) (Ping timeout: 240 seconds)
2021-12-21 11:47:40 +0100jinsun(~quassel@user/jinsun)
2021-12-21 11:48:49 +0100max22-(~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr)
2021-12-21 11:49:17 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2021-12-21 11:50:36 +0100 <dminuoso> tomsmeding: https://gist.github.com/dminuoso/37edae34ce73428fbb691bcd34e9868a
2021-12-21 11:50:38 +0100 <dminuoso> final version.
2021-12-21 11:51:19 +0100 <dminuoso> I actually like this because as I recurse down I reconstruct the original domain :)
2021-12-21 11:51:42 +0100jinsun___(~quassel@user/jinsun) (Ping timeout: 256 seconds)
2021-12-21 11:53:47 +0100 <tomsmeding> dminuoso: looks good!
2021-12-21 11:53:57 +0100 <tomsmeding> don't you need to reverse the result though? Or am I reading it wrong
2021-12-21 11:54:18 +0100 <tomsmeding> you're producing a suffix in reversed order, I think
2021-12-21 11:54:41 +0100 <tomsmeding> (s/Domain/Domain . reverse/ on line 3)
2021-12-21 11:55:29 +0100toastloop(toastloop@user/toastloop)
2021-12-21 11:56:03 +0100 <Digit> lol, fun intro https://www.youtube.com/watch?v=RqvCNb7fKsg
2021-12-21 11:56:28 +0100 <dminuoso> tomsmeding: Im reversing the lookup domain
2021-12-21 11:56:36 +0100 <dminuoso> But not the result
2021-12-21 11:56:50 +0100 <tomsmeding> yeah
2021-12-21 11:57:02 +0100 <tomsmeding> if you want the reversed suffix, this is fine :)
2021-12-21 11:57:07 +0100 <dminuoso> huh?
2021-12-21 11:57:11 +0100 <dminuoso> What do you mean?
2021-12-21 11:57:31 +0100 <dminuoso> tomsmeding: No this produces it in the right order.
2021-12-21 11:57:47 +0100 <dminuoso> tomsmeding: consider: the tree starts in reverse, and as I traverse down I prepend.
2021-12-21 11:57:52 +0100 <tomsmeding> OH
2021-12-21 11:57:55 +0100tomsmedingis stupid
2021-12-21 11:57:56 +0100 <tomsmeding> yes
2021-12-21 11:58:03 +0100 <tomsmeding> awesome
2021-12-21 11:58:06 +0100 <dminuoso> this is why this is so cute, no reverse needed :)
2021-12-21 11:58:11 +0100 <tomsmeding> and it's even shorter than my original code I think
2021-12-21 11:59:02 +0100jinsun(~quassel@user/jinsun) (Ping timeout: 260 seconds)
2021-12-21 11:59:08 +0100typeswitch(~typeswitc@user/typeswitch)
2021-12-21 11:59:55 +0100 <dminuoso> now ontop, I could also make a separate `DomainR` newtype where my attosec parser generates the labels in reverse.
2021-12-21 11:59:55 +0100dka_(~code-is-a@ns3059207.ip-193-70-33.eu) (Quit: My Ex-Girlfriend once told me: I'm not a slut, I'm just popular)
2021-12-21 12:00:05 +0100 <dminuoso> (this seems like it would be faster, even)
2021-12-21 12:00:31 +0100 <tomsmeding> that feels like overdoing it somehow :p
2021-12-21 12:00:33 +0100 <dminuoso> :p
2021-12-21 12:01:10 +0100dka(~code-is-a@ns3059207.ip-193-70-33.eu)
2021-12-21 12:03:51 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-12-21 12:11:57 +0100deadmarshal(~deadmarsh@95.38.229.7) (Ping timeout: 240 seconds)
2021-12-21 12:15:18 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-21 12:15:18 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-21 12:15:18 +0100wroathe(~wroathe@user/wroathe)
2021-12-21 12:16:28 +0100Jing(~hedgehog@2604:a840:3::103b) (Remote host closed the connection)
2021-12-21 12:17:08 +0100Jing(~hedgehog@115.207.51.59)
2021-12-21 12:20:36 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2021-12-21 12:23:54 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-12-21 12:27:31 +0100toastloopex(toastloop@user/toastloop)
2021-12-21 12:27:31 +0100typeswitch(~typeswitc@user/typeswitch) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-12-21 12:29:56 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.3)
2021-12-21 12:30:50 +0100toastloopex(toastloop@user/toastloop) (Remote host closed the connection)
2021-12-21 12:30:54 +0100toastloop(toastloop@user/toastloop) (Ping timeout: 268 seconds)
2021-12-21 12:31:27 +0100lavaman(~lavaman@98.38.249.169)
2021-12-21 12:35:21 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2021-12-21 12:35:38 +0100ProfSimm(~ProfSimm@87.227.196.109)
2021-12-21 12:35:54 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-12-21 12:36:45 +0100mikoto-chan(~mikoto-ch@2a00:1d50:3:0:d35c:a450:4ccc:94ac) (Quit: mikoto-chan)
2021-12-21 12:40:52 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2021-12-21 12:41:17 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-12-21 12:41:33 +0100pfurla(~pfurla@2804:18:5828:51e7:9893:1d7d:a278:3fd2)
2021-12-21 12:42:26 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 260 seconds)
2021-12-21 12:43:24 +0100kaph(~kaph@151.37.203.0)
2021-12-21 12:46:07 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-21 12:46:07 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-21 12:46:07 +0100wroathe(~wroathe@user/wroathe)
2021-12-21 12:46:47 +0100iqubic(~user@2601:602:9502:c70:c28f:848:f184:6c67) (ERC 5.4.1 (IRC client for GNU Emacs 29.0.50))
2021-12-21 12:51:02 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 240 seconds)
2021-12-21 12:51:17 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-12-21 12:54:32 +0100kaph(~kaph@151.37.203.0) (Read error: Connection reset by peer)
2021-12-21 12:54:50 +0100kaph(~kaph@151.37.203.0)
2021-12-21 12:56:48 +0100pfurla_(~pfurla@177.79.126.247)
2021-12-21 12:57:53 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-12-21 12:57:53 +0100pfurla(~pfurla@2804:18:5828:51e7:9893:1d7d:a278:3fd2) (Ping timeout: 252 seconds)
2021-12-21 12:59:37 +0100kaph(~kaph@151.37.203.0) (Read error: Connection reset by peer)
2021-12-21 12:59:42 +0100jinsun(~quassel@user/jinsun)
2021-12-21 12:59:50 +0100kaph(~kaph@151.37.203.0)
2021-12-21 13:05:56 +0100kaph(~kaph@151.37.203.0) (Ping timeout: 256 seconds)
2021-12-21 13:06:30 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
2021-12-21 13:06:45 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
2021-12-21 13:07:13 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Client Quit)
2021-12-21 13:07:47 +0100acidjnk(~acidjnk@p200300d0c7271e54d135507ad6b9a309.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-12-21 13:10:12 +0100kaph(~kaph@151.37.203.0)
2021-12-21 13:11:33 +0100pfurla(~pfurla@177.25.184.32)
2021-12-21 13:14:37 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Ping timeout: 240 seconds)
2021-12-21 13:14:53 +0100mattil(~mattil@helsinki.portalify.com) (Remote host closed the connection)
2021-12-21 13:15:18 +0100pfurla_(~pfurla@177.79.126.247) (Ping timeout: 268 seconds)
2021-12-21 13:15:53 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-12-21 13:15:58 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-21 13:16:42 +0100jinsun(~quassel@user/jinsun) (Read error: Connection reset by peer)
2021-12-21 13:16:52 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-21 13:16:52 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-21 13:16:52 +0100wroathe(~wroathe@user/wroathe)
2021-12-21 13:18:20 +0100ProfSimm(~ProfSimm@87.227.196.109)
2021-12-21 13:18:23 +0100wehttam(~wehttam@175.103.19.88)
2021-12-21 13:18:35 +0100jinsun(~quassel@user/jinsun)
2021-12-21 13:20:14 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 260 seconds)
2021-12-21 13:20:58 +0100ksqsf(~user@134.209.106.31)
2021-12-21 13:21:16 +0100fef(~thedawn@user/thedawn)
2021-12-21 13:21:48 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2021-12-21 13:25:12 +0100wehttam(~wehttam@175.103.19.88) (Read error: Connection reset by peer)
2021-12-21 13:26:36 +0100lambdap(~lambdap@static.167.190.119.168.clients.your-server.de) (Quit: lambdap)
2021-12-21 13:26:58 +0100lambdap(~lambdap@static.167.190.119.168.clients.your-server.de)
2021-12-21 13:26:59 +0100retro_(~retro@05412d78.skybroadband.com)
2021-12-21 13:30:43 +0100retroid_(~retro@05412d78.skybroadband.com) (Ping timeout: 268 seconds)
2021-12-21 13:35:06 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:c53a:6a45:8ba8:8ed6) (Quit: WeeChat 2.8)
2021-12-21 13:35:39 +0100kaph(~kaph@151.37.203.0) (Ping timeout: 268 seconds)
2021-12-21 13:36:10 +0100kaph(~kaph@151.37.203.0)
2021-12-21 13:39:12 +0100kaph(~kaph@151.37.203.0) (Read error: Connection reset by peer)
2021-12-21 13:39:28 +0100kaph(~kaph@151.37.203.0)
2021-12-21 13:45:15 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:84c9:5514:9bd3:b2f5)
2021-12-21 13:47:38 +0100mattil(~mattil@helsinki.portalify.com)
2021-12-21 13:49:00 +0100kaph(~kaph@151.37.203.0) (Ping timeout: 256 seconds)
2021-12-21 13:49:15 +0100dolio(~dolio@130.44.130.54) (Quit: ZNC 1.8.2 - https://znc.in)
2021-12-21 13:49:17 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:84c9:5514:9bd3:b2f5) (Ping timeout: 240 seconds)
2021-12-21 13:50:08 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-21 13:51:41 +0100pfurla(~pfurla@177.25.184.32) (Quit: gone to sleep. ZZZzzz…)
2021-12-21 13:53:12 +0100tubogram4(~tubogram@user/tubogram) (Ping timeout: 260 seconds)
2021-12-21 13:55:48 +0100evocatus(~evocatus@62.182.78.42)
2021-12-21 13:59:30 +0100deadmarshal(~deadmarsh@95.38.229.7)
2021-12-21 14:00:27 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-12-21 14:02:14 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
2021-12-21 14:02:17 +0100rusty(~rustyboy@82.77.225.165)
2021-12-21 14:02:31 +0100pfurla(~pfurla@2804:18:581a:c123:74be:cb28:dc5f:8826)
2021-12-21 14:02:50 +0100slowButPresent(~slowButPr@user/slowbutpresent)
2021-12-21 14:08:17 +0100max22-(~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Ping timeout: 252 seconds)
2021-12-21 14:09:02 +0100evocatus(~evocatus@62.182.78.42) (Ping timeout: 240 seconds)
2021-12-21 14:13:27 +0100pfurla(~pfurla@2804:18:581a:c123:74be:cb28:dc5f:8826) (Quit: gone to sleep. ZZZzzz…)
2021-12-21 14:14:12 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-21 14:14:18 +0100kaph(~kaph@151.47.131.129)
2021-12-21 14:17:05 +0100Inst__(~Inst@2601:6c4:4080:3f80:d8ab:2e91:63f7:db6e)
2021-12-21 14:19:50 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Quit: CiaoSen)
2021-12-21 14:19:57 +0100Inst_(~Inst@2601:6c4:4080:3f80:98ca:4368:fd5e:1ee0) (Ping timeout: 240 seconds)
2021-12-21 14:26:13 +0100m1dnight(~christoph@christophe.dev) (Ping timeout: 268 seconds)
2021-12-21 14:27:04 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2021-12-21 14:30:35 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-12-21 14:30:49 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-21 14:31:31 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-21 14:32:28 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Client Quit)
2021-12-21 14:35:52 +0100 <raehik> I'm having issues with cabal haddock --enable-documentation : sometimes it rebuilds dependencies with docs so it can link to them, sometimes it doesn't and complains instead. Any tips?
2021-12-21 14:37:29 +0100m1dnight(~christoph@christophe.dev)
2021-12-21 14:37:51 +0100 <raehik> actually, it might just be the base libs. on CI it won't rebuild them to link, but it does with identical cmd locally...
2021-12-21 14:38:08 +0100jkaye(~jkaye@2601:281:8300:7530:fd05:1ba8:c481:f305)
2021-12-21 14:41:54 +0100tubogram4(~tubogram@user/tubogram)
2021-12-21 14:42:22 +0100mattil(~mattil@helsinki.portalify.com) (Read error: Connection reset by peer)
2021-12-21 14:48:25 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-21 14:48:30 +0100deadmarshal(~deadmarsh@95.38.229.7) (Ping timeout: 256 seconds)
2021-12-21 14:48:44 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2021-12-21 14:48:48 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2021-12-21 14:50:18 +0100darchitect(~darchitec@82-132-215-233.dab.02.net) (Read error: Connection reset by peer)
2021-12-21 14:52:09 +0100azimut_(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds)
2021-12-21 14:52:54 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-12-21 14:54:26 +0100max22-(~maxime@2a01cb08833598007266ea6574ab9177.ipv6.abo.wanadoo.fr)
2021-12-21 14:57:20 +0100son0p(~ff@181.136.122.143)
2021-12-21 14:57:53 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-21 14:57:53 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-21 14:57:53 +0100wroathe(~wroathe@user/wroathe)
2021-12-21 15:00:09 +0100max22-(~maxime@2a01cb08833598007266ea6574ab9177.ipv6.abo.wanadoo.fr) (Ping timeout: 268 seconds)
2021-12-21 15:00:38 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-12-21 15:00:39 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
2021-12-21 15:02:44 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-12-21 15:05:53 +0100rusty(~rustyboy@82.77.225.165) (Quit: Leaving)
2021-12-21 15:16:06 +0100NinjaTrappeur(~ninja@user/ninjatrappeur) (Quit: WeeChat 3.3)
2021-12-21 15:16:15 +0100bodisiw(~bodiskw@128.163.238.115)
2021-12-21 15:16:53 +0100Bartol(~Bartol@dynamic-adsl-84-221-241-8.clienti.tiscali.it)
2021-12-21 15:20:27 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-12-21 15:21:52 +0100Vajb(~Vajb@2001:999:62:f3d1:4390:fbed:1f9b:9d03)
2021-12-21 15:22:43 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2021-12-21 15:23:46 +0100Guest4242(~Guest4242@78.198.4.122)
2021-12-21 15:23:57 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-12-21 15:25:46 +0100deadmarshal(~deadmarsh@95.38.229.7)
2021-12-21 15:27:41 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Quit: leaving)
2021-12-21 15:30:02 +0100deadmarshal(~deadmarsh@95.38.229.7) (Ping timeout: 240 seconds)
2021-12-21 15:30:41 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-21 15:30:41 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-21 15:30:41 +0100wroathe(~wroathe@user/wroathe)
2021-12-21 15:31:28 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:7976:b4da:33a:e80c)
2021-12-21 15:33:57 +0100xff0x(~xff0x@2001:1a81:5251:6900:442a:7d08:a5db:f300) (Ping timeout: 240 seconds)
2021-12-21 15:34:59 +0100xff0x(~xff0x@2001:1a81:5251:6900:1836:4f55:974b:f1ca)
2021-12-21 15:38:32 +0100KnifeFire(~Knifefire@120.242.178.114)
2021-12-21 15:39:05 +0100pfurla(~pfurla@2804:14d:5c5a:9a78:c52a:cb9b:7833:8fe4)
2021-12-21 15:40:10 +0100KnifeFire(~Knifefire@120.242.178.114) (Client Quit)
2021-12-21 15:42:15 +0100shriekingnoise(~shrieking@186.137.144.80)
2021-12-21 15:43:13 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net)
2021-12-21 15:44:23 +0100ProfSimm(~ProfSimm@87.227.196.109)
2021-12-21 15:44:37 +0100shailangsa(~shailangs@host86-186-127-224.range86-186.btcentralplus.com) (Ping timeout: 240 seconds)
2021-12-21 15:46:44 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-21 15:46:57 +0100Inst__(~Inst@2601:6c4:4080:3f80:d8ab:2e91:63f7:db6e) (Ping timeout: 240 seconds)
2021-12-21 15:48:09 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-12-21 15:52:49 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi)
2021-12-21 15:54:20 +0100evocatus(~evocatus@62.182.78.42)
2021-12-21 15:58:54 +0100max22-(~maxime@2a01cb0883359800aceba2125845502e.ipv6.abo.wanadoo.fr)
2021-12-21 16:01:58 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-12-21 16:02:18 +0100zebrag(~chris@user/zebrag)
2021-12-21 16:03:41 +0100__monty__(~toonn@user/toonn)
2021-12-21 16:04:36 +0100Bartol60(~Bartol@dynamic-adsl-84-221-241-8.clienti.tiscali.it)
2021-12-21 16:04:53 +0100Bartol(~Bartol@dynamic-adsl-84-221-241-8.clienti.tiscali.it) (Ping timeout: 256 seconds)
2021-12-21 16:05:05 +0100 <Guest4242> Hey, could anyone explain what's wrong with my implementation https://paste.tomsmeding.com/B1u4ChwF ? I wanted to test a foldr that could be short circuited, but turns out that the foldr doesn't even work as I expect (I expect the example given to return True)
2021-12-21 16:05:39 +0100Bartol60Bartol
2021-12-21 16:05:50 +0100 <tomsmeding> > intercalate "" $ take 10 $ repeat "a"
2021-12-21 16:05:51 +0100 <lambdabot> "aaaaaaaaaa"
2021-12-21 16:05:57 +0100 <tomsmeding> > replicate 10 'a'
2021-12-21 16:05:59 +0100 <lambdabot> "aaaaaaaaaa"
2021-12-21 16:06:17 +0100bodisiw(~bodiskw@128.163.238.115) (Quit: Leaving)
2021-12-21 16:07:20 +0100pfurla(~pfurla@2804:14d:5c5a:9a78:c52a:cb9b:7833:8fe4) (Quit: gone to sleep. ZZZzzz…)
2021-12-21 16:07:22 +0100 <tomsmeding> Guest4242: if your foldr encounters an element in the needles that does not occur in the haystack, the result becomes False, right? (and ignores the tail in that case)
2021-12-21 16:07:39 +0100 <tomsmeding> and 'a' is not in haystack
2021-12-21 16:07:40 +0100neurocyte0132889(~neurocyte@user/neurocyte) (Read error: Connection reset by peer)
2021-12-21 16:07:57 +0100jinsun(~quassel@user/jinsun) (Ping timeout: 240 seconds)
2021-12-21 16:08:03 +0100Bartol(~Bartol@dynamic-adsl-84-221-241-8.clienti.tiscali.it) (Client Quit)
2021-12-21 16:08:21 +0100neurocyte0132889(~neurocyte@IP-185117070150.dynamic.medianet-world.de)
2021-12-21 16:08:21 +0100neurocyte0132889(~neurocyte@IP-185117070150.dynamic.medianet-world.de) (Changing host)
2021-12-21 16:08:21 +0100neurocyte0132889(~neurocyte@user/neurocyte)
2021-12-21 16:08:21 +0100Bartol(~Bartol@dynamic-adsl-84-221-241-8.clienti.tiscali.it)
2021-12-21 16:08:27 +0100evocatus(~evocatus@62.182.78.42) (Quit: Leaving)
2021-12-21 16:09:01 +0100puke(~puke@user/puke)
2021-12-21 16:09:05 +0100Bartolandbartol
2021-12-21 16:09:25 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2021-12-21 16:09:58 +0100andbartolBartol
2021-12-21 16:10:29 +0100pfurla(~pfurla@2804:14d:5c5a:9a78:c52a:cb9b:7833:8fe4)
2021-12-21 16:13:00 +0100jinsun(~quassel@user/jinsun)
2021-12-21 16:13:03 +0100Bartol(~Bartol@dynamic-adsl-84-221-241-8.clienti.tiscali.it) (Changing host)
2021-12-21 16:13:03 +0100Bartol(~Bartol@user/Bartol)
2021-12-21 16:13:18 +0100 <Guest4242> But why does foldr ignore the tail of the needles then?
2021-12-21 16:14:01 +0100 <Guest4242> Shouldn't foldr traverse the list (the needles) completely?
2021-12-21 16:19:04 +0100jinsun(~quassel@user/jinsun) (Ping timeout: 268 seconds)
2021-12-21 16:19:31 +0100 <tomsmeding> > foldr f z [a, b, c, d]
2021-12-21 16:19:32 +0100 <lambdabot> f a (f b (f c (f d z)))
2021-12-21 16:20:14 +0100 <tomsmeding> Guest4242: if 'f' ignores its second argument, in your case 'acc', which indeed it does if 'elem x haystack' is False, then the tail of the list remains unevaluated
2021-12-21 16:20:18 +0100 <tomsmeding> because of lazy evaluation
2021-12-21 16:20:52 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-21 16:21:07 +0100 <tomsmeding> > foldr (\x rest -> if x > 10 then [] else x : rest) undefined [1..]
2021-12-21 16:21:09 +0100 <lambdabot> [1,2,3,4,5,6,7,8,9,10]
2021-12-21 16:22:35 +0100Sgeo(~Sgeo@user/sgeo)
2021-12-21 16:23:42 +0100shailangsa_(~shailangs@host109-159-108-207.range109-159.btcentralplus.com)
2021-12-21 16:24:02 +0100jinsun(~quassel@user/jinsun)
2021-12-21 16:24:14 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2021-12-21 16:24:15 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-12-21 16:24:49 +0100sweater(~sweater@206.81.18.26)
2021-12-21 16:26:11 +0100 <Guest4242> That means that in ` f a (f b (f c (f d z)))` if z is ignored, then only (f d z) will be computed?
2021-12-21 16:27:00 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-21 16:27:00 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-21 16:27:00 +0100wroathe(~wroathe@user/wroathe)
2021-12-21 16:27:00 +0100 <tomsmeding> > foldr (\x _ -> x) 10 [1,2,3,4]
2021-12-21 16:27:02 +0100 <lambdabot> 1
2021-12-21 16:27:26 +0100 <tomsmeding> > (\x _ -> x) 1 ((\x _ -> x) 2 ((\x _ -> x) 3 ((\x _ -> x) 4 10)))
2021-12-21 16:27:28 +0100 <lambdabot> 1
2021-12-21 16:27:41 +0100 <tomsmeding> Guest4242: does that help?
2021-12-21 16:28:16 +0100 <tomsmeding> the entirety of ((\x _ -> x) 2 ((\x _ -> x) 3 ((\x _ -> x) 4 10))) is not computed in that example
2021-12-21 16:28:40 +0100 <tomsmeding> > (\x _ -> x) 1 (error "oops I lied")
2021-12-21 16:28:42 +0100 <lambdabot> 1
2021-12-21 16:29:11 +0100 <xerox> > foldr (\x _ -> f x) a [b,c,d,e]
2021-12-21 16:29:13 +0100 <lambdabot> f b
2021-12-21 16:31:17 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2021-12-21 16:33:16 +0100lavaman(~lavaman@98.38.249.169)
2021-12-21 16:33:49 +0100 <Guest4242> tomsmeding: I think that helps yeah.  How would you change my function to do what I initially wanted? And if possible with a short-circuit of foldr in case any needle isn't found in the haystack.
2021-12-21 16:34:14 +0100 <tomsmeding> what exactly do you want to compute
2021-12-21 16:34:39 +0100 <tomsmeding> you're checking whether all needles occur in the haystack, and bailing out with False if that's not the case
2021-12-21 16:34:57 +0100 <tomsmeding> which you're correctly doing: not all needles in aaaa...aaabaaaaa.... occur in "bc" :)
2021-12-21 16:35:51 +0100ksqsf(~user@134.209.106.31) (Remote host closed the connection)
2021-12-21 16:36:09 +0100ksqsf(~user@134.209.106.31)
2021-12-21 16:36:23 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-12-21 16:37:08 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-21 16:37:52 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-12-21 16:38:30 +0100 <Guest4242> I want to check that all the needles appear in the haystack yes. So it's already correct and already short-circuiting right?
2021-12-21 16:39:21 +0100 <tomsmeding> yes -- at the very first 'a' :p
2021-12-21 16:39:25 +0100 <tomsmeding> because it doesn't occur in the haystack
2021-12-21 16:41:51 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2021-12-21 16:42:15 +0100 <Guest4242> All right. And I was right to use foldr, because of how foldl is defined it can't be short-circuited that way right?
2021-12-21 16:44:18 +0100pavonia(~user@user/siracusa)
2021-12-21 16:44:27 +0100Topsi(~Tobias@dyndsl-095-033-094-005.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2021-12-21 16:45:09 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-21 16:46:30 +0100 <tomsmeding> > foldl f z [a,b,c,d,e]
2021-12-21 16:46:32 +0100 <lambdabot> f (f (f (f (f z a) b) c) d) e
2021-12-21 16:46:34 +0100Feuermagier(~Feuermagi@user/feuermagier)
2021-12-21 16:47:17 +0100 <tomsmeding> if the list is finite, as it is here, an 'f' can short-circuit based on its _second_ argument, ignoring its first argument
2021-12-21 16:47:30 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:84c9:5514:9bd3:b2f5)
2021-12-21 16:48:21 +0100 <tomsmeding> > foldl (\x y -> if y <= 7 then 0 else x + y) 0 [1..10]
2021-12-21 16:48:22 +0100 <lambdabot> 27
2021-12-21 16:48:34 +0100 <tomsmeding> > 8 + 9 + 10
2021-12-21 16:48:36 +0100 <lambdabot> 27
2021-12-21 16:49:37 +0100 <tomsmeding> but if the list is infinite, then foldl will never produce anything anyway! Regardless of how lazy f is
2021-12-21 16:51:37 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:84c9:5514:9bd3:b2f5) (Ping timeout: 240 seconds)
2021-12-21 16:54:20 +0100 <Guest4242> I'm not sure I get your short-circuit example :/ for me, in your foldl, there is no short-circuit, foldl will go over every element of [1..10]
2021-12-21 16:54:47 +0100 <tomsmeding> hm it's a bit verbose
2021-12-21 16:55:05 +0100 <tomsmeding> > foldl (\x y -> if y <= 3 then 0 else x + y) 0 [1,2,3,4,5]
2021-12-21 16:55:07 +0100 <lambdabot> 9
2021-12-21 16:55:19 +0100 <tomsmeding> note that the function ignores its left argument if the right argument is <= 3
2021-12-21 16:55:27 +0100 <tomsmeding> > foldl f 0 [1,2,3,4,5]
2021-12-21 16:55:28 +0100 <lambdabot> error:
2021-12-21 16:55:28 +0100 <lambdabot> • Ambiguous type variable ‘a0’ arising from a use of ‘show_M534001523296...
2021-12-21 16:55:28 +0100 <lambdabot> prevents the constraint ‘(Show a0)’ from being solved.
2021-12-21 16:55:32 +0100 <tomsmeding> > foldl f 0 [1,2,3,4,5 :: Int]
2021-12-21 16:55:33 +0100 <lambdabot> error:
2021-12-21 16:55:33 +0100 <lambdabot> • Ambiguous type variable ‘a0’ arising from a use of ‘show_M896483681726...
2021-12-21 16:55:34 +0100 <lambdabot> prevents the constraint ‘(Show a0)’ from being solved.
2021-12-21 16:55:38 +0100 <tomsmeding> > foldl f (0 :: Int) [1,2,3,4,5 :: Int]
2021-12-21 16:55:39 +0100 <lambdabot> error:
2021-12-21 16:55:39 +0100 <lambdabot> • No instance for (FromExpr Int) arising from a use of ‘f’
2021-12-21 16:55:40 +0100 <lambdabot> • In the first argument of ‘foldl’, namely ‘f’
2021-12-21 16:55:42 +0100 <tomsmeding> oh come on
2021-12-21 16:55:44 +0100 <geekosaur> use Expr
2021-12-21 16:55:51 +0100 <tomsmeding> > foldl f (0 :: Expr) [1,2,3,4,5 :: Expr]
2021-12-21 16:55:52 +0100 <lambdabot> f (f (f (f (f 0 1) 2) 3) 4) 5
2021-12-21 16:55:55 +0100 <tomsmeding> geekosaur++
2021-12-21 16:56:04 +0100ProfSimm(~ProfSimm@87.227.196.109)
2021-12-21 16:56:11 +0100 <tomsmeding> Guest4242: ignore the type annotations, not relevant to the point :p
2021-12-21 16:56:38 +0100 <tomsmeding> do you see that the call 'f _ 3', where the _ is really 'f (f 0 1) 2', just evaluates to 0?
2021-12-21 16:57:04 +0100isovector1(~isovector@172.103.216.166)
2021-12-21 16:58:17 +0100 <tomsmeding> > let f = \x y -> if y <= 3 then 0 else x + y in f (f (f (error "not evaluated") 3) 4) 5
2021-12-21 16:58:19 +0100 <lambdabot> 9
2021-12-21 16:58:49 +0100 <tomsmeding> > let f = \x y -> if y <= 3 then 0 else x + y in (((error "not evaluated") `f` 3) `f` 4) `f` 5
2021-12-21 16:58:50 +0100 <lambdabot> 9
2021-12-21 16:58:56 +0100 <tomsmeding> perhaps clearer
2021-12-21 17:01:52 +0100pfurla(~pfurla@2804:14d:5c5a:9a78:c52a:cb9b:7833:8fe4) (Quit: gone to sleep. ZZZzzz…)
2021-12-21 17:03:03 +0100 <Guest4242> Mmh, isn't that only an example of lazy-evaluation?
2021-12-21 17:03:16 +0100 <tomsmeding> what's the difference?
2021-12-21 17:03:27 +0100 <tomsmeding> short-circuiting is precisely because of lazy evaluation
2021-12-21 17:06:16 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-21 17:07:51 +0100neurocyte0132889(~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat)
2021-12-21 17:12:10 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2021-12-21 17:13:39 +0100 <Guest4242> tomsmeding: https://paste.tomsmeding.com/H8m1shVP Here foldr short circuits at 100 and foldl doesn't. I'm not sure that's the perfect example, but that kinda shows the kind of thing i'm trying to do.
2021-12-21 17:16:34 +0100 <tomsmeding> Guest4242: foldr: if the function ignores its right argument, the rest of the list, to the right, is ignored. foldl: if the function ignores its left argument, the rest of the list, to the LEFT, is ignored.
2021-12-21 17:16:48 +0100 <tomsmeding> note that in my last example, elements 1,2,3 of the list were ignored
2021-12-21 17:18:42 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 260 seconds)
2021-12-21 17:22:13 +0100sweater1(~sweater@206.81.18.26)
2021-12-21 17:23:00 +0100 <tomsmeding> Guest4242: side note about foldl: note that if the list is infinite, whatever f does, no result will ever be produced because foldl is too busy staging all the f calls. foldl' is a bit better in this, in that it doesn't allow short-circuiting: it evaluates every f call from the innermost to the outermost.
2021-12-21 17:23:36 +0100 <tomsmeding> There are almost no cases where the plain foldl is a useful choice -- this short-circuiting might be one, but then there are probably better ways to do that anyway, like reversing the list first and then using foldr :p
2021-12-21 17:24:30 +0100sweater(~sweater@206.81.18.26) (Read error: Connection reset by peer)
2021-12-21 17:25:00 +0100sweater1(~sweater@206.81.18.26) (Remote host closed the connection)
2021-12-21 17:25:10 +0100deadmarshal(~deadmarsh@95.38.229.7)
2021-12-21 17:27:04 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:7976:b4da:33a:e80c) (Quit: WeeChat 2.8)
2021-12-21 17:27:49 +0100sweater(~sweater@206.81.18.26)
2021-12-21 17:29:32 +0100ksqsf(~user@134.209.106.31)
2021-12-21 17:31:52 +0100 <Guest4242> > foldr f z [a, b, c, d]
2021-12-21 17:31:54 +0100 <lambdabot> f a (f b (f c (f d z)))
2021-12-21 17:32:39 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2021-12-21 17:33:32 +0100 <Guest4242> In this example, the evaluator tries to evaluate f a ??, then ?? because it's needed, and not f d z first and and then f c (f d z) ? If that's the case I think I get it now.
2021-12-21 17:33:43 +0100 <tomsmeding> yes!
2021-12-21 17:33:47 +0100 <tomsmeding> that's the point of lazy evaluation
2021-12-21 17:35:08 +0100 <mrianbloom> If you are hoping to use linear types, does an entire project have to use the linear prelude?
2021-12-21 17:35:19 +0100 <tomsmeding> no
2021-12-21 17:35:23 +0100pfurla(~pfurla@2804:14d:5c5a:9a78:c52a:cb9b:7833:8fe4)
2021-12-21 17:35:38 +0100 <tomsmeding> well, technically no, but linear types are only useful if you have linear APIs to use
2021-12-21 17:36:19 +0100 <tomsmeding> I believe the meaning of existing valid haskell code never changes by enabling -XLinearTypes
2021-12-21 17:36:27 +0100isovector1(~isovector@172.103.216.166) (Quit: Leaving)
2021-12-21 17:36:33 +0100 <tomsmeding> there's just more stuff that you can do
2021-12-21 17:36:37 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 240 seconds)
2021-12-21 17:36:45 +0100 <mrianbloom> I'm actually looking into writing a linear API for futhark and I'm just trying to wrap my brain around what a user would need to change to use it.
2021-12-21 17:37:15 +0100 <tomsmeding> the user would probably need to enable the extension in order to use your API sensibly, but not necessarily anything else
2021-12-21 17:37:19 +0100 <Guest4242> Hm ok. That also explains how it can work on infinite lists. It's said to treat elements right-to-left, but the evaluator will actually try to evaluate f 1 ... first in `foldr f acc [1..]`, right? And then f 2 only if it was needed by f 1, right?
2021-12-21 17:37:30 +0100 <tomsmeding> mrianbloom: the linear prelude is just a lot of utility functions and data types
2021-12-21 17:37:45 +0100 <tomsmeding> Guest4242: correct
2021-12-21 17:38:12 +0100 <mrianbloom> I think the issue is whether we need to use the linear version of monad bind or not.
2021-12-21 17:38:20 +0100 <Guest4242> tomsmeding: All right. Thanks a lot !
2021-12-21 17:38:27 +0100 <tomsmeding> ah, linear monads
2021-12-21 17:38:50 +0100 <mrianbloom> We give users a monad transformer that holds a Cuda/OpenCL context.
2021-12-21 17:39:09 +0100 <tomsmeding> mrianbloom: in any case, you can just re-export the entirety of the linear prelude from your library if you want :p
2021-12-21 17:39:32 +0100 <tomsmeding> not sure how exactly linear monads work with monad transformers etc
2021-12-21 17:39:55 +0100 <mrianbloom> Yes that's my question as well.
2021-12-21 17:41:37 +0100emf(~emf@2620:10d:c091:480::1:cf46)
2021-12-21 17:43:08 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection)
2021-12-21 17:45:57 +0100emf(~emf@2620:10d:c091:480::1:cf46) (Ping timeout: 240 seconds)
2021-12-21 17:46:16 +0100 <geekosaur> I would extpect a type error tbh, since everything else is built against the Prelude Monad
2021-12-21 17:46:44 +0100 <geekosaur> ghc tends not to like this, since it doesn't do whole-program compilation so it can't just replace one with the other on the fly
2021-12-21 17:47:44 +0100deadmarshal(~deadmarsh@95.38.229.7) (Quit: ZNC 1.8.2 - https://znc.in)
2021-12-21 17:48:03 +0100ksqsf(~user@134.209.106.31)
2021-12-21 17:48:08 +0100deadmarshal(~deadmarsh@95.38.229.7)
2021-12-21 17:48:14 +0100zer0bitz(~zer0bitz@2001:2003:f444:a000:499c:186d:f10d:6a24)
2021-12-21 17:50:26 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:84c9:5514:9bd3:b2f5)
2021-12-21 17:51:26 +0100 <tomsmeding> yeah you wouldn't be able to use existing monad transformers unchanged; the data definitions might work, but the instances are for Prelude.Monad, not for the linear Monad class
2021-12-21 17:51:56 +0100 <tomsmeding> geekosaur: you might be right, but I also think it's possible that the first error you get is just a missing instance error
2021-12-21 17:52:12 +0100 <tomsmeding> s/also think it's /think it's also /
2021-12-21 17:52:18 +0100 <geekosaur> Prelude.Linear has instances
2021-12-21 17:52:39 +0100 <tomsmeding> but not for State or anything, right?
2021-12-21 17:52:42 +0100 <geekosaur> er, not exactly that module but there's a replacement Control.Monad.Trans.Instances.Linear
2021-12-21 17:52:52 +0100 <monochrom> Guest4242: In fact, "f b (f c (f d z))" or "f 2 (...)" was not even generated, not even as a delayed expression. For example, foldr (&&) z (False : foo) -> False && foldr (&&) z foo -> False, this takes constant time therefore constant space.
2021-12-21 17:53:14 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 260 seconds)
2021-12-21 17:54:20 +0100Guest4242(~Guest4242@78.198.4.122) (Quit: Client closed)
2021-12-21 17:54:42 +0100 <tomsmeding> geekosaur: I'm only finding this thing? https://hackage.haskell.org/package/linear-base-0.1.0/docs/src/Control.Functor.Linear.Internal.Ins…
2021-12-21 17:55:05 +0100 <geekosaur> mm, there's a State monad on the contents page but no docs link
2021-12-21 17:55:22 +0100 <tomsmeding> oh yeah there is stuff, e.g. https://hackage.haskell.org/package/linear-base-0.1.0/docs/src/Control.Functor.Linear.Internal.Sta…
2021-12-21 17:55:42 +0100 <tomsmeding> TIL
2021-12-21 17:56:07 +0100 <tomsmeding> the instances are listed in Control.Functor.Linear
2021-12-21 17:58:28 +0100emf(~emf@2620:10d:c091:480::1:cf46)
2021-12-21 18:00:02 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:00:03 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:01:39 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:01:39 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:02:00 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:02:00 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:03:15 +0100 <danso> has there been much follow-up discussion to alexis king's post "names are not type safety"?
2021-12-21 18:03:47 +0100 <danso> i am wondering whether it's possible to create a type of strings which contain alphabetic chars only
2021-12-21 18:04:13 +0100 <geekosaur> not presently
2021-12-21 18:04:16 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:04:17 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:04:44 +0100 <danso> (without having 52 constructors)
2021-12-21 18:04:45 +0100 <monochrom> That would be predicate subtypes, which is known as "refinement types" around this neighbourhood.
2021-12-21 18:04:46 +0100ksqsf(~user@134.209.106.31)
2021-12-21 18:05:00 +0100 <geekosaur> what you can do is create a newtype-d String and export a smart constructor
2021-12-21 18:05:13 +0100 <danso> geekosaur, oh :^/
2021-12-21 18:05:25 +0100 <danso> yes, that's what alexis says is the typical pattern but not ideal
2021-12-21 18:05:48 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:05:49 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:06:03 +0100 <geekosaur> not ideal, but the best you can do with standard Haskell. you can express it in Liquid Haskell, though, I think
2021-12-21 18:06:16 +0100econo(uid147250@user/econo)
2021-12-21 18:06:22 +0100 <monochrom> Well, something else would be non-ideal if you could express that with types. Namely, programmers have more proof obligations.
2021-12-21 18:06:37 +0100emf(~emf@2620:10d:c091:480::1:cf46) (Ping timeout: 240 seconds)
2021-12-21 18:06:48 +0100 <monochrom> At that point, what is "ideal" anyway?
2021-12-21 18:09:25 +0100 <danso> i always thought refinement types were a little weird.
2021-12-21 18:09:46 +0100 <monochrom> For a system that does both dependent typing and predicate subtyping, see http://pvs.csl.sri.com/
2021-12-21 18:09:54 +0100ksqsf(~user@134.209.106.31) (Remote host closed the connection)
2021-12-21 18:09:55 +0100 <danso> you can express something like `x: {... -2, -1, 0, 1, 2 ...} | x > 0`
2021-12-21 18:10:09 +0100 <danso> which is effectively the same as `x: {0, 1, 2...}`
2021-12-21 18:10:10 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:10:10 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:10:15 +0100ksqsf(~user@134.209.106.31)
2021-12-21 18:10:22 +0100emf(~emf@2620:10d:c091:480::1:cf46)
2021-12-21 18:10:52 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:10:52 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:11:27 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:11:28 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:12:27 +0100xff0x(~xff0x@2001:1a81:5251:6900:1836:4f55:974b:f1ca) (Ping timeout: 250 seconds)
2021-12-21 18:12:28 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:12:29 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:13:10 +0100xff0x(~xff0x@2001:1a81:5251:6900:a6ab:a36:c73a:5d3f)
2021-12-21 18:13:21 +0100 <monochrom> In practice, it's "x : Integer | x>0" so we never have to write "{... -2, -1, 0, 1, 2 ...}".
2021-12-21 18:13:41 +0100kaph(~kaph@151.47.131.129) (Ping timeout: 245 seconds)
2021-12-21 18:13:56 +0100pfurla(~pfurla@2804:14d:5c5a:9a78:c52a:cb9b:7833:8fe4) (Quit: gone to sleep. ZZZzzz…)
2021-12-21 18:14:06 +0100 <monochrom> And there will be time when you appreciate "x : Integer | x >= 65 && x < 65+26"
2021-12-21 18:14:10 +0100 <danso> that's true, but i wonder why we can't give a name to `Integers > 0` instead
2021-12-21 18:14:33 +0100 <danso> (correction: why we *shouldn't*, because of course we can: Natural)
2021-12-21 18:14:53 +0100 <monochrom> I don't know Liquid Haskell, but a self-respecting refinement type system ought to support type aliases too.
2021-12-21 18:15:20 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 256 seconds)
2021-12-21 18:15:30 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-12-21 18:17:03 +0100 <geekosaur> danso, simply because Haskell's type system does not support it.
2021-12-21 18:17:20 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-21 18:17:24 +0100 <danso> i guess my dream would be support for type declarations like `newtype CapitalInt = { 65 ... 91 }
2021-12-21 18:17:34 +0100 <monochrom> Also, Natural should be "integers >= 0".
2021-12-21 18:17:48 +0100 <danso> but i think that would basically require every number literal to have its own typeclass
2021-12-21 18:17:51 +0100 <geekosaur> the first decision you must make in such a system is whether to do checking at runtime (easier) or compile time (and now programmers must provide proofs with every operation on such a number that they don't violate the invariant)
2021-12-21 18:18:05 +0100 <monochrom> Pascal can do the special case of range subtypes.
2021-12-21 18:18:16 +0100pfurla(~pfurla@2804:14d:5c5a:9a78:c52a:cb9b:7833:8fe4)
2021-12-21 18:18:17 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:18:18 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:18:28 +0100 <geekosaur> *such a type
2021-12-21 18:18:33 +0100 <monochrom> You literally write "type T = 65...91" or "x : 65..91".
2021-12-21 18:18:57 +0100kspalaiologos(~kspalaiol@user/kspalaiologos)
2021-12-21 18:19:06 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:19:08 +0100tewrvd^(~tewrvd@64.253.22.77)
2021-12-21 18:19:14 +0100 <monochrom> Although, yeah, Pascal checks the range at run time.
2021-12-21 18:19:20 +0100 <danso> monochrom, mathematicians much smarter than i am disagree about the exact definition of "natural"
2021-12-21 18:19:48 +0100 <danso> i think ada supports a similar type feature
2021-12-21 18:19:54 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:19:55 +0100 <monochrom> Oh, it gets better. They disagree with each other.
2021-12-21 18:20:17 +0100 <danso> but both of those languages still have much... simpler type systems than haskell
2021-12-21 18:20:18 +0100 <monochrom> And they are split into 3 camps regarding 0^0.
2021-12-21 18:20:25 +0100 <danso> monochrom, that is what i meant :^)
2021-12-21 18:20:25 +0100Akiva(~Akiva@user/Akiva)
2021-12-21 18:20:38 +0100 <monochrom> Ah OK haha.
2021-12-21 18:20:55 +0100 <danso> you clearly have an opinion, but i don't really
2021-12-21 18:21:25 +0100 <danso> i am fine with nats starting at 0 or 1
2021-12-21 18:21:35 +0100 <danso> of course anything else would be one of those "abominations"
2021-12-21 18:22:47 +0100mbuf(~Shakthi@122.164.195.237) (Quit: Leaving)
2021-12-21 18:23:03 +0100 <monochrom> The anicent Greeks started at 2. They did not consider 0 or 1 to be numbers. They did not have 0, they probably didn't even have 1.
2021-12-21 18:23:58 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: closed)
2021-12-21 18:24:13 +0100 <danso> uncivilized heathens. luckily for us, the arabs taught them the error of their ways
2021-12-21 18:24:32 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:24:45 +0100 <monochrom> You can see some of it in Euclid's elements, in which when he stated a theorem that today we regard as "true for all positive integers", he stated a version for 1 and a version for >=2 separately.
2021-12-21 18:25:22 +0100 <monochrom> It also has a relic in our languages. If I say "I have a number of wives", you automatically assume it's >=2.
2021-12-21 18:25:31 +0100 <monochrom> Apparently 1 is not a "number".
2021-12-21 18:25:36 +0100 <danso> that is a good observation
2021-12-21 18:25:56 +0100 <danso> likewise, 0, -1, e, and 2+i are not "numbers"
2021-12-21 18:26:54 +0100 <danso> i am now wondering when such proofs are necessary and when they can be worked around.
2021-12-21 18:27:32 +0100xff0x(~xff0x@2001:1a81:5251:6900:a6ab:a36:c73a:5d3f) (Ping timeout: 240 seconds)
2021-12-21 18:27:44 +0100 <geekosaur> the cases when they're not necessary are pretty much the cases when you wouldn't want to use them (e.g. constants, which the compiler can check)
2021-12-21 18:27:47 +0100 <danso> taking the set/type CapsInt = {65 ... 91}, + and * could be the semiring operations isomorphic to the naturals mod 26
2021-12-21 18:28:03 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:28:04 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:28:18 +0100 <danso> though that would have the funny consequence that 65*65 = 65 and 66*66 = 66
2021-12-21 18:28:23 +0100xff0x(~xff0x@port-92-195-26-37.dynamic.as20676.net)
2021-12-21 18:28:40 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:28:41 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:28:59 +0100 <danso> (the naturals beginning at zero, of course ;^))
2021-12-21 18:29:14 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:29:14 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:30:00 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:30:01 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:30:03 +0100 <danso> i guess it would look funny because "65" is an unusual way to write zero
2021-12-21 18:30:38 +0100 <geekosaur> I think most people would want an exception for wraparounds; see complaints already about Haskell's Int and Word
2021-12-21 18:31:29 +0100 <danso> i am not aware of such complaints
2021-12-21 18:32:10 +0100 <danso> i suppose what they want is more like (+) :: Int -> Int -> Maybe Int
2021-12-21 18:32:51 +0100Feuermagier(~Feuermagi@user/feuermagier) (Ping timeout: 245 seconds)
2021-12-21 18:34:02 +0100pfurla(~pfurla@2804:14d:5c5a:9a78:c52a:cb9b:7833:8fe4) (Ping timeout: 240 seconds)
2021-12-21 18:35:21 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:35:22 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:35:45 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:35:46 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:36:00 +0100pfurla(~pfurla@2804:14d:5c5a:9a78:c98d:6161:3d03:dc15)
2021-12-21 18:36:11 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:36:12 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:36:26 +0100Feuermagier(~Feuermagi@user/feuermagier)
2021-12-21 18:37:36 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:37:36 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:37:41 +0100kspalaiologos(~kspalaiol@user/kspalaiologos) (Quit: Leaving)
2021-12-21 18:38:05 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:38:05 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:39:38 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:39:39 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:40:32 +0100pfurla(~pfurla@2804:14d:5c5a:9a78:c98d:6161:3d03:dc15) (Ping timeout: 240 seconds)
2021-12-21 18:42:37 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:42:37 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:43:01 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:43:01 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:43:42 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
2021-12-21 18:44:06 +0100deadmarshal(~deadmarsh@95.38.229.7) (Ping timeout: 260 seconds)
2021-12-21 18:45:42 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:45:43 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:45:49 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
2021-12-21 18:46:41 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:46:41 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:46:56 +0100cosimone(~user@93-47-231-231.ip115.fastwebnet.it)
2021-12-21 18:51:03 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:51:04 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:51:36 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-21 18:51:56 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:51:56 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:52:51 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:52:52 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:54:13 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:54:13 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:55:38 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:55:39 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:56:00 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 18:56:01 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 18:56:51 +0100justsomeguy(~justsomeg@user/justsomeguy)
2021-12-21 18:59:29 +0100ksqsf(~user@134.209.106.31)
2021-12-21 19:00:35 +0100deadmarshal(~deadmarsh@95.38.229.7)
2021-12-21 19:01:11 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: closed)
2021-12-21 19:01:20 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 19:02:26 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net)
2021-12-21 19:02:37 +0100Erutuon(~Erutuon@user/erutuon)
2021-12-21 19:02:56 +0100 <Arsen> what's a good way to cache deps in a, say, stack build in github actions cache
2021-12-21 19:04:48 +0100 <sshine> Arsen, https://github.com/sshine/evm-opcodes/blob/main/.github/workflows/haskell.yml#L33-L40
2021-12-21 19:05:04 +0100 <sshine> Arsen, sorry, that was for cabal.
2021-12-21 19:05:28 +0100nvmd(~nvmd@user/nvmd)
2021-12-21 19:05:34 +0100deadmarshal(~deadmarsh@95.38.229.7) (Ping timeout: 268 seconds)
2021-12-21 19:05:37 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 240 seconds)
2021-12-21 19:06:54 +0100 <sshine> Arsen, in Stack's case you want to cache .stack-work/ and ~/.stack, I think. let me just look.
2021-12-21 19:08:38 +0100slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-12-21 19:09:46 +0100 <Arsen> I think it's just stack-work
2021-12-21 19:10:00 +0100 <sshine> Arsen, you might like this: https://github.com/freckle/stack-action
2021-12-21 19:10:07 +0100 <Arsen> oh, damn, I didn't know that actions can cache dirs
2021-12-21 19:10:11 +0100 <Arsen> I thought it just caches a blob
2021-12-21 19:10:34 +0100justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3)
2021-12-21 19:10:58 +0100 <sshine> Arsen, https://github.com/freckle/stack-action#hlint--weeder -- possibly the shortest solution on GitHub is: - uses: freckle/stack-cache-action@v1
2021-12-21 19:11:29 +0100 <sshine> although, consider pinning the action by the commit hash instead of a version for security reasons.
2021-12-21 19:11:31 +0100ksqsf(~user@134.209.106.31)
2021-12-21 19:11:57 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2021-12-21 19:12:01 +0100 <sshine> https://michaelheap.com/ensure-github-actions-pinned-sha/
2021-12-21 19:12:06 +0100 <Arsen> yeah, of course
2021-12-21 19:12:07 +0100chexum(~quassel@gateway/tor-sasl/chexum)
2021-12-21 19:12:24 +0100 <Arsen> that's great, thank you! :D
2021-12-21 19:12:34 +0100 <sshine> yw!
2021-12-21 19:13:14 +0100 <sshine> also, I think it's not just .stack-work/ if you also want to cache building external dependencies.
2021-12-21 19:13:26 +0100 <sshine> I think .stack-work/ contains symlinks to ~/.stack/...?
2021-12-21 19:13:53 +0100 <Arsen> maybe..
2021-12-21 19:14:09 +0100 <sshine> might as well let the pre-made action figure that part out :-P
2021-12-21 19:14:37 +0100darchitect(~darchitec@2a00:23c6:3584:df00:7dec:bf13:8fa:748c)
2021-12-21 19:14:41 +0100 <Arsen> as long as it's audited and pinned
2021-12-21 19:15:29 +0100 <sshine> you can always hard-fork it, but I think @freckle looks like a reliable place to refer to one's actions, especially when hash-pinnned. :)
2021-12-21 19:16:17 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 240 seconds)
2021-12-21 19:18:47 +0100pfurla(~pfurla@2804:14d:5c5a:9a78:c98d:6161:3d03:dc15)
2021-12-21 19:18:47 +0100mvk(~mvk@2607:fea8:5cdd:f000::917a)
2021-12-21 19:19:21 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-21 19:19:21 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-21 19:19:21 +0100wroathe(~wroathe@user/wroathe)
2021-12-21 19:21:01 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
2021-12-21 19:22:57 +0100pfurla(~pfurla@2804:14d:5c5a:9a78:c98d:6161:3d03:dc15) (Ping timeout: 240 seconds)
2021-12-21 19:24:18 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
2021-12-21 19:26:06 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2021-12-21 19:27:33 +0100kspalaiologos(~kspalaiol@user/kspalaiologos)
2021-12-21 19:27:42 +0100epolanski(uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-21 19:28:01 +0100 <zero> why is take specialized to lists? aaarhg
2021-12-21 19:28:19 +0100haasn(~nand@haasn.dev) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
2021-12-21 19:29:16 +0100haasn(~nand@haasn.dev)
2021-12-21 19:29:38 +0100 <monochrom> What's wrong with that. What does "generalize" mean in that context?
2021-12-21 19:31:24 +0100 <geekosaur> what were you expecting it to work with, and why?
2021-12-21 19:31:37 +0100 <zero> take :: Foldable f => Int -> f a -> [a]
2021-12-21 19:31:54 +0100 <geekosaur> now imagine take applied to a Set
2021-12-21 19:32:02 +0100lavaman(~lavaman@98.38.249.169)
2021-12-21 19:32:06 +0100 <monochrom> That one can simply go through toList.
2021-12-21 19:32:24 +0100 <geekosaur> sure, but is it going to do what a caller would expect?
2021-12-21 19:32:37 +0100 <geekosaur> (for that matter, what would a caller expect it to do?)
2021-12-21 19:32:58 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 256 seconds)
2021-12-21 19:33:26 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-21 19:33:26 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-21 19:33:26 +0100wroathe(~wroathe@user/wroathe)
2021-12-21 19:33:39 +0100geekosauris now imagining take applied to the infamous Foldable instance for tuples
2021-12-21 19:33:42 +0100dyeplexer(~dyeplexer@user/dyeplexer) (Remote host closed the connection)
2021-12-21 19:33:47 +0100 <EvanR> repeatedly minViewing a set
2021-12-21 19:33:50 +0100 <zero> take n = take n . foldl' (:) []
2021-12-21 19:34:38 +0100 <EvanR> oof... spider sense tingling at that choice of fold
2021-12-21 19:34:45 +0100 <zero> oops
2021-12-21 19:34:57 +0100 <dmj`> maybe there should be a 'takeBy', takeBy on a Tree could give you an in/pre/post order traversal
2021-12-21 19:35:03 +0100 <zero> you're right but you get my point
2021-12-21 19:35:07 +0100 <EvanR> but yeah any Foldable can be converted to a list, which you can take
2021-12-21 19:35:12 +0100 <zero> that was muscle memory
2021-12-21 19:35:28 +0100 <EvanR> drop is the one that makes less sense
2021-12-21 19:35:44 +0100 <monochrom> People are too eager for strictness in a lazy language.
2021-12-21 19:35:50 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-12-21 19:36:01 +0100 <zero> monochrom: ;)
2021-12-21 19:38:15 +0100tewrvd^(~tewrvd@64.253.22.77) (Remote host closed the connection)
2021-12-21 19:38:55 +0100 <EvanR> I often want to not only take, by drop precisely what I took to end up with a "partition" that could hypothetically go back together
2021-12-21 19:39:07 +0100 <EvanR> but drop*
2021-12-21 19:39:14 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Quit: WeeChat 3.3)
2021-12-21 19:39:21 +0100 <monochrom> Yeah, span or break.
2021-12-21 19:39:26 +0100 <EvanR> dunno what typeclass that would be
2021-12-21 19:39:38 +0100 <EvanR> span for list, split for map or set
2021-12-21 19:39:51 +0100 <geekosaur> don't think there is one since you lose structure on the way
2021-12-21 19:40:03 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2021-12-21 19:42:56 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-12-21 19:42:59 +0100 <EvanR> for a more complex database of sets and indexes, splitting into the found set and the rest... for "purposes"
2021-12-21 19:43:16 +0100 <EvanR> this is how my deranged mind works
2021-12-21 19:46:50 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-21 19:47:17 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2021-12-21 19:49:23 +0100deech`(~user@024-217-244-075.res.spectrum.com) (Remote host closed the connection)
2021-12-21 19:49:36 +0100deech`(~user@024-217-244-075.res.spectrum.com)
2021-12-21 19:50:59 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-12-21 19:51:40 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-12-21 19:52:55 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-12-21 19:53:06 +0100fef(~thedawn@user/thedawn) (Ping timeout: 276 seconds)
2021-12-21 19:53:38 +0100mc47(~mc47@xmonad/TheMC47)
2021-12-21 19:54:51 +0100ksqsf(~user@134.209.106.31)
2021-12-21 19:55:30 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-12-21 19:55:56 +0100 <zero> what's the advantage of the class system over having overladed functions?
2021-12-21 19:56:36 +0100 <zero> *overloaded
2021-12-21 19:56:48 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-21 19:57:32 +0100 <monochrom> The Haskell class system is organized overloading.
2021-12-21 19:57:53 +0100 <monochrom> C++'s is unorganized.
2021-12-21 19:58:07 +0100 <monochrom> The difference is separate compilation.
2021-12-21 19:58:27 +0100cosimone(~user@93-47-231-231.ip115.fastwebnet.it) (Remote host closed the connection)
2021-12-21 19:58:32 +0100 <monochrom> Separate compilation has benefits in error message management too.
2021-12-21 19:58:45 +0100 <EvanR> type directed name disambiguation seems hit or miss
2021-12-21 19:58:59 +0100 <monochrom> For example, if you try to do "x < y" where the type of x and y do not support <
2021-12-21 19:59:26 +0100 <monochrom> Err, I need to start my example with:
2021-12-21 19:59:37 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 240 seconds)
2021-12-21 20:00:10 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2021-12-21 20:00:11 +0100 <monochrom> If I define a function "f x y = ... x<y ..." and you are the user.
2021-12-21 20:01:15 +0100 <monochrom> As a user, you don't want to hear how I coded it up, which line number I'm doing x<y at.
2021-12-21 20:01:17 +0100jkaye(~jkaye@2601:281:8300:7530:fd05:1ba8:c481:f305) (Ping timeout: 240 seconds)
2021-12-21 20:01:54 +0100 <monochrom> But you used it wrong. You try to have "f X Y" where X and Y are from a type that doesn't support <
2021-12-21 20:01:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-12-21 20:02:20 +0100 <monochrom> In Haskell, the error message is simply "your type is not an instance of Ord".
2021-12-21 20:03:26 +0100 <monochrom> In C++, the error message is "you're #include'ing monochrom.h and at line 451 it has x<y and it's nonsense".
2021-12-21 20:03:33 +0100max22-(~maxime@2a01cb0883359800aceba2125845502e.ipv6.abo.wanadoo.fr) (Ping timeout: 268 seconds)
2021-12-21 20:04:27 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-21 20:04:27 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-21 20:04:27 +0100wroathe(~wroathe@user/wroathe)
2021-12-21 20:05:00 +0100 <monochrom> It can get worse if f doesn't use x<y directly, but instead f calls g, g calls h, h is where I have x<y. And all that goes through 3 transitive #include's, too.
2021-12-21 20:05:23 +0100 <zero> i just wish there was a better way to disambiguate which function i mean without having to mess with imports
2021-12-21 20:06:16 +0100 <EvanR> ah that's a whole nother topic
2021-12-21 20:06:29 +0100pfurla(~pfurla@177.142.243.216)
2021-12-21 20:06:34 +0100 <EvanR> the same name is used in prelude, Data.Map, Data.Set, Data.Sequence, Data.HashMap, etc
2021-12-21 20:06:40 +0100 <monochrom> The C++ error message will be telling you all about monochrom1.h, monochrom2.h, monochrom3.h, f, g, h, and a lot of line numbers that you didn't write.
2021-12-21 20:07:24 +0100 <zero> EvanR: exactly
2021-12-21 20:07:48 +0100 <zero> i hate having to qualify all my imports
2021-12-21 20:07:48 +0100 <EvanR> clojure tries to help you by making all these names part of some interface, but then the interfaces don't come with any guarantees at all and end up doing a bunch of import fu anyway
2021-12-21 20:07:53 +0100 <monochrom> That one you solve by "import qualified Data.Map as M".
2021-12-21 20:08:26 +0100 <EvanR> I'm getting pretty close to having a copy pastable block of qualified imports that I just know
2021-12-21 20:08:48 +0100 <monochrom> Why were they not unified by a class? Because people felt that they didn't know how to design that class properly.
2021-12-21 20:09:05 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-12-21 20:09:44 +0100 <monochrom> Moreover classes might not even be the right answer. Parametrized modules might be a better answer. We were not sure.
2021-12-21 20:09:45 +0100 <zero> monochrom: also that would require coordination and also some time travel
2021-12-21 20:09:57 +0100 <monochrom> Moreoever, parametrized modules came too little too late.
2021-12-21 20:10:18 +0100 <zero> monochrom: what are paremeterized modules?
2021-12-21 20:10:32 +0100 <EvanR> and how would they help zero's issue
2021-12-21 20:10:42 +0100xkuru(~xkuru@user/xkuru)
2021-12-21 20:10:45 +0100 <EvanR> (not wanting to specify anything)
2021-12-21 20:10:57 +0100 <monochrom> Okassaki tried to do the classes in the "edision" library, when he was also doing functional data structures.
2021-12-21 20:11:04 +0100 <monochrom> No one went on to use that library.
2021-12-21 20:11:17 +0100pfurla(~pfurla@177.142.243.216) (Ping timeout: 252 seconds)
2021-12-21 20:11:37 +0100 <carter> which was a bummer
2021-12-21 20:11:38 +0100 <monochrom> That was the closest we ever got.
2021-12-21 20:11:42 +0100 <carter> yeah
2021-12-21 20:11:51 +0100ubert(~Thunderbi@p548c89c3.dip0.t-ipconnect.de)
2021-12-21 20:11:57 +0100Akiva(~Akiva@user/Akiva)
2021-12-21 20:11:58 +0100ksqsf(~user@134.209.106.31)
2021-12-21 20:12:02 +0100 <carter> partly its because type class composition is sortah not qutie the right "user demanded" ux
2021-12-21 20:12:28 +0100cosimone(~user@93-47-231-231.ip115.fastwebnet.it)
2021-12-21 20:13:13 +0100 <monochrom> Suppose you write a module M, in which you may want to use one of: [], Array, Set. But you are not sure which.
2021-12-21 20:13:17 +0100x_kuru(~xkuru@user/xkuru)
2021-12-21 20:13:23 +0100 <carter> yeah
2021-12-21 20:13:36 +0100 <carter> parameterized modules are sortah friendlier for that UX
2021-12-21 20:13:55 +0100 <monochrom> But you are sure that you want these 3 operations: isEmpty, singleton, insert.
2021-12-21 20:15:07 +0100 <monochrom> So you say your M takes a parameter, the parameter needs to be a module that exports a type T, and 3 operations isEmpty:T a->Bool, singleton:: a -> T a, insert :: a -> T a -> T a.
2021-12-21 20:15:30 +0100 <d34df00d> Suppose I have a `class Has (x :: Ty) (xs :: [Ty])`. How do I write `instance Has x (x :: xs)`? ghc thinks that latter :: is a type annotation and not a constructor.
2021-12-21 20:15:35 +0100 <monochrom> A module that takes a module as parameter.
2021-12-21 20:15:53 +0100xkuru(~xkuru@user/xkuru) (Ping timeout: 268 seconds)
2021-12-21 20:15:54 +0100 <monochrom> See SML "functor" and Haskell+cabal "backpack".
2021-12-21 20:16:13 +0100 <monochrom> And now you know all 4 definitions of "functor" :)
2021-12-21 20:16:15 +0100 <EvanR> headscratch... ok that's cool and all but, it sounds like more typing than import qualified Data.Map as M
2021-12-21 20:16:32 +0100 <EvanR> it solves a different issue from zero's gripe
2021-12-21 20:16:37 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 240 seconds)
2021-12-21 20:17:18 +0100 <EvanR> yes you don't specify exact which module you will use
2021-12-21 20:17:33 +0100 <EvanR> but you build a whole interface before doing anything
2021-12-21 20:18:11 +0100smyds(~smyds@176.10.118.193)
2021-12-21 20:18:20 +0100nvmd(~nvmd@user/nvmd) (Ping timeout: 268 seconds)
2021-12-21 20:18:44 +0100 <EvanR> maybe zero was saying I know which module I want to use, why can't the compiler just know what I know
2021-12-21 20:19:09 +0100 <EvanR> some kind of inference
2021-12-21 20:19:22 +0100 <smyds> hey, I'm reading a tutorial where they use the type "!Text", what does the '!' means ?
2021-12-21 20:19:26 +0100 <monochrom> Yeah, zero is not exactly known to clearer state their real concern.
2021-12-21 20:19:32 +0100 <monochrom> s/clearer/clearly/
2021-12-21 20:19:41 +0100nvmd(~nvmd@user/nvmd)
2021-12-21 20:20:06 +0100 <d34df00d> Ah dang, too much different languages lately. Of course, haskell's list constructor is :, not ::. Sorry for the brainfart.
2021-12-21 20:20:17 +0100 <geekosaur> smyds, the ! makes it strict
2021-12-21 20:20:29 +0100ksqsf(~user@134.209.106.31)
2021-12-21 20:20:30 +0100 <monochrom> smyds: You should post a more complete line of code, but it is likely http://www.vex.net/~trebla/haskell/strict-field.xhtml
2021-12-21 20:20:39 +0100 <monochrom> Context is very important.
2021-12-21 20:21:31 +0100 <monochrom> I am just upset that querents simply assume that they don't need to provide more context.
2021-12-21 20:21:48 +0100 <monochrom> Or it is reasonable to ask over-generalized questions.
2021-12-21 20:22:22 +0100 <monochrom> I was in a math channel in which some students were like "Is there an algorithm for solving equations in general?"
2021-12-21 20:22:36 +0100 <monochrom> And they only meant "like 3x+5 = 4".
2021-12-21 20:23:01 +0100 <monochrom> Or rather, they meant "my homework is 3x+5 = 4".
2021-12-21 20:24:46 +0100 <monochrom> This channel is not free of the same disease either.
2021-12-21 20:25:04 +0100 <monochrom> There were people who asked like "how do I use the Maybe type?"
2021-12-21 20:25:11 +0100 <EvanR> equations in general, like, commutative diagrams? xD
2021-12-21 20:25:34 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-21 20:25:40 +0100 <monochrom> And it turned out they just meant: "I got an error message for this line of code: f x = g Just x".
2021-12-21 20:25:45 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 268 seconds)
2021-12-21 20:27:49 +0100 <monochrom> in which the only problem was the lack of parentheses, "g (Just x)".
2021-12-21 20:28:09 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:84c9:5514:9bd3:b2f5) (Remote host closed the connection)
2021-12-21 20:28:31 +0100 <EvanR> less generalized problems, more generalized solutions
2021-12-21 20:28:53 +0100 <smyds> geekosaur: thanks, monochrom : thanks anyway
2021-12-21 20:29:14 +0100 <EvanR> including complaining about generalized problems
2021-12-21 20:29:37 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2021-12-21 20:31:01 +0100max22-(~maxime@2a01cb0883359800cf3672742e8ded0b.ipv6.abo.wanadoo.fr)
2021-12-21 20:31:32 +0100Vajb(~Vajb@2001:999:62:f3d1:4390:fbed:1f9b:9d03) (Read error: Connection reset by peer)
2021-12-21 20:32:17 +0100 <zero> monochrom: my concerns are not clear, i'm just generally concerned :)
2021-12-21 20:32:21 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-12-21 20:34:02 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2021-12-21 20:34:21 +0100 <zero> my curiosity is most often better satisfied if i don't try to be too specific with my questioning
2021-12-21 20:34:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-21 20:34:58 +0100 <zero> this channel is a never-ending funtain of knowledge
2021-12-21 20:35:15 +0100 <geekosaur> flip side you can be so nonspecific that nobody can give you an answer
2021-12-21 20:35:29 +0100 <zero> never happened
2021-12-21 20:35:42 +0100 <EvanR> if you think qualified imports are bad in haskell, in elixir not only is everything qualified but you use the full module name everywhere
2021-12-21 20:35:44 +0100 <zero> when it does, i can specify ;D
2021-12-21 20:35:57 +0100jkaye(~jkaye@2601:281:8300:7530:e0f7:dc28:dd0d:f0d5)
2021-12-21 20:36:29 +0100 <EvanR> 50% of a short snippet of code can be module names xD
2021-12-21 20:37:40 +0100 <monochrom> Now I know that next time I need not answer.
2021-12-21 20:38:17 +0100 <zero> i know understand what the issue is, why it is, and what the possible solutions are
2021-12-21 20:38:33 +0100 <sshine> zero, I like the term funtain.
2021-12-21 20:38:53 +0100 <zero> monochrom: your answers have been very helpful
2021-12-21 20:39:11 +0100 <zero> sshine: my 'o' key is acting up
2021-12-21 20:39:41 +0100 <pragma-> zero: have you tried sitting down with it and talking to it to see what may be bothering it?
2021-12-21 20:40:53 +0100 <zero> pragma-: i know exaclty what has been bthering it and that's my cat
2021-12-21 20:40:53 +0100 <EvanR> is strict field of primitives without UNPACK useful, or is UNPACK sometimes automatic?, and if you change UNPACK does that break anything down the line, already compiled, that depended on that type?
2021-12-21 20:41:33 +0100 <geekosaur> ghc with optimization will often try to UNPACK strict fields itself, iirc
2021-12-21 20:42:02 +0100 <geekosaur> anything already compiled will depend on it via the .hi file and will get recompiled if needed
2021-12-21 20:42:09 +0100 <EvanR> cool
2021-12-21 20:42:11 +0100 <monochrom> If you change UNPACK, you trigger "it recompiles everything, again".
2021-12-21 20:42:12 +0100 <zero> EvanR: unpacking often happens in optimizations
2021-12-21 20:42:48 +0100 <monochrom> Strict field is useful without UNPACK.
2021-12-21 20:42:51 +0100 <EvanR> so it might not even be necessary to state it
2021-12-21 20:43:04 +0100 <EvanR> strict field of e.g. Float?
2021-12-21 20:43:11 +0100 <geekosaur> yes, and you can have fields that are strict but can't be UNPACKed
2021-12-21 20:43:33 +0100 <geekosaur> (for example, anything with more than one constructor)
2021-12-21 20:43:55 +0100 <monochrom> If you try to do foldl' (z0, z1) ... and find that it is still too lazy and uses too much space, you need data S a b = S !a !b, foldl' (S z0 z1) ...
2021-12-21 20:44:49 +0100 <EvanR> yeah strict field in general is that, which is why i tagged "of primitives" on there xD
2021-12-21 20:45:00 +0100 <monochrom> Oh!
2021-12-21 20:45:07 +0100 <monochrom> Yeah I missed that.
2021-12-21 20:45:32 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-12-21 20:46:18 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-12-21 20:46:29 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-21 20:48:25 +0100yin(~yin@user/zero)
2021-12-21 20:49:53 +0100 <yin> do linear types have anything to do with the way rust handles the "borrowing" of values?
2021-12-21 20:50:31 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-21 20:50:36 +0100deadmarshal(~deadmarsh@95.38.229.7)
2021-12-21 20:51:01 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 268 seconds)
2021-12-21 20:51:35 +0100ksqsf(~user@134.209.106.31)
2021-12-21 20:51:56 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:84c9:5514:9bd3:b2f5)
2021-12-21 20:55:20 +0100deadmarshal(~deadmarsh@95.38.229.7) (Ping timeout: 268 seconds)
2021-12-21 20:56:17 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 240 seconds)
2021-12-21 20:56:21 +0100 <geekosaur> from the last discussion of that here I gather it's related but not identical
2021-12-21 20:57:27 +0100 <geekosaur> forthat matter ghc does the same kind of "borrowing" but it's simpler because of purity and that it therefore knows what values are no longer "alive" and can be reused
2021-12-21 20:59:26 +0100 <EvanR> specifically with the linear types?
2021-12-21 21:00:08 +0100 <geekosaur> which is how it does fusion
2021-12-21 21:00:17 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 240 seconds)
2021-12-21 21:04:36 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 21:04:37 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 21:05:20 +0100juhp(~juhp@128.106.188.82) (Ping timeout: 256 seconds)
2021-12-21 21:06:58 +0100juhp(~juhp@128.106.188.82)
2021-12-21 21:08:25 +0100andbartol(~andrea@user/Bartol)
2021-12-21 21:09:09 +0100andbartol(~andrea@user/Bartol) (Client Quit)
2021-12-21 21:12:52 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-21 21:14:06 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-21 21:16:29 +0100 <geekosaur> it doesn't yet use linearity / multiplicity for optimization at all. apparently that's supposed to come later
2021-12-21 21:19:18 +0100Feuermagier(~Feuermagi@user/feuermagier) (Remote host closed the connection)
2021-12-21 21:19:34 +0100Feuermagier(~Feuermagi@user/feuermagier)
2021-12-21 21:20:58 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-21 21:21:11 +0100kspalaiologos(~kspalaiol@user/kspalaiologos) (Quit: Leaving)
2021-12-21 21:24:43 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-12-21 21:24:54 +0100 <carter> its more that they cant make their fusion rewrite api safe UNLESS it type checks as linear
2021-12-21 21:25:02 +0100 <carter> rather than linearity being used for the optimization
2021-12-21 21:25:08 +0100 <carter> if you're talking about the xample i think youare
2021-12-21 21:26:18 +0100 <geekosaur> actually I started out talking about regular fusion (as compared to rust "borrowing") and only brought multiplicity into it later
2021-12-21 21:26:27 +0100ksqsf(~user@134.209.106.31)
2021-12-21 21:26:40 +0100 <geekosaur> I was wondering how much linear RULES could help with fusion, I admit
2021-12-21 21:27:28 +0100amk(~amk@109.255.169.126) (Remote host closed the connection)
2021-12-21 21:28:06 +0100amk(~amk@109.255.169.126)
2021-12-21 21:29:08 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2021-12-21 21:30:55 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-12-21 21:30:57 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 240 seconds)
2021-12-21 21:31:02 +0100jumper149(~jumper149@static.6.71.203.116.clients.your-server.de)
2021-12-21 21:31:39 +0100amk(~amk@109.255.169.126) (Remote host closed the connection)
2021-12-21 21:31:54 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net)
2021-12-21 21:34:13 +0100 <jumper149> Is blaze-html maintained properly? It seems like a few html tags aren't included.
2021-12-21 21:36:25 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
2021-12-21 21:42:16 +0100 <Henson> I'm trying to run a file interactively using ghci, and I'm getting an error about "undefined symbol: __gxx_personality_v0". The library in question is in pure Haskell, and doesn't depend on any C or C++ code.
2021-12-21 21:43:56 +0100 <geekosaur> I think libffi pulls that in, and is needed even for pure Haskell code because ultimately system calls go through libffi instead of the runtime trying to figure out how to call them directly (or, how linux decided to change their interface this week)
2021-12-21 21:44:49 +0100 <geekosaur> (even worse on windows since the only way to make a system call is a foreign dll call)
2021-12-21 21:46:28 +0100 <Henson> geekosaur: any idea on how to remedy it? I'm building this in Nix, and something that just occurred to me is I haven't included the appropriate library in the shell.nix file.
2021-12-21 21:47:28 +0100 <Henson> geekosaur: hmm, maybe not a Nix problem, libstdc++ is in the gcc compiler package, which I've included.
2021-12-21 21:47:29 +0100 <geekosaur> that should be libstdc++.so (unless you mean nix on os x in which case it's probably libc++.dylib)
2021-12-21 21:48:10 +0100 <geekosaur> but I know little about nix
2021-12-21 21:48:41 +0100ph88^(~ph88@2a02:8109:9e00:71d0:1121:f5bd:b8b:ca33)
2021-12-21 21:50:11 +0100 <Henson> geekosaur: ok, I'll keep digging. Thanks for the help
2021-12-21 21:50:20 +0100 <geekosaur> a quick check confirms it comes form libstdc++
2021-12-21 21:50:44 +0100 <geekosaur> beyond that, no clue especially if you have gcc exposed
2021-12-21 21:51:20 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-12-21 21:55:05 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-12-21 21:55:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-12-21 21:59:55 +0100amk(~amk@109.255.169.126)
2021-12-21 22:00:20 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-12-21 22:02:35 +0100acidjnk(~acidjnk@p200300d0c7271e256ce23fbe5bf2eea3.dip0.t-ipconnect.de)
2021-12-21 22:03:29 +0100wootehfoot(~wootehfoo@user/wootehfoot)
2021-12-21 22:09:05 +0100andbartol(~andbartol@dynamic-adsl-84-221-241-8.clienti.tiscali.it)
2021-12-21 22:09:11 +0100amk(~amk@109.255.169.126) (Remote host closed the connection)
2021-12-21 22:10:18 +0100andbartol(~andbartol@dynamic-adsl-84-221-241-8.clienti.tiscali.it) (Client Quit)
2021-12-21 22:10:52 +0100andbartol(~andbartol@user/Bartol)
2021-12-21 22:11:33 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-12-21 22:11:54 +0100andbartol(~andbartol@user/Bartol) (Client Quit)
2021-12-21 22:13:56 +0100andbartol(~andbartol@user/Bartol)
2021-12-21 22:14:32 +0100andbartol(~andbartol@user/Bartol) (Client Quit)
2021-12-21 22:14:39 +0100andbartol(~andbartol@user/Bartol)
2021-12-21 22:16:52 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
2021-12-21 22:19:00 +0100cosimone(~user@93-47-231-231.ip115.fastwebnet.it) (Quit: ERC (IRC client for Emacs 27.1))
2021-12-21 22:20:38 +0100ksqsf(~user@134.209.106.31)
2021-12-21 22:21:31 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-21 22:29:37 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 240 seconds)
2021-12-21 22:32:04 +0100Bartol(~Bartol@user/Bartol) (Quit: Client closed)
2021-12-21 22:37:03 +0100ph88^(~ph88@2a02:8109:9e00:71d0:1121:f5bd:b8b:ca33) (Remote host closed the connection)
2021-12-21 22:37:19 +0100andbartolBartol
2021-12-21 22:40:39 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 22:40:39 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 22:42:12 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-21 22:42:12 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-21 22:42:12 +0100wroathe(~wroathe@user/wroathe)
2021-12-21 22:42:34 +0100acidsys(~LSD@2.lsd.systems) (Excess Flood)
2021-12-21 22:43:06 +0100acidsys(~LSD@2.lsd.systems)
2021-12-21 22:43:17 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 240 seconds)
2021-12-21 22:45:17 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-12-21 22:45:55 +0100amk(~amk@109.255.169.126)
2021-12-21 22:47:21 +0100kuribas(~user@ptr-25vy0i8itabkuxqpwp8.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2021-12-21 22:47:54 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2021-12-21 22:48:28 +0100cheater(~Username@user/cheater) (Ping timeout: 256 seconds)
2021-12-21 22:49:02 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-21 22:50:26 +0100amk(~amk@109.255.169.126) (Remote host closed the connection)
2021-12-21 22:53:05 +0100 <Henson> geekosaur: I figured it out. I was not including the various C libraries when compiling my library. This was not a problem in the case of building the executable, because the necessary libraries were included in the build instructions for the executable, same as the test suite executable. However, when trying to run the tests interactively using ghci, it was missing the libraries and failing.
2021-12-21 22:54:28 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-12-21 22:54:51 +0100cheater(~Username@user/cheater)
2021-12-21 22:55:17 +0100emf(~emf@2620:10d:c091:480::1:cf46) (Ping timeout: 240 seconds)
2021-12-21 22:56:21 +0100justsomeguy(~justsomeg@user/justsomeguy)
2021-12-21 22:58:55 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-12-21 23:00:41 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Ping timeout: 252 seconds)
2021-12-21 23:01:02 +0100euandreh(~euandreh@2804:14c:33:9fe5:b7fd:fa95:80d6:f41) (Ping timeout: 240 seconds)
2021-12-21 23:04:05 +0100 <mrianbloom> Is there any project out there that uses linear types to manage foreign pointers?
2021-12-21 23:04:09 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-21 23:04:30 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-21 23:04:30 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-21 23:04:30 +0100wroathe(~wroathe@user/wroathe)
2021-12-21 23:04:33 +0100 <mrianbloom> I'm just trying to understand best practices.
2021-12-21 23:05:26 +0100 <geekosaur> I'm not sure there are any projects out there to speak of that use linear types, period
2021-12-21 23:05:42 +0100 <geekosaur> aside from Tweag
2021-12-21 23:06:40 +0100emf(~emf@2620:10d:c091:480::1:cf46)
2021-12-21 23:07:46 +0100zer0bitz(~zer0bitz@2001:2003:f444:a000:499c:186d:f10d:6a24) (Ping timeout: 260 seconds)
2021-12-21 23:08:17 +0100hololeap(~hololeap@user/hololeap) (Excess Flood)
2021-12-21 23:08:53 +0100 <mrianbloom> Hmmm... seems so promising.
2021-12-21 23:09:46 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2021-12-21 23:11:23 +0100hololeap(~hololeap@user/hololeap)
2021-12-21 23:11:23 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-12-21 23:12:00 +0100rusty(~rustyboy@82.77.225.165)
2021-12-21 23:12:13 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2021-12-21 23:12:34 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2021-12-21 23:14:18 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-12-21 23:14:46 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b) (Ping timeout: 260 seconds)
2021-12-21 23:15:10 +0100ksqsf(~user@134.209.106.31)
2021-12-21 23:16:31 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Client Quit)
2021-12-21 23:17:14 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2021-12-21 23:17:37 +0100amk(~amk@109.255.169.126)
2021-12-21 23:18:22 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-21 23:19:21 +0100matthias1(~igloo@cpe-76-170-236-166.socal.res.rr.com)
2021-12-21 23:20:02 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 240 seconds)
2021-12-21 23:21:50 +0100matthias1(~igloo@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection)
2021-12-21 23:22:39 +0100matthias1(~igloo@cpe-76-170-236-166.socal.res.rr.com)
2021-12-21 23:23:46 +0100matthias1(~igloo@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection)
2021-12-21 23:24:13 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com)
2021-12-21 23:24:26 +0100sprout(~quassel@2a02:a467:ccd6:1:bc5b:dbe0:79e5:a909)
2021-12-21 23:25:37 +0100emf(~emf@2620:10d:c091:480::1:cf46) (Ping timeout: 240 seconds)
2021-12-21 23:25:51 +0100notzmv(~zmv@user/notzmv)
2021-12-21 23:28:28 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2021-12-21 23:28:37 +0100sprout(~quassel@2a02:a467:ccd6:1:bc5b:dbe0:79e5:a909) (Ping timeout: 240 seconds)
2021-12-21 23:30:29 +0100amk(~amk@109.255.169.126) (Remote host closed the connection)
2021-12-21 23:31:42 +0100euandreh(~euandreh@2804:14c:33:9fe5:1bce:ba7c:3f01:c9f3)
2021-12-21 23:36:58 +0100amk(~amk@109.255.169.126)
2021-12-21 23:38:32 +0100jumper149(~jumper149@static.6.71.203.116.clients.your-server.de) (Quit: WeeChat 3.3)
2021-12-21 23:40:42 +0100ksqsf(~user@134.209.106.31)
2021-12-21 23:41:10 +0100sprout(~quassel@2a02:a467:ccd6:1:bc5b:dbe0:79e5:a909)
2021-12-21 23:43:37 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 23:43:41 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 23:44:22 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: closed)
2021-12-21 23:44:24 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 23:44:35 +0100ubert(~Thunderbi@p548c89c3.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-12-21 23:45:42 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 256 seconds)
2021-12-21 23:46:10 +0100sprout(~quassel@2a02:a467:ccd6:1:bc5b:dbe0:79e5:a909) (Ping timeout: 268 seconds)
2021-12-21 23:46:10 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 23:46:20 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 23:46:48 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
2021-12-21 23:46:49 +0100qrpnxz(abc4f95c31@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-21 23:46:50 +0100qrpnxz(abc4f95c31@user/qrpnxz)
2021-12-21 23:47:16 +0100jeetelongname(~jeet@88-111-159-26.dynamic.dsl.as9105.com)
2021-12-21 23:51:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-21 23:51:49 +0100Guest|47(~Guest|47@c-73-221-44-172.hsd1.wa.comcast.net)
2021-12-21 23:53:40 +0100 <Guest|47> Prelude> curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
2021-12-21 23:53:41 +0100 <Guest|47> <interactive>:2:1: error: Variable not in scope: curl
2021-12-21 23:54:15 +0100 <Guest|47> This is the terminal message I get when I try to run the  haskell install package from: https://www.haskell.org/ghcup/#
2021-12-21 23:55:08 +0100 <geekosaur> you're running it from ghci instead of the shell. if you already have ghci, why do you need ghcup?
2021-12-21 23:56:01 +0100 <Guest|47> Wow, good catch. haha
2021-12-21 23:56:30 +0100 <Guest|47> I'm trying to update to GHCi from version 8.4.2
2021-12-21 23:57:08 +0100 <Guest|47> with end goal of downloading Euterpea and HSoM to work through "The Haskell School Of Music" book
2021-12-21 23:57:50 +0100 <yushyin> `ghcup tui'
2021-12-21 23:58:12 +0100emf(~emf@2620:10d:c091:480::1:cf46)
2021-12-21 23:58:40 +0100 <Guest|47> >> curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
2021-12-21 23:58:41 +0100 <Guest|47> curl: (60) SSL certificate problem: certificate has expired
2021-12-21 23:58:41 +0100 <Guest|47> More details here: https://curl.haxx.se/docs/sslcerts.html
2021-12-21 23:58:53 +0100sprout(~quassel@2a02:a467:ccd6:1:bc5b:dbe0:79e5:a909)
2021-12-21 23:58:53 +0100 <geekosaur> once you have ghcup, that is. mthen 'a' to show 8.4.2, since by default it shows only the latest release in any given series which will be 8.4.4 in your case
2021-12-21 23:59:41 +0100 <geekosaur> hm, chrome here thinks the cert is fine