Shik Language
Overview
Shik is a functional, dynamically-typed scripting language designed for shell automation with a minimalist syntax designed to be easily written in the terminal.
Installation
From Source (Recommended)
# Requires Rust toolchain (https://rustup.rs/)
From Pre-built Binaries
Download the appropriate binary for your platform from the Releases page.
Build from Source
# Binary will be at target/release/shik
Usage
# Run a script file
# Start REPL (interactive mode)
Language Features
- Pipeline operator (
$>) for function composition - First-class functions and lambdas
- Pattern matching capabilities
- Rich standard library for working with system
- Lazy evaluation where appropriate
Example
;; 1. Make file
file.write :sample.txt "some text"
;; 2. Read file, make content upper case, write back
file.read :sample.txt $> string.upper $> file.write :sample.txt
print (file.read :sample.txt) ;; SOME TEXT HERE
;; 3. Make curried writer and reader
let file.reader (fn [name] (fn [] file.read name))
let write (file.write :sample.txt)
let read (file.reader :sample.txt)
write :hello
call read ;; (zero args function must be called via `call` fn) "hello"
call read $> string.upper $> write $> call read ;; HELLO
;; 4. Count of lines in all *.rs files in src
file.glob :./src/**/*.rs $>
list.map file.read $>
list.map (fn [c] string.lines c $> list.len) $>
list.sum $>
print
Building for Distribution
See DISTRIBUTION.md for detailed instructions on building release binaries for multiple platforms.
License
MIT