Skip to content

Releases: plas4sci/fortl

v0.3.0beta

Choose a tag to compare

@dorchard dorchard released this 24 Sep 18:07
  • String literals
  • Exponentiation operation on floats (and their Descriptor analysis)
  • Scientific notation accepted for floating-point literals
  • None type (and its constructor None) built-in.
  • sqrt function that is well-typed.
  • Gradable booleans and conditional expressions
  • Species and Basis indexed descriptors
  • Dimension graded descriptor (akin to Unit) but with closed type.
  • Python-style def function blocks with typed arguments and return
  • Unicode identifiers (Greek and a few other symbols) allowed
  • Affine spaces

v0.2.0 - Public

Choose a tag to compare

@dorchard dorchard released this 15 Jun 13:06

And we're live...

  • Pythonic syntax applied to types
  • Typing now includes implicit types with type dependency (for resolving Float which has kind {d : Descriptor} -> d -> Type
  • REPL

v0.1.0

Choose a tag to compare

@dorchard dorchard released this 05 Jan 11:08

Key ideas in this version:

  • Pythonic syntax, but currently only straight line code and lambdas, no control flow.
  • Typing is optional but the type checker requires usually some amount of annotation of definitions.
  • Floats are graded abelian groups, graded by Descriptors which are generated by the free-abelian group over constructors names (which do not need defining and can be arbitrarily introduced, but must be guarded by Unit and Quantity constructors). There is a combinator for composing Descriptor values: & : Descriptor -> Descriptor -> Descriptor which behaves a bit like linear logic 'with' (additive conjunction), see, e.g. https://github.com/plas4sci/fortl/blob/main/examples/quantity.frtl:
y : Float(Unit(m) & Quantity(length)) = 2.0
x : Float(Unit(m) & Quantity(length)) = 1.0 + y
t : Float(Unit(s)) = 4.0
it : Float(Unit(s^-1 * m) & Quantity(length)) = (x + y) / t
  • If defined, the interpreter prints out the definition it.