F (2006)
F is a functional concatenative language with K3 list operations and Joy's dip combinator. It enforces one-time assignment, supports floating-point and symbolic datatypes, and emphasizes function-valence and -charge theories. The language is purely functional, prohibiting side-effects and reassignment, with various primitives for arithmetic, logic, and list operations. F also provides interactive commands for debugging and manipulation, focusing on simplicity, efficiency, and functional programming paradigms.
Read original articleF is a pure functional concatenative language that extends False, incorporating K3 list operations and Joy's dip combinator. It supports floating-point and symbolic datatypes with one-time assignment enforced in syntax. The language emphasizes function-valence and -charge theories, featuring a general continuation primitive and a pattern sublanguage. F is concatenative and purely functional, prohibiting side-effects and reassignment. All K verbs are implemented, with primitives denoted by single symbols for mnemonic purposes. Datatypes in F involve an initial state with an environment, stack, and queue, processed iteratively until the queue is empty. The language includes various primitives for arithmetic, logic, and list operations, along with system functions and literals. F also offers interactive commands for debugging and manipulation, such as trace, load, and store. Stack and queue manipulation programs are available, allowing for efficient stack and queue operations. F's design emphasizes simplicity, efficiency, and functional programming paradigms.
Related
Smalltalk syntax in 7 minutes [video]
The YouTube video explains Smalltalk syntax, emphasizing readability and message-based object interaction. It covers keywords, arrays, closures, and method execution in Pharo Smalltalk, providing a practical example and additional learning resources.
Tetris Font (2020)
The Tetris Font, designed by Erik and Martin Demaine, features letters made of Tetris pieces, challenging users with puzzle elements. Created in 2020, it showcases the complexity of Tetris in a unique typographic experience.
Flambda2 Ep. 2: Loopifying Tail-Recursive Functions
Flambda2's Episode 2 explores Loopify, an optimization algorithm for tail-recursive functions in OCaml. It transforms recursion into loops, enhancing memory efficiency without compromising functional programming principles.
Memory Model: The Hard Bits
This chapter explores OCaml's memory model, emphasizing relaxed memory aspects, compiler optimizations, weakly consistent memory, and DRF-SC guarantee. It clarifies data races, memory classifications, and simplifies reasoning for programmers. Examples highlight data race scenarios and atomicity.
Gren 0.4: New Foundations
Gren 0.4 updates its functional language with enhanced core packages, a new compiler, revamped FileSystem API, improved functions, and a community shift to Discord. These updates aim to boost usability and community engagement.
Take an axe to the troubleshoot-ability of your language with this one weird trick that makes it impossible to google.
F (2006) - https://news.ycombinator.com/item?id=24238846 - Aug 2020 (56 comments)
F – a pure functional concatenative language (2006) - https://news.ycombinator.com/item?id=10776314 - Dec 2015 (7 comments)
I dabble with compiler-writing, and one of the techniques there is to program an abstract machine. It fills a nice niche - it's a bit more concrete than hacking together an interpreter over your AST, and a lot less concrete than writing out LLVM instructions.
Some examples are Krivine machines and SECD machines (which stands for Stack, Environment, Control, Dump).
They let you play around with ideas before you commit to a particular semantics of your language, for instance, whether you'll pass by value or reference, via the stack, or via the heap.
But exposing (e;s;q) directly to the programmer is a fascinating idea! If I'm thinking about it right, it means a programmer could write code to take a parameter which was passed in via the stack, and decide "No I think this should be on the heap instead" and then update all pointers in the program accordingly.
Concateniative APL-like (with Unicode symbols but with pragmatic input method)
What is the simplest most interesting language?
Related
Smalltalk syntax in 7 minutes [video]
The YouTube video explains Smalltalk syntax, emphasizing readability and message-based object interaction. It covers keywords, arrays, closures, and method execution in Pharo Smalltalk, providing a practical example and additional learning resources.
Tetris Font (2020)
The Tetris Font, designed by Erik and Martin Demaine, features letters made of Tetris pieces, challenging users with puzzle elements. Created in 2020, it showcases the complexity of Tetris in a unique typographic experience.
Flambda2 Ep. 2: Loopifying Tail-Recursive Functions
Flambda2's Episode 2 explores Loopify, an optimization algorithm for tail-recursive functions in OCaml. It transforms recursion into loops, enhancing memory efficiency without compromising functional programming principles.
Memory Model: The Hard Bits
This chapter explores OCaml's memory model, emphasizing relaxed memory aspects, compiler optimizations, weakly consistent memory, and DRF-SC guarantee. It clarifies data races, memory classifications, and simplifies reasoning for programmers. Examples highlight data race scenarios and atomicity.
Gren 0.4: New Foundations
Gren 0.4 updates its functional language with enhanced core packages, a new compiler, revamped FileSystem API, improved functions, and a community shift to Discord. These updates aim to boost usability and community engagement.