Skip to content

xieyuheng/x-lisp.js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

x-lisp.js

My list processing language.

Install

Install it by the following command:

npm install -g @xieyuheng/x-lisp.js

The command-line program is called x-lisp.js.

Examples

See more examples at examples directory.

Prelude

Bool

in builtin:

true
false
(bool? value)
(not bool)

Int

in builtin:

(int? value)
(ineg x)
(iadd x y)
(isub x y)
(imul x y)
(idiv x y)
(imod x y)
(int-max x y)
(int-min x y)
(int-larger? x y)
(int-smaller? x y)
(int-larger-or-equal? x y)
(int-smaller-or-equal? x y)
(int-positive? x)
(int-non-negative? x)

Float

in builtin:

(float? value)
(fneg x)
(fadd x y)
(fsub x y)
(fmul x y)
(fdiv x y)
(float-max x y)
(float-min x y)
(float-larger? x y)
(float-smaller? x y)
(float-larger-or-equal? x y)
(float-smaller-or-equal? x y)
(float-positive? x)
(float-non-negative? x)

Symbol

in builtin:

(symbol? value)
(symbol-length symbol)
(symbol-to-string symbol)
(symbol-append left right)
(symbol-append-many list)

String

in builtin:

(string? value)
(string-length string)
(string-to-symbol string)
(string-append left right)
(string-append-many list)
(string-join separator list)
(string-chars string)

Value

in builtin:

(same? lhs rhs)
(equal? lhs rhs)
(atom? value)
(anything? value)

List

in builtin:

(list-empty? value)
(list? p target)
(car list)
(cdr list)
(cons head tail)
(list-head list)
(list-tail list)
(list-init list)
(list-last list)
(list-length list)
(list-of list)
(list-get index list)
(list-put index value list)
(list-put! index value list)
(list-push value list)
(list-push! value list)
(list-reverse list)
(list-member? x list)
(list-to-set list)

in std:

(list-first list)
(list-second list)
(list-third list)
(list-map f list)
(list-filter p list)
(list-append list tail)
(list-append-many lists)
(list-append-map f list)
(list-unit x)
(list-lift f list)
(list-bind list f)
(list-take n list)
(list-drop n list)
(list-fold-left op e list)
(list-fold-right op e list)
(list-zip left right)
(list-unzip pairs)
(list-map-zip f left right)
(list-all? p list)
(list-any? p list)

Record

in builtin:

(record? p target)
(record-length record)
(record-keys record)
(record-values record)
(record-entries record)
(record-append record rest)
(record-of record)
(record-empty? record)
(record-get key record)
(record-has? key record)
(record-put key value record)
(record-put! key value record)
(record-delete key record)
(record-delete! key record)
(record-map fn record)

in std:

(record-from-entries entries)
(record-put-many entries record)
(record-filter p record)

Set

in builtin:

(set? value)
(set-empty? set)
(set-size set)
(set-member? value set)
(set-include? subset set)
(set-to-list set)
(set-add value set)
(set-add! value set)
(set-remove value set)
(set-remove! value set)
(set-clear! set)
(set-union left right)
(set-inter left right)
(set-difference left right)
(set-disjoint? left right)

Predicate

in builtin:

(negate p x)
(union-fn ps x)
(inter-fn ps x)

Sexp

in builtin:

(sexp? value)
(parse-sexp string)
(parse-sexps string)
(format-sexp sexp)

File

in builtin:

(file-exists? path)
(file-size path)
(file-load path)
(file-save path text)
(file-remove path)
(directory-exists? path)
(directory-create path)
(directory-create-recursively path)
(directory-remove path)
(directory-remove-recursively path)
(directory-files path)
(directory-files-recursively path)
(directory-directories path)
(directory-directories-recursively path)

Path

in builtin:

(path-join list)

Process

in builtin:

(current-working-directory)
(exit sexp)

Module

in builtin:

(current-module-file)
(current-module-directory)

Console

in builtin:

(print value)
(println value)
(write string)
(writeln string)

Void

in builtin:

void
(void? value)

Null

in builtin:

null
(null? value)

Function

in builtin:

(apply f args)
(pipe-fn x fs)
(compose-fn fs x)

in std:

(identity x)
(constant x y)
(swap f x y)

Format

in builtin:

(format-subscript n)
(format-superscript n)

Conditional

in std:

(when p t)
(unless p f)

Optional

in std:

(optional? p x)

Random

in builtin:

(random-int start end)
(random-float start end)

System

in builtin:

(system-shell-run command args)

Development

npm install
npm run build
npm run test

License

GPLv3

About

My list processing language.

Topics

Resources

License

Stars

Watchers

Forks