Welcome, I'm happy to see you here! Feel free to pick a function and add a happy example, the more the merrier!
(map bytes? [ 'ab :ab "ab" @"ab" [97 98 ] @[97 98 ] {0 97 1 98 } @{0 97 1 98 } ])
# => @[ true true true true false false false false ]
(map symbol? [ 'ab :ab "ab" @"ab" [97 98 ] @[97 98 ] {0 97 1 98 } @{0 97 1 98 } ])
# => @[ true false false false false false false false ]
(map keyword? [ 'ab :ab "ab" @"ab" [97 98 ] @[97 98 ] {0 97 1 98 } @{0 97 1 98 } ])
# => @[ false true false false false false false false ]
(map string? [ 'ab :ab "ab" @"ab" [97 98 ] @[97 98 ] {0 97 1 98 } @{0 97 1 98 } ])
# => @[ false false true false false false false false ]
(map buffer? [ 'ab :ab "ab" @"ab" [97 98 ] @[97 98 ] {0 97 1 98 } @{0 97 1 98 } ])
# => @[ false false false true false false false false ] # opens a file named filename for writing, and writes Hello World!
(def f (file/open "filename" :w ))
(file/write f "Hello World!" )
(file/flush f )
(file/close f )# more at https://github.com/sogaiu/margaret/tree/master/examples
(peg/match ~{:main (replace (some :header-line )
,(fn [& captures ]
(table ;captures )))
:header-line (sequence (capture :header-name ) ":"
:s+
(capture :header-value ) :crlf )
:header-name (to ":" )
:header-value (to :crlf )
:crlf "\r\n" }
(string "Content-Type: text/plain\r\n"
"Content-Length: 1024\r\n" ))
# => @[@{"Content-Length" "1024" "Content-Type" "text/plain"}]
(os/shell "uptime" ) # => 0
# printed to the console:
22 :30 up 5 days , 9 :31 , 15 users , load averages: 1.48 1.50 1.49
(def p1 (os/spawn ["echo" "hello" ] :p {:out :pipe }))
(def p2 (os/spawn ["grep" "hello" ] :p {:in (p1 :out )}))
(:wait p2 )
# Creates a pipeline (e.g. echo hello | grep hello) (def ast '(print novar ))
(def es (compile ast ))
# => @{:column 11 :line 12 :error "unknown symbol novar"} returns struct with error on invalid ast (int/u64 42 ) # => <core/u64 42>
(int/u64 42.1 ) # => <core/u64 42>
(int/u64 "42" ) # => <core/u64 42> # Upgrade mutates, but I wasn't sure whether it'd matter using the pure sorted or mutative sort. So I
# did a simple test.
(import spork )
# create data before test
(def d @{:data (range 10000000 0 -1 )})
(spork/test/timeit (update d :data sort )) # 4.32930135726929 seconds and 87.4 MB
(def d @{:data (range 10000000 0 -1 )}) # 87.4 MB
(spork/test/timeit (update d :data sorted )) # 4.49482655525208 seconds and 167 MB
# Where did those memory numbers come from? With only the data, the Janet process
# uses 87.4 MB. Timewise, they take the same amount of time but on starting, sorted
# prepares memory equivalent to its input. To check ram within Janet:
(def pid (os/getpid )) # => "/proc/367537/statm"
(def statm-path (string "/proc/" pid "/statm" )) # => 367537
(slurp statm-path ) # => @"40444 40038 710 82 0 39426 0\n"
# Collecting garbage:
(gccollect )
(slurp statm-path ) # => @"20912 20503 695 82 0 19894 0\n" # :as sets a /
(import /deeper/inside :prefix "" :export true )
# @{_ @{:value <cycle 0>} cat @{:private false}}
(import /deeper/inside :as "" :export true )
# @{/cat @{:private false} _ @{:value <cycle 0>} cat @{:private false}}
(math/random ) # 0.487181 # https://en.wikipedia.org/wiki/Error_function
(math/erf 1 )
# => 0.842701 # wrap short-fn / |
(-> 10
(|(/ $ 2 )))
# =>
5
# also wrap fn
(-> 10
((fn [n ] (/ n 2 ))))
# =>
5 (defn f1 [s ] (string "-" s "-" ))
(defn f2 [s ] (string "=" s "=" ))
(defn f3 [s ] (string "#" s "#" ))
(def f (juxt f1 f2 f3 ))
(f "x" ) # => ("-x-" "=x=" "#x#") (math/pow 2 8 ) # => 256 (sort (keys default-peg-grammar ))
# => @[:A :D :H :S :W :a :a* :a+ :d :d* :d+ :h :h* :h+ :s :s* :s+ :w :w* :w+]