Skip to content

Update elixir resources and add new elixir project #156

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 16 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -617,11 +617,22 @@ You can find the instructions [here](https://developer.1password.com/docs/ssh/gi
- [Erlang workshop](https://github.com/lambdaclass/erlang_workshop)

**Elixir**
- Read the entire `Getting started` section starting at [the introduction](https://elixir-lang.org/getting-started/introduction.html) EXCEPT:
- "Module attributes"
- "Protocols"
- "Sigils"
- "Writing documentation"
- "Optional syntax cheatsheet"
- "Erlang Libraries"

In addition, read:
- the documentation for Mix (https://hexdocs.pm/mix/Mix.html)
- the documentation for ExUnit (https://hexdocs.pm/ex_unit/ExUnit.html

Other useful resources:
- "Programming Elixir" by Dave Thomas
- [Learning Functional Programming With Elixir](https://pragprog.com/titles/cdc-elixir/learn-functional-programming-with-elixir/)
- Must read: Chapter 1.
- Recommended to read: Chapters 3, 4, 5.
- [Elixir getting started](https://elixir-lang.org/getting-started/introduction.html)
- [Immutable Data](src/immutable_data.md)
- Recommended reading: Chapters 3, 4, 5.
- [StreamData: Property-based testing and data generation](https://elixir-lang.org/blog/2017/10/31/stream-data-property-based-testing-and-data-generation-for-elixir/)

#### Phoenix
Expand All @@ -640,10 +651,7 @@ You can find the instructions [here](https://developer.1password.com/docs/ssh/gi
- If `asdf` doesn't let you install a previous version of Erlang [this](https://github.com/asdf-vm/asdf-erlang/issues/221) might help.

#### Projects
- [Phoenix live counter](https://github.com/dwyl/phoenix-liveview-counter-tutorial)
- [Phoenix todo-list](https://github.com/dwyl/phoenix-todo-list-tutorial)
- [Phoenix ecto encryption](https://github.com/dwyl/phoenix-ecto-encryption-example)
- [Phoenix append-only log](https://github.com/dwyl/phoenix-ecto-append-only-log-example)
Check out the [project description](src/elixir_project_forth.md)

#### OpenAPI
The OpenAPI Specification (OAS) defines a standard, programming language-agnostic interface description for HTTP APIs, which allows both humans and computers to discover and understand the capabilities of a service without requiring access to source code, additional documentation, or inspection of network traffic.
Expand Down
26 changes: 26 additions & 0 deletions src/elixir_project_forth.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Elixir Project: Forth

Implement an evaluator for a very simple subset of Forth.

[Forth](https://en.wikipedia.org/wiki/Forth_%28programming_language%29) is a stack-based programming language.
Implement a very basic evaluator for a small subset of Forth.

## Requirements:

### 1: Core language
Your evaluator has to support the following words:
- `+`, `-`, `*`, `/` (integer arithmetic)
- `DUP`, `DROP`, `SWAP`, `OVER` (stack manipulation)

Your evaluator also has to support defining new words using the customary syntax: `: word-name definition ;`.

To keep things simple the only data type you need to support is signed integers of at least 16 bits size.

### 2: User interface

The evaluator must also be available via a web interface served by Phoenix Liveview.
The user interface features must include:
- uploading a forth program
- requesting an evaluation
- showing the results
- a history of evaluated programs
60 changes: 0 additions & 60 deletions src/immutable_data.md

This file was deleted.