Skip to content

Latest commit

 

History

History
34 lines (18 loc) · 2.26 KB

README.md

File metadata and controls

34 lines (18 loc) · 2.26 KB
description
Give an overview of the inspiration for Verse and its design.

About Verse

Inspiration

Verse was inspired by several programming languages: Python (link) which uses duck-typing and whitespace-sensitive syntax, Dotty (link) which is a future Scala (link) release and blends OOP with FP on the JVM, Haskell (link) which is purely-functional, the Go (link) use of implicit interfaces, and a few pieces from Perl 6 (link).

A common issue faced by new developers is the decision of whether to use OOP or FP. Scala/Dotty strikes a balance, but we feel it could be better. Verse balances OOP and FP by encouraging use of new OOP types while implementing them in a FP manner.

Python follows the rule of duck typing: if it looks like a duck, and sounds like a duck, then it is a duck. By allowing gradual typing in Verse, we allow the programmer to gradually build up to a fully-typed program.

What Verse Is

Verse is a functional and object-oriented programming language with gradual typing (the compiler will deduce types for you whenever it can).

We chose for it to be functional because functional programs are easier to reason about: a function, given identical inputs, will produce identical outputs.

We chose for Verse to be object-oriented because it is useful in making information more concise. Mathematicians often create words that mean something useful, so we should be able to do the same as programmers with our data structures.

With gradual typing, Verse allows the programmer to omit type annotations when it is suitable.

Verse can be used as a system programming language (in the future).

Verse is an interpreted language.

What Verse Is Not

Verse is not a scripting language.

Verse is not purely-functional. Verse allows non-functional code in blocks marked unsafe.