all repos — min @ 38f9676ebfb1e81a574ec7fbabfe106e276a59e0

A small but practical concatenative programming language.

lib/prelude.min

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
// Aliases
[symbol]      [:]           symbol
[exit]        [quit]        :
[concat]      [,]           : 
[print]       [%]           :
[==]          [eq]          :
[!=]          [noteq]       :
[>]           [gt]          :
[<]           [lt]          :
[>=]          [gte]         :
[<=]          [lte]         :
[puts]        [echo]        :
[system]      [!]           :
[run]         [&]           :
[getenv]      [$]           :
[pop]         [zap]         :
[quote]       [unit]        :
[unquote]     [i]           :
[unquote]     [apply]       :
[filter]      [select]      :
[clear]       [empty]       :  
[match]       [~]           :
["."]         [.]           :
[".."]        [..]          :

// Common Environment Variables
[os "windows" ==] 
  [
    ["HOMEPATH" $] [$HOME] :
    ["USERNAME" $] [$USER] :
  ] 
  [
    ["HOME" $] [$HOME] :
    ["USER" $] [$USER] :   
  ] 
ifte

["PATH" $]  [$PATH]     : 
[$HOME]     [$HOMEPATH] :
[$USER]     [$USERNAME] :

// Common sigils
[quote [eval] concat]       [']     sigil // 'test -> [test]
[getenv]                    [$]     sigil 
[:]                         [:]     sigil 
[!]                         [!]     sigil 
[&]                         [&]     sigil

// Mathematical Operators
[1 +]           [succ]    :
[1 -]           [pred]    :
[2 mod 0 ==]    [even?]   :
[even? not]     [odd?]    :

[[dup 0 ==] [1 +] [dup 1 -] [ * ] linrec] [factorial] :

// Stack Operators
[swap cons]                       [swons] :
[[pop] dip]                       [popd]  :
[[dup] dip]                       [dupd]  :
[[swap] dip]                      [swapd] :
[[dup] dip i]                     [q]     :
[[zap] dip i]                     [k]     :
[[cons] dip i]                    [b]     :
[[swap] dip i]                    [c]     :
[[dip] cons cons]                 [take]  :
[[] cons dip]                     [dig1]  :
[[] cons cons dip]                [dig2]  :
[[] cons cons cons dip]           [dig3]  :
[[[] cons] dip swap i]            [bury1] :
[[[] cons cons] dip swap i]       [bury2] :
[[[] cons cons cons] dip swap i]  [bury3] :