Source

Welcome to Pipefish!

Welcome to Pipefish, a new programming language. This is version 0.4.9, a working prototype; you shouldn't use it in production but it's good enough at this point for you to install it and play around with it. (Note: at time of writing, July 30th, I have just changed the main branch from the prototype treewalker to the compiler/vm implementation. It is therefore probably rather flaky and needs me to test it hard for a couple of weeks.)

There are batteries included; there is tooling; there are plenty of features including some you've never heard or thought of.

Pipefish aims to be a delightful general-purpose language particularly suitable for rapid development of CRUD apps. With the semantics of a functional language, with syntax borrowed from mainstream productivity languages (specifically Python and Go), and with inspiration mainly from SQL and Excel — Pipefish is not quite like anything you've ever seen. But it is also a very practical language that exists to solve some very ordinary "white-collar" problems.

It is my hope either that Pipefish itself will one day be used in production, or (given my amateur status and lack of time) that this project will get enough attention that my ideas will be copied by people with more money and personnel and expertise. To this end, please add a star to the repo! Thank you!

Instructions for installing Pipefish can be found here, as part of a general manual/tutorial wiki that tells you everything you need to know to code in Pipefish. There are lots of other supporting documents.

A little Pipefish

Here is some sample code: you should find it readable.

cmd    // An imperative command.

greet :
    get name from Input("What's your name? ")
    post "Hello " + name + "!"

def    // A pure function.

factorial(n) :
    n == 0 :
        1
    n > 0 :
        n * factorial n - 1
    else :
        error "can't take the factorial of a negative number"

Distinguishing features

Here are some of Pipefish's more distinctive features:

Documents


Tags: language  

Last modified 07 October 2024