Logs: liberachat/#haskell
| 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.