I won't wonder if you said you never heard of this language, ya that's because it's extremely latest, compact, and it's damn simple to understand.
Grain is a programming language that brings wonderful features from academic and functional programming languages to the 21st century.
One of the most exciting things about Grain is that it compiles to WebAssembly and can run in the browser, system, server.
Grain is strongly typed (with a type checker from OCaml), significantly reduces the need for type annotations.
Moving ahead let's set up the environment first.
Install Wasmtime for an Alternative/manual method visit the site or simply run this command regardless of your operating system. to execute the .wasm file.
curl https://wasmtime.dev/install.sh -sSf | bash
Verify installation
wasmtime --version
Yuss! so with this you are all set to run your First Grain program.
- Program
Open your preferred text editor and make a file with the .gr extension. Grain recommends VS Code to work with .gr files.
Installation of grain extension for VS code is highly recommended.
The Fibonacci code in Grain is as follows :
```
let rec fibonacci = (n) => {
if (n == 0 || n == 1) {
n
} else {
fibonacci(n - 1) + fibonacci(n - 2)
}
}
print(fibonacci(7))
```
We need to mention that a function is recursive with the keyword rec
in Grain.
Let's try something interesting! What about taking your Food orders
enum Topping { Cheese, Pepperoni, Peppers, Pineapple }
enum Order { Pizza(Topping), Calzone(Topping) }
record Person { name: String, order: Order }
let person = { name: "Steve", order: Calzone(Pepperoni) }
match (person) {
{ order: Pizza(_), _ } => print("All pizzas are great here."),
{ order: Calzone(Peppers), _ } => print("Someone with great taste!"),
{ order: _, _ } => print("Yep, that's an order.")
}
- Compiling the code To compile your Grain code, simply run :
-
For order.gr
grain Order.gr
This would print Yep, that's an order.
on your terminal and generate a Order.gr.wasm
file.
-
For Fibonacci.gr
grain fibonacci.gr
This would print 13
on your terminal and generate a fibonacci.gr.wasm
file.
- Running .wasm file in Wasmtime
To run our .wasm file in wasmtime, run the following command
for Order.gr.wasm
wasmtime order.gr.wasm
For Fibonacci.gr.wasm
wasmtime fibonacci.gr.wasm
And you are good to go, this too will return the same output as above i.e. 13
References:
Enarx Docs for Wasm with Grain
Latest comments (0)