2024/08/07

2024-08-07 00:08:41 +0200target_i(~target_i@user/target-i/x-6023099) (Quit: leaving)
2024-08-07 00:12:12 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
2024-08-07 00:14:31 +0200Sgeo(~Sgeo@user/sgeo)
2024-08-07 00:20:24 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Remote host closed the connection)
2024-08-07 00:20:29 +0200kupi(uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2024-08-07 00:22:49 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net)
2024-08-07 00:45:27 +0200 <haskellbridge> <Jade> is this not a valid instance for `Monad (Lift f)`?
2024-08-07 00:45:27 +0200 <haskellbridge> ... long message truncated: https://kf8nh.com/_matrix/media/v3/download/kf8nh.com/iXGiGCXhRYGAiRsbtVFzeGfT (3 lines)
2024-08-07 01:03:31 +0200 <ncf> it is lawful i'm pretty sure
2024-08-07 01:03:57 +0200 <ncf> i was considering something like this as a categorification of Semigroup m => Monoid (Maybe m) at some point
2024-08-07 01:04:50 +0200 <ncf> (just like Maybe a = a + 1, Lift f = f + 1 where 1 is the identity functor)
2024-08-07 01:05:39 +0200 <ncf> you'd think that you'd only need the functor equivalent of Semigroup (which is Bind), but this is actually not enough because general monads don't commute with coproducts
2024-08-07 01:06:20 +0200 <ncf> so you need something like a generalised join : f (a + f a) → f a, or just give up and ask for Monad f
2024-08-07 01:06:24 +0200mpb(~mpb@bras-base-otwaon230qw-grc-24-174-89-68-120.dsl.bell.ca) (Quit: Lost terminal)
2024-08-07 01:18:16 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Remote host closed the connection)
2024-08-07 01:19:31 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net)
2024-08-07 01:23:36 +0200tabaqui(~root@87.200.123.114) (Ping timeout: 252 seconds)
2024-08-07 01:28:57 +0200halloy5409(~halloy540@147.235.212.157)
2024-08-07 01:31:56 +0200darkstardevx(~darkstard@50.53.3.2) (Quit: Leaving)
2024-08-07 01:32:44 +0200 <halloy5409> @t foldr
2024-08-07 01:32:44 +0200 <lambdabot> Maybe you meant: tell thank you thanks thesaurus thx tic-tac-toe ticker time todo todo-add todo-delete type v @ ? .
2024-08-07 01:33:45 +0200 <halloy5409> @type map
2024-08-07 01:33:46 +0200 <lambdabot> (a -> b) -> [a] -> [b]
2024-08-07 01:34:24 +0200acidjnk(~acidjnk@p200300d6e72cfb628054de8284f67264.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2024-08-07 01:34:52 +0200 <halloy5409> > foldr (\x xs -> xs ++ [x]) [] [1,2,3,4,5]
2024-08-07 01:34:53 +0200 <lambdabot> [5,4,3,2,1]
2024-08-07 01:35:25 +0200 <halloy5409> @list
2024-08-07 01:35:25 +0200 <lambdabot> What module? Try @listmodules for some ideas.
2024-08-07 01:35:35 +0200 <halloy5409> @list,odules
2024-08-07 01:35:35 +0200 <lambdabot> activity base bf check compose dice dict djinn dummy elite eval filter free fresh haddock help hoogle instances irc karma localtime metar more oeis offlineRC pl pointful poll pretty quote search
2024-08-07 01:35:35 +0200 <lambdabot> seen slap source spell system tell ticker todo topic type undo unlambda unmtl version where
2024-08-07 01:35:44 +0200 <halloy5409> @help
2024-08-07 01:35:44 +0200 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
2024-08-07 01:35:51 +0200 <halloy5409> @help foldr
2024-08-07 01:35:51 +0200 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
2024-08-07 01:36:17 +0200 <halloy5409> @listmodules
2024-08-07 01:36:17 +0200 <lambdabot> activity base bf check compose dice dict djinn dummy elite eval filter free fresh haddock help hoogle instances irc karma localtime metar more oeis offlineRC pl pointful poll pretty quote search
2024-08-07 01:36:17 +0200 <lambdabot> seen slap source spell system tell ticker todo topic type undo unlambda unmtl version where
2024-08-07 01:36:28 +0200 <halloy5409> > foldr
2024-08-07 01:36:30 +0200 <lambdabot> error:
2024-08-07 01:36:30 +0200 <lambdabot> • No instance for (Typeable a0)
2024-08-07 01:36:30 +0200 <lambdabot> arising from a use of ‘show_M77240290220706789158’
2024-08-07 01:36:42 +0200 <halloy5409> ?
2024-08-07 01:36:48 +0200 <halloy5409> ?help
2024-08-07 01:36:48 +0200 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
2024-08-07 01:36:53 +0200 <halloy5409> help foldr
2024-08-07 01:38:40 +0200 <halloy5409> > can someone please tell me how can i tell lambdabot to give me all the srtuct of the execution of foldr? not the result itself, but all the struct with the paren's
2024-08-07 01:38:41 +0200 <lambdabot> <hint>:1:79: error: parse error on input ‘of’
2024-08-07 01:38:51 +0200 <halloy5409> can someone please tell me how can i tell lambdabot to give me all the srtuct of the execution of foldr? not the result itself, but all the struct with the paren's
2024-08-07 01:40:08 +0200 <halloy5409> > foldr (+) 0 [1,2,3,4]
2024-08-07 01:40:10 +0200 <lambdabot> 10
2024-08-07 01:40:30 +0200 <geekosaur> > foldr f z [a,b,c]
2024-08-07 01:40:31 +0200 <lambdabot> f a (f b (f c z))
2024-08-07 01:40:42 +0200 <geekosaur> courtesy of debug-reflect
2024-08-07 01:41:24 +0200 <geekosaur> er, simple-reflect
2024-08-07 01:42:12 +0200 <halloy5409> @geekosaur thanks. can i get it in specific function also? for example how do i get the same result with: foldr (+) 0 [1,1,3]
2024-08-07 01:42:12 +0200 <lambdabot> Unknown command, try @list
2024-08-07 01:42:30 +0200 <halloy5409> geekosaur thanks. can i get it in specific function also? for example how do i get the same result with: foldr (+) 0 [1,1,3]
2024-08-07 01:43:23 +0200 <halloy5409> if i use specific function i get the result itself
2024-08-07 01:44:20 +0200halloy5409menash
2024-08-07 01:44:43 +0200 <menash> > foldr (+) 0 [1,2,3,4]
2024-08-07 01:44:44 +0200 <lambdabot> 10
2024-08-07 01:44:57 +0200 <geekosaur> lambdabot doesn't do that. I think there's a website that does?
2024-08-07 01:45:36 +0200 <menash> i dont know. i would be happy to get a link to this website :-)
2024-08-07 01:46:43 +0200 <menash> > foldr f [] [1,2,3,4 where f =
2024-08-07 01:46:45 +0200 <lambdabot> <hint>:1:21: error: parse error on input ‘where’
2024-08-07 01:47:07 +0200 <menash> > foldr f [] [1,2,3,4 where f x xs = xs ++ [x]
2024-08-07 01:47:08 +0200 <lambdabot> <hint>:1:21: error: parse error on input ‘where’
2024-08-07 01:48:11 +0200 <menash> > f x xs = xs ++ [x]
2024-08-07 01:48:13 +0200 <lambdabot> <hint>:1:8: error: parse error on input ‘=’
2024-08-07 01:48:37 +0200 <geekosaur> tried to find it, not succeeding. may have gone away years ago
2024-08-07 01:49:46 +0200 <menash> geekosaur thanks for the help :-)
2024-08-07 01:50:00 +0200 <jackdk> https://pbv.github.io/haskelite/site/index.html is the closest I'm aware of
2024-08-07 01:50:46 +0200 <geekosaur> no, years ago there was a site that specifically traced foldl and foldr
2024-08-07 01:51:31 +0200 <jackdk> Ah, well https://pbv.github.io/haskelite/site/folds.html shows `foldl`,`foldr`, and `foldl'` at least
2024-08-07 01:51:45 +0200 <geekosaur> menash, "> " is an expression evaluator, you can use let-in or you can use @let to add a global definition (which will go away when someone does @undef)
2024-08-07 01:53:19 +0200sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 260 seconds)
2024-08-07 01:53:23 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2024-08-07 01:55:44 +0200 <menash> this site is great. thank jackdk
2024-08-07 01:57:36 +0200 <menash> @let f x xs = xs ++ [x]
2024-08-07 01:57:37 +0200 <lambdabot> Defined.
2024-08-07 01:57:52 +0200 <menash> foldr f [] [1,2,3,4]
2024-08-07 01:58:11 +0200 <menash> > foldr f [] [1,2,3,4]
2024-08-07 01:58:12 +0200 <lambdabot> error:
2024-08-07 01:58:13 +0200 <lambdabot> Ambiguous occurrence ‘f’
2024-08-07 01:58:13 +0200 <lambdabot> It could refer to
2024-08-07 01:58:38 +0200Luj9(~Luj@2a01:e0a:de4:a0e1:be24:11ff:febc:b5b5) (Quit: Ping timeout (120 seconds))
2024-08-07 01:58:58 +0200Luj9(~Luj@2a01:e0a:de4:a0e1:be24:11ff:febc:b5b5)
2024-08-07 01:59:26 +0200 <menash> geekosaur i did @let f x xs = xs ++ [x] and then when i'm using f with foldr, i get error (ambiguous occurrence 'f')
2024-08-07 02:00:08 +0200 <menash> (the definition is good. i get Defined in response of the @let expression)
2024-08-07 02:00:40 +0200 <menash> @let z x xs = xs ++ [x]
2024-08-07 02:00:42 +0200 <lambdabot> Defined.
2024-08-07 02:00:42 +0200 <jackdk> menash: Can you put the entire source file you're working with into a pastebin or play.haskell.org?
2024-08-07 02:00:47 +0200 <jackdk> @where paste
2024-08-07 02:00:47 +0200 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
2024-08-07 02:01:10 +0200 <menash> > foldr z [] [1,2,3,4]
2024-08-07 02:01:11 +0200 <lambdabot> error:
2024-08-07 02:01:11 +0200 <lambdabot> Ambiguous occurrence ‘z’
2024-08-07 02:01:11 +0200 <lambdabot> It could refer to
2024-08-07 02:01:19 +0200 <jackdk> Or is this lambdabot-specific?
2024-08-07 02:01:40 +0200 <geekosaur> Yes, it's colliding with the one from simple-reflect
2024-08-07 02:02:15 +0200 <geekosaur> All one-letter names are taken
2024-08-07 02:02:33 +0200 <menash> lambdabot specific. i want him to help me see what is going on with reverse a list using foldr with te function: f x xs = xs ++ [x]
2024-08-07 02:03:36 +0200EvanR(~EvanR@user/evanr) (Ping timeout: 276 seconds)
2024-08-07 02:04:21 +0200 <geekosaur> :t f
2024-08-07 02:04:22 +0200 <lambdabot> error:
2024-08-07 02:04:22 +0200 <lambdabot> Ambiguous occurrence ‘f’
2024-08-07 02:04:22 +0200 <lambdabot> It could refer to
2024-08-07 02:04:33 +0200 <geekosaur> Welp
2024-08-07 02:04:46 +0200 <geekosaur> @undefine
2024-08-07 02:04:46 +0200 <lambdabot> Undefined.
2024-08-07 02:04:53 +0200 <geekosaur> :t f
2024-08-07 02:04:54 +0200 <lambdabot> FromExpr a => a
2024-08-07 02:05:35 +0200 <geekosaur> That's so it can pretend to be a function
2024-08-07 02:06:37 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2024-08-07 02:09:13 +0200 <menash> @let f = (\x xs -> xs ++[x])
2024-08-07 02:09:14 +0200 <lambdabot> Defined.
2024-08-07 02:09:22 +0200 <geekosaur> it'll collide again
2024-08-07 02:09:33 +0200 <menash> > foldr f [] [1,2,3,4]
2024-08-07 02:09:34 +0200 <lambdabot> error:
2024-08-07 02:09:35 +0200 <lambdabot> Ambiguous occurrence ‘f’
2024-08-07 02:09:35 +0200 <lambdabot> It could refer to
2024-08-07 02:09:39 +0200 <geekosaur> you can't override simple-reflect
2024-08-07 02:10:02 +0200 <menash> i don't know what is simple-reflect. i'm very newb.
2024-08-07 02:10:16 +0200 <geekosaur> @hackage simple-reflect
2024-08-07 02:10:17 +0200 <lambdabot> https://hackage.haskell.org/package/simple-reflect
2024-08-07 02:11:20 +0200 <menash> geekosaur: can i cabal install simple-reflect and then get what i want in ghci?
2024-08-07 02:11:39 +0200 <menash> or it is not so simple?
2024-08-07 02:12:02 +0200 <geekosaur> no, because you can't replace its f with something concrete
2024-08-07 02:12:10 +0200 <geekosaur> @undef
2024-08-07 02:12:11 +0200 <lambdabot> Undefined.
2024-08-07 02:12:37 +0200 <geekosaur> > foldr (\x xs -> xs ++ x) [1,2,3,4] :: [Expr]
2024-08-07 02:12:38 +0200 <lambdabot> error:
2024-08-07 02:12:38 +0200 <lambdabot> • Couldn't match expected type ‘[Expr]’
2024-08-07 02:12:38 +0200 <lambdabot> with actual type ‘t0 [a0] -> [a0]’
2024-08-07 02:12:46 +0200 <geekosaur> I didn't think that would work
2024-08-07 02:12:53 +0200 <geekosaur> I think simple-reflect is too dumb for that
2024-08-07 02:13:11 +0200 <geekosaur> > foldr (\x xs -> xs ++ x) 0 [1,2,3,4] :: [Expr]
2024-08-07 02:13:13 +0200 <lambdabot> error:
2024-08-07 02:13:13 +0200 <lambdabot> • No instance for (Num [Expr]) arising from the literal ‘0’
2024-08-07 02:13:13 +0200 <lambdabot> • In the second argument of ‘foldr’, namely ‘0’
2024-08-07 02:13:23 +0200 <menash> the x should be with [x] i think
2024-08-07 02:13:29 +0200Inst(~Inst@user/Inst)
2024-08-07 02:13:40 +0200 <geekosaur> > foldr (\x xs -> xs ++ x) 0 [1,2,3,4] :: Expr
2024-08-07 02:13:41 +0200 <lambdabot> error:
2024-08-07 02:13:41 +0200 <lambdabot> • Couldn't match expected type ‘Expr’ with actual type ‘[a0]’
2024-08-07 02:13:41 +0200 <lambdabot> • In the expression:
2024-08-07 02:13:46 +0200 <geekosaur> nope
2024-08-07 02:13:53 +0200 <menash> i mean:
2024-08-07 02:14:00 +0200 <geekosaur> Expr doesn't work with Num, among other things
2024-08-07 02:14:20 +0200 <menash> foldr (\x xs -> xs ++ [x]) [] [1,2,3,4]
2024-08-07 02:14:26 +0200 <menash> > foldr (\x xs -> xs ++ [x]) [] [1,2,3,4]
2024-08-07 02:14:28 +0200 <lambdabot> [4,3,2,1]
2024-08-07 02:14:35 +0200 <geekosaur> but in any case, simple-reflect is not a general execution tracer, it uses type trickery that can handle very simple cases but nothing else
2024-08-07 02:14:59 +0200 <geekosaur> > scanr (\x xs -> xs ++ [x]) [] [1,2,3,4]
2024-08-07 02:15:00 +0200 <lambdabot> [[4,3,2,1],[4,3,2],[4,3],[4],[]]
2024-08-07 02:15:29 +0200 <geekosaur> doesn't show a trace btu does show intermediate results
2024-08-07 02:17:29 +0200 <menash> > foldr f a [1,2,3]
2024-08-07 02:17:31 +0200 <lambdabot> f 1 (f 2 (f 3 a))
2024-08-07 02:17:54 +0200 <menash> can i make it infix?
2024-08-07 02:18:00 +0200 <menash> the function
2024-08-07 02:18:24 +0200 <geekosaur> no, that requires rewriting the Show instance in simple-reflect, I think
2024-08-07 02:18:42 +0200 <geekosaur> or using a symbol?
2024-08-07 02:18:56 +0200 <geekosaur> > foldr (*) a [1,2,3]
2024-08-07 02:18:57 +0200 <lambdabot> 1 * (2 * (3 * a))
2024-08-07 02:19:57 +0200 <menash> foldr (\x xs -> xs ++ [x]) a [1,2,3,4]
2024-08-07 02:20:01 +0200 <menash> > foldr (\x xs -> xs ++ [x]) a [1,2,3,4]
2024-08-07 02:20:02 +0200 <lambdabot> error:
2024-08-07 02:20:02 +0200 <lambdabot> • Couldn't match expected type ‘[a]’ with actual type ‘Expr’
2024-08-07 02:20:02 +0200 <lambdabot> • In the second argument of ‘foldr’, namely ‘a’
2024-08-07 02:20:19 +0200 <menash> why in your example it is working?
2024-08-07 02:27:28 +0200 <geekosaur> did you look at the type of foldr?
2024-08-07 02:27:33 +0200 <geekosaur> :t foldr
2024-08-07 02:27:34 +0200 <lambdabot> Foldable t => (a -> b -> b) -> b -> t a -> b
2024-08-07 02:30:48 +0200 <geekosaur> also, if I fix that, simple-reflect doesn't have anything to work on so it just gives the simple result
2024-08-07 02:31:21 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2024-08-07 02:31:49 +0200 <geekosaur> you're probably best off using https://pbv.github.io/haskelite/site/index.htmllike jackdk suggested
2024-08-07 02:31:59 +0200 <geekosaur> simple-reflect is too simple to do what you want
2024-08-07 02:33:47 +0200 <menash> yes that is what i using now and i think i get a sort of breakthrough with my understnaing what is happening.
2024-08-07 02:34:08 +0200 <menash> sorry for the mistakes in my writing :)
2024-08-07 02:34:17 +0200EvanR(~EvanR@user/evanr)
2024-08-07 02:37:30 +0200 <menash> geekosaur: thank for the help and have a great day/evening/night :-)
2024-08-07 02:38:39 +0200menash(~halloy540@147.235.212.157) (Quit: menash)
2024-08-07 02:43:54 +0200oo_miguel(~Thunderbi@78.10.207.46) (Ping timeout: 276 seconds)
2024-08-07 02:45:25 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com)
2024-08-07 02:47:16 +0200skyesoss(~Thunderbi@c-73-208-45-119.hsd1.il.comcast.net) (Quit: skyesoss)
2024-08-07 02:49:40 +0200skyesoss(~Thunderbi@c-73-208-45-119.hsd1.il.comcast.net)
2024-08-07 02:55:56 +0200g00gler(uid125351@id-125351.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2024-08-07 03:02:13 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Quit: Lost terminal)
2024-08-07 03:02:53 +0200pointlessslippe1(~pointless@212.82.82.3) (Ping timeout: 245 seconds)
2024-08-07 03:03:53 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2024-08-07 03:08:01 +0200pointlessslippe1(~pointless@212.82.82.3)
2024-08-07 03:09:30 +0200ZharMeny(~user@user/ZharMeny) (Quit: M-x meow)
2024-08-07 03:10:46 +0200slack1256(~slack1256@2803:c600:5111:80cb:a1ed:c7bd:aa66:b480)
2024-08-07 03:17:22 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 272 seconds)
2024-08-07 03:21:27 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2024-08-07 03:22:06 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2024-08-07 03:30:25 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2024-08-07 03:30:49 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-08-07 03:36:44 +0200zzz(~z@user/zero) (Ping timeout: 260 seconds)
2024-08-07 03:38:55 +0200zero(~z@user/zero)
2024-08-07 03:39:53 +0200 <probie> I wonder how much more terse the syntax of Haskell could be. There's not really much room for "improvement" is there?
2024-08-07 03:41:11 +0200migas977(~migas@static.140.65.63.178.clients.your-server.de) (Quit: The Lounge - https://thelounge.github.io)
2024-08-07 03:42:29 +0200 <geekosaur> not if you want to keep readability. you could probably exolang it (APL it?) with appropriate unicode character "keywords"
2024-08-07 03:43:08 +0200 <geekosaur> but you can't do much with e.g. let without losing things like pattern bindings
2024-08-07 03:44:39 +0200 <probie> "keep readability" was not one of my concerns
2024-08-07 03:48:00 +0200 <probie> I've been attempting to navigate the source of https://codeberg.org/ngn/k since yesterday. It claims to be C, but I have my doubts (start at `a.h` if you're willing to give up your sanity).
2024-08-07 03:50:02 +0200 <geekosaur> IOCCC lives!
2024-08-07 03:51:32 +0200 <probie> Except this wasn't written for that. This is just what the author thought the best code style was
2024-08-07 03:51:34 +0200 <geekosaur> also I'm reminded of the original Bourne shell source (written in a bizarre "dialect" of Algol 60 implemented as cpp macros)
2024-08-07 03:52:54 +0200 <probie> as in `#define BEGIN {` shenanigans?
2024-08-07 03:53:11 +0200 <geekosaur> yes only more so
2024-08-07 03:53:35 +0200 <geekosaur> (similarly I suspect that source is trying to write in as close to K as cpp can make C)
2024-08-07 03:54:01 +0200 <geekosaur> for some reason it feels more like Mumps
2024-08-07 03:54:25 +0200billchenchina-(~billchenc@2408:844f:1526:ffb0:6358:6774:f45c:5120)
2024-08-07 03:59:57 +0200billchenchina-(~billchenc@2408:844f:1526:ffb0:6358:6774:f45c:5120) (Ping timeout: 276 seconds)
2024-08-07 04:01:59 +0200 <probie> The style was pioneered by Arthur Whitney who at age 11 suffered permanent brain damage when Ken Iverson taught him APL. For an example of Arthur's code, here's a 1 page "proof of concept" interpreter for J https://code.jsoftware.com/wiki/Essays/Incunabulum, which Roger Hui then fleshed out.
2024-08-07 04:04:11 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 252 seconds)
2024-08-07 04:16:16 +0200xff0x(~xff0x@2405:6580:b080:900:7bc4:5f07:443b:cdc) (Ping timeout: 272 seconds)
2024-08-07 04:18:09 +0200 <jackdk> Only problem I see is the use of `gets()`
2024-08-07 04:23:06 +0200 <geekosaur> nobody cared in 1989
2024-08-07 04:31:20 +0200td_(~td@i53870936.versanet.de) (Ping timeout: 252 seconds)
2024-08-07 04:33:21 +0200td_(~td@i5387090B.versanet.de)
2024-08-07 04:48:15 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com)
2024-08-07 04:57:13 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net)
2024-08-07 04:59:52 +0200terrorjack(~terrorjac@static.163.82.63.178.clients.your-server.de) (Quit: The Lounge - https://thelounge.chat)
2024-08-07 05:03:07 +0200terrorjack(~terrorjac@static.163.82.63.178.clients.your-server.de)
2024-08-07 05:04:47 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2024-08-07 05:05:13 +0200aforemny(~aforemny@2001:9e8:6cc6:2f00:b85e:457c:6740:c35)
2024-08-07 05:05:36 +0200 <jackdk> I'm being silly — big page of ... idiosyncratic CPP use? Nah, the only problem is the single use of `gets()` at the bottom.
2024-08-07 05:06:15 +0200aforemny_(~aforemny@2001:9e8:6ce5:9e00:3eae:bcb7:91ff:d64b) (Ping timeout: 276 seconds)
2024-08-07 05:10:11 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
2024-08-07 05:10:48 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2024-08-07 05:11:15 +0200 <Axman6> You should see the Python I've been writing in C, it's pretty much all CPP
2024-08-07 05:20:13 +0200 <Axman6> probie: once that code's formatted, it's not too bad (i'm sure you wrote worse at uni =) )
2024-08-07 05:48:43 +0200Maxdamantus(~Maxdamant@user/maxdamantus) (Ping timeout: 245 seconds)
2024-08-07 05:50:24 +0200down200(~down200@shell.lug.mtu.edu) (Quit: ZNC - https://znc.in)
2024-08-07 05:51:54 +0200skyesoss(~Thunderbi@c-73-208-45-119.hsd1.il.comcast.net) (Ping timeout: 272 seconds)
2024-08-07 05:52:28 +0200Inst(~Inst@user/Inst) (Ping timeout: 245 seconds)
2024-08-07 05:53:47 +0200down200(~down200@shell.lug.mtu.edu)
2024-08-07 06:08:11 +0200Inst(~Inst@user/Inst)
2024-08-07 06:12:43 +0200JuanDaugherty(~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
2024-08-07 06:16:28 +0200danse-nr3(~danse-nr3@user/danse-nr3)
2024-08-07 06:25:51 +0200danse-nr3(~danse-nr3@user/danse-nr3) (Read error: Connection reset by peer)
2024-08-07 06:26:07 +0200danse-nr3(~danse-nr3@user/danse-nr3)
2024-08-07 06:29:22 +0200Maxdamantus(~Maxdamant@user/maxdamantus)
2024-08-07 06:32:19 +0200mulk(~mulk@p5b112b2e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2024-08-07 06:34:30 +0200mulk(~mulk@p5b112b2e.dip0.t-ipconnect.de)
2024-08-07 06:36:36 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds)
2024-08-07 06:44:52 +0200rosco(~rosco@175.136.158.234)
2024-08-07 07:00:55 +0200madhavanmiui(~madhavanm@2409:40f4:8:6451:8000::)
2024-08-07 07:00:55 +0200madhavanmiui(~madhavanm@2409:40f4:8:6451:8000::) (Client Quit)
2024-08-07 07:02:38 +0200michalz(~michalz@185.246.207.217)
2024-08-07 07:11:40 +0200dsrt^(~dsrt@c-98-242-74-66.hsd1.ga.comcast.net)
2024-08-07 07:23:49 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-08-07 07:30:05 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2024-08-07 07:36:07 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds)
2024-08-07 07:37:11 +0200euleritian(~euleritia@dynamic-176-006-134-130.176.6.pool.telefonica.de)
2024-08-07 07:37:11 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-08-07 07:43:14 +0200euleritian(~euleritia@dynamic-176-006-134-130.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2024-08-07 07:43:31 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-08-07 07:48:18 +0200tabaqui(~root@87.200.123.114)
2024-08-07 07:54:44 +0200danse-nr3(~danse-nr3@user/danse-nr3) (Quit: on the move)
2024-08-07 07:56:16 +0200Maxdamantus(~Maxdamant@user/maxdamantus) (Quit: leaving)
2024-08-07 07:56:34 +0200Maxdamantus(~Maxdamant@user/maxdamantus)
2024-08-07 07:58:29 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-08-07 08:11:54 +0200rosco(~rosco@175.136.158.234) (Quit: Lost terminal)
2024-08-07 08:17:35 +0200 <Inst> probie: haskell's tersity is limited by types and purity
2024-08-07 08:21:29 +0200CiaoSen(~Jura@2a05:5800:242:cd00:e6b9:7aff:fe80:3d03)
2024-08-07 08:25:28 +0200 <Inst> i suppose you could replace >>=, *>, <$>, and <*> wth some shorter operators, though, and make it idiomatic to avoid spacing in their use, but that sort of turns into APL quite quickly
2024-08-07 08:25:47 +0200 <jackdk> probie: https://raw.githubusercontent.com/mxswd/flip-plus/master/Control/FlipPlus.hs
2024-08-07 08:28:06 +0200 <Inst> it also makes me wonder how people would have done monads if it was built into the language instead of being a later bolt-on
2024-08-07 08:28:37 +0200 <davean> You mean syntactically?
2024-08-07 08:28:41 +0200 <Inst> yeah
2024-08-07 08:29:43 +0200 <davean> Lets be thankful they didn't, they'd have named the opperator :::
2024-08-07 08:30:41 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 248 seconds)
2024-08-07 08:31:19 +0200 <Inst> that's in the moggi paper?
2024-08-07 08:31:48 +0200 <davean> No, but if they think something is important in Haskell they name it based on : and the more you use it, the more :s they use.
2024-08-07 08:32:28 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 245 seconds)
2024-08-07 08:33:18 +0200euleritian(~euleritia@dynamic-176-006-134-130.176.6.pool.telefonica.de)
2024-08-07 08:40:52 +0200sord937(~sord937@gateway/tor-sasl/sord937)
2024-08-07 08:46:58 +0200ticat(~ticat@156.251.248.134)
2024-08-07 08:48:52 +0200danse-nr3(~danse-nr3@user/danse-nr3)
2024-08-07 08:56:03 +0200Square(~Square@user/square)
2024-08-07 08:58:13 +0200euleritian(~euleritia@dynamic-176-006-134-130.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2024-08-07 08:58:32 +0200euleritian(~euleritia@77.22.252.56)
2024-08-07 09:00:41 +0200oo_miguel(~Thunderbi@78.10.207.46)
2024-08-07 09:00:56 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2024-08-07 09:01:13 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2024-08-07 09:01:43 +0200fun-safe-math(~fun-safe-@24.21.106.247)
2024-08-07 09:03:44 +0200 <jackdk> Lens question: ignoring questions of lawfulness, is there a standard combinator that combines two `Fold s a`, yielding a `Fold s a` that works over both?
2024-08-07 09:04:32 +0200 <c_wraith> if you're using it solely as a fold, <>
2024-08-07 09:04:32 +0200 <Axman6> does <> work?
2024-08-07 09:04:44 +0200 <c_wraith> when you start to use it as a traversal, it breaks badly
2024-08-07 09:04:52 +0200 <jackdk> whaaat, that's crazy
2024-08-07 09:05:02 +0200 <Axman6> > (Nothing, 2) .~ (_Just <> _2)
2024-08-07 09:05:04 +0200 <lambdabot> error:
2024-08-07 09:05:04 +0200 <lambdabot> • Couldn't match type ‘(Maybe a0, b0)’
2024-08-07 09:05:04 +0200 <lambdabot> with ‘(a1 -> Identity ((a2 -> f0 b1) -> Maybe a2 -> f0 ...
2024-08-07 09:05:11 +0200 <Axman6> > (Nothing, 2) ..~ (_Just <> _2)
2024-08-07 09:05:12 +0200 <lambdabot> error:
2024-08-07 09:05:12 +0200 <lambdabot> • Variable not in scope:
2024-08-07 09:05:12 +0200 <lambdabot> (..~)
2024-08-07 09:05:23 +0200 <Axman6> bleh, I can't remember my lens operators!
2024-08-07 09:05:33 +0200 <danse-nr3> "ignoring questions of lawfulness" ... "whaaat, that's crazy"
2024-08-07 09:05:34 +0200 <jackdk> You've been away too long
2024-08-07 09:06:01 +0200 <jackdk> I couldn't reason through from the type alias for `Fold` to see that it would have a `Semigroup` instance
2024-08-07 09:06:15 +0200 <Axman6> You should see the lens stuff I was writing last night, using all the crazy operators (<~ is so handy) but I've forgotten the basics!
2024-08-07 09:06:54 +0200 <haskellbridge> <magic_rb> Can we see the lens stuff? I do like me some lenses
2024-08-07 09:07:29 +0200 <Axman6> > (Nothing, 2) ^? (_Just <> _2)
2024-08-07 09:07:31 +0200 <lambdabot> error:
2024-08-07 09:07:31 +0200 <lambdabot> • Couldn't match type ‘Maybe a’ with ‘(Maybe a0, b0)’
2024-08-07 09:07:31 +0200 <lambdabot> Expected type: Getting (First a) (Maybe a0, b0) a
2024-08-07 09:08:06 +0200rosco(~rosco@175.136.158.234)
2024-08-07 09:08:07 +0200 <Axman6> I dunno what I'm doing any more
2024-08-07 09:08:16 +0200 <haskellbridge> <magic_rb> 😆
2024-08-07 09:08:21 +0200 <c_wraith> > [1..10] ^.. (traverse . filtered odd <> traverse . filtered even)
2024-08-07 09:08:23 +0200 <lambdabot> [1,3,5,7,9,2,4,6,8,10]
2024-08-07 09:08:33 +0200 <Axman6> > (Nothing, 2) ^? (_1 . _Just <> _2)
2024-08-07 09:08:34 +0200 <lambdabot> Just 2
2024-08-07 09:08:42 +0200 <Axman6> > (Just 3, 2) ^? (_1 . _Just <> _2)
2024-08-07 09:08:43 +0200 <lambdabot> Just 3
2024-08-07 09:09:15 +0200 <Axman6> c_wraith: that feels like the basis for an FFT implementation
2024-08-07 09:12:18 +0200 <jackdk> Axman6: how about the FlipPlus Fourier Transform?
2024-08-07 09:12:32 +0200berberman(~berberman@user/berberman) (Quit: ZNC 1.8.2 - https://znc.in)
2024-08-07 09:12:55 +0200 <haskellbridge> <magic_rb> Ive no idea whay im reading, i especially dont get how mappend fits into this
2024-08-07 09:12:55 +0200berberman(~berberman@user/berberman)
2024-08-07 09:13:06 +0200sawilagar(~sawilagar@user/sawilagar)
2024-08-07 09:13:26 +0200 <c_wraith> it's basically coincidence
2024-08-07 09:13:35 +0200berberman(~berberman@user/berberman) (Client Quit)
2024-08-07 09:13:54 +0200 <haskellbridge> <magic_rb> Kind if behaves like aplicative or in some cases, <|>
2024-08-07 09:14:03 +0200 <haskellbridge> <magic_rb> From the examples you gave
2024-08-07 09:14:09 +0200 <c_wraith> There was no particular design for <> to work that way with lens, but the existing instances just sort of work.
2024-08-07 09:14:28 +0200berberman(~berberman@user/berberman)
2024-08-07 09:14:36 +0200 <haskellbridge> <magic_rb> Ah the magic of actually respecting math, things just emerge
2024-08-07 09:14:47 +0200 <c_wraith> well. They work for a Fold
2024-08-07 09:15:02 +0200 <c_wraith> They don't work so much when more structure is expected.
2024-08-07 09:15:44 +0200 <Axman6> % :info Fold
2024-08-07 09:15:44 +0200 <yahb2> <interactive>:1:1: error: Not in scope: ‘Fold’
2024-08-07 09:15:53 +0200 <Axman6> % :info Control.Lens.Fold
2024-08-07 09:15:53 +0200 <yahb2> <interactive>:1:1: error: Not in scope: ‘Control.Lens.Fold’
2024-08-07 09:15:56 +0200 <Axman6> :(
2024-08-07 09:17:29 +0200ticat(~ticat@156.251.248.134) (Quit: Client closed)
2024-08-07 09:17:45 +0200 <c_wraith> IIRC, Fold s t a b is roughly (Applicative f, Contravariant f) => (a -> f b) -> s -> f t ?
2024-08-07 09:18:16 +0200 <c_wraith> Oh, it has fewer type variables. just s and a
2024-08-07 09:18:21 +0200 <c_wraith> But the rest is right
2024-08-07 09:18:24 +0200 <Axman6> yeah
2024-08-07 09:18:45 +0200 <Axman6> the fact semigroupie things work on Folds isn't too surprising
2024-08-07 09:18:47 +0200 <c_wraith> Right, having b and t only makes sense if you can reconstitute the value
2024-08-07 09:19:30 +0200 <c_wraith> And combining Applicative and Contravariant requires f's parameter to be phantom anyway...
2024-08-07 09:21:45 +0200 <c_wraith> So you have things like f ~ Const (Endo [a]) when using (^..).
2024-08-07 09:25:34 +0200acidjnk(~acidjnk@p200300d6e72cfb848054de8284f67264.dip0.t-ipconnect.de)
2024-08-07 09:31:45 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-08-07 09:37:29 +0200YoungFrog(~youngfrog@2a02:a03f:c9db:fc00:40f:34b2:83e3:2019) (Quit: ZNC 1.7.x-git-3-96481995 - https://znc.in)
2024-08-07 09:37:48 +0200YoungFrog(~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be)
2024-08-07 09:42:59 +0200Lears(~Leary@user/Leary/x-0910699) (Remote host closed the connection)
2024-08-07 09:43:14 +0200Leary(~Leary@user/Leary/x-0910699)
2024-08-07 09:50:40 +0200euleritian(~euleritia@77.22.252.56) (Ping timeout: 272 seconds)
2024-08-07 09:56:27 +0200someone235(uid419897@id-419897.ilkley.irccloud.com)
2024-08-07 09:59:13 +0200danse-nr3(~danse-nr3@user/danse-nr3) (Quit: on the move)
2024-08-07 10:01:53 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-08-07 10:03:44 +0200ft(~ft@p4fc2aa15.dip0.t-ipconnect.de) (Quit: leaving)
2024-08-07 10:05:22 +0200cfricke(~cfricke@user/cfricke)
2024-08-07 10:11:23 +0200danse-nr3(~danse-nr3@user/danse-nr3)
2024-08-07 10:26:20 +0200dans22103(~danse-nr3@user/danse-nr3)
2024-08-07 10:28:45 +0200danse-nr3(~danse-nr3@user/danse-nr3) (Ping timeout: 252 seconds)
2024-08-07 10:32:45 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-08-07 10:44:31 +0200sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 264 seconds)
2024-08-07 10:46:35 +0200sawilagar(~sawilagar@user/sawilagar)
2024-08-07 10:51:12 +0200ubert(~Thunderbi@178.115.47.16.wireless.dyn.drei.com)
2024-08-07 11:17:50 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 244 seconds)
2024-08-07 11:18:29 +0200gehmehgeh(~user@user/gehmehgeh)
2024-08-07 11:18:37 +0200gehmehgehgmg
2024-08-07 11:22:58 +0200migas977(~migas@static.140.65.63.178.clients.your-server.de)
2024-08-07 11:29:12 +0200meritamen(~user@user/meritamen)
2024-08-07 11:35:16 +0200Tisoxin(~Ikosit@user/ikosit) (Quit: The Lounge - https://thelounge.chat)
2024-08-07 11:35:51 +0200meritamen(~user@user/meritamen) (Remote host closed the connection)
2024-08-07 11:36:02 +0200Tisoxin(~Ikosit@user/ikosit)
2024-08-07 11:37:46 +0200billchenchina-(~billchenc@103.118.42.229)
2024-08-07 11:38:51 +0200billchenchina-(~billchenc@103.118.42.229) (Max SendQ exceeded)
2024-08-07 11:40:20 +0200billchenchina-(~billchenc@2408:844f:1526:ffb0:6358:6774:f45c:5120)
2024-08-07 11:40:58 +0200billchenchina-(~billchenc@2408:844f:1526:ffb0:6358:6774:f45c:5120) (Max SendQ exceeded)
2024-08-07 11:41:49 +0200billchenchina-(~billchenc@2408:844f:1526:ffb0:6358:6774:f45c:5120)
2024-08-07 11:46:39 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 276 seconds)
2024-08-07 11:47:45 +0200dans22103(~danse-nr3@user/danse-nr3) (Remote host closed the connection)
2024-08-07 11:47:59 +0200danse-nr3(~danse-nr3@user/danse-nr3)
2024-08-07 11:49:15 +0200Square(~Square@user/square) (Ping timeout: 276 seconds)
2024-08-07 11:51:38 +0200billchenchina-(~billchenc@2408:844f:1526:ffb0:6358:6774:f45c:5120) (Ping timeout: 272 seconds)
2024-08-07 11:52:44 +0200billchenchina-(~billchenc@103.118.42.229)
2024-08-07 11:56:30 +0200Guest85(~Guest85@78.135.8.93)
2024-08-07 11:59:36 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2024-08-07 12:00:59 +0200someone235(uid419897@id-419897.ilkley.irccloud.com) (Quit: Connection closed for inactivity)
2024-08-07 12:01:41 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Client Quit)
2024-08-07 12:04:41 +0200 <Guest85> from https://web.engr.oregonstate.edu/~erwig/pfp/pfp-jun06.tar.gz
2024-08-07 12:04:41 +0200 <Guest85> ```simEval :: Int -> Strategy -> RDist Outcome
2024-08-07 12:04:42 +0200 <Guest85> simEval k s = Dist.map result `fmap` (k ~. game s) start```
2024-08-07 12:04:42 +0200 <Guest85> how do I read this implementation? `Dist.map` should be the same as `fmap`, afaict, but I can't work out the types, or even precedence, yet. Would it be clearer using `<$>`, which I also can't get to compile?
2024-08-07 12:04:48 +0200 <danse-nr3> @paste
2024-08-07 12:04:49 +0200 <lambdabot> A pastebin: https://paste.debian.net/
2024-08-07 12:08:31 +0200euphores(~SASL_euph@user/euphores) (Ping timeout: 264 seconds)
2024-08-07 12:09:24 +0200 <Guest85> not sure if this is easier to follow for just 2 lines ... but https://paste.debian.net/1325716/
2024-08-07 12:09:46 +0200 <danse-nr3> cheers Guest85
2024-08-07 12:10:05 +0200sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 260 seconds)
2024-08-07 12:10:49 +0200 <Guest85> my pleasure - let me know if I should be pasting more into there, or just let anybody who is interested unzip the file I linked to
2024-08-07 12:12:01 +0200sawilagar(~sawilagar@user/sawilagar)
2024-08-07 12:12:03 +0200 <Guest85> my assumption was that somebody who can read this and understand it probably does not need much more context (from the archive file), but that may be an unsafe assumption
2024-08-07 12:12:47 +0200xff0x(~xff0x@2405:6580:b080:900:bb9f:ea83:5088:5a06)
2024-08-07 12:14:32 +0200 <mauke> fmap (Dist.map result) ((k ~. game s) start)
2024-08-07 12:14:55 +0200euphores(~SASL_euph@user/euphores)
2024-08-07 12:15:18 +0200 <Guest85> also, another question - the instructions say just `ghci Dice.hs` and ... But, presumably, because this work/paper is from 2006 and the standard libraries have evolved since then, nothing works with my version of haskell installed. Since there is no cabal file, what is a practical way to get the right version of haskell (eg are there a docker
2024-08-07 12:15:19 +0200 <Guest85> containers for this sort of thing)?
2024-08-07 12:16:24 +0200 <Guest85> mauke - thanks. I got that much, but would you not expect to swap in `<$>` and for the types to still align?
2024-08-07 12:16:37 +0200CiaoSen(~Jura@2a05:5800:242:cd00:e6b9:7aff:fe80:3d03) (Ping timeout: 252 seconds)
2024-08-07 12:17:08 +0200 <Guest85> the inner `fmap` is OK to swich to `<$>` but the `Dist.map` I could not work out
2024-08-07 12:18:40 +0200ZharMeny(~user@user/ZharMeny)
2024-08-07 12:20:17 +0200JuanDaugherty(~juan@user/JuanDaugherty)
2024-08-07 12:22:41 +0200danse-nr3(~danse-nr3@user/danse-nr3) (Quit: meal)
2024-08-07 12:24:29 +0200billchenchina-(~billchenc@103.118.42.229) (Ping timeout: 244 seconds)
2024-08-07 12:25:39 +0200billchenchina-(~billchenc@2408:844f:1526:ffb0:6358:6774:f45c:5120)
2024-08-07 12:26:25 +0200 <Guest85> anyway, mauke, I find your version much less ambiguous, so thank you, that already helped.
2024-08-07 12:32:15 +0200billchenchina-(~billchenc@2408:844f:1526:ffb0:6358:6774:f45c:5120) (Ping timeout: 260 seconds)
2024-08-07 12:33:36 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 252 seconds)
2024-08-07 12:36:45 +0200 <Leary> Guest85: Assuming `RDist` and `Outcome` are constructors (not type synonyms) the type of `simEval` implies `Dist.map :: _ -> _ -> Outcome`, which cannot unify with `fmap`. Presumably it maps monomorphically over the contents of `Outcome`.
2024-08-07 12:38:05 +0200Guest85(~Guest85@78.135.8.93) (Quit: Ping timeout (120 seconds))
2024-08-07 12:44:51 +0200alexherbo2(~alexherbo@2a02-8440-341b-febc-249e-3732-ad8c-d761.rev.sfr.net)
2024-08-07 12:45:24 +0200Guest85(~Guest85@78.135.8.93)
2024-08-07 12:45:52 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2024-08-07 12:49:51 +0200 <SrPx> https://www.reddit.com/r/haskell/comments/1em8c9z/can_this_haskell_program_be_optimized/?
2024-08-07 12:52:26 +0200gmg(~user@user/gehmehgeh) (Ping timeout: 260 seconds)
2024-08-07 12:52:50 +0200 <Franciman> hi SrPx
2024-08-07 12:52:56 +0200 <SrPx> hi^^
2024-08-07 12:53:01 +0200gmg(~user@user/gehmehgeh)
2024-08-07 13:01:12 +0200cfricke(~cfricke@user/cfricke)
2024-08-07 13:01:37 +0200CiaoSen(~Jura@2a05:5800:242:cd00:e6b9:7aff:fe80:3d03)
2024-08-07 13:05:34 +0200gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2024-08-07 13:05:52 +0200gmg(~user@user/gehmehgeh)
2024-08-07 13:09:47 +0200danse-nr3(~danse-nr3@user/danse-nr3)
2024-08-07 13:18:21 +0200sawilagar(~sawilagar@user/sawilagar) (Remote host closed the connection)
2024-08-07 13:18:47 +0200sawilagar(~sawilagar@user/sawilagar)
2024-08-07 13:25:36 +0200JuanDaugherty(~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
2024-08-07 13:31:03 +0200rncwnd(~quassel@2a01:4f8:221:27c6::1) (Ping timeout: 252 seconds)
2024-08-07 13:40:05 +0200rncwnd(~quassel@2a01:4f8:221:27c6::1)
2024-08-07 13:45:05 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2024-08-07 14:00:17 +0200sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 248 seconds)
2024-08-07 14:00:47 +0200rosco(~rosco@175.136.158.234) (Quit: Lost terminal)
2024-08-07 14:07:09 +0200sawilagar(~sawilagar@user/sawilagar)
2024-08-07 14:13:43 +0200mhatta(~mhatta@www21123ui.sakura.ne.jp) (Quit: ZNC 1.9.1+deb1 - https://znc.in)
2024-08-07 14:15:06 +0200mhatta(~mhatta@www21123ui.sakura.ne.jp)
2024-08-07 14:15:29 +0200cheater(~Username@user/cheater) (Ping timeout: 260 seconds)
2024-08-07 14:19:39 +0200cheater(~Username@user/cheater)
2024-08-07 14:20:03 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2024-08-07 14:23:26 +0200Mateon1(~Thunderbi@user/meow/Mateon1)
2024-08-07 14:26:22 +0200danse-nr3(~danse-nr3@user/danse-nr3) (Read error: Connection reset by peer)
2024-08-07 14:26:26 +0200dans15093(~danse-nr3@user/danse-nr3)
2024-08-07 14:45:43 +0200sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 264 seconds)
2024-08-07 14:46:19 +0200dans15093(~danse-nr3@user/danse-nr3) (Remote host closed the connection)
2024-08-07 14:46:34 +0200danse-nr3(~danse-nr3@user/danse-nr3)
2024-08-07 14:50:15 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2024-08-07 14:50:42 +0200vgtw(~vgtw@user/vgtw)
2024-08-07 14:50:53 +0200vgtw(~vgtw@user/vgtw) (Remote host closed the connection)
2024-08-07 14:51:21 +0200vgtw(~vgtw@user/vgtw)
2024-08-07 15:01:36 +0200ddellacosta(~ddellacos@ool-44c73d29.dyn.optonline.net) (Ping timeout: 265 seconds)
2024-08-07 15:17:33 +0200sawilagar(~sawilagar@user/sawilagar)
2024-08-07 15:17:56 +0200falafel(~falafel@2a0c:5a87:3104:4c01::bfe0)
2024-08-07 15:20:48 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
2024-08-07 15:21:47 +0200euleritian(~euleritia@dynamic-176-006-133-156.176.6.pool.telefonica.de)
2024-08-07 15:24:58 +0200ddellacosta(~ddellacos@ool-44c73d29.dyn.optonline.net)
2024-08-07 15:26:26 +0200 <Mateon1> Hi, I have a question about the type system and Void. How exactly is the type system sound given you can absolutely pass around values typed Void given Haskell's laziness? You can't exactly construct them, but you can absolutely create thunks of type Void.
2024-08-07 15:26:26 +0200 <Mateon1> Consider: omega = omega; :t omega -- omega :: t -- which you can specialize to Void. You can pass this value around, posing as arbitrary data, even pass it to "absurd", it's just that you can't evaluate the values materialized from it without hanging
2024-08-07 15:26:37 +0200 <Mateon1> Are there any kind of articles, blog posts, or other resources on that topic?
2024-08-07 15:28:44 +0200 <SrPx> is there any commonly used / known lib / algorithm / application / whatever that allows me to write a test of input/output pairs, and will return an Agda/Haskell/whatever function that passes that test? 10:16 AM for example, I write: `solve f in { f(00100011[]) = 1011[]; f(0100010100[]) = f(10111001[]) = 0100[] }` - and it outputs the recursive XOR function: `{ xor (0:0:xs) = 0:xor xs ; xor (0:1:xs) = 1:xor xs ; xor (1:0:xs) = 1:xor
2024-08-07 15:28:44 +0200 <SrPx> xs ; xor (1:1:xs) = 0:xor xs }`
2024-08-07 15:29:28 +0200Guest85(~Guest85@78.135.8.93) (Quit: Client closed)
2024-08-07 15:29:52 +0200 <danse-nr3> whew a cluster of queries are we famous already?
2024-08-07 15:31:20 +0200 <Mateon1> SrPx: This is generally called program synthesis, and it's fairly limited in practice. I know of some research projects, not in Haskell, usually some kind of lisp, where this works by filling in holes in programs with certain types of expressions. I don't think what I've seen is generic enough to discover new recursive functions like that, though. You would have to write a proper fold yourself
2024-08-07 15:32:35 +0200 <SrPx> I see, I was wondering if there is some known / go-to option that is generally recognized as the most viable, even though the problem itself is hard
2024-08-07 15:33:38 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-08-07 15:34:03 +0200 <Mateon1> Also pretty sure the example you gave is for xnor, rather than xor
2024-08-07 15:34:38 +0200 <SrPx> oops, fair enough
2024-08-07 15:36:48 +0200 <Leary> SrPx: Some low hanging fruit: -O2; -A256m; `collapse (Mk(O|I) t) = Mk(O|I) <$> collapse t`.
2024-08-07 15:37:38 +0200 <Leary> Also, I don't think those Monad and Applicative instances are compatible.
2024-08-07 15:38:07 +0200 <SrPx> uh you're probably right, I didn't review it / don't use applicative / was forced to write one by GHC haha
2024-08-07 15:38:25 +0200 <SrPx> Leary: did you test that? how much faster it got? you mean to write separate clauses right?
2024-08-07 15:39:06 +0200 <danse-nr3> i'd say soundness comes after evaluation Mateon1. In fact, the system is not consistent because of bottom
2024-08-07 15:39:37 +0200 <danse-nr3> *not sound
2024-08-07 15:41:14 +0200 <Leary> SrPx: The flags made it about twice as fast. Replacing bind/return with fmap in the MkO/MkI cases was a small (maybe 5%) improvement.
2024-08-07 15:44:13 +0200Putonlalla1Putonlalla
2024-08-07 15:46:44 +0200 <Mateon1> SrPx: Does this by any chance come from the Victor Taelin tweet? Just came across some of them, using optimal evaluation seems like a promising improvement in program synthesis, one that would absolutely be publishable, but seems that Taelin wants to commercialize this for some reason? I really doubt this scales beyond toy functions
2024-08-07 15:48:01 +0200spew(~spew@201.141.102.132)
2024-08-07 15:51:18 +0200 <SrPx> I'm Taelin lol
2024-08-07 15:51:31 +0200 <danse-nr3> XD
2024-08-07 15:51:56 +0200 <Mateon1> Oh lol
2024-08-07 15:52:07 +0200 <SrPx> we don't want to commercialize this algorithm directly but yes I do believe we can use it as a component to train an AI that is guaranteed to generate correct code, and that we could commercialize one day (like ChatGPT etc.)
2024-08-07 15:52:40 +0200 <Mateon1> Ah, some of the earlier tweets and the hiding of code was throwing me off
2024-08-07 15:52:40 +0200 <SrPx> even if it only works for small functions, that is still extremely handy in a training loop where we attempt to find small functions that model a given dataset, and add to a loop
2024-08-07 15:52:52 +0200 <SrPx> Mateon1: I need to :( it is a company
2024-08-07 15:52:54 +0200 <Mateon1> I think it's more promising in compression, actually
2024-08-07 15:53:11 +0200 <SrPx> well, some say intelligence is just compression
2024-08-07 15:53:13 +0200 <Mateon1> I would love a PAQ variant with this as a primitive
2024-08-07 15:53:31 +0200 <SrPx> noted!!!
2024-08-07 15:54:55 +0200 <kuribas> Why do you need optimal evaluation for program generation? Couldn't you generate programs with dependent types, and check that?
2024-08-07 15:55:16 +0200 <kuribas> Say, check that all functions are total.
2024-08-07 15:56:15 +0200sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 276 seconds)
2024-08-07 15:56:23 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-08-07 16:02:36 +0200sord937(~sord937@gateway/tor-sasl/sord937) (Ping timeout: 260 seconds)
2024-08-07 16:03:05 +0200sord937(~sord937@gateway/tor-sasl/sord937)
2024-08-07 16:03:46 +0200xstill_(xstill@fimu/xstill) (Read error: Connection reset by peer)
2024-08-07 16:04:43 +0200xstill_(xstill@fimu/xstill)
2024-08-07 16:05:59 +0200skyesoss(~Thunderbi@c-73-208-45-119.hsd1.il.comcast.net)
2024-08-07 16:09:15 +0200sadome(~sadome@user/sadome)
2024-08-07 16:09:16 +0200sadome(~sadome@user/sadome) (Excess Flood)
2024-08-07 16:10:12 +0200skyesoss(~Thunderbi@c-73-208-45-119.hsd1.il.comcast.net) (Ping timeout: 252 seconds)
2024-08-07 16:12:02 +0200sadome(~sadome@user/sadome)
2024-08-07 16:12:03 +0200sadome(~sadome@user/sadome) (Excess Flood)
2024-08-07 16:12:09 +0200 <Inst> Reading this, I'm curious if it's possible to make inquiries of a value's type's typeclass membership
2024-08-07 16:12:11 +0200 <Inst> https://discourse.haskell.org/t/the-quest-to-completely-eradicate-string-awkwardness/10111/17
2024-08-07 16:13:15 +0200 <kuribas> At runtime?
2024-08-07 16:13:56 +0200 <Inst> let's say Text gets moved into base
2024-08-07 16:14:02 +0200 <Inst> and a Pretty typeclass gets added
2024-08-07 16:14:12 +0200 <Inst> how should ghci react, then?
2024-08-07 16:14:34 +0200 <kuribas> well, reload ghci?
2024-08-07 16:14:45 +0200 <Inst> I mean ghci prints the values you compute
2024-08-07 16:14:58 +0200sadome(~sadome@182.69.176.14)
2024-08-07 16:14:58 +0200sadome(~sadome@182.69.176.14) (Changing host)
2024-08-07 16:14:58 +0200sadome(~sadome@user/sadome)
2024-08-07 16:14:59 +0200sadome(~sadome@user/sadome) (Excess Flood)
2024-08-07 16:15:08 +0200 <Inst> so now you have a legacy String type as well as a modern Text type
2024-08-07 16:15:22 +0200 <kuribas> react to what exactly?
2024-08-07 16:15:27 +0200 <kuribas> A literal string?
2024-08-07 16:15:49 +0200 <Inst> say, you have a custom tree type, and you derive Pretty
2024-08-07 16:16:03 +0200 <Inst> for whatever reason you don't derive / instance it into Show
2024-08-07 16:16:41 +0200 <Inst> how should ghci display your tree, while also printing types that have a Show instance, but not a Pretty instance?
2024-08-07 16:16:44 +0200spew(~spew@201.141.102.132) (Read error: Connection reset by peer)
2024-08-07 16:17:58 +0200 <EvanR> this whole line of reasoning would be skipped if ghci had built-in debug view of values without having to derive Show or Pretty or whatever
2024-08-07 16:17:58 +0200sadomei(~sadomei@182.69.176.14)
2024-08-07 16:17:59 +0200sadomei(~sadomei@182.69.176.14) (Excess Flood)
2024-08-07 16:18:14 +0200 <EvanR> like some other languages
2024-08-07 16:18:34 +0200 <EvanR> but it would violate avoid success at all costs
2024-08-07 16:18:41 +0200spew(~spew@201.141.102.132)
2024-08-07 16:18:45 +0200 <Inst> :show bindings
2024-08-07 16:18:45 +0200 <Inst> ?
2024-08-07 16:19:25 +0200 <kuribas> a good debugger for haskell would be great.
2024-08-07 16:19:32 +0200 <kuribas> One that is not modelled after imperative languages.
2024-08-07 16:19:44 +0200 <kuribas> For example, let me choose which part of the tree to evaluate.
2024-08-07 16:20:02 +0200 <danse-nr3> "having to derive"... use generic, here is your builtin
2024-08-07 16:20:15 +0200 <EvanR> no
2024-08-07 16:20:29 +0200 <Leary> Inst: https://downloads.haskell.org/ghc/latest/docs/users_guide/ghci.html#using-a-custom-interactive-pri…
2024-08-07 16:20:35 +0200 <EvanR> deriving Show or deriving Generic is the same barrier
2024-08-07 16:20:50 +0200 <kuribas> EvanR: Show is great, for example I don't want to see the whole structure of a HashMap.
2024-08-07 16:21:10 +0200 <Leary> It should just keep defaulting to Show, and people can change from Show to Pretty if they want to.
2024-08-07 16:21:21 +0200 <EvanR> sure a way to customize the built in behavior would not harm anything
2024-08-07 16:22:01 +0200spew(~spew@201.141.102.132) (Client Quit)
2024-08-07 16:23:00 +0200 <EvanR> the situation with by default it shows an error message, and you go type or set up IDE autogeneration for deriving Show to see anything, is a "good enough" not a great
2024-08-07 16:23:29 +0200 <EvanR> why is it like that, because it's good enough
2024-08-07 16:23:41 +0200 <Leary> (there's no need for it to try to be too clever; uniform behaviour is better, and you can always use the class methods directly)
2024-08-07 16:23:48 +0200 <kuribas> EvanR: Maybe always deriving Show?
2024-08-07 16:24:05 +0200 <kuribas> If no instance exists.
2024-08-07 16:24:11 +0200 <danse-nr3> how you customize then
2024-08-07 16:24:15 +0200 <EvanR> I don't know if that's a good idea
2024-08-07 16:24:28 +0200 <kuribas> danse-nr3: by explicit deriving.
2024-08-07 16:24:35 +0200 <EvanR> because of type class global coherence stuff
2024-08-07 16:24:46 +0200 <danse-nr3> how would you like your "builtin behaviour" to look like then EvanR?
2024-08-07 16:24:55 +0200 <danse-nr3> (with custom)
2024-08-07 16:25:05 +0200 <mauke> <Inst> how should ghci display your tree, while also printing types that have a Show instance, but not a Pretty instance? <- the same way it deals with IO values now?
2024-08-07 16:25:24 +0200 <EvanR> if there's no Show instance, there's no Show instance so show doesn't work. But ghci still shows something, perhaps whatever deriving Show would have shown
2024-08-07 16:25:27 +0200 <Inst> how does it deal with IO values now?
2024-08-07 16:25:37 +0200 <EvanR> in response to danse-nr3
2024-08-07 16:26:16 +0200sawilagar(~sawilagar@user/sawilagar)
2024-08-07 16:26:42 +0200 <mauke> brute force
2024-08-07 16:27:19 +0200 <Inst> actually, right now, if I data Foo = Foo, then type pure Foo :: IO Foo, I get no return
2024-08-07 16:27:49 +0200 <EvanR> yeah it treats IO actions magically
2024-08-07 16:29:58 +0200CiaoSen(~Jura@2a05:5800:242:cd00:e6b9:7aff:fe80:3d03) (Ping timeout: 245 seconds)
2024-08-07 16:30:21 +0200 <mauke> try fmap length getLine
2024-08-07 16:30:26 +0200 <Inst> iirc Haskell has no type unions, you can fake it with a sum type
2024-08-07 16:30:30 +0200 <Inst> there's also no typeclass unions, right?
2024-08-07 16:30:44 +0200 <Inst> which is what I'm really asking
2024-08-07 16:30:47 +0200 <kuribas> EvanR: that would be nice.
2024-08-07 16:31:07 +0200 <kuribas> Better than not show anything.
2024-08-07 16:32:36 +0200 <zero> > 1/0
2024-08-07 16:32:37 +0200 <lambdabot> Infinity
2024-08-07 16:34:18 +0200 <Leary> There are apparently multiple levels of magic here; ghci prints the result of a `Show a => IO a`, unless `a` is `()` ... but for some reason that also generalises to anything of the form `data T = C`.
2024-08-07 16:34:30 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 252 seconds)
2024-08-07 16:34:54 +0200 <danse-nr3> what's with 1/0 zero?
2024-08-07 16:35:12 +0200 <zero> danse-nr3: making a point about Show
2024-08-07 16:35:17 +0200 <zero> :t 1/0
2024-08-07 16:35:18 +0200 <lambdabot> Fractional a => a
2024-08-07 16:35:34 +0200 <EvanR> :t 1/(0::Double)
2024-08-07 16:35:35 +0200 <lambdabot> Double
2024-08-07 16:35:44 +0200 <Leary> Oh, no, I'm wrong -- it just applies to anything that doesn't have Show, which I forgot to derive.
2024-08-07 16:35:45 +0200 <EvanR> Double has a Show instance already
2024-08-07 16:36:15 +0200 <danse-nr3> oh that's clever zero
2024-08-07 16:37:03 +0200 <EvanR> printing out the result happens after defaulting
2024-08-07 16:37:17 +0200 <Inst> https://stackoverflow.com/questions/7198907/haskell-constraint-is-no-smaller-than-the-instance-head
2024-08-07 16:37:21 +0200 <Inst> yeah that'd be an interesting question
2024-08-07 16:37:30 +0200 <Inst> you could make some crappy overlapping instances with newtypes to hack around the problem
2024-08-07 16:37:41 +0200 <EvanR> :|
2024-08-07 16:37:52 +0200 <EvanR> which problem are you on now?
2024-08-07 16:38:22 +0200 <Inst> the idea of using type unions to get it to attempt both Prelude.print and what essentially amounts to Pretty.print
2024-08-07 16:39:00 +0200 <EvanR> or just take interacting pretty printing out of the type class system
2024-08-07 16:39:04 +0200 <EvanR> interactive
2024-08-07 16:40:35 +0200 <Inst> yeah but you'd also want to use print (implicitly in Trace.Debug) for other debugging purposes beyond ghci
2024-08-07 16:40:40 +0200 <SrPx> kuribas: optimal evaluation isn't needed for program generation. I use it to optimize *searching* through a bazillion generated programs.
2024-08-07 16:41:02 +0200 <EvanR> type classes get treated as a hammer and it works surprisingly well, but once the nails start looking like screws, don't try to turn the type class system into a part time screw driver
2024-08-07 16:41:12 +0200 <kuribas> SrPr: right, that sounds neat!
2024-08-07 16:41:27 +0200 <Inst> i mean it should work, right? I haven't tested it yet, and I'm about to go to sleep
2024-08-07 16:41:50 +0200 <kuribas> SrPr: do you mean to search for the variant that typechecks a dependent type?
2024-08-07 16:41:54 +0200 <SrPx> specifically, suppose you need to test the output of 1000000 slightly different functions, when applied to some input. you could try each function separately, but that'd take a lot of time. or you could use optimal evaluation to apply them all "at the same time", and all "identical intermediate computations" get "shared" / computed only once. so, this greatly speeds the search
2024-08-07 16:42:19 +0200 <SrPx> it is still exponential (because there are exponentially many functions), but each function call becomes several times less expensive, which makes the whole thing slightly more viable
2024-08-07 16:42:39 +0200 <EvanR> Inst, pretty printing and Debug.Trace, now you're in harrowing territory!
2024-08-07 16:42:49 +0200 <kuribas> SrPr: like egraphs?
2024-08-07 16:42:49 +0200 <SrPx> slightly as in, something that would take 100 years could be done in hours
2024-08-07 16:43:26 +0200 <SrPx> kuribas: egraphs are amazing! not exactly related as they're more about caching equalities
2024-08-07 16:43:36 +0200lol_(~lol@2603:3016:1e01:b980:dd5c:a977:63e6:618d)
2024-08-07 16:43:43 +0200 <kuribas> SrPx: right. Can you do proof search with optimal evaluation?
2024-08-07 16:43:44 +0200 <SrPx> while this is about sharing identical computations in different function calls
2024-08-07 16:43:56 +0200swamp_(~zmt00@user/zmt00)
2024-08-07 16:44:07 +0200 <SrPx> btw I do wonder if optimal evaluation could be applied to optimize egraphs
2024-08-07 16:44:17 +0200 <SrPx> kuribas: yes the plan is to use this for proof search!
2024-08-07 16:44:18 +0200tcard_(~tcard@2400:4051:5801:7500:1e90:74c3:2754:ce8a)
2024-08-07 16:44:38 +0200 <SrPx> most proof search algorithms behind assistants like agda etc. just use a silly exhaustive enumeration, with a timeout
2024-08-07 16:44:43 +0200 <SrPx> and they're already quite useful as is
2024-08-07 16:44:48 +0200hgolden__(~hgolden@2603:8000:9d00:3ed1:1ee4:1b7c:94a7:8fa7)
2024-08-07 16:44:56 +0200 <SrPx> so, if that can be made 100x-10000x faster, yes that's nice right
2024-08-07 16:45:21 +0200tcard(~tcard@2400:4051:5801:7500:1e90:74c3:2754:ce8a) (Read error: Connection reset by peer)
2024-08-07 16:45:30 +0200 <opqdonut> isn't discovering the sharing quite a bit of work as well?
2024-08-07 16:45:46 +0200 <opqdonut> unless the variants have been generated so that they already share structure...
2024-08-07 16:46:27 +0200euleritian(~euleritia@dynamic-176-006-133-156.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2024-08-07 16:46:45 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-08-07 16:47:01 +0200Guest96(~Guest96@2a01cb058fdd8800c599eccdcbbe5038.ipv6.abo.wanadoo.fr)
2024-08-07 16:47:36 +0200zmt01(~zmt00@user/zmt00) (Ping timeout: 276 seconds)
2024-08-07 16:47:36 +0200hgolden_(~hgolden@2603:8000:9d00:3ed1:1ee4:1b7c:94a7:8fa7) (Ping timeout: 276 seconds)
2024-08-07 16:47:36 +0200jcarpenter2(~lol@2603:3016:1e01:b980:1aa:6452:eda4:91c6) (Ping timeout: 276 seconds)
2024-08-07 16:47:41 +0200 <kuribas> SrPr: that would be amazing :)
2024-08-07 16:48:12 +0200 <kuribas> SrPr: proof search is just program generation. Idris does that and has some algorithm to exclude trivial programs.
2024-08-07 16:48:50 +0200Guest96(~Guest96@2a01cb058fdd8800c599eccdcbbe5038.ipv6.abo.wanadoo.fr) (Client Quit)
2024-08-07 16:51:45 +0200danse-nr3(~danse-nr3@user/danse-nr3) (Quit: nap)
2024-08-07 16:52:10 +0200cfricke(~cfricke@user/cfricke)
2024-08-07 16:53:06 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
2024-08-07 16:54:01 +0200euleritian(~euleritia@dynamic-176-006-133-156.176.6.pool.telefonica.de)
2024-08-07 16:57:30 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 252 seconds)
2024-08-07 16:59:17 +0200 <SrPx> yes
2024-08-07 17:00:23 +0200euleritian(~euleritia@dynamic-176-006-133-156.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2024-08-07 17:00:33 +0200 <EvanR> generate me a program of type MassivelyProfitableMMO
2024-08-07 17:00:41 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-08-07 17:01:41 +0200tabemann_(~tabemann@2600:1700:7990:24e0:c35:f6c5:f5d8:bf3) (Ping timeout: 248 seconds)
2024-08-07 17:01:59 +0200 <Inst> type MassivelyProfitableMMO = IO ExitCode; main = exitSuccess;
2024-08-07 17:03:32 +0200 <EvanR> that definition sucks
2024-08-07 17:05:12 +0200hc(~hc@sing.esp.sg) (Ping timeout: 252 seconds)
2024-08-07 17:07:09 +0200hc(~hc@2407:d200:d002:43:229:85:195:3)
2024-08-07 17:08:27 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.2)
2024-08-07 17:13:28 +0200st_aldini(~Thunderbi@2605:a601:a07c:a000:3236:4a12:708b:5d23)
2024-08-07 17:13:28 +0200 <Mateon1> You have to admit that this game would contain zero bugs, though
2024-08-07 17:13:36 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds)
2024-08-07 17:14:07 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-08-07 17:20:13 +0200 <int-e> words don't have that much power
2024-08-07 17:23:16 +0200 <EvanR> because this is code and not magic? that there's yer problem
2024-08-07 17:33:45 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds)
2024-08-07 17:34:02 +0200euleritian(~euleritia@dynamic-176-006-133-156.176.6.pool.telefonica.de)
2024-08-07 17:36:16 +0200euleritian(~euleritia@dynamic-176-006-133-156.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2024-08-07 17:36:38 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-08-07 17:37:03 +0200danse-nr3(~danse-nr3@user/danse-nr3)
2024-08-07 17:42:46 +0200 <Inst> any haskell project can reach mvp status simply in one line: main = undefined
2024-08-07 17:43:28 +0200 <haskellbridge> <mauke> But is it able to vie?
2024-08-07 17:49:48 +0200 <Mateon1> Actually unfortunately not quite true that a trivial main would be bugfree. The haskell runtime itself has issues in some environments. I recall having some issues with GHC using some weird syscalls that didn't work on WSL, back when I still used windows
2024-08-07 17:50:57 +0200 <Mateon1> As in, programs compiled with GHC didn't work at all, not that GHC wasn't working in that environment
2024-08-07 17:55:23 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net)
2024-08-07 17:57:38 +0200 <c_wraith> to be fair, that was WSL not actually providing the semantics linux kernels do
2024-08-07 17:58:15 +0200 <c_wraith> (It couldn't allocate half a terabyte on program startup without actually enumerating it. Linux is happy to do that.)
2024-08-07 18:00:26 +0200Inst(~Inst@user/Inst) (Ping timeout: 255 seconds)
2024-08-07 18:04:09 +0200sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 260 seconds)
2024-08-07 18:04:47 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
2024-08-07 18:06:01 +0200hgolden__(~hgolden@2603:8000:9d00:3ed1:1ee4:1b7c:94a7:8fa7) (Remote host closed the connection)
2024-08-07 18:07:46 +0200hgolden(~hgolden@2603:8000:9d00:3ed1:1ee4:1b7c:94a7:8fa7)
2024-08-07 18:14:06 +0200rvalue(~rvalue@user/rvalue) (Read error: Connection reset by peer)
2024-08-07 18:14:34 +0200alexherbo2(~alexherbo@2a02-8440-341b-febc-249e-3732-ad8c-d761.rev.sfr.net) (Remote host closed the connection)
2024-08-07 18:14:42 +0200rvalue(~rvalue@user/rvalue)
2024-08-07 18:15:14 +0200falafel(~falafel@2a0c:5a87:3104:4c01::bfe0) (Ping timeout: 260 seconds)
2024-08-07 18:15:56 +0200alexherbo2(~alexherbo@2a02-8440-341b-febc-9d5d-6de9-06be-1722.rev.sfr.net)
2024-08-07 18:19:16 +0200alexherbo2(~alexherbo@2a02-8440-341b-febc-9d5d-6de9-06be-1722.rev.sfr.net) (Remote host closed the connection)
2024-08-07 18:20:43 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 252 seconds)
2024-08-07 18:22:20 +0200skyesoss(~Thunderbi@128.135.204.35)
2024-08-07 18:22:34 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net)
2024-08-07 18:26:36 +0200danse-nr3(~danse-nr3@user/danse-nr3) (Read error: Connection reset by peer)
2024-08-07 18:26:42 +0200dans49871(~danse-nr3@user/danse-nr3)
2024-08-07 18:27:48 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 252 seconds)
2024-08-07 18:29:26 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net)
2024-08-07 18:30:35 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-08-07 18:34:24 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 252 seconds)
2024-08-07 18:36:17 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net)
2024-08-07 18:43:13 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
2024-08-07 18:47:54 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-08-07 18:48:09 +0200 <dans49871> is there a term to distinguish a type like Foo Char Int Bool from Foo { c :: Char, i :: Int, b :: Bool}?
2024-08-07 18:48:29 +0200sawilagar(~sawilagar@user/sawilagar)
2024-08-07 18:49:08 +0200 <ncf> one has named fields/projections, the other doesn't
2024-08-07 18:49:28 +0200 <dans49871> right, so ... fieldless?
2024-08-07 18:49:43 +0200smalltalkman(uid545680@id-545680.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2024-08-07 18:49:44 +0200 <dans49871> versus "fieldful"? ^^;
2024-08-07 18:50:35 +0200 <EvanR> record type
2024-08-07 18:50:43 +0200 <EvanR> well it's not a record type, but a record
2024-08-07 18:50:46 +0200 <dans49871> versus?
2024-08-07 18:51:05 +0200 <dans49871> nah they are both records aren't they
2024-08-07 18:51:09 +0200 <EvanR> basic bitch ADT
2024-08-07 18:51:21 +0200 <EvanR> records have field
2024-08-07 18:52:06 +0200 <dans49871> "naked product"?
2024-08-07 18:52:53 +0200 <dans49871> saw this "naked" being used for syntax elsewhere but i don't really dig it... i'll go with "fieldless"
2024-08-07 18:53:10 +0200 <EvanR> agreed we should be able to write the type with empty string field names
2024-08-07 18:53:18 +0200 <ncf> the report doesn't define records; only record syntax
2024-08-07 18:53:20 +0200 <EvanR> Foo { :: Char, :: Int, :: Bool }
2024-08-07 18:53:36 +0200 <ncf> and calls the projections "field labels"
2024-08-07 18:53:56 +0200 <EvanR> it would be nice if fields and projection functions were not conflated
2024-08-07 18:54:03 +0200 <dans49871> huh we are drifting... well i'll call it "fieldless"
2024-08-07 18:54:40 +0200 <dans49871> in my case, a "fieldless sum", as in: data W = WI Int Int | WB Bool
2024-08-07 18:55:03 +0200 <dans49871> it's a poor term but i doubt we can come with anything better
2024-08-07 18:57:36 +0200dans49871(~danse-nr3@user/danse-nr3) (Quit: ooops)
2024-08-07 19:00:37 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 248 seconds)
2024-08-07 19:02:26 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net)
2024-08-07 19:05:56 +0200mzg(mzg@abusers.hu) (Ping timeout: 244 seconds)
2024-08-07 19:06:52 +0200ft(~ft@p4fc2aa15.dip0.t-ipconnect.de)
2024-08-07 19:07:34 +0200mzg(mzg@abusers.hu)
2024-08-07 19:08:25 +0200 <EvanR> it's an ADT
2024-08-07 19:08:25 +0200haskellbridge(~hackager@syn-024-093-192-219.res.spectrum.com) (Read error: Connection reset by peer)
2024-08-07 19:08:56 +0200 <EvanR> blah
2024-08-07 19:10:51 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net)
2024-08-07 19:14:27 +0200haskellbridge(~hackager@syn-024-093-192-219.res.spectrum.com)
2024-08-07 19:14:27 +0200ChanServ+v haskellbridge
2024-08-07 19:19:23 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com)
2024-08-07 19:20:56 +0200econo_(uid147250@id-147250.tinside.irccloud.com)
2024-08-07 19:31:46 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 244 seconds)
2024-08-07 19:33:20 +0200Square(~Square@user/square)
2024-08-07 19:35:14 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 272 seconds)
2024-08-07 19:36:44 +0200machinedgod(~machinedg@d50-99-47-73.abhsia.telus.net)
2024-08-07 19:46:04 +0200machinedgod(~machinedg@d50-99-47-73.abhsia.telus.net) (Ping timeout: 260 seconds)
2024-08-07 19:47:40 +0200machinedgod(~machinedg@d50-99-47-73.abhsia.telus.net)
2024-08-07 19:49:06 +0200krei-se(~krei-se@p5085d903.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2024-08-07 19:49:47 +0200amjoseph(~amjoseph@static-198-44-128-146.cust.tzulo.com) (Ping timeout: 255 seconds)
2024-08-07 19:50:34 +0200krei-se(~krei-se@p57af2b6c.dip0.t-ipconnect.de)
2024-08-07 19:51:46 +0200TMA(tma@twin.jikos.cz) (Ping timeout: 248 seconds)
2024-08-07 20:03:33 +0200danse-nr3(~danse-nr3@user/danse-nr3)
2024-08-07 20:09:11 +0200shoggouth(uid607148@user/shoggouth)
2024-08-07 20:10:18 +0200amjoseph(~amjoseph@static-198-44-128-146.cust.tzulo.com)
2024-08-07 20:10:56 +0200TMA(tma@twin.jikos.cz)
2024-08-07 20:15:41 +0200motherfsck(~motherfsc@user/motherfsck)
2024-08-07 20:18:22 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2024-08-07 20:20:44 +0200danse-nr3(~danse-nr3@user/danse-nr3) (Quit: so long)
2024-08-07 20:40:38 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-08-07 20:56:12 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-08-07 20:56:45 +0200lystra(~lystra@208.59.105.41) (Remote host closed the connection)
2024-08-07 20:57:02 +0200Batzy(~quassel@user/batzy)
2024-08-07 21:02:11 +0200waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
2024-08-07 21:04:21 +0200dawkrish(~dawkrish@2401:4900:883d:f037:209b:6d5:7ef5:8a8f)
2024-08-07 21:05:30 +0200 <dawkrish> hi, I am new here
2024-08-07 21:06:43 +0200 <EvanR> hi
2024-08-07 21:09:07 +0200sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 264 seconds)
2024-08-07 21:09:50 +0200sawilagar(~sawilagar@user/sawilagar)
2024-08-07 21:15:53 +0200terrorjack(~terrorjac@static.163.82.63.178.clients.your-server.de) (Quit: The Lounge - https://thelounge.chat)
2024-08-07 21:16:59 +0200terrorjack(~terrorjac@2a01:4f8:121:32e8::)
2024-08-07 21:21:25 +0200slac21088(~slack1256@2803:c600:5111:8029:469f:21dd:e308:1389)
2024-08-07 21:22:28 +0200slack1256(~slack1256@2803:c600:5111:80cb:a1ed:c7bd:aa66:b480) (Ping timeout: 265 seconds)
2024-08-07 21:25:25 +0200dawkrish(~dawkrish@2401:4900:883d:f037:209b:6d5:7ef5:8a8f) (Ping timeout: 256 seconds)
2024-08-07 21:27:12 +0200 <monochrom> I believe that we need no term for this.
2024-08-07 21:28:22 +0200dsrt^(~dsrt@c-98-242-74-66.hsd1.ga.comcast.net) (Remote host closed the connection)
2024-08-07 21:34:30 +0200 <jle`> maybe positional or recordless
2024-08-07 21:34:34 +0200 <jle`> * non-record
2024-08-07 21:39:05 +0200lol_(~lol@2603:3016:1e01:b980:dd5c:a977:63e6:618d) (Ping timeout: 252 seconds)
2024-08-07 21:39:08 +0200 <EvanR> what about ADTs which aren't GADTs, or ADTs which aren't existential
2024-08-07 21:39:19 +0200 <EvanR> negative jargon
2024-08-07 21:40:26 +0200 <EvanR> ADTs which are against everything, perhaps contrarian ADTs
2024-08-07 21:40:55 +0200danse-nr3(~danse-nr3@user/danse-nr3)
2024-08-07 21:41:53 +0200 <jle`> if you told me that the constructor had positional arguments i think it'd understand
2024-08-07 21:42:10 +0200 <jle`> so it's more like a positive ascription in that case
2024-08-07 21:42:17 +0200 <jle`> but then i guess you can also use records positionally
2024-08-07 21:43:52 +0200 <jle`> it's a slow day and this problem has my full attention
2024-08-07 21:44:23 +0200 <danse-nr3> hmm... "positional"! Makes a lot of sense. Thanks jle`
2024-08-07 21:45:42 +0200ThePenguin(~ThePengui@cust-95-80-24-166.csbnet.se) (Remote host closed the connection)
2024-08-07 21:45:48 +0200 <jle`> i guess it's like a parallel between positional arguments vs. named arguemnts in function syntax for other languages. but definitely not commonly used to refer to ADTs heh
2024-08-07 21:46:17 +0200ThePenguin(~ThePengui@cust-95-80-24-166.csbnet.se)
2024-08-07 21:50:24 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2024-08-07 21:51:14 +0200jcarpenter2(~lol@2603:3016:1e01:b980:dd5c:a977:63e6:618d)
2024-08-07 21:53:59 +0200 <EvanR> record syntax types are not positional?
2024-08-07 21:54:12 +0200 <danse-nr3> well they /also/ are
2024-08-07 21:54:18 +0200 <EvanR> positional seems to be more how you construct and pattern match than about the type itself
2024-08-07 21:54:34 +0200 <monochrom> I guess it's a slow day and a worthless question has everything's full attention.
2024-08-07 21:54:34 +0200 <EvanR> assuming you don't know how it's implemented
2024-08-07 21:54:57 +0200 <danse-nr3> yeah i'm satisfied with what we've got no reason to delve more
2024-08-07 21:55:00 +0200 <monochrom> Is an ADT a GADT?
2024-08-07 21:57:31 +0200 <Franciman> hi monochrom and EvanR did you read the paper about the parallel complexity of simple logic programs?
2024-08-07 21:57:39 +0200 <monochrom> No.
2024-08-07 21:57:57 +0200 <Franciman> rip
2024-08-07 21:57:59 +0200 <Franciman> ok thank you
2024-08-07 21:58:06 +0200 <EvanR> no but that sounds interesting
2024-08-07 21:59:22 +0200 <Franciman> not according to monochrom
2024-08-07 21:59:33 +0200 <danse-nr3> they just haven't read it
2024-08-07 22:01:50 +0200machinedgod(~machinedg@d50-99-47-73.abhsia.telus.net) (Ping timeout: 252 seconds)
2024-08-07 22:02:20 +0200 <Franciman> no danse-nr3 this was a test
2024-08-07 22:02:24 +0200 <Franciman> and everything went as expecte
2024-08-07 22:02:26 +0200 <Franciman> expected
2024-08-07 22:02:41 +0200 <danse-nr3> huh as you wish
2024-08-07 22:03:08 +0200 <zfnmxt> Is there a .nix file anywhere to install lambdabot?
2024-08-07 22:04:09 +0200 <Franciman> there are people in this community that no matter how hard you try, have decided to have an opinion on you
2024-08-07 22:04:12 +0200 <Franciman> and will never change it
2024-08-07 22:04:17 +0200 <Franciman> so let it be this weay
2024-08-07 22:04:18 +0200 <Franciman> good riddance
2024-08-07 22:04:28 +0200 <danse-nr3> ?
2024-08-07 22:05:05 +0200 <Franciman> i give up
2024-08-07 22:05:28 +0200 <EvanR> > cake
2024-08-07 22:05:29 +0200 <lambdabot> error:
2024-08-07 22:05:29 +0200 <lambdabot> • Variable not in scope: cake
2024-08-07 22:05:30 +0200 <lambdabot> • Perhaps you meant one of these:
2024-08-07 22:05:36 +0200 <EvanR> test failed
2024-08-07 22:05:37 +0200 <danse-nr3> what's up Franciman, i'm completely lost
2024-08-07 22:07:58 +0200 <danse-nr3> dunno zfnmxt ... if there was it would be in its repo i guess?
2024-08-07 22:09:20 +0200 <zfnmxt> danse-nr3: Yeah, didn't see anything. It has some runtime dependencies that fail if you just install it the usual way (related to hint or mueval or something); was hoping someone set it up on their nix server somewhere and could just give me a working config.
2024-08-07 22:16:04 +0200sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 244 seconds)
2024-08-07 22:16:25 +0200sawilagar(~sawilagar@user/sawilagar)
2024-08-07 22:26:35 +0200dans53522(~danse-nr3@user/danse-nr3)
2024-08-07 22:28:42 +0200danse-nr3(~danse-nr3@user/danse-nr3) (Ping timeout: 252 seconds)
2024-08-07 22:29:09 +0200skyesoss(~Thunderbi@128.135.204.35) (Ping timeout: 248 seconds)
2024-08-07 22:40:34 +0200sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2024-08-07 22:44:01 +0200ubert(~Thunderbi@178.115.47.16.wireless.dyn.drei.com) (Ping timeout: 248 seconds)
2024-08-07 22:48:20 +0200dans53522(~danse-nr3@user/danse-nr3) (Quit: goood night)
2024-08-07 22:59:56 +0200michalz(~michalz@185.246.207.217) (Remote host closed the connection)
2024-08-07 23:00:33 +0200cfricke(~cfricke@user/cfricke)
2024-08-07 23:05:51 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-08-07 23:08:39 +0200hueso(~root@user/hueso) (Ping timeout: 260 seconds)
2024-08-07 23:11:21 +0200hueso(~root@user/hueso)
2024-08-07 23:13:35 +0200machinedgod(~machinedg@d50-99-47-73.abhsia.telus.net)
2024-08-07 23:32:33 +0200Square(~Square@user/square) (Ping timeout: 276 seconds)
2024-08-07 23:44:08 +0200hueso(~root@user/hueso) (Ping timeout: 252 seconds)
2024-08-07 23:45:13 +0200hueso(~root@user/hueso)
2024-08-07 23:48:01 +0200 <glguy> data A = B { _ :: C }
2024-08-07 23:48:21 +0200 <glguy> We have a convention for explicitly not providing a name
2024-08-07 23:48:39 +0200 <EvanR> dude
2024-08-07 23:48:46 +0200 <EvanR> er, guy
2024-08-07 23:48:54 +0200 <glguy> Maybe someone said that already, I didn't read everything
2024-08-07 23:49:14 +0200 <EvanR> @define data A = B { _ :: Char, _ :: Double }
2024-08-07 23:49:14 +0200 <lambdabot> Parse failed: Illegal special name
2024-08-07 23:49:15 +0200sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 252 seconds)
2024-08-07 23:49:21 +0200 <EvanR> @define data A = B { _ :: Char }
2024-08-07 23:49:21 +0200 <lambdabot> Parse failed: Illegal special name
2024-08-07 23:49:24 +0200 <EvanR> ILLEGAL
2024-08-07 23:49:28 +0200 <glguy> Doesn't with, yet. :)
2024-08-07 23:49:36 +0200 <glguy> Work*
2024-08-07 23:54:30 +0200wroathe(~wroathe@c-66-41-76-89.hsd1.mn.comcast.net)
2024-08-07 23:54:30 +0200wroathe(~wroathe@c-66-41-76-89.hsd1.mn.comcast.net) (Changing host)
2024-08-07 23:54:30 +0200wroathe(~wroathe@user/wroathe)
2024-08-07 23:58:26 +0200pavonia(~user@user/siracusa)