Hacker News new | ask | show | jobs
by taolson 70 days ago
Nice to see another language with Haskell / Miranda type syntax, but the vibe-coded implementation sure shows: e.g. src/Compiler/Infer.sky isUpperStart:

    isUpperStart : String -> Bool
    isUpperStart name =
        case String.slice 0 1 name of
            
            "A" ->
                True
            
            "B" ->
                True
            
            "C" ->
                True
        ... for 23 more cases.
And the corresponding go code in the bootstrap compiler is even worse.
4 comments

I started my career cleaning up systems written by solo devs in the pre internet era. I’ve seen a lot of starts_with_UCase() implementations like that.

I see now I’m going to end my career cleaning up systems written by chronically online vibe coders, making all the same mistakes, with none of the excuses.

Thanks for the feedback and taking the time to look at the repo.

Yes I must admit this is part of the trade-offs, as I want to iterate fast until a point where the compiler is stable enough to build most common realworld applications, and I will then clean up the "noise" where Claude Code creates/emits.

I'd love hand building everything myself, but given how productive CC & general AI tool can be, it's an ugly trade-off I would take, for now.

These kind of issues, hopefully will be addressed by v0.9-v1.0, please feel free to check on the repo and see where it goes, thanks!

Does this language use ASCII or Unicode strings? I think this implementation is technically correct for the strict subset of ascii characters, but as soon as you add more, it stops working. EG I'm pretty sure Á or Ó are capitals, and are included in Windows-1252 which is apparently extremely common in non-unicode strings, and there are a huge amount of unicode characters that are uppercase, in which case this function isn't even slightly correct
it first started with ASCII, and quickly I realised it has to support unicode. I have since updated it, but some of the compiler string interpolation & friends aren't optimised for unicode yet.

I will fix those by v0.8, and please feel free to visit the repo to check on its progress. And thanks for taking the time!

Haskell/Miranda use `::` instead of `:` for type signatures unlike Elm & basically the rest of the family which prioritize types being less keypresses than list cons.
Sorry, I meant "Haskell / Miranda style syntax" -- e.g. curried functions, concise syntax with little boilerplate, etc. The word type is too overloaded ;-)