Newest at the top
2024-10-08 23:17:12 +0200 | vanishingideal | (~vanishing@user/vanishingideal) (Read error: Connection reset by peer) |
2024-10-08 23:15:26 +0200 | <dolio> | They don't have to be. |
2024-10-08 23:15:22 +0200 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-08 23:13:04 +0200 | biberu | (~biberu@user/biberu) (Read error: Connection reset by peer) |
2024-10-08 23:11:13 +0200 | <haskellbridge> | <thirdofmay18081814goya> dolio: models for algebraic theories are given by monads |
2024-10-08 23:10:35 +0200 | <monochrom> | Because I write code like "foo x = { y <- op0 x; if | pred1 y -> op1 y | pred2 y -> op2 y | otherwise -> {z <- op3 y; foo z}}". That needs at least Selective+Arrow. |
2024-10-08 23:09:46 +0200 | weary-traveler | (~user@user/user363627) user363627 |
2024-10-08 23:08:59 +0200 | michalz | (~michalz@185.246.207.222) (Remote host closed the connection) |
2024-10-08 23:06:09 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2024-10-08 23:05:14 +0200 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
2024-10-08 23:03:10 +0200 | <dolio> | I.E. that looks basically like, 'M is a family of S-models,' but why only consider S-models that can be assembled into a monad? |
2024-10-08 23:01:14 +0200 | ubert | (~Thunderbi@178.165.187.120.wireless.dyn.drei.com) (Ping timeout: 260 seconds) |
2024-10-08 23:01:13 +0200 | alexherbo2 | (~alexherbo@2a02-8440-3215-f56e-1190-0b59-796f-612e.rev.sfr.net) (Ping timeout: 256 seconds) |
2024-10-08 22:59:35 +0200 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-08 22:57:13 +0200 | <biberao> | monochrom: so you're a professor? |
2024-10-08 22:54:23 +0200 | zfnmxt | (~zfnmxt@user/zfnmxt) zfnmxt |
2024-10-08 22:53:18 +0200 | moe_ | (~moe@lewi-19-b2-v4wan-169604-cust1264.vm4.cable.virginm.net) (Ping timeout: 252 seconds) |
2024-10-08 22:50:03 +0200 | Angelz | (Angelz@2605:6400:30:fc15:9bd1:2217:41cd:bb15) (Ping timeout: 246 seconds) |
2024-10-08 22:48:49 +0200 | zfnmxt | (~zfnmxt@user/zfnmxt) (Ping timeout: 248 seconds) |
2024-10-08 22:48:48 +0200 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-08 22:46:14 +0200 | <dolio> | You probably replace the monad with 'models'. |
2024-10-08 22:46:08 +0200 | <monochrom> | Did you know: When teaching computability, I pioneered renaming "not recognizable" to "unrecognizable". >:) |
2024-10-08 22:45:10 +0200 | <tomsmeding> | (talking about English: "upplay" is a nice coinage) |
2024-10-08 22:44:45 +0200 | <tomsmeding> | Lears: but thanks for the concise and understandable (to my haskell brain) definition! |
2024-10-08 22:44:00 +0200 | <monochrom> | Many effect languages (eg Koka) don't expose the underlying monads to the programmers. However, the monad is there in the math theory. You can always choose to upplay or downplay it though. |
2024-10-08 22:43:49 +0200 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) merijn |
2024-10-08 22:42:54 +0200 | <tomsmeding> | Lears: I'll have to pick the brain of the person who explained effects to me again :p |
2024-10-08 22:41:46 +0200 | <monochrom> | From the grand unified CT POV I just teach one course: Kleisli categories. After symmetry breaking at low energies, it looks like I teach two courses: Unix, Haskell. >:) |
2024-10-08 22:41:27 +0200 | <Lears> | tomsmeding: The usual definition of algebraicity of an effect `op` is: 1. `op :: forall a. S (M a) -> M a` for some functor `S` and monad `M`; 2. `forall x, k. op x >>= k = op (x <&> (>>= k))`. Good luck extricating monad from that. |
2024-10-08 22:38:24 +0200 | <tomsmeding> | the {} being unnecessary |
2024-10-08 22:38:18 +0200 | <tomsmeding> | if you insist on putting the redirection first, I would prefer "<input filter | sum" :p |
2024-10-08 22:38:08 +0200 | <monochrom> | #1 source of mysterious syntax error messages |
2024-10-08 22:37:51 +0200 | <tomsmeding> | ah right |
2024-10-08 22:37:38 +0200 | <monochrom> | Oops I forgot the semicolon. |
2024-10-08 22:37:12 +0200 | <geekosaur> | I learned it from the old Bourne shell manual, although back then you needed extra semicolons (`{; filter | sum; }`) |
2024-10-08 22:37:11 +0200 | <monochrom> | Also I know that students just google for solutions and hand in "sum <(filter < input)" which is the equiv of using (&) so I declare "no bash feature, only posix shell" to force them to learn pipelining. |
2024-10-08 22:36:13 +0200 | <tomsmeding> | but the spacing (space after '<', no space after '{') and the ordering (what you say), combined with 'filter' and 'sum' not being the right commands here, made my brain not recognise it :p |
2024-10-08 22:35:29 +0200 | <monochrom> | I actually read the bloody POSIX/OpenGroup docs to learn the detailed grammar! |
2024-10-08 22:35:27 +0200 | <tomsmeding> | I knew that |
2024-10-08 22:35:22 +0200 | <geekosaur> | yep, redirections can go anywhere in a command |
2024-10-08 22:35:11 +0200 | <tomsmeding> | it is |
2024-10-08 22:35:09 +0200 | <tomsmeding> | oh hah |
2024-10-08 22:35:06 +0200 | <monochrom> | And yes "<file cmd" is the same as "cmd <file" |
2024-10-08 22:34:52 +0200 | <monochrom> | plain bourne shell! |
2024-10-08 22:34:37 +0200 | <tomsmeding> | what language is that lol |
2024-10-08 22:34:36 +0200 | moe_ | (~moe@lewi-19-b2-v4wan-169604-cust1264.vm4.cable.virginm.net) |
2024-10-08 22:34:19 +0200 | <monochrom> | I teach a Unix course so I prioritize "< input {filter | sum}". :) |
2024-10-08 22:32:58 +0200 | <tomsmeding> | also: [0..1000] & filter (\x -> ...) & sum |
2024-10-08 22:32:36 +0200 | merijn | (~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
2024-10-08 22:32:29 +0200 | <monochrom> | sam113101: Consider [0..1000] & (filter (\x -> ...) >>> sum). >>> is from Control.Category, it looks general, but this one specializes to flip (.) |