Home liberachat/#haskell: Logs Calendar

Logs: liberachat/#haskell

←Prev  Next→ 1,794,000 events total
2026-04-13 15:56:41 <[exa]> Milan_Vanca: if you deepseq it, you can get something like: D1 --> D2 --> D3
2026-04-13 15:57:05 <[exa]> Milan_Vanca: now, if you deepseq it again, the deepseq only sees: D1 --> (something unknown behind a pointer)
2026-04-13 15:57:43 <[exa]> Milan_Vanca: without traversing the pointer it is not sure if there's anything to evaluate, in turn it needs to traverse all of these pointers
2026-04-13 15:58:07 <[exa]> and there's `n` such pointers. It's probably faster than the first deepseq esp. if the computation was "hard", but still `n` pointers.
2026-04-13 15:59:54 × jmcantrell_ quits (~weechat@user/jmcantrell) (Ping timeout: 244 seconds)
2026-04-13 16:00:30 × danza quits (~danza@user/danza) (Remote host closed the connection)
2026-04-13 16:01:52 <[exa]> Milan_Vanca: anyway you could implement some magical mark for "this has been deepseq'd" but there would be overhead and I don't see people going that way especially since the "right way" is to just make sure you don't accumulate too much thunk material in the first place
2026-04-13 16:04:54 <Milan_Vanca> Ty guyz...I still don't fully understand. It's probably better to just continue learning. I will try to remember prevent accumulation of thunks. :)
2026-04-13 16:06:19 <mauke> > length [error "x", error "y"]
2026-04-13 16:06:20 <lambdabot> 2
2026-04-13 16:06:32 <mauke> > [error "x", error "y"] `seq` "WHNF"
2026-04-13 16:06:34 <lambdabot> "WHNF"
2026-04-13 16:10:03 <yin> i just found out that hlint doesn't iterate through refactors
2026-04-13 16:10:52 <yin> eg: it suggests `if True then False else True` -> `not True`
2026-04-13 16:10:55 <dutchie> https://github.com/ndmitchell/hlint?tab=readme-ov-file#why-are-hints-not-applied-recursively
2026-04-13 16:11:08 × polykernel quits (~polykerne@user/polykernel) (Remote host closed the connection)
2026-04-13 16:11:28 polykernel joins (~polykerne@user/polykernel)
2026-04-13 16:11:54 <mauke> Milan_Vanca: picture: https://i.imgur.com/yuu9hiq.png :-D
2026-04-13 16:12:11 <yin> dutchie: totally fair
2026-04-13 16:12:24 <__monty__> How does it get to `not True`? Surely it's just eliminating the else-branch because of the tautological test?
2026-04-13 16:12:56 <mauke> if X then False else True --> not X
2026-04-13 16:13:25 <__monty__> Is that really more general as a pattern?
2026-04-13 16:13:38 <mauke> does it have to be?
2026-04-13 16:13:52 <yin> it improves lazyness
2026-04-13 16:14:35 <__monty__> How?
2026-04-13 16:16:09 <Milan_Vanca> > deepseq [error "x", error "y"] "NF"
2026-04-13 16:16:10 <lambdabot> Variable not in scope: deepseq :: [a0] -> String -> t
2026-04-13 16:17:17 <mauke> @let import Control.DeepSeq
2026-04-13 16:17:18 <lambdabot> /sandbox/tmp/.L.hs:50:1: error: [GHC-87110]
2026-04-13 16:17:18 <lambdabot> Could not load module ‘Control.DeepSeq’.
2026-04-13 16:17:18 <lambdabot> It is a member of the hidden package ‘deepseq-1.5.0.0’.
2026-04-13 16:18:48 × merijn quits (~merijn@77.242.116.146) (Ping timeout: 246 seconds)
2026-04-13 16:20:16 <janus> % import Control.DeepSeq
2026-04-13 16:20:16 <yahb2> <no output>
2026-04-13 16:20:35 <janus> % deepseq [ error "x", error "y"] "NF"
2026-04-13 16:20:35 <yahb2> <interactive>:7:1: error: [GHC-39999] ; • Ambiguous type variable ‘a0’ arising from a use of ‘deepseq’ ; prevents the constraint ‘(NFData a0)’ from being solved. ; Probable fix: use...
2026-04-13 16:21:05 <mauke> % deepseq [ error "x", error "y" :: Int] "NF"
2026-04-13 16:21:05 <yahb2> *** Exception: x ; ; HasCallStack backtrace: ; error, called at <interactive>:9:11 in interactive:Ghci3
2026-04-13 16:22:10 <Milan_Vanca> let a = 1 + 1 :: Int
2026-04-13 16:22:15 <Milan_Vanca> > let a = 1 + 1 :: Int
2026-04-13 16:22:16 <lambdabot> not an expression: ‘let a = 1 + 1 :: Int’
2026-04-13 16:22:38 <Milan_Vanca> Ah ok.. so I can't do this here :D
2026-04-13 16:22:40 <Milan_Vanca> nvm
2026-04-13 16:22:51 <janus> @let a = 1 + 1 :: Int
2026-04-13 16:22:51 <mauke> > let a = 1 + 1 :: Int in a
2026-04-13 16:22:51 <lambdabot> Defined.
2026-04-13 16:22:52 <lambdabot> 2
2026-04-13 16:23:04 <mauke> > a
2026-04-13 16:23:05 <lambdabot> Ambiguous occurrence ‘a’.
2026-04-13 16:23:05 <lambdabot> It could refer to
2026-04-13 16:23:05 <lambdabot> either ‘Debug.SimpleReflect.a’,
2026-04-13 16:23:07 <mauke> @undefine
2026-04-13 16:23:07 <lambdabot> Undefined.
2026-04-13 16:23:40 <mauke> > (a + 1) ^ 2
2026-04-13 16:23:41 <lambdabot> (a + 1) * (a + 1)
2026-04-13 16:24:34 <janus> what's the difference between using @let and '> let' ?
2026-04-13 16:25:17 <mauke> the latter introduces an expression
2026-04-13 16:25:39 <mauke> the former adds a top-level statement to the execution environment
2026-04-13 16:26:21 <janus> yahb is just ghci right? so you use lambdabot so that you can get SimpleReflect?
2026-04-13 16:26:27 <mauke> > (let map = 20 in map + 1) * 2
2026-04-13 16:26:28 <lambdabot> 42
2026-04-13 16:28:36 × karenw quits (~karenw@user/karenw) (Remote host closed the connection)
2026-04-13 16:30:02 <Milan_Vanca> @let main = print "Hello"
2026-04-13 16:30:04 <lambdabot> Defined.
2026-04-13 16:30:06 <Milan_Vanca> @:main
2026-04-13 16:30:06 <lambdabot> Here we are, Pinky--at the dawn of time!
2026-04-13 16:30:18 <Milan_Vanca> @:sprint main
2026-04-13 16:30:18 <lambdabot> Unknown command, try @list
2026-04-13 16:30:42 <mauke> lambdabot isn't ghci :-)
2026-04-13 16:30:52 <__monty__> You can experiment with lambdabot in a query, FYI.
2026-04-13 16:31:10 <yin> __monty__: after considering it, i don't think it does after all
2026-04-13 16:31:35 <Milan_Vanca> __monty__: what query?
2026-04-13 16:31:40 <EvanR> > (a + 1) * (a + 1)
2026-04-13 16:31:41 <lambdabot> (a + 1) * (a + 1)
2026-04-13 16:31:48 <EvanR> a^2 + 2*a + 1
2026-04-13 16:31:58 <__monty__> Milan_Vanca: AKA a private message.
2026-04-13 16:32:00 <mauke> Milan_Vanca: I'm not sure about weechat, but try "/query lambdabot"
2026-04-13 16:32:10 <Milan_Vanca> Ah thank you
2026-04-13 16:32:38 <Milan_Vanca> mauke: You can see my client? :D
2026-04-13 16:33:01 <mauke> I asked it :-)
2026-04-13 16:33:06 <mauke> by sending a CTCP VERSION request
2026-04-13 16:34:33 <__monty__> yin: I guess the pattern rolls out of the definition of `not` a bit more readily? The assumption being that people are less likely to write a tautological test than they are to spell out negation?
2026-04-13 16:35:20 <mauke> Milan_Vanca: I don't see a specific weechat command for it. try "/ctcp mauke version"
2026-04-13 16:35:57 karenw joins (~karenw@user/karenw)
2026-04-13 16:36:42 jmcantrell_ joins (~weechat@user/jmcantrell)
2026-04-13 16:43:53 × hellwolf quits (~user@7530-0dab-5d73-cf2b-0f00-4d40-07d0-2001.sta.estpak.ee) (Ping timeout: 248 seconds)
2026-04-13 16:46:14 × m quits (~travltux@user/travltux) (Quit: WeeChat 4.7.2)
2026-04-13 16:46:22 <Milan_Vanca> Like I was able to send command but I see no response
2026-04-13 16:47:00 <Milan_Vanca> mauke: No sorry, I see it just in different "window"
2026-04-13 16:47:02 <mauke> I can see your requests in my status window
2026-04-13 16:47:05 <mauke> ah :-)
2026-04-13 16:47:49 <Milan_Vanca> ty that is new command I learned today :)
2026-04-13 16:48:27 <Milan_Vanca> But enough fun.. lets go back to studying :D
2026-04-13 16:48:56 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2026-04-13 16:49:19 sord937 joins (~sord937@gateway/tor-sasl/sord937)
2026-04-13 16:49:34 hellwolf joins (~user@17e7-d9b7-b727-51a4-0f00-4d40-07d0-2001.sta.estpak.ee)
2026-04-13 17:01:04 Square3 joins (~Square@user/square)
2026-04-13 17:03:52 × Square quits (~Square4@user/square) (Ping timeout: 244 seconds)
2026-04-13 17:12:49 × Xe quits (~Xe@perl/impostor/xe) (Quit: ZNC 1.10.1 - https://znc.in)
2026-04-13 17:14:47 ft joins (~ft@p508db287.dip0.t-ipconnect.de)

All times are in UTC.