Front Page All Articles Recent Changes Random Article

Contents

Concatenative language

  • ACL
  • Ait
  • Aocla
  • Breeze
  • Callisto
  • Cat
  • Cognate
  • colorForth
  • Concata
  • CoSy
  • Deque
  • DSSP
  • dt
  • Elymas
  • Enchilada
  • ETAC
  • F
  • Factor
  • Fiveth
  • Forth
  • Fourth
  • Freelang
  • Gershwin
  • hex
  • iNet
  • Joy
  • Joy of Postfix App
  • kcats
  • Kitten
  • lang5
  • Listack
  • LSE64
  • Lviv
  • Meow5
  • min
  • Mirth
  • mjoy
  • Mlatu
  • Ode
  • OForth
  • Om
  • Onyx
  • Plorth
  • Popr
  • Porth
  • PostScript
  • Prowl
  • Quest32
  • Quackery
  • r3
  • Raven
  • Retro
  • RPL
  • SPL
  • Staapl
  • Stabel
  • Tal
  • Titan
  • Trith
  • Uiua
  • Worst
  • xs
  • XY
  • 5th
  • 8th

Concatenative topics

  • Compilers
  • Interpreters
  • Type systems
  • Object systems
  • Quotations
  • Variables
  • Garbage collection
  • Example programs

Concatenative meta

  • People
  • Communities

Other languages

  • APL
  • C++
  • Erlang
  • FP trivia
  • Haskell
  • Io
  • Java
  • JavaScript
  • Lisp
  • ML
  • Oberon
  • RPL
  • Self
  • Slate
  • Smalltalk

Meta

  • Search
  • Farkup wiki format
  • Etiquette
  • Sandbox

Type systems

Many catlangs employ a system of arity checking. Under arity checking, each function declares how many items it will produce and consume. Then, this annotation is checked against the body of the function. If the input height and output height fail to match, the arity checker rejects the program. 

In languages such as Factor, this allows it to generate efficient machine code despite being dynamically typed.

  1. # Type System

Existing catlangs occupy various typing disciplines. The first group is dynamically typed languages. Some notable members include Joy, Factor, and Uiua. These languages utilize runtime type checking, halting execution when a type error occurs. 

Additionally, there are many typeless catlangs, such as Tal and the Forth family. For these languages, everything is bytes or cells on a stack. These languages are generally low-level programming languages.

Finally, there are statically typed catlangs. These languages provide an additional layer of correctness by requiring the programmer to specify the types of their program. Some languages, such as Kitten and Mirth, employ types to annotate permissions (Kitten) and manage linear resources (Mirth).

  1. # Classification Table

From here, you can create a table classifying the catlangs mentioned here:

Untyped Dynamic Typing Static Static Typing
Arity-checked Tal (with uxnbal) Factor, Uiua Kitten, Cat, Mirth
Arity-unchecked Forth, Tal Joy N/A

This revision created on Wed, 8 May 2024 04:36:31 by CapitalEx (Flesh out page a bit)

Latest Revisions Edit

All content is © 2008-2024 by its respective authors. By adding content to this wiki, you agree to release it under the BSD license.