Hello,
Below is an interpretation of some concatenative combinators in Scheme.
Here are some simple examples:
> ((bi sin cos list) 0)
(0 1)
> ((tri sin cos tan list) 0)
(0 1 0)
> ((bi* sin cos list) 0 0)
(0 1)
> ((tri* sin cos tan list) 0 0 0)
(0 1 0)
> ((bi@ sqrt list) 4 9)
(2 3)
> (define square (dup *))
> (square 4)
16
> (define cube (dup (dup/2 *)))
> (cube 3)
27
While in Factor there is 'bi' and 'tri', what is the unary case and what
does it mean?
(define (uni f c)
(lambda (x)
(c (f x))))
It is simply compose.
Ed
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (bi f g c)
(lambda (x)
(c (f x)
(g x))))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (tri f g h c)
(lambda (x)
(c (f x)
(g x)
(h x))))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (bi* f g c)
(lambda (x y)
(c (f x)
(g y))))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (tri* f g h c)
(lambda (x y z)
(c (f x)
(g y)
(h z))))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (bi@ f c)
(lambda (x y)
(c (f x)
(f y))))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (dup c)
(lambda (x)
(c x x)))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (dup/2 c)
(lambda (x y)
(c x y y)))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (swap c)
(lambda (x y)
(c y x)))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (drop c)
(lambda (x)
(c)))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (drop/2 c)
(lambda (x y)
(c x)))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (ifte test ca cb)
(lambda (x)
(if (test x)
(ca x)
(cb x))))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
Factor-talk mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/factor-talk