Welcome, I'm happy to see you here! Feel free to pick a function and add a happy example, the more the merrier!
# repeat is about _side-effects_, since it returns nil.
# You'll need to use a mutable collection if you want to
# use repeat to add repeated items to a collection:
(var coll @["Y" "Z" ]) #=> @["Y" "Z"]
(repeat 3 (array/push coll "A" )) #=> nil
coll
# Returns:
@["Y" "Z" "A" "A" "A" ]
# You can use map if the whole collection consists
# of these repetitions:
(map (fn [_ ] "A" ) (range 3 ))
# Returns:
@["A" "A" "A" ](spit "/tmp/hello.sh" "#!/bin/bash\necho 'Hello from Bash!'\n" )
(os/chmod "/tmp/hello.sh" "rwx------" )
(os/setenv "PATH" (string (os/getenv "PATH" ) ":/tmp" ))
(os/shell "hello.sh" )(defn- parse-timestamp
``Parse a date or datetime string into a unix epoch int``
[s ]
(if (string/find " " s )
# datetime: "yyyy-MM-dd HH:mm"
(let [[date-part time-part ] (string/split " " s )
[y m d ] (string/split "-" date-part )
[hh mm ] (string/split ":" time-part )]
(os/mktime {:year (scan-number y )
:month (scan-number m )
:month-day (scan-number d )
:hours (scan-number hh )
:minutes (scan-number mm )
:seconds 0 }))
# date: "yyyy-MM-dd"
(let [[y m d ] (string/split "-" s )]
(os/mktime {:year (scan-number y )
:month (scan-number m )
:month-day (scan-number d )
:hours 0 :minutes 0 :seconds 0 }))))(seq [i :range [0 3 ]
j :range [0 3 ]]
[(keyword (string/format "%c" (+ 97 i )))
j ])
# => '@[(:a 0) (:a 1) (:a 2) (:b 0) (:b 1) (:b 2) (:c 0) (:c 1) (:c 2)] (one? :dude ) # => false (or true ) # => true
(or true true ) # => true
(or true false ) # => true
(or false 1 2 ) # => 1
(or false 2 1 ) # => 2
(or false nil ) # => nil
(or nil false ) # => false
# note that `or` does not behave as you might expect
# when used with `apply` and `splice`:
(or 1 2 3 ) # => 1
(or (splice [1 2 3 ])) # => (1 2 3)
(apply or [1 2 3 ]) # => (if 1 1 (if 2 2 3))
(parse "[:a :b :c]" ) # => [:a :b :c] (extreme < [1 2 3 ]) # => 1
(extreme > [1 2 3 ]) # => 3
(freeze @"Ho" ) #=> "Ho"
(freeze ["Ho" ]) #=> ("Ho")
(freeze @["Ho" ]) #=> ("Ho")
(freeze @{"Ho" "Ho" }) #=> {"Ho" "Ho"}
# Get all matches, similar to a global regular expression
(peg/match '(any (+ (<- :a+ ) 1 )) "Hello, world!" )
# => @["Hello" "world"]
(peg/match '(any (+ (number :d ) 1 )) "1A2B3C4D5" )
# => @[1 2 3 4 5]
(peg/match '(any (+ (<- :a+ ) 1 )) "12345" )
# => @[] (net/address "0.0.0.0" 80 ) # => <core/socket-address 0x55CABA438E90>
(net/address "0.0.0.0" 8989 ) # => <core/socket-address 0x55CABA439980>
(var a 0 )
(assert (pos? a ) "A is definitely not positive" )
# error: A is definitely not positive
# in assert [boot.janet] on line 149, column 11
# in _thunk [repl] (tailcall) on line 3, column 1 (os/dir "./" ) # => @[]
(os/shell "touch foo bar baz" ) # => nil
(os/dir "./" ) # => @["foo" "bar" "baz"]
(math/pow 2 8 ) # => 256 (describe {:a 1 }) # => "<struct 0x5564AF1BD6C0>"