Idea for scripting language feature: special argument parsing block specified by a declarative language different from the (possibly imperative, but could be functional/declarative) language in the main block that specifies the logic.
Idea for scripting language feature: special argument parsing block specified by a declarative language different from the (possibly imperative, but could be functional/declarative) language in the main block that specifies the logic.
Question for the #programminglanguagetheory crowd.
When you define a parameterized type, you often need to put constraints on the type parameter.
For example, for a set implementation you'd want the type to be orderable, if you're implementing it with some sort of search tree, or equatable, if you're using something like linear search. But this leaks implementation details. You can't just change the implementation later because it might break client code.
I don't see an easy way around this, if you want to keep the requirements on the type parameter to a minimum. Is there any literature around this, or is this just how things are and we live with it?
#programming #programminglanguages #programminglanguagetheory #languagedesign
1/7
Ich entwickle seit einiger Zeit auch eine eigene Programmiersprache. Nicht aus kommerziellen Gründen, sondern weil ich die Idee schön finde, eine Sprache zu erschaffen, die sich richtig anfühlt.
Meine kleine persönliche „Traumsprache“ eben.
#programming #programminglanguages #programmiersprachen #ki #ai

Large language models (LLMs) have shown promise in register-transfer level (RTL) design automation, but direct RTL generation remains difficult to validate, optimize, and integrate with compiler-based hardware design flows. Hardware compiler infrastructures such as CIRCT provide typed intermediate representations, legality checks, and optimization passes, yet current LLMs struggle to emit raw compiler IR because of MLIR syntax, SSA discipline, dialect-specific operations, and strict width constraints. This paper presents CPPL, a compiler-mediated design framework that turns LLM-assisted hardware generation into a statically checkable frontend problem rather than an unconstrained RTL text-generation task. CPPL combines a Python frontend DSL for declaring module interfaces and hierarchy with CPPL IR, a JSON-based circuit IR designed to expose compiler-visible structure while remaining accessible to LLMs. The compiler infers operation widths from declared module ports, validates generated IR, checks hierarchy and port bindings, and deterministically lowers the result to CIRCT for synthesizable Verilog generation. On the RTLLM benchmark, CPPL improves functional correctness over direct Verilog and direct CIRCT IR generation, while CIRCT optimization reduces post-synthesis AIG node counts. These results show that a compiler-mediated interface can make LLM-assisted hardware design more reliable, analyzable, and amenable to backend optimization. CPPL is available at https://github.com/SawyDust1228/CPPL.
The language changed a lot since last time I checked it years ago.
Tuples with names for fields,
Type alias, opaque types with syntax for creating the conversions...
Static types. The types definitions are on the right side.
Easy to read.
Compile time stuff, macros, some generics.
Easy to link to C and Cpp.
I need to look at it better.
The syntax seems easier to read and understand than what I remember.
Likely another interesting choice to experiment coming from scala.
@dubiousdisc wrote:
«The killer feature of Lisps is not macros or structural editing (though those are nice too). The killer feature is REPL-driven development. Writing and testing code are not separate stages; they are intertwined. It's a completely different way to program.»
The latter two sentences are true (we can add exploration to writing and testing).
I don't think that there is a _single_ killer feature, though.
For example, REPLs are available for quite a few languages nowadays, but these languages still don't "feel like" Lisp.
What is usually called homoiconicity is also important, for example, not so much by itself, but by the way it affects directly or indirectly many aspects of using a language.
A lot has been said about homoiconicity, of course, but still, let me add an illustration.
Define a quine as an expression Q in a programming language such that Q is equal to eval(Q).
Obviously, the precise representation of Q and the precise notion of equality will be language-dependent.
Now, compare a quine (in the above sense) in a Lisp to a quine in Python.
With regards to another aspect of the big topic, see also an old paper by Guy Steele called Growing a Language (or Making a Language that Can Grow, or something like that).
#ComputerProgramming
#GrowingALanguage
#Homoiconicity
#Lisp
#Programming
#ProgrammingLanguages
#Quines
#ReadEvalPrintLoop
#REPL
I built an esoteric programming language: https://rphle.de/tzap/
It only has 4 instructions and no arbitrary values like numbers or memory addresses.
I challenge you to implement Fibonacci in it!
#esolang #pldev #programming #programminglanguages #challenge
Esolang/custom programming language nerds: anyone remember a computationally-heavy benchmark which consisted of a few thousand lines of a formula defined for X and Y that draws something in the plane... that was posted on a blog somewhere..somewhen? Details are eluding me right now, but I'm pretty certain I've seen it a few times 🤔