Compare commits

..

10 Commits

@ -0,0 +1,52 @@
# tk
tk is my Guile toolkit.
Each unit contains a group of tools I commonly used together or with a
particular module.
`make; sudo make install` Will install source files to `(%site-dir)` and
compiled versions to `(%site-ccache-dir)`. All units are installed under a
folder named `tk/` and so are imported using `(use-modules (tk <unit>))`.
## short.scm
Aliases for only the most common names. I use this literally everywhere
`(string->symbol)` => `(ss>)`
`(symbol->string)` => `(ss<)`
`(ssa>)` appends strings into a symbol
## listlogic.scm
Various logical tools. Especially useful for handling `map` and `fold` where a
default path is required.
`(display-if-not)`
Displays a given string if the first argument is `#f`
`(flatten)`
De-nests lists into a form where no `(car)` contains a list
`(lp&)`
Tests some predicate pairwise over two lists
`(l&)`
Tests the equality according to `eq?` over two lists, returns as a list
all passing elements
`(if-some)`
The common `(if var var)` pattern
`(if-some-else)`
The common `(if var var default)` pattern
## mcron.scm
Constants and functions for working with time, schedules and mcron.
`sec/min` `sec/hour` `sec/day` `sec/week`
Useful constants
`sec/mins` `sec/hours` `sec/days` `sec/weeks`
Readable shortcuts, `(sec/mins 4)` rather than `(* 4 60)` or worse `240`
`(step-from)`
Normalize a time to be the next step sized increment from a base time
`(str->secs)`
`(strf->secs)`
Converts a date string into seconds
`(current-date-string)`
`(yesterday-date-string)`
Returns the date as a string for logging purposes
## ports.scm
Convenience when working with ports and parsers.
`(port-rewind!)`

@ -1,5 +1,6 @@
(define-module (tk listlogic)
#:export (flatten
#:export (display-if-not
flatten
lp&
l&
if-some
@ -57,3 +58,14 @@
(syntax-rules ()
((if-some-else $cond $else)
(if $cond $cond $else))))
;; Prints the message if condition is #f, otherwise prints nothing
(define-syntax display-if-not
(syntax-rules ()
((display-if-not $cond)
(syntax-error "Must provide a string to (display-if-not)"))
((display-if-not $cond $message)
(begin (if (not $cond) (begin (display $message)
(newline)))))
((display-if-not $cond . $messages)
(display-if-not $cond (string-concatenate/shared `$messages)))))
Loading…
Cancel
Save