summaryrefslogtreecommitdiffstats
path: root/utils.scm
blob: 9bb290e54083cfdc1cd7369ba77aa33e218b1d59 (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
30
31
32
33
34
35
36
37
38
(module utils *
  (import scheme
	  (chicken base)
	  (chicken irregex)
	  matchable)

  (define-syntax λ
    (syntax-rules ()
      ((_ expr ...)
       (lambda expr ...))))

  (define-syntax @
    (syntax-rules ()
      ((_ fn-body expr ...)
       (lambda (x) (fn-body expr ... x)))))

  (define (last lst)
    (if (null? (cdr lst))
	(car lst)
	(last (cdr lst))))

  (define (pipe x . fns)
    (match fns
      [() x]
      [(fn . rest) (apply pipe (fn x) rest)]))

  (define (flow . fns)
    (lambda (x) (apply pipe x fns)))

  (define (replace irx replacement in)
    (irregex-replace irx in replacement))

  (define (replace-all irx replacement in)
    (irregex-replace/all irx in replacement))

  (define (submatch m #!optional (index 1))
    (irregex-match-substring m index))
  )