All Projects → johnynek → Bosatsu

johnynek / Bosatsu

Licence: apache-2.0
A python-ish pure and total functional programming language

Programming Languages

scala
5932 projects
language
365 projects

Projects that are alternatives of or similar to Bosatsu

Ocaml Jupyter
An OCaml kernel for Jupyter (IPython) notebook
Stars: ✭ 177 (-8.29%)
Mutual labels:  functional-programming
Optionalextensions
Swift µframework with extensions for the Optional Type
Stars: ✭ 181 (-6.22%)
Mutual labels:  functional-programming
Kickstarter Reactiveextensions
A collection of extensions to the ReactiveSwift framework.
Stars: ✭ 183 (-5.18%)
Mutual labels:  functional-programming
Cuneiform
Cuneiform distributed programming language
Stars: ✭ 175 (-9.33%)
Mutual labels:  functional-programming
Potigol
Linguagem Potigol - Linguagem de programação funcional moderna para iniciantes - A Functional Programming Language for Beginners
Stars: ✭ 179 (-7.25%)
Mutual labels:  functional-programming
Nine Cards V2
An Open Source Android Launcher built with Scala on Android
Stars: ✭ 181 (-6.22%)
Mutual labels:  functional-programming
Akar
First-class patterns for Clojure. Made with love, functions, and just the right amount of syntax.
Stars: ✭ 176 (-8.81%)
Mutual labels:  functional-programming
Apex Lambda
Functional programming for Salesforce Apex
Stars: ✭ 189 (-2.07%)
Mutual labels:  functional-programming
Fika
A statically typed functional programming language for the web.
Stars: ✭ 179 (-7.25%)
Mutual labels:  functional-programming
Mlkit
Standard ML Compiler and Toolkit
Stars: ✭ 183 (-5.18%)
Mutual labels:  functional-programming
Nmf App
Understand and reduce your carbon footprint 🌱 iOS & Android.
Stars: ✭ 176 (-8.81%)
Mutual labels:  functional-programming
Immutable
Thread-safe, persistent, immutable collections for the Crystal language
Stars: ✭ 179 (-7.25%)
Mutual labels:  functional-programming
Fluture
🦋 Fantasy Land compliant (monadic) alternative to Promises
Stars: ✭ 2,249 (+1065.28%)
Mutual labels:  functional-programming
Maryamyriameliamurphies.js
A library of Haskell-style morphisms ported to ES2015 JavaScript using Babel.
Stars: ✭ 177 (-8.29%)
Mutual labels:  functional-programming
Remote Data Ts
RemoteData type
Stars: ✭ 185 (-4.15%)
Mutual labels:  functional-programming
Stegcloak
Hide secrets with invisible characters in plain text securely using passwords 🧙🏻‍♂️⭐
Stars: ✭ 2,379 (+1132.64%)
Mutual labels:  functional-programming
Python Lenses
A python lens library for manipulating deeply nested immutable structures
Stars: ✭ 179 (-7.25%)
Mutual labels:  functional-programming
Zebras
Data analysis library for JavaScript built with Ramda
Stars: ✭ 192 (-0.52%)
Mutual labels:  functional-programming
Deep Waters
🔥Deep Waters is an easy-to-compose functional validation system for javascript developers 🔥
Stars: ✭ 188 (-2.59%)
Mutual labels:  functional-programming
Funcadelic.js
Functional programming and category theory for everyday JavaScript development
Stars: ✭ 183 (-5.18%)
Mutual labels:  functional-programming

The Bosatsu Programming Language

Codecov

Bosatsu (菩薩) is the transliteration in Japanese of the sanskrit bodhisattva. A bodhisattva is someone who can reach enlightenment but decides not to, to help others achieve that goal. -- Wikipedia

Bosatsu is a simple, non-turing complete language designed for configuration, queries and scripting. It borrows from Python, Haskell, Dhall and Rust.

Please see the documentation site or try basic expressions using this in-browser Bosatsu compiler.

An example of Bosatsu

Here is a working Bosatsu program to solve the first Project Euler problem:

package Euler/One

# see:
# https://projecteuler.net/problem=1
# Find the sum of all the multiples of 3 or 5 below 1000.

operator == = eq_Int
operator % = mod_Int

def operator ||(x, y):
  True if x else y

def keep(i):
  (i % 3 == 0) || (i % 5 == 0)

def sum(as): as.foldLeft(0, add)

# here is the python version:
# >>> sum(i for i in xrange(1000) if keep_fn(i))
# 233168
#
# bosatsu version here
computed = sum([i for i in range(1000) if keep(i)])

test = Assertion(computed == 233168, "expected 233168")

Contributing

Please feel free to file an issue to discuss making a change to Bosatsu or to ask a question about how Bosatsu might be useful for a use-case that is interesting to you.

Development notes:

Bosatsu is developed in Scala. We use sbt as the build system. To build bosatsu, run sbt cli/assembly and then the script ./bosatsuj should print help (see the documentation link above for more help). sbt test should run all the tests.

How to run the benchmarks

At the sbt prompt:

bench/jmh:run -i 3 -wi 3 -f1 -t1

or for a specific benchmark

bench/jmh:run -i 3 -wi 3 -f1 -t1 .*SomeBench.*
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].