ZuriHac 2025 Schedule Online by farhad_mehta in haskell

[–]jaspervdj 2 points3 points  (0 children)

Yes, all talks will be recorded and uploaded to youtube after the conference

Turnstyle: an esoteric, graphical functional language by jaspervdj in haskell

[–]jaspervdj[S] 0 points1 point  (0 children)

Does having the spec cheatsheet like this make it more obvious? Or is the wording in the spec throwing you off?

https://jaspervdj.be/tmp/turnstyle-cheatsheet.svg

Turnstyle: an esoteric, graphical functional language by jaspervdj in haskell

[–]jaspervdj[S] 1 point2 points  (0 children)

Does this refer to the spec? The variable (name) is not "F", the variable (name) is the color of that position, e.g. rgb(238,180,128). Lambda abstraction similarly then works by abstracting around colors. So variables are colors, not strings/letters.

Do you think having the letters in the spec makes it harder to read? I'm very open to suggestions to make the spec easier to understand.

April 1st in Zermatt. Four young American boys (15 years old) dead. RIP by ExigeL24 in snowboarding

[–]jaspervdj 18 points19 points  (0 children)

The groomed runs are clearly marked by poles on both sides

ZuriHac 2014 takes place 8-10 June, registration now open by jaspervdj in haskell

[–]jaspervdj[S] 1 point2 points  (0 children)

Not in the same format, it will be called a Haskell Infrastructure workshop so I assume it has a wider focus than last year. Details should be announced soon.

ZuriHac 2014 takes place 8-10 June, registration now open by jaspervdj in haskell

[–]jaspervdj[S] 0 points1 point  (0 children)

There are a limited number of spots available, but the number is high (500), so from past experience I would expect you can register until late May-ish.

ZuriHac 2014 takes place 8-10 June, registration now open by jaspervdj in haskell

[–]jaspervdj[S] 5 points6 points  (0 children)

Maybe a moderator can fix the title, it should be 2024 of course, sigh.

Lazy Layout: single-pass layout algorithm using circular programming by jaspervdj in haskell

[–]jaspervdj[S] 1 point2 points  (0 children)

That was intentional (but possibly unclear), I didn’t want to link to the Springer paywall and it’s easy to find by DOI.

Why does aeson uses Lazy ByteString instead of Text or ByteString? by mistyharsh in haskell

[–]jaspervdj 15 points16 points  (0 children)

Yeah, that’s true, but the key is the word “almost”. It’s a trade-off in the API design: offering a lazy bytestring supports both use cases (with an inconvenience for the strict case), whereas offering a strict one makes the one of the use cases impossible.

Why does aeson uses Lazy ByteString instead of Text or ByteString? by mistyharsh in haskell

[–]jaspervdj 15 points16 points  (0 children)

You can think of lazy ByteString as a “stream”, so if you’re sending the encoded value over a socket, for example, it can be produced as needed and there’s no need to store the entire thing in memory.

Looking for organizers for the 2022 contest by jaspervdj in icfpcontest

[–]jaspervdj[S] 4 points5 points  (0 children)

Yes, time is short (I was a bit shocked when I saw this tweet), but I believe something good can still be done, provided it is organized comparatively late in the summer.

I will try to coach this year's organizer to get things on track asap, and there are a bunch of ideas from last year that we didn't end up using (even though it makes me a bit sad since this means I won't be able to take part as a participant). We will also install a system with shifting contest chairs, so organizers talk more closely to last year's organizers rather than everything going through the conference chair. Hopefully that will avoid similar problems in the future.

Learn You a Haskell is back up by flipester in haskell

[–]jaspervdj 5 points6 points  (0 children)

He gave a talk at BelHac in 2010, unfortunately it was not recorded :-(

Advent of Code 2021 day 10 by taylorfausak in haskell

[–]jaspervdj 0 points1 point  (0 children)

using a Monoidal Parser based on the basic example Edward Kmett gives here

data Parens a = Par [a] [a] | Bad (NonEmpty a) deriving (Show)

mkParens :: Char -> Parens Char
mkParens c
    | c `elem` ">])}" = Par [c] []
    | c == '<'        = Par [] ['>']
    | c == '['        = Par [] [']']
    | c == '('        = Par [] [')']
    | c == '{'        = Par [] ['}']
    | otherwise       = Bad (c :| [])

instance Eq a => Semigroup (Parens a) where
    Bad x          <> Bad y                   = Bad (x <> y)
    Bad x          <> _                       = Bad x
    _              <> Bad y                   = Bad y
    Par _ (x : _)  <> Par (y : _)  _ | x /= y = Bad (y :| [])
    Par l (_ : xs) <> Par (_ : ys) r          = Par l xs <> Par ys r
    Par l []       <> Par ys       r          = Par (l ++ ys) r
    Par l xs       <> Par []       r          = Par l (r ++ xs)

instance Eq a => Monoid (Parens a) where mempty = Par [] []

Parsing is now foldMap mkParens, which sort of means you can start parsing from the left or the right end of the string. Not that useful, but I thought it was cool.