The Curly programming language (now in Rust!)

Overview

Curly

Curly is a functional programming language that focuses on iterators. Some of its main implementation features include sum types, iterators, list comprehensions, and quantifiers.

Example

primes = n in (from 2) where
    for all p in (range 2 n)
        n % p != 0

Build

Just type in the following:

git clone https://github.com/curly-lang/curly-lang && cd curly-lang && cargo build

This project depends on either clang or gcc for compiling, which can each be installed using your favourite package manager (apt/pacman/dnf for Linux and Homebrew/MacPorts for macOS).

Note: This repo has only been tested on Arch Linux, but should work on all other platforms rust supports without much issue.

Progress

See TODO.md. Everything is highly experimental. Be cautious: code may be explosive.

Support

Come to the official discord server!

You might also like...
Some WIP payload in Rust running on M1.

m1saka Some WIP payload in Rust running on M1. Project informations The aim of this payload is to provide exploration capabilities while providing a s

A library to compile USDT probes into a Rust library
A library to compile USDT probes into a Rust library

sonde sonde is a library to compile USDT probes into a Rust library, and to generate a friendly Rust idiomatic API around it. Userland Statically Defi

⚙️ Workshop Publishing Utility for Garry's Mod, written in Rust & Svelte and powered by Tauri
⚙️ Workshop Publishing Utility for Garry's Mod, written in Rust & Svelte and powered by Tauri

⚙️ gmpublisher Currently in Beta development. A powerful and feature-packed Workshop publisher for Garry's Mod is finally here! Click for downloads Ar

compile rust code into memes
compile rust code into memes

cargo-memex Besides their size, rust binaries have a significant disadvantage: rust binaries are not memes yet. cargo-memex is a cargo subcommand that

A neofetch alike program that shows hardware and distro information written in rust.

nyafetch A neofetch alike program that shows hardware and distro information written in rust. installing install $ make install # by default, install

Automated license checking for rust. cargo lichking is a Cargo subcommand that checks licensing information for dependencies.

cargo-lichking Automated license checking for rust. cargo lichking is a Cargo subcommand that checks licensing information for dependencies. Liches ar

Create target folder as a RAMdisk for faster Rust compilation.

cargo-ramdisk This crate is only supported for unix like systems! cargo-ramdisk creates a ramdisk at the target folder of your project for ridiculousl

cargo extension that can generate BitBake recipes utilizing the classes from meta-rust

cargo-bitbake cargo bitbake is a Cargo subcommand that generates a BitBake recipe that uses meta-rust to build a Cargo based project for Yocto Install

A small utility to compare Rust micro-benchmarks.
A small utility to compare Rust micro-benchmarks.

cargo benchcmp A small utility for comparing micro-benchmarks produced by cargo bench. The utility takes as input two sets of micro-benchmarks (one "o

Comments
  • cons boxes crashes in segfault in repl

    cons boxes crashes in segfault in repl

    cons x: Int, y: Int, f: Int -> Int -> Int = f x y
    truefn x: Int, y: Int = x
    car list: (Int -> Int -> Int) -> Int = list truefn
    car (cons 1 2)
    
    opened by jenra-uwu 2
  • Tail-call optimization with floats

    Tail-call optimization with floats

    Clang errors and rust crashes because of issues with the code generated when tail-call optimization has taken place with a function that takes Floats as parameters.

    For example:

    recursiveFunction num: Float =
      if num < 1 then
        num
      else
        recursiveFunction (num - 1)
    

    errors to

    <stdin>:105:6: error: assigning to 'float_t' (aka 'double') from incompatible type 'void *'
    num$ = $$7;
         ^ ~~~
    1 error generated.
    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: DlOpen { desc: "dlopen(./.curly_temp_0.so, 2): image not found" }', src/main.rs:752:38
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace```
    opened by Blckbrry-Pi 1
  • lambda functions are not type checked

    lambda functions are not type checked

    module Main
    take_func f: Int -> Int = f 42
    main = debug $ take_func $ lambda x: Int = x * x
    

    this fails because lambda x: Int = x * x is never typechecked

    opened by jenra-uwu 0
  • crashes on redefining c symbol

    crashes on redefining c symbol

    if you define a symbol thats actually a reserved word in c or something that was previously used in the generated c code like calloc or _0, then it crashes

    opened by jenra-uwu 0
Releases(v0.2.4-alpha)
Owner
Curly Language
Every official thing relating to the Curly programming language
Curly Language
A language-agnostic "shebang interpreter" that enables you to write scripts in compiled languages.

Scriptisto It is tool to enable writing one file scripts in languages that require compilation, dependencies fetching or preprocessing. It works as a

Igor Petruk 238 Dec 30, 2022
A fun and simple language with NO classes whatsoever!

This language aims to be simple, minimal, and compact. There will not be any classes whatsoever, and importing other files should be painless.

Europa Lang 22 Aug 23, 2022
Detects usage of unsafe Rust in a Rust crate and its dependencies.

cargo-geiger ☢️ A program that lists statistics related to the usage of unsafe Rust code in a Rust crate and all its dependencies. This cargo plugin w

Rust Secure Code Working Group 1.1k Dec 26, 2022
Powerful database anonymizer with flexible rules. Written in Rust.

[Data]nymizer Powerful database anonymizer with flexible rules. Written in Rust. Datanymizer is created & supported by Evrone. What else we develop wi

[Data]nymizer 381 Dec 26, 2022
⚡️Lightning-fast linter for .env files. Written in Rust 🦀

⚡️ Lightning-fast linter for .env files. Written in Rust ?? Dotenv-linter can check / fix / compare .env files for problems that may cause the applica

null 1.5k Jan 9, 2023
Rust Code Completion utility

Racer - code completion for Rust RACER = Rust Auto-Complete-er. A utility intended to provide Rust code completion for editors and IDEs. Maybe one day

null 3.4k Jan 4, 2023
Format Rust code

rustfmt Quick start On the Stable toolchain On the Nightly toolchain Installing from source Usage Running cargo fmt Running rustfmt directly Verifying

The Rust Programming Language 4.8k Jan 7, 2023
The Rust toolchain installer

rustup: the Rust toolchain installer Master CI Build Status Windows macOS Linux Etc rustup installs The Rust Programming Language from the official re

The Rust Programming Language 5.1k Jan 8, 2023
🦀 The ultimate search extension for Rust

Rust Search Extension 简体中文 The ultimate search extension for Rust Search docs, crates, builtin attributes, official books, and error codes, etc in you

Huhu 962 Dec 30, 2022
a freeform Rust build system

tinyrick: a freeform Rust build system .---. ^ o{__ω__ o{ ^0^ -Let me out! ~~ ( // *|* \xx\) xx`|' = =

Andrew 48 Dec 16, 2022