this post was submitted on 27 Jul 2024
112 points (98.3% liked)

Programming Languages

1186 readers
1 users here now

Hello!

This is the current Lemmy equivalent of https://www.reddit.com/r/ProgrammingLanguages/.

The content and rules are the same here as they are over there. Taken directly from the /r/ProgrammingLanguages overview:

This community is dedicated to the theory, design and implementation of programming languages.

Be nice to each other. Flame wars and rants are not welcomed. Please also put some effort into your post.

This isn't the right place to ask questions such as "What language should I use for X", "what language should I learn", and "what's your favorite language". Such questions should be posted in /c/learn_programming or /c/programming.

This is the right place for posts like the following:

See /r/ProgrammingLanguages for specific examples

Related online communities

founded 1 year ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] KindaABigDyl 19 points 3 months ago* (last edited 3 months ago)

In case you're interested, the language is a derivative of an esolang I made called NaBD. The idea was a Turing tarpit but for functional languages. What's the minimal I could get by with and still feel like a real language? (And no, not just lambda calculus; needed a real implementation)

I realized this sort of stripped-down functional language would make a great basis for a graphical programming language, something I've wanted to make for a while, so I set out to refine and remake it into just that.

That's why the syntax is a little bizarre, bc it mimics the flow of graphical blocks. It also is very simple. Every function has one input and one output with no first class funcs/currying. It's also statically typed.

Here's a truth-machine (doesn't work yet bc I haven't implemented some of the standard functions; it does parse and type check tho at least):

truth_mach :: Num -> Num =
    { inp -> bool,
        1 -> str -> print -> truth_mach,
        0 -> str -> print } -> if.
main :: <<Char>> -> Num = read -> parse -> truth_mach.

It will also support the C ABI via extern_c name_of_lib : name_of_function :: Type -> Type. This is not implemented yet either.