summaryrefslogtreecommitdiff
path: root/src/contrib/prod-bless-srfi.el
blob: 7511eb5fbd2d7c9321f240b47a27b5ddf5236baa (plain)
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
;;; prod-bless-sfri --- Super Required Free Ideas -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:

(require 'fig-bless)
(require 'dash)
(require 's)

(defvar prod-bless-sfri
    (list
        ; irreplacable (within reasonable fuel) functions
        (cons 'reverse (fig//bless-helper-unary 'reverse))
        (cons 'concat (fig//bless-helper-binary (lambda (a b) (concat a b))))
        (cons 'substring (lambda (s) (fig//bless-manage-fuel) (cons (substring (nth 2 s) (cadr s) (car s)) (nthcdr 3 s))))
        (cons 'contains (fig//bless-helper-binary (lambda (a b) (s-contains? b a)))) ; car needle, cadr haystack
        (cons 'number (fig//bless-helper-unary 'string-to-number))
        (cons 'string (fig//bless-helper-unary 'number-to-string))
        (cons 'random (fig//bless-helper-unary 'random))
        ; semi-replacable functions
        (cons 'length (fig//bless-helper-unary 'length))
        (cons 'bundle (lambda (s) (fig//bless-manage-fuel) (cons (-take (car s) (-drop 1 s)) (-drop (+ (car s) 1) s))))
        (cons 'split (fig//bless-helper-binary (lambda (a b) (s-split b a))))
        (cons 'join (fig//bless-helper-binary (lambda (a b) (s-join b a))))
        (cons 'filter (fig//bless-helper-binary (lambda (a b) (-filter b a))))
        (cons 'any (fig//bless-helper-binary (lambda (a b) (-any? b a))))
        (cons 'all (fig//bless-helper-binary (lambda (a b) (-all? b a))))
        ; replacable (but forthy) functions
        (cons 'rot (lambda (s) (fig//bless-manage-fuel) (cons (-last-item s) (-butlast s))))
        (cons 'over (lambda (s) (fig//bless-manage-fuel) (cons (cadr s) s)))))