2025/03/17

Newest at the top

2025-03-17 19:30:32 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-17 19:30:02 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2025-03-17 19:27:36 +0100wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2025-03-17 19:27:13 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-03-17 19:26:44 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Quit: peterbecich)
2025-03-17 19:24:45 +0100drdo(~drdo@static.61.197.13.49.clients.your-server.de) drdo
2025-03-17 19:24:35 +0100drdo(~drdo@static.61.197.13.49.clients.your-server.de) (Quit: WeeChat 4.5.2)
2025-03-17 19:23:58 +0100 <EvanR> not sure why I allcaps that
2025-03-17 19:23:47 +0100 <EvanR> after enough of trying to follow it literally (on mac), I overrode it and used GHCUP
2025-03-17 19:23:28 +0100acidjnk(~acidjnk@p200300d6e71c4f06b15130e44e471244.dip0.t-ipconnect.de) acidjnk
2025-03-17 19:23:11 +0100 <EvanR> which was annoying
2025-03-17 19:22:58 +0100 <EvanR> in a test of commercial in-IDE "AI" when asked to make such and such program in haskell, it directed us to install stack then everything through stack
2025-03-17 19:18:21 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-03-17 19:14:28 +0100 <haskellbridge> <Morj> I actually wonder if people still use stack's --install-ghc
2025-03-17 19:14:05 +0100 <haskellbridge> <Morj> Yes, absolutely
2025-03-17 19:14:01 +0100driib318(~driib@vmi931078.contaboserver.net) (Quit: The Lounge - https://thelounge.chat)
2025-03-17 19:13:17 +0100 <haskellbridge> <dmjio> Is "ghcup" the preferred way to Haskell these days (for non-nix folk)
2025-03-17 19:12:18 +0100stureplan(22e45d5caf@user/stureplan) stureplan
2025-03-17 19:07:42 +0100ft(~ft@p508db291.dip0.t-ipconnect.de) ft
2025-03-17 19:07:34 +0100pavonia(~user@user/siracusa) siracusa
2025-03-17 19:04:26 +0100Square(~Square4@user/square) (Ping timeout: 272 seconds)
2025-03-17 19:00:35 +0100Square2(~Square@user/square) Square
2025-03-17 18:56:43 +0100 <EvanR> that discriminates functions and macros
2025-03-17 18:56:12 +0100 <EvanR> alternative bindings ok
2025-03-17 18:53:46 +0100 <ski> with macros, you can implement your own variable-binding constructs (such as a `case', e.g. .. there's a Scheme library for this). sometimes, you can just pass a lambda abstraction instead. but sometimes you want a more exotic binding structure, which isn't easily captured in such a way (e.g. the paralell composition in list comprehensions, or the `proc' syntax for Arrows)
2025-03-17 18:53:45 +0100Googulator(~Googulato@2a01-036d-0106-4b74-b88c-ff83-9891-e272.pool6.digikabel.hu)
2025-03-17 18:53:27 +0100Googulator(~Googulato@2a01-036d-0106-4b74-b88c-ff83-9891-e272.pool6.digikabel.hu) (Quit: Client closed)
2025-03-17 18:52:06 +0100 <ski> EvanR : why isn't list comprehensions a function ? why isn't `case' a function ?
2025-03-17 18:50:27 +0100tccq(~user@user/tccq) tccq
2025-03-17 18:49:16 +0100Leary(~Leary@user/Leary/x-0910699) Leary
2025-03-17 18:47:32 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 244 seconds)
2025-03-17 18:46:15 +0100chele(~chele@user/chele) (Remote host closed the connection)
2025-03-17 18:45:50 +0100 <c_wraith> (and if you want your loop body or conditions to involve a macro, they won't work)
2025-03-17 18:45:44 +0100 <EvanR> why isn't the looping macro not a macro but a function
2025-03-17 18:44:56 +0100 <c_wraith> and remember that you can't use higher-order functions because macros aren't functions.
2025-03-17 18:43:51 +0100 <ski> the clauses in list comprehensions (generators, guards, "parallel" vs. sequential composition), in Haskell, form a small looping DSL
2025-03-17 18:43:08 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-17 18:42:27 +0100 <ski> (as opposed to explicitly spelling out your recursions, which (in case of tail recursion at least), amount to the same as programming with `goto's, apart from that you can pass parameters)
2025-03-17 18:41:32 +0100 <ski> a macro for, more composably, doing loops, yes, EvanR
2025-03-17 18:40:26 +0100 <ski> (the "types" here would be the "contexts"/"syntactic categories", like "expression","type","pattern","loop clause",&c.)
2025-03-17 18:39:34 +0100skiwould like to have typed macros, to be able to have them by-value, rather than by-name (being able to introduce macros for sub-languages implemented by DSL macros, without having to explicitly make your DSL macros integrate with these macro definitions)
2025-03-17 18:38:55 +0100 <EvanR> is a loop macro... a macro for doing loops
2025-03-17 18:37:29 +0100 <ski> this is also related to list comprehensions (e.g. <https://srfi.schemers.org/srfi-42/srfi-42.html>), or the (do)/2 construct in ECLiPSe Prolog <https://eclipseclp.org/doc/tutorial/tutorial025.html>,<https://eclipseclp.org/doc/userman/umsroot023.html>, or enumerators / internal iteration vs. cursors / external iteration <https://okmij.org/ftp/papers/LL3-collections-enumerators.txt>
2025-03-17 18:37:04 +0100 <ski> "Yow! LOOP macros are LOOPY!" by foof in 2006-09-06 at <https://groups.google.com/g/comp.lang.scheme/c/DLkZdLw1qGw> is also relevant. (foof is the author of a similar, but not quite identical, looping macro package, named `loopy-loop' <https://wiki.call-cc.org/eggref/4/loopy-loop>, as opposed to `foof-loop' by Riastradh <https://wiki.call-cc.org/eggref/4/loopy-loop>)
2025-03-17 18:35:52 +0100 <mauke> and there's streaming and lenses involved
2025-03-17 18:35:47 +0100 <haskellbridge> <Liamzee> i spent an hour (and it's my fault) trying to figure out why a HTML sample in Lucid2 was angering GHC
2025-03-17 18:35:22 +0100 <mauke> now imagine print (2 + 2), but instead of adding numbers, it fetches data over HTTP (path and parameters specified at the type level), which is implicitly decoded as CSV, whose format is again specified at the type level
2025-03-17 18:35:07 +0100 <haskellbridge> <Liamzee> iirc now custom type error messages are a thing, but i think part of. the problem with that is that it's hard to anticipate what type errors will result and figure out how to write the error messages for them are
2025-03-17 18:33:53 +0100 <mauke> no one writes (print :: Integer -> IO ()) (((+) :: Integer -> Integer -> Integer) (2 :: Integer) (2 :: Integer) :: Integer) :: IO ()
2025-03-17 18:33:05 +0100ash3en(~Thunderbi@ip1f10cbd6.dynamic.kabel-deutschland.de) (Client Quit)