2022/06/04

2022-06-04 00:00:57 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:8199:e7da:e3d1:110) (Remote host closed the connection)
2022-06-04 00:01:48 +0200dcoutts__(~duncan@host86-144-78-203.range86-144.btcentralplus.com) (Ping timeout: 244 seconds)
2022-06-04 00:03:07 +0200slack1256(~slack1256@186.11.9.106) (Ping timeout: 240 seconds)
2022-06-04 00:07:17 +0200lottaquestions(~nick@2607:fa49:5041:a200:3daf:9139:3014:7a17) (Quit: Konversation terminated!)
2022-06-04 00:08:27 +0200dcleonarski(~user@2804:d51:4704:e400:680:84d0:9355:7c5b) (Ping timeout: 260 seconds)
2022-06-04 00:08:41 +0200azimut_(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-06-04 00:09:07 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-06-04 00:10:53 +0200lottaquestions(~nick@2607:fa49:5041:a200:a394:e3c:d4d7:cf13)
2022-06-04 00:11:05 +0200zeenk(~zeenk@2a02:2f04:a104:ef00:10:581:f80f:b980)
2022-06-04 00:18:54 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2022-06-04 00:19:34 +0200acidjnk(~acidjnk@p200300d0c7068b54b0b45aacebca8e8e.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2022-06-04 00:20:52 +0200jgeerds(~jgeerds@55d45f48.access.ecotel.net) (Ping timeout: 248 seconds)
2022-06-04 00:24:07 +0200Tuplanolla(~Tuplanoll@91-159-68-39.elisa-laajakaista.fi)
2022-06-04 00:25:41 +0200whatsupdoc(uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2022-06-04 00:27:44 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:8199:e7da:e3d1:110)
2022-06-04 01:00:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 01:08:27 +0200vysn(~vysn@user/vysn) (Ping timeout: 240 seconds)
2022-06-04 01:14:17 +0200spacenautx(~spacenaut@user/spacenautx) (Quit: WeeChat 3.0)
2022-06-04 01:23:26 +0200 <Bulby[m]> <dsal> "Bulby: updating like that is..." <- what are you refering to
2022-06-04 01:23:36 +0200 <Bulby[m]> sorry for the irc mess 😭
2022-06-04 01:24:25 +0200 <dsal> Bulby[m]: lens has stateful update things.
2022-06-04 01:24:25 +0200 <Bulby[m]> you mean record update with fmap?
2022-06-04 01:24:29 +0200 <dsal> :t (+=)
2022-06-04 01:24:31 +0200 <lambdabot> (MonadState s m, Num a) => ASetter' s a -> a -> m ()
2022-06-04 01:24:59 +0200 <dsal> > flip execState (2,4) $ do { _1 += 11; _2 *= 6 }
2022-06-04 01:25:02 +0200 <lambdabot> (13,24)
2022-06-04 01:25:58 +0200 <Bulby[m]> :t execState
2022-06-04 01:26:00 +0200 <lambdabot> State s a -> s -> s
2022-06-04 01:26:32 +0200 <Bulby[m]> polysemy has basically that
2022-06-04 01:26:34 +0200 <Bulby[m]> function
2022-06-04 01:26:57 +0200 <dsal> I don't know polysemy, but I was talking mostly about `+=` and family.
2022-06-04 01:27:02 +0200 <dsal> :t (%=)
2022-06-04 01:27:04 +0200 <lambdabot> MonadState s m => ASetter s s a b -> (a -> b) -> m ()
2022-06-04 01:28:00 +0200 <Bulby[m]> It doesn't implement monad state, but it should be fairly easy to implement
2022-06-04 01:28:23 +0200 <Bulby[m]> given it's almost the same interface as StateT
2022-06-04 01:29:26 +0200_xor(~xor@72.49.198.103)
2022-06-04 01:30:21 +0200 <dsal> I realize telling someone working within a polysemy bonfire to throw in some lens accelerant might be a destructive, but it sounded like what you were asking for.
2022-06-04 01:30:46 +0200 <Bulby[m]> ... bonfire, accelerant? in what way?
2022-06-04 01:31:22 +0200 <dsal> Like polysemy is nearly another language on Haskell, lens is another language on haskell.
2022-06-04 01:31:33 +0200zeenk(~zeenk@2a02:2f04:a104:ef00:10:581:f80f:b980) (Quit: Konversation terminated!)
2022-06-04 01:31:57 +0200bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 256 seconds)
2022-06-04 01:32:01 +0200 <Bulby[m]> polysemy plugin is fun, it's nearly mandatory if you don't want verbose polysemy code
2022-06-04 01:32:03 +0200 <dsal> And is slightly controversial. So it might be a struggle to wrap your brain around, but it's a pretty easy way in, for example, a state monad to do some deep manipulations.
2022-06-04 01:32:55 +0200 <dsal> You can do weird stuff like this:
2022-06-04 01:32:57 +0200 <dsal> > flip execState (2, Just (4, 27)) $ do { _1 += 11; _2 . _Just . _1 *= 6 }
2022-06-04 01:32:59 +0200 <Bulby[m]> if you know a lot about this, is there a more sane way to "return" in an interpreter other than throwing and catching
2022-06-04 01:33:00 +0200 <lambdabot> (13,Just (24,27))
2022-06-04 01:33:12 +0200 <dsal> I'm using tuples which makes it a little uglier.
2022-06-04 01:33:28 +0200 <dsal> There's stuff like ContT.
2022-06-04 01:33:47 +0200 <dsal> In general, that's what a bind does. They short-circuit by either continuing or aborting at every decision point.
2022-06-04 01:35:37 +0200 <Bulby[m]> I really need to write a test suite
2022-06-04 01:36:24 +0200 <dsal> That's basically what happens when you do something like this:
2022-06-04 01:36:26 +0200 <dsal> > do { a <- readMaybe "1"; b <- readMaybe "2"; pure (a + b) } :: Maybe Int
2022-06-04 01:36:28 +0200 <lambdabot> Just 3
2022-06-04 01:36:31 +0200 <dsal> > do { a <- readMaybe "one"; b <- readMaybe "2"; pure (a + b) } :: Maybe Int
2022-06-04 01:36:33 +0200 <lambdabot> Nothing
2022-06-04 01:36:56 +0200 <dsal> The bind itself moves considers `b` in the first case, and doesn't in the second because it already knows it's gone.
2022-06-04 01:37:08 +0200 <dsal> `ExceptT` is one easy way to do this in mtl. Or ContT if you're fancy.
2022-06-04 01:41:17 +0200TonyStone31(~TonyStone@2603-7080-8607-c36a-a177-c39b-f0e5-4ebe.res6.spectrum.com) (Ping timeout: 255 seconds)
2022-06-04 01:51:53 +0200 <EvanR> an interpreter loop could also just use recursion at every step
2022-06-04 01:52:20 +0200 <EvanR> then moving ahead one statement, jumping out of a loop, and returning would be the same
2022-06-04 01:52:43 +0200Tuplanolla(~Tuplanoll@91-159-68-39.elisa-laajakaista.fi) (Quit: Leaving.)
2022-06-04 01:53:24 +0200rekahsoft(~rekahsoft@bras-base-wdston4533w-grc-02-142-113-160-8.dsl.bell.ca) (Ping timeout: 244 seconds)
2022-06-04 01:54:18 +0200TonyStone31(~TonyStone@2603-7080-8607-c36a-a177-c39b-f0e5-4ebe.res6.spectrum.com)
2022-06-04 01:54:45 +0200stackdroid18(~stackdroi@user/stackdroid) (Quit: hasta la vista... tchau!)
2022-06-04 01:54:48 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-06-04 02:09:43 +0200mixfix41(~sdenynine@user/mixfix41)
2022-06-04 02:20:40 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
2022-06-04 02:23:01 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Remote host closed the connection)
2022-06-04 02:23:02 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds)
2022-06-04 02:24:02 +0200TonyStone31(~TonyStone@2603-7080-8607-c36a-a177-c39b-f0e5-4ebe.res6.spectrum.com) (Ping timeout: 255 seconds)
2022-06-04 02:36:34 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-06-04 02:37:24 +0200TonyStone31(~TonyStone@2603-7080-8607-c36a-a177-c39b-f0e5-4ebe.res6.spectrum.com)
2022-06-04 02:41:05 +0200gurkenglas(~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
2022-06-04 02:41:57 +0200nahcetan(~nate@98.45.169.16) (Ping timeout: 246 seconds)
2022-06-04 02:43:29 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-06-04 02:43:46 +0200nahcetan(~nate@98.45.169.16)
2022-06-04 02:45:11 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds)
2022-06-04 02:45:54 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2022-06-04 02:54:39 +0200stackdroid18(~stackdroi@user/stackdroid)
2022-06-04 02:54:50 +0200stackdroid18(~stackdroi@user/stackdroid) (Client Quit)
2022-06-04 02:55:02 +0200julian(~julian@20.83.116.49) (Killed (NickServ (GHOST command used by tos9_!~tos9@python/site-packages/Julian)))
2022-06-04 02:55:05 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 255 seconds)
2022-06-04 02:59:08 +0200TonyStone31(~TonyStone@2603-7080-8607-c36a-a177-c39b-f0e5-4ebe.res6.spectrum.com) (Ping timeout: 255 seconds)
2022-06-04 03:03:32 +0200julian(~julian@20.83.116.49)
2022-06-04 03:10:17 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-06-04 03:13:34 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
2022-06-04 03:16:23 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-06-04 03:17:47 +0200 <Bulby[m]> is there an expandable way of doing uncurry... I have a fun `a -> b -> c -> d` that I want to change to `(a, b, c) -> d`. is there a way to do this without using lambdas
2022-06-04 03:20:52 +0200 <EvanR> :t uncurry3
2022-06-04 03:20:54 +0200 <lambdabot> error:
2022-06-04 03:20:54 +0200 <lambdabot> • Variable not in scope: uncurry3
2022-06-04 03:20:54 +0200 <lambdabot> • Perhaps you meant ‘uncurry’ (imported from Data.Tuple)
2022-06-04 03:21:03 +0200 <Bulby[m]> ...
2022-06-04 03:21:12 +0200nate3(~nate@98.45.169.16)
2022-06-04 03:21:20 +0200 <EvanR> well anyway
2022-06-04 03:21:28 +0200 <EvanR> you can define it without a lambda
2022-06-04 03:21:28 +0200gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2022-06-04 03:22:03 +0200 <Bulby[m]> how so
2022-06-04 03:22:03 +0200 <EvanR> @hoogle uncurry3
2022-06-04 03:22:04 +0200 <lambdabot> Data.Tuple.Extra uncurry3 :: (a -> b -> c -> d) -> (a, b, c) -> d
2022-06-04 03:22:04 +0200 <lambdabot> Extra uncurry3 :: (a -> b -> c -> d) -> (a, b, c) -> d
2022-06-04 03:22:04 +0200 <lambdabot> Control.Functor.HT uncurry3 :: Functor f => (f a -> f b -> f c -> g) -> f (a, b, c) -> g
2022-06-04 03:22:26 +0200 <EvanR> uncurry3 f (x,y,z) = f x y z
2022-06-04 03:22:41 +0200 <Bulby[m]> that's basically what my lambda does
2022-06-04 03:22:56 +0200 <Bulby[m]> i was hoping for some applicative sorcery
2022-06-04 03:23:02 +0200 <EvanR> it's precisely what your lambda does, and probably doesn't make a difference to performance
2022-06-04 03:26:33 +0200 <EvanR> what you ask for is probably one step before the galaxy brain move of saying `uncurry3'
2022-06-04 03:26:55 +0200gentauro(~gentauro@user/gentauro)
2022-06-04 03:27:03 +0200 <EvanR> (or rewriting everything to not use triples)
2022-06-04 03:30:23 +0200nate3(~nate@98.45.169.16) (Ping timeout: 256 seconds)
2022-06-04 03:35:02 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 250 seconds)
2022-06-04 03:44:02 +0200 <Bulby[m]> probably better choice - i made more data types instead 😁
2022-06-04 03:50:04 +0200neurodivergent(~neurodive@S01069050ca4e3573.cg.shawcable.net)
2022-06-04 03:51:52 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 260 seconds)
2022-06-04 03:52:00 +0200andrey_(~andrey@p200300dbcf301a00a39cb4b6a4c691d0.dip0.t-ipconnect.de)
2022-06-04 03:52:44 +0200liz_liz
2022-06-04 03:54:18 +0200andrey__(~andrey@p200300dbcf0c6600f65a5485c0e2d33f.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2022-06-04 03:55:48 +0200bliminse(~bliminse@host86-164-169-5.range86-164.btcentralplus.com) (Ping timeout: 246 seconds)
2022-06-04 03:57:56 +0200bliminse(~bliminse@host86-132-158-77.range86-132.btcentralplus.com)
2022-06-04 03:59:19 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-06-04 03:59:34 +0200liz(~liz@host86-159-158-175.range86-159.btcentralplus.com) (Quit: Lost terminal)
2022-06-04 04:05:12 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-06-04 04:07:23 +0200qwedfg(~qwedfg@user/qwedfg) (Read error: Connection reset by peer)
2022-06-04 04:07:51 +0200img(~img@user/img)
2022-06-04 04:12:56 +0200nate3(~nate@98.45.169.16)
2022-06-04 04:14:23 +0200qwedfg(~qwedfg@user/qwedfg)
2022-06-04 04:16:31 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 244 seconds)
2022-06-04 04:17:47 +0200 <Bulby[m]> half of my type errors are from using `$`
2022-06-04 04:17:48 +0200 <Bulby[m]> wtf
2022-06-04 04:20:23 +0200neurodivergent(~neurodive@S01069050ca4e3573.cg.shawcable.net) (Quit: Client closed)
2022-06-04 04:20:26 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-06-04 04:20:49 +0200echoreply(~echoreply@45.32.163.16) (Ping timeout: 256 seconds)
2022-06-04 04:21:10 +0200nate3(~nate@98.45.169.16) (Ping timeout: 240 seconds)
2022-06-04 04:21:14 +0200echoreply(~echoreply@2001:19f0:9002:1f3b:5400:ff:fe6f:8b8d)
2022-06-04 04:23:50 +0200td_(~td@muedsl-82-207-238-121.citykom.de) (Ping timeout: 240 seconds)
2022-06-04 04:24:10 +0200 <dsal> $ is the root of all evil
2022-06-04 04:24:30 +0200neurodivergent(~neurodive@S01069050ca4e3573.cg.shawcable.net)
2022-06-04 04:24:49 +0200neurodivergent(~neurodive@S01069050ca4e3573.cg.shawcable.net) (Client Quit)
2022-06-04 04:25:05 +0200MsNeurodivergent(~MsNeurodi@S01069050ca4e3573.cg.shawcable.net)
2022-06-04 04:25:07 +0200Topsi(~Topsi@dyndsl-095-033-023-128.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2022-06-04 04:25:55 +0200td_(~td@94.134.91.175)
2022-06-04 04:28:35 +0200Benzi-Junior(~BenziJuni@dsl-149-64-179.hive.is) (Quit: ZNC 1.8.2 - https://znc.in)
2022-06-04 04:32:33 +0200nahcetan(~nate@98.45.169.16) (Ping timeout: 246 seconds)
2022-06-04 04:34:21 +0200nate3(~nate@98.45.169.16)
2022-06-04 04:37:32 +0200 <MsNeurodivergent> hola.
2022-06-04 04:39:12 +0200nate3(~nate@98.45.169.16) (Ping timeout: 246 seconds)
2022-06-04 04:47:24 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-06-04 04:47:24 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-06-04 04:47:24 +0200finn_elijaFinnElija
2022-06-04 04:47:25 +0200terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
2022-06-04 04:47:29 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
2022-06-04 04:48:42 +0200terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1)
2022-06-04 04:49:22 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-06-04 04:51:08 +0200alp(~alp@user/alp) (Ping timeout: 244 seconds)
2022-06-04 04:54:04 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 258 seconds)
2022-06-04 04:57:11 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 05:02:43 +0200Macbethwin(~chargen@D964062A.static.ziggozakelijk.nl)
2022-06-04 05:03:24 +0200MacbethwinEdwinV
2022-06-04 05:20:34 +0200nahcetan(~nate@98.45.169.16)
2022-06-04 05:22:12 +0200 <Bulby[m]> hm, I still am having issues with recursive functions in my interpreter
2022-06-04 05:22:43 +0200 <Bulby[m]> I can't define the function in the closure as the function itself holds the closure
2022-06-04 05:25:03 +0200motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 246 seconds)
2022-06-04 05:25:10 +0200nahcetan(~nate@98.45.169.16) (Ping timeout: 240 seconds)
2022-06-04 05:37:33 +0200motherfsck(~motherfsc@user/motherfsck)
2022-06-04 05:39:57 +0200mvk(~mvk@2607:fea8:5ce3:8500::ba9a)
2022-06-04 05:40:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 05:46:50 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 05:51:51 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 05:53:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 05:55:04 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2022-06-04 05:57:10 +0200 <EvanR> why the hell not
2022-06-04 05:58:14 +0200 <Bulby[m]> i don't know 😭
2022-06-04 06:01:03 +0200calleum_(~calleum@user/calleum)
2022-06-04 06:01:33 +0200notzmv(~zmv@user/notzmv)
2022-06-04 06:08:43 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2022-06-04 06:09:06 +0200 <Axman6> Bulby[m]: if you don't share code, we can;t help you
2022-06-04 06:10:35 +0200 <Bulby[m]> https://github.com/TheDrawingCoder-Gamer/lox-hs/blob/master/src/Lox/Evaluate.hs#L34-L38
2022-06-04 06:11:16 +0200 <Bulby[m]> I define the name, then assign it... however that assignment fetches the env that still has it as null
2022-06-04 06:13:16 +0200zincy(~zincy@host86-160-236-152.range86-160.btcentralplus.com)
2022-06-04 06:17:00 +0200cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Read error: Connection reset by peer)
2022-06-04 06:18:30 +0200zincy(~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Ping timeout: 276 seconds)
2022-06-04 06:19:27 +0200 <Bulby[m]> it's midnight where I live
2022-06-04 06:19:30 +0200 <Bulby[m]> i need sleep
2022-06-04 06:21:25 +0200cosimone(~user@93-44-186-171.ip98.fastwebnet.it)
2022-06-04 06:22:38 +0200cosimone(~user@93-44-186-171.ip98.fastwebnet.it) (Remote host closed the connection)
2022-06-04 06:24:34 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 06:31:04 +0200vysn(~vysn@user/vysn)
2022-06-04 06:31:32 +0200EdwinVdorment
2022-06-04 06:36:55 +0200mbuf(~Shakthi@223.190.209.89)
2022-06-04 06:40:48 +0200cosimone(~user@93-44-186-171.ip98.fastwebnet.it)
2022-06-04 06:48:19 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2022-06-04 06:50:51 +0200Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net)
2022-06-04 06:53:28 +0200odnes(~odnes@5-203-183-6.pat.nym.cosmote.net)
2022-06-04 07:01:41 +0200raym(~raym@user/raym) (Ping timeout: 255 seconds)
2022-06-04 07:02:27 +0200raym(~raym@user/raym)
2022-06-04 07:06:22 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 07:09:22 +0200bontaq(~user@ool-45779fe5.dyn.optonline.net)
2022-06-04 07:14:22 +0200vglfr(~vglfr@coupling.penchant.volia.net) (Ping timeout: 258 seconds)
2022-06-04 07:19:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 07:22:21 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 07:31:08 +0200MsNeurodivergent(~MsNeurodi@S01069050ca4e3573.cg.shawcable.net) (Quit: Client closed)
2022-06-04 07:32:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 07:32:47 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 07:46:38 +0200agumonkey(~user@88.163.231.79)
2022-06-04 07:52:40 +0200dorment(~chargen@D964062A.static.ziggozakelijk.nl) (Quit: suicide)
2022-06-04 07:54:04 +0200coot(~coot@213.134.190.95)
2022-06-04 07:55:01 +0200califax(~califax@user/califx) (Remote host closed the connection)
2022-06-04 07:56:02 +0200califax(~califax@user/califx)
2022-06-04 07:59:45 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 246 seconds)
2022-06-04 08:09:34 +0200vglfr(~vglfr@46.96.133.194)
2022-06-04 08:11:27 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-06-04 08:11:59 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2022-06-04 08:15:00 +0200agumonkey(~user@88.163.231.79) (Remote host closed the connection)
2022-06-04 08:15:31 +0200agumonkey(~user@2a01:e0a:8f9:d3e0:b117:81a8:33f6:93e7)
2022-06-04 08:16:23 +0200mvk(~mvk@2607:fea8:5ce3:8500::ba9a) (Ping timeout: 255 seconds)
2022-06-04 08:19:21 +0200acidjnk(~acidjnk@p200300d0c7068b53cc85b297155bdc13.dip0.t-ipconnect.de)
2022-06-04 08:26:28 +0200nate3(~nate@98.45.169.16)
2022-06-04 08:29:56 +0200trisolaran(~ye@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-06-04 08:31:41 +0200nate3(~nate@98.45.169.16) (Ping timeout: 255 seconds)
2022-06-04 08:35:48 +0200motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 246 seconds)
2022-06-04 08:38:53 +0200bilegeek(~bilegeek@2600:1008:b01f:31f8:a3e:b12c:dd8e:8844) (Ping timeout: 255 seconds)
2022-06-04 08:43:35 +0200bilegeek(~bilegeek@130.sub-174-208-235.myvzw.com)
2022-06-04 08:51:11 +0200motherfsck(~motherfsc@user/motherfsck)
2022-06-04 09:01:07 +0200vysn(~vysn@user/vysn) (Ping timeout: 240 seconds)
2022-06-04 09:03:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 09:08:08 +0200trisolaran(~ye@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 255 seconds)
2022-06-04 09:09:24 +0200_ht(~quassel@231-169-21-31.ftth.glasoperator.nl)
2022-06-04 09:12:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 09:14:06 +0200Guest65(~Guest65@2401:4900:1cc8:d1a4:12b1:2835:4df7:99b6)
2022-06-04 09:14:26 +0200gehmehgeh(~user@user/gehmehgeh)
2022-06-04 09:17:06 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 09:19:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 09:24:53 +0200nate3(~nate@98.45.169.16)
2022-06-04 09:25:34 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 09:27:53 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 09:28:50 +0200nate3(~nate@98.45.169.16) (Ping timeout: 240 seconds)
2022-06-04 09:31:48 +0200rembo10(~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
2022-06-04 09:32:40 +0200rembo10(~rembo10@main.remulis.com)
2022-06-04 09:44:57 +0200Guest65(~Guest65@2401:4900:1cc8:d1a4:12b1:2835:4df7:99b6) (Quit: Guest65)
2022-06-04 09:45:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 09:47:56 +0200causal(~user@50.35.83.177) (Quit: WeeChat 3.5)
2022-06-04 09:55:10 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 09:57:06 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:8199:e7da:e3d1:110) (Remote host closed the connection)
2022-06-04 10:03:39 +0200jinsun__(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2022-06-04 10:06:29 +0200jinsun(~jinsun@user/jinsun)
2022-06-04 10:07:05 +0200benin2(~benin@183.82.178.172)
2022-06-04 10:08:35 +0200benin(~benin@183.82.27.240) (Ping timeout: 252 seconds)
2022-06-04 10:08:36 +0200benin2benin
2022-06-04 10:11:25 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 10:13:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 10:23:34 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 10:25:13 +0200bilegeek(~bilegeek@130.sub-174-208-235.myvzw.com) (Quit: Leaving)
2022-06-04 10:26:25 +0200_xor(~xor@72.49.198.103) (Quit: brb)
2022-06-04 10:27:32 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2022-06-04 10:29:32 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 10:36:26 +0200jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 272 seconds)
2022-06-04 10:37:40 +0200Tuplanolla(~Tuplanoll@91-159-68-39.elisa-laajakaista.fi)
2022-06-04 10:38:29 +0200jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2022-06-04 10:38:30 +0200Kaiepi(~Kaiepi@156.34.47.253) (Ping timeout: 240 seconds)
2022-06-04 10:38:51 +0200acidjnk(~acidjnk@p200300d0c7068b53cc85b297155bdc13.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2022-06-04 10:39:41 +0200jinsun(~jinsun@user/jinsun)
2022-06-04 10:40:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 10:40:16 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 10:43:18 +0200jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2022-06-04 10:44:33 +0200jinsun(~jinsun@user/jinsun)
2022-06-04 10:44:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 10:44:51 +0200Midjak(~Midjak@82.66.147.146)
2022-06-04 10:50:25 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 10:56:58 +0200dcoutts__(~duncan@host86-144-78-203.range86-144.btcentralplus.com)
2022-06-04 10:57:28 +0200_xor(~xor@72.49.198.103)
2022-06-04 10:57:29 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:cd32:9943:3e3c:c96c)
2022-06-04 10:59:09 +0200jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2022-06-04 11:00:09 +0200abastro[m](~abastroma@2001:470:69fc:105::1:e119) (Quit: You have been kicked for being idle)
2022-06-04 11:00:14 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-06-04 11:00:47 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2022-06-04 11:01:48 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:cd32:9943:3e3c:c96c) (Ping timeout: 250 seconds)
2022-06-04 11:03:13 +0200Kaiepi(~Kaiepi@156.34.47.253)
2022-06-04 11:10:20 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-06-04 11:14:29 +0200chomwitt(~chomwitt@2a02:587:dc0e:3e00:a7b6:b006:4748:1da9)
2022-06-04 11:31:26 +0200gurkenglas(~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de)
2022-06-04 11:48:12 +0200mc47(~mc47@xmonad/TheMC47)
2022-06-04 11:48:18 +0200vglfr(~vglfr@46.96.133.194) (Ping timeout: 246 seconds)
2022-06-04 11:52:11 +0200nate3(~nate@98.45.169.16)
2022-06-04 11:52:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 11:57:16 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 11:57:20 +0200nate3(~nate@98.45.169.16) (Ping timeout: 255 seconds)
2022-06-04 12:06:56 +0200frost(~frost@user/frost) (Ping timeout: 252 seconds)
2022-06-04 12:11:17 +0200Igloo(~ian@matrix.chaos.earth.li) (Ping timeout: 255 seconds)
2022-06-04 12:11:24 +0200Igloo(~ian@matrix.chaos.earth.li)
2022-06-04 12:12:51 +0200Tuplanolla(~Tuplanoll@91-159-68-39.elisa-laajakaista.fi) (Ping timeout: 256 seconds)
2022-06-04 12:15:20 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Read error: Connection reset by peer)
2022-06-04 12:21:13 +0200Benzi-Junior(~BenziJuni@88-149-64-179.du.xdsl.is)
2022-06-04 12:24:42 +0200Igloo(~ian@matrix.chaos.earth.li) (Ping timeout: 246 seconds)
2022-06-04 12:25:43 +0200Tuplanolla(~Tuplanoll@91-159-69-1.elisa-laajakaista.fi)
2022-06-04 12:25:52 +0200fetsorn(~fetsorn@46.71.112.209)
2022-06-04 12:33:20 +0200fetsorn(~fetsorn@46.71.112.209) (Ping timeout: 255 seconds)
2022-06-04 12:33:25 +0200Pickchea(~private@user/pickchea)
2022-06-04 12:39:22 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-06-04 12:46:00 +0200machinedgod(~machinedg@24.105.81.50)
2022-06-04 12:55:50 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
2022-06-04 12:55:53 +0200DNH(~DNH@2a02:8109:b740:2c4:75e8:12f5:1781:b63f)
2022-06-04 12:58:45 +0200zincy(~zincy@host86-160-236-152.range86-160.btcentralplus.com)
2022-06-04 12:59:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 12:59:50 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-06-04 13:01:42 +0200Igloo(~ian@matrix.chaos.earth.li)
2022-06-04 13:01:59 +0200agumonkey(~user@2a01:e0a:8f9:d3e0:b117:81a8:33f6:93e7) (Remote host closed the connection)
2022-06-04 13:04:23 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
2022-06-04 13:04:59 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 13:05:40 +0200hubvu_(sid495858@id-495858.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2022-06-04 13:10:17 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 13:11:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 13:16:19 +0200hpc(~juzz@ip98-169-32-242.dc.dc.cox.net) (Ping timeout: 256 seconds)
2022-06-04 13:16:34 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 13:17:51 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 13:17:56 +0200hpc(~juzz@ip98-169-32-242.dc.dc.cox.net)
2022-06-04 13:22:35 +0200__monty__(~toonn@user/toonn)
2022-06-04 13:23:03 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 13:23:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 13:28:48 +0200alp(~alp@user/alp)
2022-06-04 13:30:32 +0200Pickchea(~private@user/pickchea) (Ping timeout: 260 seconds)
2022-06-04 13:32:34 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 13:34:05 +0200gurkenglas(~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) (Ping timeout: 255 seconds)
2022-06-04 13:34:25 +0200gurkenglas(~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de)
2022-06-04 13:35:41 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-06-04 13:35:51 +0200jakalx(~jakalx@base.jakalx.net) ()
2022-06-04 13:36:23 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-06-04 13:39:27 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 13:39:37 +0200gurkenglas(~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) (Ping timeout: 258 seconds)
2022-06-04 13:39:50 +0200agumonkey(~user@2a01:e0a:8f9:d3e0:b117:81a8:33f6:93e7)
2022-06-04 13:43:28 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-06-04 13:47:39 +0200zincy(~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Remote host closed the connection)
2022-06-04 13:48:09 +0200jakalx(~jakalx@base.jakalx.net)
2022-06-04 13:53:38 +0200nate3(~nate@98.45.169.16)
2022-06-04 13:58:48 +0200nate3(~nate@98.45.169.16) (Ping timeout: 244 seconds)
2022-06-04 14:03:19 +0200truckasaurus(sid457088@id-457088.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2022-06-04 14:09:38 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-06-04 14:10:32 +0200alp(~alp@user/alp) (Ping timeout: 255 seconds)
2022-06-04 14:10:44 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-06-04 14:15:18 +0200xff0x(~xff0x@b133147.ppp.asahi-net.or.jp) (Ping timeout: 246 seconds)
2022-06-04 14:17:57 +0200odnes(~odnes@5-203-183-6.pat.nym.cosmote.net) (Quit: Leaving)
2022-06-04 14:24:07 +0200ente(~daemon@inferno.barfooze.de) (Ping timeout: 244 seconds)
2022-06-04 14:27:13 +0200agumonkey(~user@2a01:e0a:8f9:d3e0:b117:81a8:33f6:93e7) (Remote host closed the connection)
2022-06-04 14:31:46 +0200jinsun(~jinsun@user/jinsun)
2022-06-04 14:37:48 +0200xff0x(~xff0x@b133147.ppp.asahi-net.or.jp)
2022-06-04 14:42:53 +0200zincy(~zincy@2a00:23c8:970c:4801:10b4:e123:1cab:7458)
2022-06-04 14:43:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 14:46:50 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
2022-06-04 14:47:01 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-06-04 14:48:47 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 14:50:08 +0200calleum_(~calleum@user/calleum) (Ping timeout: 255 seconds)
2022-06-04 14:53:57 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 14:57:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 15:00:40 +0200zincy(~zincy@2a00:23c8:970c:4801:10b4:e123:1cab:7458) (Remote host closed the connection)
2022-06-04 15:01:51 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:cd32:9943:3e3c:c96c)
2022-06-04 15:01:53 +0200robertm(robertm@lattice.rojoma.com) (Quit: WeeChat 3.0)
2022-06-04 15:04:22 +0200DNH(~DNH@2a02:8109:b740:2c4:75e8:12f5:1781:b63f) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-06-04 15:06:20 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:cd32:9943:3e3c:c96c) (Ping timeout: 255 seconds)
2022-06-04 15:07:19 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 15:11:04 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 15:11:54 +0200DNH(~DNH@2a02:8109:b740:2c4:75e8:12f5:1781:b63f)
2022-06-04 15:14:12 +0200robertm(robertm@lattice.rojoma.com)
2022-06-04 15:14:28 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-06-04 15:16:30 +0200 <juri_> hey, how do i use pendingWith from hspec with a property test executed by 'property' from quickcheck?
2022-06-04 15:16:56 +0200 <juri_> they have different return types, so i can't just use a do block...
2022-06-04 15:20:53 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 15:21:21 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-06-04 15:22:23 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-06-04 15:24:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 15:37:03 +0200oo_miguel(~pi@77.252.47.226) (Quit: WeeChat 3.0)
2022-06-04 15:39:11 +0200nate3(~nate@98.45.169.16)
2022-06-04 15:40:11 +0200ente(~daemon@inferno.barfooze.de)
2022-06-04 15:44:39 +0200nate3(~nate@98.45.169.16) (Ping timeout: 276 seconds)
2022-06-04 15:48:47 +0200 <shapr> Heffalump: I dreamed you were doing a world tour visiting Haskellers and you came to visit me.
2022-06-04 15:49:41 +0200zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2022-06-04 15:50:52 +0200zaquest(~notzaques@5.130.79.72)
2022-06-04 15:53:05 +0200 <juri_> isovector still owes me a dropby. next time he goes exploring the world.
2022-06-04 15:53:13 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-06-04 16:01:26 +0200benin(~benin@183.82.178.172) (Quit: The Lounge - https://thelounge.chat)
2022-06-04 16:26:08 +0200Topsi(~Topsi@dyndsl-095-033-091-150.ewe-ip-backbone.de)
2022-06-04 16:28:41 +0200raym(~raym@user/raym) (Ping timeout: 255 seconds)
2022-06-04 16:32:00 +0200cheater(~Username@user/cheater) (Read error: Connection reset by peer)
2022-06-04 16:32:42 +0200cheater(~Username@user/cheater)
2022-06-04 16:35:12 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
2022-06-04 16:37:34 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-06-04 16:56:18 +0200cosimone(~user@93-44-186-171.ip98.fastwebnet.it) (Remote host closed the connection)
2022-06-04 16:59:24 +0200raym(~raym@user/raym)
2022-06-04 17:03:19 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:cd32:9943:3e3c:c96c)
2022-06-04 17:07:54 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:cd32:9943:3e3c:c96c) (Ping timeout: 244 seconds)
2022-06-04 17:07:59 +0200ec(~ec@gateway/tor-sasl/ec)
2022-06-04 17:09:30 +0200Pickchea(~private@user/pickchea)
2022-06-04 17:12:42 +0200jafarlihi(~user@185.30.89.104)
2022-06-04 17:12:51 +0200jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2022-06-04 17:13:10 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 250 seconds)
2022-06-04 17:17:29 +0200unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
2022-06-04 17:17:34 +0200 <unit73e> hello
2022-06-04 17:18:41 +0200 <unit73e> can't find the differente between a sprite and frame and I'm doing an animation module lol
2022-06-04 17:20:14 +0200jinsun(~jinsun@user/jinsun)
2022-06-04 17:23:34 +0200andrey__(~andrey@p508d5c0f.dip0.t-ipconnect.de)
2022-06-04 17:25:59 +0200andrey_(~andrey@p200300dbcf301a00a39cb4b6a4c691d0.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2022-06-04 17:28:33 +0200julian(~julian@20.83.116.49) (Killed (NickServ (GHOST command used by tos9_!~tos9@python/site-packages/Julian)))
2022-06-04 17:29:12 +0200jafarlihi(~user@185.30.89.104) (Quit: WeeChat 3.5)
2022-06-04 17:32:03 +0200nahcetan(~nate@98.45.169.16)
2022-06-04 17:34:22 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-06-04 17:34:36 +0200gurkenglas(~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de)
2022-06-04 17:39:02 +0200chomwitt(~chomwitt@2a02:587:dc0e:3e00:a7b6:b006:4748:1da9) (Ping timeout: 260 seconds)
2022-06-04 17:41:14 +0200nate3(~nate@98.45.169.16)
2022-06-04 17:43:53 +0200DNH(~DNH@2a02:8109:b740:2c4:75e8:12f5:1781:b63f) (Read error: Connection reset by peer)
2022-06-04 17:44:01 +0200fendor_(~fendor@178.165.192.249.wireless.dyn.drei.com) (Read error: Connection reset by peer)
2022-06-04 17:46:41 +0200 <Bulby[m]> i am awake... what sorcery do I need to support recursive functions
2022-06-04 17:46:51 +0200nate3(~nate@98.45.169.16) (Ping timeout: 276 seconds)
2022-06-04 17:47:23 +0200 <Bulby[m]> https://github.com/TheDrawingCoder-Gamer/lox-hs/blob/master/src/Lox/Evaluate.hs#L34-L38
2022-06-04 17:47:28 +0200user1(~user@185.30.89.104)
2022-06-04 17:48:46 +0200fendor(~fendor@178.115.68.102.wireless.dyn.drei.com)
2022-06-04 17:49:27 +0200user1(~user@185.30.89.104) (Client Quit)
2022-06-04 17:52:00 +0200cosimone(~user@93-44-186-171.ip98.fastwebnet.it)
2022-06-04 17:52:09 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2022-06-04 17:52:20 +0200Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection)
2022-06-04 18:00:23 +0200Guest|77(~Guest|77@net-93-70-51-195.cust.vodafonedsl.it)
2022-06-04 18:00:46 +0200Guest|77(~Guest|77@net-93-70-51-195.cust.vodafonedsl.it) (Client Quit)
2022-06-04 18:03:07 +0200Pickchea(~private@user/pickchea) (Ping timeout: 240 seconds)
2022-06-04 18:03:16 +0200cyanide4dinner(~cyanide4d@27.57.130.136)
2022-06-04 18:03:19 +0200cyanide4dinner(~cyanide4d@27.57.130.136) (Client Quit)
2022-06-04 18:06:35 +0200 <unit73e> Bulby[m], I don't get your question
2022-06-04 18:06:53 +0200julian(~julian@20.83.116.49)
2022-06-04 18:07:13 +0200 <Bulby[m]> I want the `LxEnv` I get to contain a reference to the function itself
2022-06-04 18:07:25 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-06-04 18:07:38 +0200 <unit73e> ok. for what?
2022-06-04 18:07:55 +0200 <Bulby[m]> an interpreter function value
2022-06-04 18:08:27 +0200 <unit73e> which function reference?
2022-06-04 18:08:40 +0200 <unit73e> because you can just store a function
2022-06-04 18:08:40 +0200 <geekosaur> the one being defined at that point
2022-06-04 18:08:47 +0200 <Bulby[m]> ^
2022-06-04 18:09:00 +0200 <Bulby[m]> a reference to `LvFun`
2022-06-04 18:09:07 +0200 <geekosaur> you might look at "tying the knot"
2022-06-04 18:09:18 +0200 <Bulby[m]> ?
2022-06-04 18:09:24 +0200 <Bulby[m]> fix?
2022-06-04 18:09:29 +0200coot(~coot@213.134.190.95)
2022-06-04 18:09:30 +0200 <geekosaur> sort of
2022-06-04 18:09:51 +0200Luj(~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb) (Quit: The Lounge - https://thelounge.chat)
2022-06-04 18:09:54 +0200 <geekosaur> https://wiki.haskell.org/Tying_the_Knot
2022-06-04 18:10:12 +0200 <geekosaur> it's a trick using laziness to achieve recursive definitions or values
2022-06-04 18:10:56 +0200 <geekosaur> so you can in effect reference a value before it's been defined, which is what you want here
2022-06-04 18:10:58 +0200Luj(~Luj@2a01:e0a:5f9:9681:3f95:8a9b:686:c147)
2022-06-04 18:11:33 +0200 <Bulby[m]> interesting
2022-06-04 18:11:46 +0200mjs2600_(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
2022-06-04 18:12:12 +0200 <Bulby[m]> so i would first get a reference to one that isn't cyclical, then record update with a reference'
2022-06-04 18:13:25 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2022-06-04 18:13:27 +0200 <Bulby[m]> record update wouldn't work how I want because it's in a monad
2022-06-04 18:13:32 +0200coot(~coot@213.134.190.95) (Client Quit)
2022-06-04 18:14:01 +0200 <Bulby[m]> so I will do stupid sort of update
2022-06-04 18:17:30 +0200desklamp[m](~desklampm@2001:470:69fc:105::77b8)
2022-06-04 18:18:13 +0200 <Bulby[m]> 1. does binding in do statement work like let and 2. can you use the name being defined
2022-06-04 18:20:04 +0200 <geekosaur> let bindings are still recursive. binding with <- is actually a lambda binding, so is not recursive but instead defines a new scope
2022-06-04 18:21:09 +0200 <Bulby[m]> so i'll use a let binding then bind with <- later
2022-06-04 18:21:32 +0200 <geekosaur> this means in `x <- expr_using_x`, it's not recursive because it translates to `expr_using_x >>= \x ->`
2022-06-04 18:22:08 +0200 <Bulby[m]> wait, i'm using Data.HashMap.Strict to store it]
2022-06-04 18:22:13 +0200 <geekosaur> there's an extension for a recursive do (mdo) iirc
2022-06-04 18:22:17 +0200 <Bulby[m]> hope that doesn't cause any issues
2022-06-04 18:23:36 +0200Luj(~Luj@2a01:e0a:5f9:9681:3f95:8a9b:686:c147) (Quit: The Lounge - https://thelounge.chat)
2022-06-04 18:23:40 +0200 <geekosaur> https://downloads.haskell.org/ghc/9.0.2/docs/html/users_guide/exts/recursive_do.html
2022-06-04 18:24:00 +0200 <geekosaur> (I used the 9.0.2 manual but it's been around for a long time)
2022-06-04 18:24:04 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 18:24:10 +0200 <geekosaur> back to 6.8
2022-06-04 18:24:33 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-06-04 18:25:47 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-06-04 18:33:11 +0200alp(~alp@user/alp)
2022-06-04 18:33:36 +0200nahcetan(~nate@98.45.169.16) (Ping timeout: 246 seconds)
2022-06-04 18:35:11 +0200mixfix41(~sdenynine@user/mixfix41) (Excess Flood)
2022-06-04 18:36:16 +0200 <Bulby[m]> The implementation of mfix for IO. If the function passed to fixIO inspects its argument, the resulting action will throw FixIOException.
2022-06-04 18:36:26 +0200 <Bulby[m]> does recursive do mess with this at all
2022-06-04 18:36:56 +0200Jeanne-Kamikaze(~Jeanne-Ka@142.147.89.254)
2022-06-04 18:37:31 +0200sander(~sander@user/sander) (Quit: So long! :))
2022-06-04 18:41:24 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 18:41:24 +0200 <c_wraith> no. recursive do is syntactic sugar for a call to mfix
2022-06-04 18:41:48 +0200 <Bulby[m]> haha i'll just run it and see if it crashes 🙂
2022-06-04 18:42:32 +0200 <c_wraith> if the function passed to fixIO inspects its arguments, you have a causality violation anyway. :P
2022-06-04 18:42:49 +0200 <Bulby[m]> i don't understand what that means
2022-06-04 18:42:58 +0200hueso(~root@user/hueso) (Ping timeout: 244 seconds)
2022-06-04 18:43:56 +0200 <c_wraith> it means you've set something up so that its input depends on its output in a paradoxical way.
2022-06-04 18:44:14 +0200mixfix41(~sdenynine@user/mixfix41)
2022-06-04 18:44:25 +0200 <c_wraith> I really like knot-tying. I've used both explicit knot-tying and recursive do a lot
2022-06-04 18:44:38 +0200 <c_wraith> But you have to be careful that real progress can happen
2022-06-04 18:44:53 +0200 <c_wraith> If it can't, you're just creating an infinite loop
2022-06-04 18:45:11 +0200 <c_wraith> (except IO is nice enough to break the loop with an exception when you use mfix)
2022-06-04 18:46:28 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-06-04 18:47:38 +0200zebrag(~chris@user/zebrag)
2022-06-04 18:47:55 +0200hueso(~root@user/hueso)
2022-06-04 18:54:19 +0200 <c_wraith> huh.. breaking the loop in IO is quite slow. Oh, right. because it's using an MVar behind the scenes, so it needs to wait on the MVar indefinitely blocked exception, which means it needs to wait for a GC to detect that
2022-06-04 18:54:41 +0200sander(~sander@user/sander)
2022-06-04 18:58:51 +0200raym(~raym@user/raym) (Remote host closed the connection)
2022-06-04 18:59:16 +0200raym(~raym@user/raym)
2022-06-04 19:01:17 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-06-04 19:03:55 +0200raym(~raym@user/raym) (Ping timeout: 258 seconds)
2022-06-04 19:04:10 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:cd32:9943:3e3c:c96c)
2022-06-04 19:04:15 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-06-04 19:04:39 +0200raym(~raym@user/raym)
2022-06-04 19:06:30 +0200 <Bulby[m]> ok, now I realize there is a second problem - I need to update the closure when the function is run to allow this example to wokr
2022-06-04 19:06:31 +0200 <Bulby[m]> https://craftinginterpreters.com/functions.html#local-functions-and-closures
2022-06-04 19:06:53 +0200 <Bulby[m]> current, it prints 1 twice in a row
2022-06-04 19:08:37 +0200 <Bulby[m]> i think I know how - i'll tell you if it works out
2022-06-04 19:11:58 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2022-06-04 19:18:25 +0200raym(~raym@user/raym) (Ping timeout: 260 seconds)
2022-06-04 19:21:19 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-06-04 19:25:42 +0200jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2022-06-04 19:27:04 +0200jinsun(~jinsun@user/jinsun)
2022-06-04 19:31:23 +0200mbuf(~Shakthi@223.190.209.89) (Quit: Leaving)
2022-06-04 19:34:19 +0200raym(~raym@user/raym)
2022-06-04 19:36:27 +0200Macbethwin(~chargen@D964062A.static.ziggozakelijk.nl)
2022-06-04 19:40:42 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-06-04 19:43:38 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 272 seconds)
2022-06-04 19:45:34 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-06-04 19:46:09 +0200 <Bulby[m]> hm, my return throws the state, so i am trying to replace the closure with the thrown one, but that closure seems to lack the recursive definition
2022-06-04 19:48:06 +0200califax(~califax@user/califx) (Remote host closed the connection)
2022-06-04 19:48:10 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-06-04 19:49:29 +0200califax(~califax@user/califx)
2022-06-04 19:54:50 +0200zaquest(~notzaques@5.130.79.72) (Ping timeout: 240 seconds)
2022-06-04 19:55:49 +0200 <Bulby[m]> would there be a reason for this?
2022-06-04 19:56:04 +0200 <Bulby[m]> is it impossible to pass around recursive defs
2022-06-04 19:57:46 +0200zaquest(~notzaques@5.130.79.72)
2022-06-04 19:57:56 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-06-04 19:59:00 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2022-06-04 19:59:24 +0200econo(uid147250@user/econo)
2022-06-04 19:59:30 +0200bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 258 seconds)
2022-06-04 20:03:01 +0200causal(~user@50.35.83.177)
2022-06-04 20:03:32 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-06-04 20:04:22 +0200jakalx(~jakalx@base.jakalx.net)
2022-06-04 20:05:04 +0200zincy(~zincy@host86-160-236-152.range86-160.btcentralplus.com)
2022-06-04 20:09:49 +0200 <unit73e> I only figured now that where clause can have function signatures lol
2022-06-04 20:09:52 +0200 <EvanR> a recursive let block is a cromulent syntactic construction
2022-06-04 20:10:04 +0200 <EvanR> Bulby[m]
2022-06-04 20:12:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 20:12:28 +0200 <EvanR> if you were doing things with a functional hat on you could desugar whatever it is to recursive let
2022-06-04 20:13:15 +0200alp(~alp@user/alp) (Ping timeout: 260 seconds)
2022-06-04 20:13:19 +0200kwshi(~kwshi@096-040-102-060.biz.spectrum.com)
2022-06-04 20:15:06 +0200 <unit73e> were can I buy a functional hat?
2022-06-04 20:15:25 +0200abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2022-06-04 20:16:13 +0200 <unit73e> oh no there's actually an haskell hat lol I search for it. it's €16
2022-06-04 20:16:41 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2022-06-04 20:16:41 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2022-06-04 20:16:44 +0200allbery_bgeekosaur
2022-06-04 20:17:50 +0200 <[exa]> oh no *money disappears*
2022-06-04 20:17:56 +0200 <dsal> A functional hat casts no shadow.
2022-06-04 20:20:26 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2022-06-04 20:21:37 +0200 <hpc> a functional hat is always in head normal form
2022-06-04 20:21:54 +0200 <EvanR> here are some https://i.imgur.com/MYdn2DC.png
2022-06-04 20:21:55 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2022-06-04 20:22:19 +0200 <EvanR> in case you wanted to know what kind of hat it was
2022-06-04 20:23:53 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2022-06-04 20:24:06 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 20:24:35 +0200 <[exa]> well, now I'm looking at the eval/apply globe from the picture and an empty spot on a cupboard here
2022-06-04 20:25:06 +0200 <Bulby[m]> Printing it out, my native function gets recursive
2022-06-04 20:25:08 +0200 <Bulby[m]> which is not good
2022-06-04 20:25:13 +0200 <Bulby[m]> gonna fix that
2022-06-04 20:26:41 +0200MacbethwinChargen
2022-06-04 20:27:00 +0200 <int-e> EvanR: Uh, "apply" ends in an upside-down lambda, it must be the work of the devil.
2022-06-04 20:27:50 +0200 <int-e> (that picture is weird)
2022-06-04 20:27:57 +0200 <EvanR> apply seemingly has no reasonable type signature so yeah
2022-06-04 20:33:08 +0200 <Bulby[m]> is this (a possible reason) why haxe was written in ocaml and not haskell or a non objective ml? because objective makes some things of interpreting easier?
2022-06-04 20:34:10 +0200justsomeguy(~justsomeg@user/justsomeguy)
2022-06-04 20:35:32 +0200alp(~alp@user/alp)
2022-06-04 20:36:51 +0200HotblackDesiato(~HotblackD@gateway/tor-sasl/hotblackdesiato) (Remote host closed the connection)
2022-06-04 20:37:44 +0200HotblackDesiato(~HotblackD@gateway/tor-sasl/hotblackdesiato)
2022-06-04 20:38:28 +0200zincy(~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Remote host closed the connection)
2022-06-04 20:44:08 +0200 <tabemann> I have a stupid question which has arisen from a discussion in another channel: is GHC Haskell (not Haskell 2010)'s type system Turing complete?
2022-06-04 20:44:25 +0200vicfred(~vicfred@user/vicfred)
2022-06-04 20:44:35 +0200nahcetan(~nate@98.45.169.16)
2022-06-04 20:45:26 +0200 <[exa]> tabemann: likely not with default extensions but certainly if you add a few language pragmas
2022-06-04 20:46:05 +0200 <[exa]> tabemann: c.f. https://aphyr.com/posts/342-typing-the-technical-interview
2022-06-04 20:47:44 +0200Chargen(~chargen@D964062A.static.ziggozakelijk.nl) (Remote host closed the connection)
2022-06-04 20:48:03 +0200Chargen(~chargen@D964062A.static.ziggozakelijk.nl)
2022-06-04 20:48:39 +0200 <EvanR> Bulby[m], considering the "write yourself a scheme in 24 hours" haskell tutorial, I'm not sure what the issue is
2022-06-04 20:48:57 +0200 <EvanR> other than maybe doing things the hard way :tm:
2022-06-04 20:50:06 +0200 <tabemann> [exa], I was reading something on doing Turing-complete stuff with the Haskell type system, but it involved things like type families combined with data kinds
2022-06-04 20:50:26 +0200justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 252 seconds)
2022-06-04 20:50:27 +0200fendor(~fendor@178.115.68.102.wireless.dyn.drei.com) (Ping timeout: 246 seconds)
2022-06-04 20:50:56 +0200 <Bulby[m]> 😓
2022-06-04 20:51:07 +0200nahcetan(~nate@98.45.169.16) (Ping timeout: 240 seconds)
2022-06-04 20:52:12 +0200 <EvanR> when using the type system as logic to guarantee things about your code, you do NOT want it to be turing complete
2022-06-04 20:52:19 +0200fendor(~fendor@178.115.32.249.wireless.dyn.drei.com)
2022-06-04 20:52:39 +0200 <EvanR> because then the type checker may sometimes not terminate
2022-06-04 20:52:54 +0200 <[exa]> tabemann: ah so. very roughly, you can encode a decent subset of prolog into multiparameter type classes that is able to multiply a simple encoding of numbers ⇒ arbitrary functions can be enumerated ⇒ t-complete ⇒ undecidable
2022-06-04 20:53:44 +0200 <EvanR> type families can't be partially applied for this reason
2022-06-04 20:54:27 +0200 <[exa]> tabemann: that blogpost, although partially funny/obscure, is the best demonstration on how to do that that I know :]
2022-06-04 20:54:51 +0200 <Bulby[m]> I am doing things the hard way ig... reading a tutorial about writing something in java
2022-06-04 20:55:07 +0200 <[exa]> Bulby[m]: oh no, java, stop right there! :D
2022-06-04 20:55:10 +0200fendor(~fendor@178.115.32.249.wireless.dyn.drei.com) (Read error: Connection reset by peer)
2022-06-04 20:55:16 +0200 <EvanR> so you're doing things the java way in haskell
2022-06-04 20:55:24 +0200 <[exa]> Bulby[m]: btw do you have any snapshot of the problematic code we can look at?
2022-06-04 20:55:29 +0200fendor(~fendor@178.115.32.249.wireless.dyn.drei.com)
2022-06-04 20:55:59 +0200 <geekosaur> https://github.com/TheDrawingCoder-Gamer/lox-hs/blob/master/src/Lox/Evaluate.hs#L34-L38 from earlier
2022-06-04 20:56:15 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2022-06-04 20:56:24 +0200 <Bulby[m]> and I just pushed the newest changes
2022-06-04 20:56:55 +0200 <tabemann> back
2022-06-04 20:59:08 +0200 <Bulby[m]> https://craftinginterpreters.com/functions.html#local-functions-and-closures the example provided here when entered into the REPL prints 1.0 then says Undefined variable count
2022-06-04 20:59:40 +0200 <Bulby[m]> before I started editing the closure with newClosure in lxCall, it printed 1.0 twice
2022-06-04 21:00:00 +0200 <EvanR> an interpreter for programs in expression form is a lot easier than java form
2022-06-04 21:00:29 +0200 <Bulby[m]> well the language has statements
2022-06-04 21:00:31 +0200 <Bulby[m]> ¯\_(ツ)_/¯
2022-06-04 21:00:33 +0200 <EvanR> actually it's really nice when all your data takes the form of expressions
2022-06-04 21:01:21 +0200 <EvanR> a statement and a sequence of statements can be one form of expression in your language (to be distinguished from e.g. arithmetic expressions or whatever makes up statements)
2022-06-04 21:01:23 +0200 <Bulby[m]> it is, but i'm implementing this language right now
2022-06-04 21:02:06 +0200 <Bulby[m]> an expression that returns nil...
2022-06-04 21:02:39 +0200 <EvanR> no... imagine statements don't return anything because that's not applicable to interpreting statements
2022-06-04 21:03:08 +0200 <Bulby[m]> well that have to return something for it to make sense
2022-06-04 21:03:11 +0200 <EvanR> unlike arithmetic expressions etc
2022-06-04 21:03:15 +0200 <Bulby[m]> in haskell, i mean
2022-06-04 21:03:22 +0200 <EvanR> now you're mixing levels
2022-06-04 21:03:53 +0200 <EvanR> which you can do but that's like, advanced mode
2022-06-04 21:04:26 +0200 <Bulby[m]> in haskell, what do lox statements return when evaluated?
2022-06-04 21:04:36 +0200 <EvanR> what is lox
2022-06-04 21:04:46 +0200 <Bulby[m]> the language i'm working on
2022-06-04 21:05:25 +0200 <EvanR> in a hypothetical imperative language with statements I propose the interpretation of statements is effects
2022-06-04 21:05:44 +0200 <Bulby[m]> ... which is what I am doing with them?
2022-06-04 21:06:11 +0200 <EvanR> cool
2022-06-04 21:07:50 +0200 <Bulby[m]> https://github.com/TheDrawingCoder-Gamer/lox-hs/blob/master/src/Lox/Types.hs#L85-L102 is how I represent types
2022-06-04 21:08:04 +0200 <Bulby[m]> statements and expressions
2022-06-04 21:09:34 +0200 <EvanR> FunDecl is a statement so you are dynamically generating function objects or
2022-06-04 21:09:49 +0200 <Bulby[m]> yes, dynamically generating them
2022-06-04 21:10:02 +0200 <Bulby[m]> in the earlier link
2022-06-04 21:10:26 +0200 <Bulby[m]> well it got borked due to my push
2022-06-04 21:10:45 +0200 <Bulby[m]> but basically the right location
2022-06-04 21:11:53 +0200 <EvanR> and the function value is implemented as a haskell function it seems
2022-06-04 21:12:09 +0200 <Bulby[m]> yes
2022-06-04 21:12:35 +0200 <EvanR> looks complicated xD
2022-06-04 21:12:43 +0200 <Bulby[m]> ☹️
2022-06-04 21:15:07 +0200 <Bulby[m]> so what did you suggest to make this more sane?
2022-06-04 21:15:29 +0200Sgeo(~Sgeo@user/sgeo)
2022-06-04 21:18:40 +0200 <EvanR> I mean it seems like you're doing it in an advanced way. Which suggests you have a plan and are not winging it
2022-06-04 21:19:22 +0200 <int-e> . o O ( not having empty lines between declarations is hurting me more than I thought it would )
2022-06-04 21:19:48 +0200Pickchea(~private@user/pickchea)
2022-06-04 21:20:48 +0200 <EvanR> and no I don't think object oriented would make it easier
2022-06-04 21:20:53 +0200 <int-e> But... those type look relatively sane; semantically though, if local functions can capture variables from the enclosing ones this is nontrivial to implement.
2022-06-04 21:21:16 +0200 <int-e> (they become closures in that case)
2022-06-04 21:21:35 +0200 <Bulby[m]> i didn't really have a plan, I just started reading and implemented as I went
2022-06-04 21:21:46 +0200perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.5)
2022-06-04 21:22:05 +0200 <EvanR> does your language have a type system
2022-06-04 21:22:09 +0200perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2022-06-04 21:22:14 +0200 <Bulby[m]> no 🤣
2022-06-04 21:22:18 +0200 <EvanR> nice
2022-06-04 21:22:24 +0200 <int-e> looks dynamically typed so far
2022-06-04 21:22:35 +0200 <Bulby[m]> which is why it's `LoxValue` instead of seperate newtypes
2022-06-04 21:22:49 +0200 <int-e> (I imagine LoxValue is also used at runtime.)
2022-06-04 21:23:09 +0200chomwitt(~chomwitt@2a02:587:dc0e:3e00:5006:194c:376f:fb2e)
2022-06-04 21:23:18 +0200 <int-e> (not just for literals.)
2022-06-04 21:23:23 +0200 <EvanR> well the values are runtime and type system comes before that, if you do it like haskel
2022-06-04 21:23:33 +0200 <Bulby[m]> yes, it is. ParseLoxValue is used for literals
2022-06-04 21:24:03 +0200 <EvanR> so you could conceivably add one to make sure the values don't collide in weird ways
2022-06-04 21:24:17 +0200 <EvanR> but otherwise the runtime goes unchanged
2022-06-04 21:25:29 +0200 <int-e> Ah. Right, I misremembered that detail (how literals are represented) and didn't verify. It's not my code :P
2022-06-04 21:26:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 21:26:18 +0200 <Bulby[m]> well right now I am just worried about my closure failing - I started asking about how the env thrown by the return statement doesn't include the function
2022-06-04 21:27:30 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-06-04 21:27:59 +0200 <Bulby[m]> (yes, I use throwing for returning
2022-06-04 21:28:05 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-06-04 21:28:13 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-06-04 21:28:16 +0200 <EvanR> jeez...
2022-06-04 21:28:26 +0200 <int-e> Anyway. You need to think about scoping for the inner functions and variables... and that'll inform how to treat environments when a function definition is encountered. (Plural because I think you may want to associate an environment with local functions)
2022-06-04 21:28:58 +0200 <Bulby[m]> I do scope 😅
2022-06-04 21:29:22 +0200 <int-e> There are design choices for scoping. Mainly: static or dynamic.
2022-06-04 21:29:41 +0200 <Bulby[m]> oh, the book went over static scoping but I wasn't in the mood
2022-06-04 21:29:45 +0200 <int-e> (the latter is insane for programming with but easier to implement in an interpreter?)
2022-06-04 21:30:06 +0200 <EvanR> might as well do dynamic scope xD
2022-06-04 21:30:13 +0200Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net)
2022-06-04 21:30:34 +0200 <int-e> The thing is this: If you have a global function a, and a local function a, and then call a third function that calls a, dynamic scoping will pick the second a.
2022-06-04 21:31:02 +0200 <Bulby[m]> I probably should do static scoping
2022-06-04 21:31:12 +0200 <EvanR> (I don't see how that's easier to implement though)
2022-06-04 21:31:23 +0200 <int-e> but, if you do static scoping you have to deal with the second a going out of scope when the third function is called.
2022-06-04 21:31:43 +0200 <int-e> EvanR: it's easier if you track functions in a single environment that gets reset on function returns
2022-06-04 21:32:03 +0200 <Bulby[m]> the Lox "specification" says it is lexically scoped
2022-06-04 21:32:11 +0200 <EvanR> weird
2022-06-04 21:32:17 +0200 <EvanR> (single environment)
2022-06-04 21:32:54 +0200 <Bulby[m]> I skipped that chapter because I managed to hack a solution
2022-06-04 21:33:06 +0200 <int-e> Well, I think. TBH that's the only excuse I see for dynamic scoping being a thing in the first place.
2022-06-04 21:33:18 +0200 <Bulby[m]> haha
2022-06-04 21:33:32 +0200 <int-e> "that" being "it's easier to implement"
2022-06-04 21:33:53 +0200 <int-e> it's also *not* easier when writing a compiler.
2022-06-04 21:35:08 +0200cosimone(~user@93-44-186-171.ip98.fastwebnet.it) (Ping timeout: 255 seconds)
2022-06-04 21:35:33 +0200 <int-e> Bulby[m]: Anyway, mainly I'm suggesting that you'd benegit from a bit of planning for how you're representing the program state and in particular how local function definitions and function calls affect that state before actually diving into the implementation.
2022-06-04 21:36:07 +0200 <int-e> Otherwise you may well end up in a total mess that has to be rewritten. Though I suppose you can get lucky.
2022-06-04 21:36:46 +0200 <Bulby[m]> yes, I am going to do static scope
2022-06-04 21:36:51 +0200 <Bulby[m]> javaism away!
2022-06-04 21:37:15 +0200Pickchea(~private@user/pickchea) (Ping timeout: 256 seconds)
2022-06-04 21:37:56 +0200 <Bulby[m]> well, I am not doing visitor because I've written an implementation before in haxe, which has ADTs
2022-06-04 21:38:42 +0200 <geekosaur> I admit I was confused about why you were having problems with the current function being in scope, because were I writing a language I'd have a scope stack
2022-06-04 21:38:58 +0200 <Bulby[m]> hahaha
2022-06-04 21:39:09 +0200 <Bulby[m]> yeah, I'll fix my mess that I made
2022-06-04 21:39:12 +0200 <geekosaur> definitions always go into the top of the stack, references are searched in each stacked environment in order
2022-06-04 21:39:27 +0200 <Bulby[m]> I do that dynamically
2022-06-04 21:39:37 +0200hgolden(~hgolden2@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection)
2022-06-04 21:39:39 +0200 <int-e> I'm not saying that this is *hard*, just that it's kind of easy to go wrong, and planning wil pay off.
2022-06-04 21:39:42 +0200 <geekosaur> the cxurrent function would be in a different environment but on the scope stack so it would be found unless shadowed by a local definition
2022-06-04 21:39:51 +0200 <int-e> *will
2022-06-04 21:40:13 +0200 <Bulby[m]> I will do Static scoping, as it will probably prevent headaches
2022-06-04 21:40:28 +0200 <int-e> I approve :P
2022-06-04 21:41:08 +0200 <Bulby[m]> my haxe one isn't to the letter, it goes the way of "everything is an expression"
2022-06-04 21:41:31 +0200 <int-e> geekosaur: "single environment"... of course since this is Haskell, there'd be copies made whenever it's updated, and "resetting the environment" would just revert to an older copy.
2022-06-04 21:41:34 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-06-04 21:41:57 +0200 <Bulby[m]> what does polysemy's `State` do?
2022-06-04 21:42:06 +0200 <Bulby[m]> because that's where I store my env
2022-06-04 21:42:39 +0200 <int-e> geekosaur: but this is irrelevant anyway since we're doing static scoping... and for that a stack (with one level per static nesting) is definitely looking good
2022-06-04 21:43:00 +0200hgolden(~hgolden2@cpe-172-251-233-141.socal.res.rr.com)
2022-06-04 21:43:31 +0200 <geekosaur> I'd expect it to not be too different from mtl State. the only difference is I'd have [Env] instead of Env, push a new Env when entering a function, pop on leaving it
2022-06-04 21:43:46 +0200 <geekosaur> s/function/scope/
2022-06-04 21:44:14 +0200 <Bulby[m]> ah, I remember why I made everything an expression - haxe itself has macros that make everything an expression
2022-06-04 21:45:35 +0200nate3(~nate@98.45.169.16)
2022-06-04 21:46:01 +0200 <Bulby[m]> yuck, I used haxe's `Dynamic`
2022-06-04 21:46:21 +0200 <Bulby[m]> even tho Haxe has adts and could have done what I am doing in haskell
2022-06-04 21:48:36 +0200 <Bulby[m]> I guess haskell has changed me to be more typesafe
2022-06-04 21:51:03 +0200nate3(~nate@98.45.169.16) (Ping timeout: 258 seconds)
2022-06-04 21:51:54 +0200vglfr(~vglfr@coupling.penchant.volia.net)
2022-06-04 21:55:37 +0200 <EvanR> the main difference (type system-wise) for me between haskell and dynamic languages is I do all the type checking
2022-06-04 21:55:44 +0200pavonia(~user@user/siracusa)
2022-06-04 21:55:45 +0200 <EvanR> in the latter
2022-06-04 22:02:30 +0200 <Bulby[m]> the book uses ` private final Map<Expr, Integer> locals = new HashMap<>();` to store it's scopes and says that each expression is it's own java object... which isn't true in haskell - it's pure data
2022-06-04 22:04:14 +0200 <Bulby[m]> so how do I represent the depth of each expression
2022-06-04 22:05:24 +0200 <Bulby[m]> my mind is telling me "use unique"
2022-06-04 22:06:12 +0200jinsun(~jinsun@user/jinsun) (Ping timeout: 276 seconds)
2022-06-04 22:09:54 +0200 <[exa]> Bulby[m]: btw what does LoxFunction actually represent?
2022-06-04 22:10:59 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-06-04 22:11:05 +0200 <Bulby[m]> a function that takes a list of LoxValue and returns `()` in a monad that can run statements
2022-06-04 22:13:36 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 22:15:24 +0200 <EvanR> you can compute the depth of subexpressions pretty easily
2022-06-04 22:15:33 +0200jgeerds(~jgeerds@55d45f48.access.ecotel.net)
2022-06-04 22:15:44 +0200 <Bulby[m]> I think this is more static scope
2022-06-04 22:16:34 +0200 <EvanR> oh using expression objects with identity as the literal key into a map... for some reason
2022-06-04 22:17:01 +0200 <Bulby[m]> is there a better way to represent it?
2022-06-04 22:17:08 +0200 <EvanR> wouldn't locals be a map from variable name to values
2022-06-04 22:17:11 +0200 <EvanR> (not expressions)
2022-06-04 22:19:39 +0200 <[exa]> Bulby[m]: so it takes LixValue, doesn't need to do anything to return (), and requests a monad that can run statements for it?
2022-06-04 22:19:43 +0200 <[exa]> *Lux
2022-06-04 22:19:49 +0200 <[exa]> *Lox
2022-06-04 22:20:10 +0200 <[exa]> (the keyboard is wiggly today, sorry)
2022-06-04 22:20:40 +0200 <Bulby[m]> well, it's guarenteed to run a `LxReturn` statement which will throw back to `lxCall`
2022-06-04 22:23:25 +0200 <EvanR> .oO(is it really guaranteed to return)
2022-06-04 22:23:40 +0200 <[exa]> ah so basically you want to interpret all your functions to this form and then just let it run, right?
2022-06-04 22:23:53 +0200 <Bulby[m]> yes, while parsing I append a `return nil`
2022-06-04 22:24:14 +0200 <EvanR> .oO(what if it never reaches that return nil)
2022-06-04 22:24:31 +0200 <Bulby[m]> how would it not do that
2022-06-04 22:24:49 +0200 <EvanR> if your language guarantees that, I will be mildly impressed
2022-06-04 22:24:54 +0200fendor(~fendor@178.115.32.249.wireless.dyn.drei.com) (Remote host closed the connection)
2022-06-04 22:25:18 +0200 <Bulby[m]> the parser guarantees that
2022-06-04 22:25:19 +0200 <EvanR> e.g. C doesn't have that guarantee: for(;;){} return NIL;
2022-06-04 22:25:58 +0200 <Bulby[m]> oh
2022-06-04 22:25:58 +0200 <Bulby[m]> well it hangs then
2022-06-04 22:25:58 +0200 <Bulby[m]> let me see
2022-06-04 22:26:40 +0200 <Bulby[m]> yep, it hangs
2022-06-04 22:27:33 +0200 <Bulby[m]> I mean like, if there is no explicit return then it returns nil
2022-06-04 22:29:34 +0200HotblackDesiato(~HotblackD@gateway/tor-sasl/hotblackdesiato) (Ping timeout: 240 seconds)
2022-06-04 22:30:14 +0200 <[exa]> in the interpreted function (LoxFunction), are the calls to other functions already interpreted to LoxFunction or are they represented as some kind of action/effect?
2022-06-04 22:31:04 +0200 <Bulby[m]> https://github.com/TheDrawingCoder-Gamer/lox-hs/blob/master/src/Lox/Evaluate.hs#L37-L43
2022-06-04 22:31:14 +0200 <Bulby[m]> this is how they are interpreted
2022-06-04 22:31:24 +0200HotblackDesiato(~HotblackD@gateway/tor-sasl/hotblackdesiato)
2022-06-04 22:31:24 +0200 <Bulby[m]> it runs the statements inside
2022-06-04 22:31:51 +0200CoolerX(~user@user/coolerx)
2022-06-04 22:31:52 +0200 <CoolerX> Hi
2022-06-04 22:31:55 +0200 <[exa]> ok, you're splitting the actual evaluation into 2 there
2022-06-04 22:32:04 +0200 <Bulby[m]> huh?
2022-06-04 22:32:10 +0200 <CoolerX> How do you use a local package? give it to ghc
2022-06-04 22:32:29 +0200 <CoolerX> I am looking at https://stackoverflow.com/questions/59232514/using-local-packages-with-haskell-stack
2022-06-04 22:33:05 +0200 <CoolerX> did stack sdist to create a tarball and put it in the same folder as the main project
2022-06-04 22:33:15 +0200 <[exa]> CoolerX: it's relatively easy if you use cabal (you literally write the path to it to a project file, or afaik even doing `cabal install subdirectory/` works)
2022-06-04 22:33:22 +0200 <[exa]> not sure about stack tho
2022-06-04 22:33:26 +0200 <CoolerX> did stack init and updated stack.yaml
2022-06-04 22:33:44 +0200 <CoolerX> I don't have a package.yaml so I can't updatee it
2022-06-04 22:34:18 +0200 <[exa]> Bulby[m]: yeah, you are interpreting the recursive structure, creating an (unevaluated) infinite tree before the function is already executed
2022-06-04 22:34:33 +0200Midjak(~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
2022-06-04 22:34:49 +0200 <[exa]> Bulby[m]: why not have a special effect for calling functions that manages the stacky stuff?
2022-06-04 22:35:12 +0200 <Bulby[m]> you mean write a polysemy effect?
2022-06-04 22:35:27 +0200acidjnk(~acidjnk@p200300d0c7068b53096e2035e81feaf4.dip0.t-ipconnect.de)
2022-06-04 22:36:18 +0200 <[exa]> yeah, literally have a piece of your DSL that is called e.g. `callFnWithArgs yourfunction [arg1, arg2, ...]`
2022-06-04 22:37:01 +0200 <[exa]> then you don't have to pre-evaluate the recursion
2022-06-04 22:37:12 +0200 <Bulby[m]> oh right I can literally store the statements
2022-06-04 22:38:08 +0200 <[exa]> not sure what type for `yourFuncition` above would be best, depending on the language design you might choose either an identifier or a code representation for the function
2022-06-04 22:38:11 +0200 <EvanR> hence... your data is a tangible expression you can do stuff with
2022-06-04 22:38:23 +0200 <CoolerX> [exa]: yeah I did that, works with stack too
2022-06-04 22:38:46 +0200 <Bulby[m]> yeah, haskell function is kinda stupid
2022-06-04 22:38:47 +0200 <CoolerX> had to put packages: ['libs/MyPackage-0.1.0'] in stack.yaml
2022-06-04 22:38:56 +0200 <CoolerX> and then stack build
2022-06-04 22:38:57 +0200 <Bulby[m]> for representing lox function, i mean
2022-06-04 22:39:15 +0200 <EvanR> a haskell function would potentially have better performance and potentially less total code, but possibly be more confusing
2022-06-04 22:39:17 +0200 <[exa]> Bulby[m]: I'd say that's the main intuition about _functions_, you can't look into them
2022-06-04 22:39:38 +0200 <[exa]> Bulby[m]: so best keep it as data until you're perfectly sure that you'll just evaluate stuff
2022-06-04 22:39:49 +0200jinsun(~jinsun@user/jinsun)
2022-06-04 22:40:18 +0200 <Bulby[m]> that would also fix my https://github.com/TheDrawingCoder-Gamer/lox-hs/blob/master/src/Lox/Types.hs#L118-L120
2022-06-04 22:40:50 +0200 <[exa]> Bulby[m]: anyway, your "function call effect" may be able to perfectly keep track of how many calls are currently stacked etc., hopefully giving some solution to your earlier depth-checking trouble (I didn't read the scrollback completely tho, sorry :D )
2022-06-04 22:41:11 +0200 <[exa]> re Show, yes, you gain representability
2022-06-04 22:41:25 +0200 <[exa]> there's actually another way to kinda solve this
2022-06-04 22:42:11 +0200 <[exa]> if you manually tag entrypoints for all functions, you may break the recursion in case you detect that you enter a function that you already entered somewhere higher in the expression tree
2022-06-04 22:42:53 +0200 <Bulby[m]> I think I should just work on static scope for now
2022-06-04 22:43:16 +0200 <CoolerX> ok nvm that doesn't do what I think it does
2022-06-04 22:43:21 +0200 <CoolerX> it just builds the library
2022-06-04 22:43:28 +0200 <CoolerX> but doesn't build my main.hs
2022-06-04 22:43:48 +0200 <[exa]> CoolerX: your MyPackage is a library or a program?
2022-06-04 22:44:23 +0200 <[exa]> s/program/executable/ youknowwhatImeant
2022-06-04 22:44:33 +0200 <[exa]> Bulby[m]: what's your scoping right now btw?
2022-06-04 22:44:50 +0200 <CoolerX> stack ghc main.hs gives an error
2022-06-04 22:44:54 +0200 <Bulby[m]> hacked together :rofl
2022-06-04 22:45:20 +0200 <Bulby[m]> I think dynamic scoping, as it's determined at runtime
2022-06-04 22:45:28 +0200 <CoolerX> deriving instance ToJSON Token
2022-06-04 22:45:29 +0200 <CoolerX> hmm
2022-06-04 22:45:31 +0200trisolaran(~ye@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-06-04 22:45:37 +0200_ht(~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
2022-06-04 22:45:46 +0200 <CoolerX> https://bpa.st/4M7Q
2022-06-04 22:45:57 +0200 <CoolerX> some error on that line
2022-06-04 22:46:05 +0200 <CoolerX> [exa]: it's both
2022-06-04 22:46:29 +0200 <Bulby[m]> it's not a grabify link, checked with wheregoes
2022-06-04 22:46:39 +0200califax(~califax@user/califx) (Remote host closed the connection)
2022-06-04 22:46:55 +0200 <Bulby[m]> sorry, i get scared of anything ending with random letters now because of grabify
2022-06-04 22:47:02 +0200 <[exa]> Bulby[m]: ah I see, basically execution trace scope
2022-06-04 22:47:27 +0200 <Bulby[m]> it was hacked together
2022-06-04 22:47:27 +0200 <CoolerX> Bulby[m]: it's a pastebin
2022-06-04 22:47:32 +0200 <Bulby[m]> I should have done what the book said
2022-06-04 22:47:50 +0200califax(~califax@user/califx)
2022-06-04 22:48:15 +0200 <geekosaur> formerly known as bpaste
2022-06-04 22:48:22 +0200 <[exa]> Bulby[m]: I wouldn't worry about grabify when already sitting on IRC giving your v6 to the general publics :]
2022-06-04 22:48:33 +0200 <Bulby[m]> my WHAT
2022-06-04 22:48:55 +0200 <CoolerX> IPv6 address
2022-06-04 22:48:59 +0200 <geekosaur> mm, the address being exposed is a matrix bridge address
2022-06-04 22:49:17 +0200 <CoolerX> [exa]: help?
2022-06-04 22:49:30 +0200 <[exa]> ah okay *lowers the hackgun*
2022-06-04 22:49:38 +0200 <Bulby[m]> i didn't know irc does that
2022-06-04 22:50:06 +0200 <geekosaur> you can ask for a cloak
2022-06-04 22:50:13 +0200 <[exa]> it's pretty normal to report network details here because that's the prime way to ban abusers
2022-06-04 22:50:23 +0200 <Bulby[m]> is that a joke or a technical term
2022-06-04 22:50:32 +0200 <geekosaur> although since what's being exposed is an address of the matrix bridge, not sure it would do much
2022-06-04 22:50:37 +0200 <geekosaur> it's a technical term
2022-06-04 22:50:45 +0200 <CoolerX> [exa]: but you can ban with a cloak too so what's the point of exposing by default?
2022-06-04 22:50:50 +0200 <geekosaur> try looking at my address with /whois geekosaur
2022-06-04 22:51:11 +0200 <[exa]> CoolerX: that error is in the library or the main.hs or in the "root" slack project?
2022-06-04 22:51:14 +0200 <Bulby[m]> i don't think matrix lets you do that
2022-06-04 22:51:19 +0200 <Bulby[m]> \/whois geekosaur
2022-06-04 22:51:35 +0200 <CoolerX> [exa]: the error is in my code
2022-06-04 22:51:36 +0200 <Bulby[m]> more likely nheko is eating my slash command
2022-06-04 22:51:40 +0200 <[exa]> anyway you can ban a registered user, but registrations are kinda rate-limited and if you just want to spam, you don't bother about registering :D
2022-06-04 22:51:41 +0200 <CoolerX> line 47: deriving instance ToJSON Token
2022-06-04 22:51:45 +0200 <geekosaur> you added a backslash, that won't work
2022-06-04 22:52:09 +0200 <Bulby[m]> I can't input /whois geekosaur in a single message
2022-06-04 22:52:20 +0200 <Bulby[m]> /whois geekosaur
2022-06-04 22:52:30 +0200 <Bulby[m]> without spaces or something
2022-06-04 22:52:35 +0200 <geekosaur> oh right, you're on matrix and it handles /-commands itself or passes them through as messages
2022-06-04 22:52:51 +0200 <geekosaur> you'd have to join irc directly
2022-06-04 22:53:03 +0200 <CoolerX> geekosaur: is a matrix the same as a bouncer?
2022-06-04 22:53:06 +0200 <[exa]> kinda
2022-06-04 22:53:08 +0200 <Bulby[m]> not with my new knowledge 😱
2022-06-04 22:53:12 +0200 <geekosaur> anyway it shows me as ~geekosaur!geekosaur@user/geekosaur
2022-06-04 22:53:34 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-06-04 22:53:34 +0200Alleria(~textual@user/alleria)
2022-06-04 22:53:50 +0200 <CoolerX> Bulby[m]: knawlidge
2022-06-04 22:53:58 +0200Alleria_(~AllahuAkb@68.65.161.35)
2022-06-04 22:54:04 +0200 <geekosaur> sorry, geekosaur!~geekosaur@user/geekosaur
2022-06-04 22:54:24 +0200 <[exa]> CoolerX: which one of your codes btw? might need more detail
2022-06-04 22:54:27 +0200fetsorn(~fetsorn@46.71.112.209)
2022-06-04 22:54:29 +0200 <Bulby[m]> that's cool
2022-06-04 22:54:30 +0200 <CoolerX> Tai Lopez ruined that word for me
2022-06-04 22:54:32 +0200 <Bulby[m]> anyway
2022-06-04 22:54:35 +0200 <geekosaur> nick ! username @ address , except that becuase I have a cloak it shows the cloak instead of my address
2022-06-04 22:55:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 22:55:14 +0200 <CoolerX> [exa]: I am trying to build this https://github.com/jjhenkel/binnacle-icse2020/blob/master/datasets/2-phase-2-dockerfile-asts/gener…
2022-06-04 22:55:17 +0200 <CoolerX> locally
2022-06-04 22:55:26 +0200 <CoolerX> they use a Dockerfile https://github.com/jjhenkel/binnacle-icse2020/blob/master/datasets/2-phase-2-dockerfile-asts/gener…
2022-06-04 22:55:36 +0200 <CoolerX> ghc /build/app.hs
2022-06-04 22:55:40 +0200 <geekosaur> not sure if it'll work on matrix but join #libera-cloak:libera.chat and it should assign a cloak to your bridge address
2022-06-04 22:55:46 +0200 <Bulby[m]> i'll ask in matrix chat because I don't want two convos at onces
2022-06-04 22:56:00 +0200 <CoolerX> it's not clear to me where GHC looks for modules/packages
2022-06-04 22:56:05 +0200 <CoolerX> especially local packages
2022-06-04 22:56:16 +0200 <CoolerX> what is the module resolution algo?
2022-06-04 22:56:40 +0200 <[exa]> CoolerX: ghc is usually configured by stack to look at precise places (you may have a look at ghc-pkg binary)
2022-06-04 22:56:44 +0200 <[exa]> (same for cabal btw)
2022-06-04 22:57:13 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 22:57:14 +0200 <CoolerX> [exa]: they use ghc directly there
2022-06-04 22:57:17 +0200 <geekosaur> you wrapped it in "stack ghc" so stack is controlling module resolution using your local package's stack.yaml resolver and any additional packages
2022-06-04 22:57:24 +0200 <CoolerX> not through stack
2022-06-04 22:57:24 +0200fetsorn(~fetsorn@46.71.112.209) (Remote host closed the connection)
2022-06-04 22:57:27 +0200Dorkside69(~dorkside@208.190.197.222)
2022-06-04 22:57:35 +0200 <geekosaur> if you use ghc directly it won't see anything installed by stack
2022-06-04 22:57:36 +0200vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2022-06-04 22:57:44 +0200 <CoolerX> cool
2022-06-04 22:57:55 +0200 <Bulby[m]> hm, it looks like another method is to store it directly on expressions
2022-06-04 22:58:06 +0200 <[exa]> for "pure" ghc, ghc-pkg is the way to go I'd say
2022-06-04 22:58:07 +0200 <CoolerX> geekosaur: so what's the error message mean? https://bpa.st/4M7Q
2022-06-04 22:58:54 +0200 <[exa]> CoolerX: the message means that the instance for `ToJSON InnerToken` is missing, so it can't derive ToJSON instances for stuff that contains InnerToken
2022-06-04 22:59:01 +0200 <geekosaur> ^
2022-06-04 22:59:13 +0200 <geekosaur> \and presumably a Token contains an InnerToken
2022-06-04 22:59:23 +0200 <[exa]> sounds like that, right? :]
2022-06-04 22:59:45 +0200 <[exa]> CoolerX: you might fix it by copying the 2 lines that derive Generic and ToJSON for Token, and rewrite Token to InnerToken
2022-06-04 23:00:08 +0200 <[exa]> unless InnerToken contains some heavy magic which I doubt
2022-06-04 23:01:30 +0200 <[exa]> ICSE is the "software engineering" conference?
2022-06-04 23:01:47 +0200 <geekosaur> or is simply not exported beyond its type
2022-06-04 23:03:29 +0200causal(~user@50.35.83.177) (Quit: WeeChat 3.5)
2022-06-04 23:04:45 +0200causal(~user@50.35.83.177)
2022-06-04 23:04:55 +0200 <CoolerX> [exa]: ICSE https://conf.researchr.org/home/icse-2022
2022-06-04 23:05:20 +0200 <CoolerX> "[exa]> CoolerX: the message means that the instance for `ToJSON InnerToken` is missing, so it can't derive ToJSON instances for stuff that contains InnerToken" this sounds liks a tautology
2022-06-04 23:05:41 +0200 <CoolerX> can't derive the instance because the instance is missing?
2022-06-04 23:05:50 +0200 <CoolerX> isn't that the point of deriving something?
2022-06-04 23:05:55 +0200cosimone(~user@2001:b07:ae5:db26:57c7:21a5:6e1c:6b81)
2022-06-04 23:06:32 +0200user1(~user@194.135.153.200)
2022-06-04 23:07:46 +0200 <CoolerX> hmm https://hackage.haskell.org/package/aeson-2.0.3.0/docs/Data-Aeson.html#t:ToJSON
2022-06-04 23:08:06 +0200 <geekosaur> the instance of Token is what you're tryuing to derive, the instance of InnerToken is what needs to (also) be derived
2022-06-04 23:10:18 +0200 <CoolerX> you mean instance of 'ToJSON Token' ?
2022-06-04 23:11:25 +0200 <geekosaur> yes
2022-06-04 23:11:36 +0200 <geekosaur> ToJSON Token needs ToJSON InnerToken
2022-06-04 23:12:10 +0200 <CoolerX> Token is a concrete type that already exists https://github.com/koalaman/shellcheck/blob/master/src/ShellCheck/AST.hs#L40
2022-06-04 23:12:16 +0200 <geekosaur> or ToJSON (InnerToken Token) to be more precise. problem being that the repeated use ot `Token` makes me suspect `InnerToken` may be a type family
2022-06-04 23:13:32 +0200 <geekosaur> okay, that looks fine to me
2022-06-04 23:13:56 +0200 <geekosaur> so before deriving ToJSON Token you need to derive ToJSON (InnerToken Token)
2022-06-04 23:14:46 +0200user1(~user@194.135.153.200) (Quit: WeeChat 3.5)
2022-06-04 23:15:29 +0200 <geekosaur> actually just ToJSON (InnerToken t) should be fine, so it's not recursive
2022-06-04 23:16:02 +0200 <geekosaur> deriving instance Generic (InnerToken t); deriving instance ToJSON (InnerToken t)
2022-06-04 23:16:15 +0200 <geekosaur> deriving instance Generic Token; deriving instance ToJSON Token
2022-06-04 23:18:46 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-06-04 23:19:17 +0200 <CoolerX> Illegal instance declaration for ‘ToJSON (InnerToken Token)’
2022-06-04 23:19:32 +0200 <CoolerX> \(All instance types must be of the form (T a1 ... an) where a1 ... an are *distinct type variables*,
2022-06-04 23:19:49 +0200 <geekosaur> that's part of why I said use InnerToken t
2022-06-04 23:20:06 +0200 <CoolerX> hmm?
2022-06-04 23:20:08 +0200 <CoolerX> deriving instance ToJSON (InnerToken Token)
2022-06-04 23:20:12 +0200 <CoolerX> that should work right?
2022-06-04 23:20:20 +0200 <geekosaur> no
2022-06-04 23:20:31 +0200 <CoolerX> why?
2022-06-04 23:20:53 +0200 <CoolerX> • No instance for (Generic (InnerToken t)) arising from a use of ‘aeson-2.0.3.0:Data.Aeson.Types.ToJSON.$dmtoJSON’
2022-06-04 23:21:01 +0200 <geekosaur> that's what it's complaining about. you need an extension to say the concrete type `Token` there instead of a type variable, because it's not standard Haskell
2022-06-04 23:21:07 +0200 <CoolerX> hmm deriving instance ToJSON (InnerToken t)
2022-06-04 23:21:29 +0200 <geekosaur> in addition, it would be recursive because you would need to derive for Token to derive for InnerToken, but you need to derive for InnerToken to derive for Token
2022-06-04 23:21:41 +0200 <geekosaur> I already gave you what you need
2022-06-04 23:21:51 +0200 <geekosaur> [04 21:16:02] <geekosaur> deriving instance Generic (InnerToken t); deriving instance ToJSON (InnerToken t)
2022-06-04 23:21:51 +0200 <geekosaur> [04 21:16:15] <geekosaur> deriving instance Generic Token; deriving instance ToJSON Token
2022-06-04 23:22:00 +0200 <hpc> deriving instance ToJSON t => ToJSON (InnerToken t)?
2022-06-04 23:22:09 +0200 <CoolerX> ah
2022-06-04 23:22:11 +0200 <geekosaur> yeh, sorry
2022-06-04 23:22:21 +0200 <hpc> and maybe the same for Generic
2022-06-04 23:22:25 +0200 <geekosaur> and same for Generic needs the constraint for T to have Gneneric
2022-06-04 23:22:29 +0200 <geekosaur> *Generic
2022-06-04 23:23:15 +0200fetsorn(~fetsorn@46.71.112.209)
2022-06-04 23:23:46 +0200 <CoolerX> • No instance for (ToJSON t)
2022-06-04 23:23:46 +0200 <CoolerX> arising from a use of ‘aeson-2.0.3.0:Data.Aeson.Types.ToJSON.$dmtoJSON’
2022-06-04 23:23:52 +0200 <CoolerX> deriving instance Generic (InnerToken t); deriving instance ToJSON (InnerToken t)
2022-06-04 23:23:57 +0200 <CoolerX> for that line
2022-06-04 23:24:06 +0200 <geekosaur> hpc just gave you the correction
2022-06-04 23:24:15 +0200jakalx(~jakalx@base.jakalx.net)
2022-06-04 23:24:42 +0200 <CoolerX> hpc: wha?
2022-06-04 23:24:51 +0200 <CoolerX> deriving instance ToJSON t
2022-06-04 23:24:53 +0200 <CoolerX> weird
2022-06-04 23:25:12 +0200 <CoolerX> deriving for an abstract type t?
2022-06-04 23:25:46 +0200 <CoolerX> Illegal instance declaration for ‘ToJSON t’
2022-06-04 23:25:47 +0200 <CoolerX> (All instance types must be of the form (T a1 ... an)
2022-06-04 23:26:47 +0200 <geekosaur> deriving instance ToJSON t => ToJSON (InnerToken t)
2022-06-04 23:26:57 +0200fetsorn(~fetsorn@46.71.112.209) (Client Quit)
2022-06-04 23:27:10 +0200 <CoolerX> oh what'x => ? lambda function?
2022-06-04 23:27:14 +0200 <geekosaur> "if t has a ToJSON instance, make an instance for ToJSON (InnerToken)"
2022-06-04 23:27:27 +0200 <CoolerX> oh right
2022-06-04 23:27:30 +0200 <CoolerX> type constraint
2022-06-04 23:27:50 +0200ashln(~ashln@98.38.236.123) (Ping timeout: 240 seconds)
2022-06-04 23:28:10 +0200 <geekosaur> yes. although if reading it out I susually read it as "implies"
2022-06-04 23:28:13 +0200 <geekosaur> *usually
2022-06-04 23:29:04 +0200 <CoolerX> yeah that worked
2022-06-04 23:29:15 +0200 <CoolerX> geekosaur: yes
2022-06-04 23:34:29 +0200ashln(~ashln@98.38.236.123)
2022-06-04 23:34:30 +0200 <CoolerX> hmm
2022-06-04 23:34:53 +0200 <CoolerX> where are all the "contents" coming from? https://bpa.st/WV6Q
2022-06-04 23:35:49 +0200 <CoolerX> I can't find the string "contents" in this file https://github.com/koalaman/shellcheck/blob/master/src/ShellCheck/AST.hs#L42-L145
2022-06-04 23:37:19 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2022-06-04 23:37:56 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-06-04 23:39:35 +0200 <geekosaur> that's how it's representing the Haskell values
2022-06-04 23:40:16 +0200 <geekosaur> specifically an InnerToken is a JSON object with a tag and a contents
2022-06-04 23:44:44 +0200CoolerX(~user@user/coolerx) (Ping timeout: 255 seconds)
2022-06-04 23:45:25 +0200CoolerX(~user@user/coolerx)
2022-06-04 23:47:01 +0200trisolaran(~ye@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 256 seconds)
2022-06-04 23:49:50 +0200CoolerX(~user@user/coolerx) (Ping timeout: 240 seconds)
2022-06-04 23:51:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-04 23:57:13 +0200fetsorn(~fetsorn@46.71.112.209)
2022-06-04 23:57:55 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-04 23:59:04 +0200fetsorn(~fetsorn@46.71.112.209) (Remote host closed the connection)