Home

Awesome

Table of contents

fp programming language

fp is a programming language heavily inspired by the language John Backus described in his 1977 Turing Award lecture.

The paper can be found here.

Examples of fp

{- Matrix multiplication.
-}

Def ip ≡ /+∘α*∘⍉

Def mm ≡ α(α ip) ∘ α distl ∘ distr ∘ [~0, ⍉∘~1]

mm:< < <1,2>, <4,5> >,
     < <6,8>, <7,9>> >

Usage

This section will give a quick tour of many of the language features of fp. It will also cover the usage of the tools provided by fp.

Command line

fp can be used without explicitly installing it via nix!

nix run github:japiirainen/fp -- --help
                 
Up to date
Usage: fp COMMAND

  Command-line utility for the `fp` programming language

Available options:
  -h,--help                Show this help text

Available commands:
  interpret                Interpret a `fp` file
  repl                     Enter a REPL for `fp`

Interpret

The interpret command can be used to interpret fp files.

Def ip ≡ /+∘α*∘⍉

ip:<<1,2,3>,<6,5,4>>

This program lives in examples/ip.fp and can be interpreted like this.

cabal run fp -- interpret examples/ip.fp

Which will yield 28.

REPL

you can enter the fp repl to get an interactive environment:

fp repl
λ +:<1,2>
3
λ :let xs = <1,2,3>
λ xs
<1,2,3>

Documentation

Currently the examples directory serves as the documentation! I will list some important topics below for reference.

Here's a bunch of primitive functions.

Development

You can also run the test suite.

cabal test tasty

Nix support

You can alternatively use nix for dev environment and for building the project.

Build:

nix build .

Run:

nix run .

Start Nix shell:

nix-shell

Tips

fp is a programming language heavily inspired by the language John Backus described in his 1977 Turing Award lecture.

Currently, almost all features described in the paper are implemented. This is not implemented:

Credits