All Projects → fika-lang → Fika

fika-lang / Fika

Licence: apache-2.0
A statically typed functional programming language for the web.

Programming Languages

elixir
2628 projects
erlang
1774 projects

Projects that are alternatives of or similar to Fika

Deal
Design by contract for Python with static checker and tests' generation.
Stars: ✭ 164 (-8.38%)
Mutual labels:  functional-programming
Iota
Fast [co]product types with a clean syntax. For Cats & Scalaz.
Stars: ✭ 175 (-2.23%)
Mutual labels:  functional-programming
Cuneiform
Cuneiform distributed programming language
Stars: ✭ 175 (-2.23%)
Mutual labels:  functional-programming
Libf
C++ as a Pure Functional Programming Language
Stars: ✭ 167 (-6.7%)
Mutual labels:  functional-programming
Curryable
An elegant and simple curry(f) implementation in PHP.
Stars: ✭ 172 (-3.91%)
Mutual labels:  functional-programming
Akar
First-class patterns for Clojure. Made with love, functions, and just the right amount of syntax.
Stars: ✭ 176 (-1.68%)
Mutual labels:  functional-programming
Nyaya
Random Data Generation and/or Property Testing in Scala & Scala.JS.
Stars: ✭ 165 (-7.82%)
Mutual labels:  functional-programming
Immutable
Thread-safe, persistent, immutable collections for the Crystal language
Stars: ✭ 179 (+0%)
Mutual labels:  functional-programming
Scala Workflow
Boilerplate-free syntax for computations with effects
Stars: ✭ 173 (-3.35%)
Mutual labels:  functional-programming
Maryamyriameliamurphies.js
A library of Haskell-style morphisms ported to ES2015 JavaScript using Babel.
Stars: ✭ 177 (-1.12%)
Mutual labels:  functional-programming
Scala Server Toolkit
Functional programming toolkit for building server applications in Scala.
Stars: ✭ 170 (-5.03%)
Mutual labels:  functional-programming
Creative Scala
Quick, graphical, fun introduction to programming in Scala.
Stars: ✭ 171 (-4.47%)
Mutual labels:  functional-programming
Stegcloak
Hide secrets with invisible characters in plain text securely using passwords 🧙🏻‍♂️⭐
Stars: ✭ 2,379 (+1229.05%)
Mutual labels:  functional-programming
Mostly Adequate Guide Chinese
函数式编程指北中文版
Stars: ✭ 2,093 (+1069.27%)
Mutual labels:  functional-programming
Nmf App
Understand and reduce your carbon footprint 🌱 iOS & Android.
Stars: ✭ 176 (-1.68%)
Mutual labels:  functional-programming
Bow Arch
🏛 Functional Architecture in Swift using Bow
Stars: ✭ 166 (-7.26%)
Mutual labels:  functional-programming
Wiwinwlh
What I Wish I Knew When Learning Haskell
Stars: ✭ 2,250 (+1156.98%)
Mutual labels:  functional-programming
Potigol
Linguagem Potigol - Linguagem de programação funcional moderna para iniciantes - A Functional Programming Language for Beginners
Stars: ✭ 179 (+0%)
Mutual labels:  functional-programming
Functional Examples
Examples with Functional JavaScript, following Professor Frisby's course
Stars: ✭ 179 (+0%)
Mutual labels:  functional-programming
Ocaml Jupyter
An OCaml kernel for Jupyter (IPython) notebook
Stars: ✭ 177 (-1.12%)
Mutual labels:  functional-programming

FOSSUnited    Discord


Fika is a modern programming language for the web. It is statically typed, functional and runs on the BEAM (Erlang VM).

Project status: Actively developed. Not ready for production use or HackerNews. Currently, Fika is an early prototype and hence has many hacky implementations.

If you'd like to keep tabs on our progress, please subscribe to our updates here.

Syntax

Here's a quick walkthrough of Fika's syntax: example.fi

Running Fika programs

Fika is written in Elixir, so make sure you have that installed. Follow these instructions to install Elixir. Next, clone this repo, cd into the directory and then follow the below instructions.

Using Elixir shell

# Install dependencies and run the Elixir shell
mix deps.get
iex -S mix

# In the Elixir shell, compile and load a Fika file using the following:
> Fika.Code.load_module("example")

# Now you can run functions from the module like this:
> :example.sum(40, 2)
> 42

Using fika executable

# Create the executable
mix release

# The above command creates an executable in the path ./_build/prod/rel/bakeware/fika
# Call the function example.sum(1, 2) from the file example.fi
./_build/prod/rel/bakeware/fika exec --function="foo()" example

PS: If you're developing Fika, the recommended way to try Fika code is to use the Elixir shell which is documented above because this is faster.

Your first HTTP server

Fika comes with a web server which allows you to quickly create HTTP request handlers. Note: This web server is a prototype currently and only responds with strings and a 200 status code.

# Inside examples/router.fi

fn routes : List({method: String, path: String, handler: Fn(->String)}) do
  [
    {method: "GET", path: "/", handler: &hello},
    {method: "GET", path: "/foo", handler: &bar}
  ]
end

fn hello : String do
  "Hello world"
end

fn bar : String do
  "Bar"
end

Now start the webserver in one of two ways:

Using Elixir shell

iex -S mix
# A web server is started automatically using the router `examples/router.fi`

Using fika executable

# Create the executable
mix release

# router.fi is in the `examples` folder
cd examples
../_build/prod/rel/bakeware/fika

Now open http://localhost:9090 in the browser to see "Hello world" served by Fika. Changes to the router are picked up automatically.

Fika together!

If you'd like to be part of the Fika community, you can find us here:

Discord server
This is the best place to chat with Fika developers, ask questions or get guidance on contributing to Fika. We also livestream some talks and pair programming sessions here. Here's the link to join.

Hackers list
This is an email digest where we send out the latest updates about Fika and our ecosystem. Here's the link to subscribe.

If you'd like to contact the creator of Fika, you can find Emil Soman on twitter or drop a mail to [email protected].

Thanks

Fika's development is supported by its many contributors and the grant from FOSSUnited. Thank you!

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].