Scheme(Gauche)ã§ãã¤ã³ãããªã¼ã¹ã¿ã¤ã«é¢¨å³
;; ãªã¹ã(ããªã¼)ãå¹³å¦åããã (define flatten (letrec ((flatten-rev (fold$ (lambda (x acc) (if (list? x) ;; xãlistãªãå帰å¼ã³åºãçµæãaccã®å é ã«è¿½å ((compose (fold$ cons acc) reverse flatten-rev) x) ;; ãã以å¤ãªãåã«xãaccã®å é ã«è¿½å (cons x acc))) '()))) (compose reverse flatten-rev))); æçµçã«æ£ããé (éé )ã«ãã ;; test (equal? (flatten '((1 2 3) 4 5 (6 (7 8)))) '(1 2 3 4 5 6 7 8)) ;; #t
- åä½ç°å¢ã¯Gauche 0.9.4ã§ãã
compose
ã¯é¢æ°åæã§ã- é¢æ°ã®é¨åé©ç¨ã§ã¯ã
cut
ãã¯ãã便å©ããã§ãã- Gauche ã¦ã¼ã¶ãªãã¡ã¬ã³ã¹: 4.3 æç¶ããä½ã
- é¢æ°ãå
¥ãåã«ãªã£ãå
ã®
<>
ã¾ã§ã¯å¯¾è±¡ã«ãªããªã*3ã®ã§ãããããå ´åã¯ç´ ç´ã«lambdaã§æ¸ãã¾ãã
- ã¾ãã
pa$
é¢æ°ã¯ãé¢æ°ã®é¨åé©ç¨ãã§ãã¾ãã- Gauche ã¦ã¼ã¶ãªãã¡ã¬ã³ã¹: 6.18 æç¶ãã¨ç¶ç¶ åç §ã
- curryåã§ã¯ãªãã®ã§ã
((pa$ cons 1) '(2))
ã¯ã§ãã¦ãã(=>(1 2)
)(((pa$ cons) 1) '(2))
ã¯ã§ãã¾ããã
- 使ãæ¹èª¬æã«ãããã¾ãããå¼æ°ã¯æåã®å¼æ°ããé©ç¨ããã¾ãã
((pa$ string-append "a" "b") "c" "d")
=>"abcd"
- å
æ¥ã®è¨äºã§ã
map$
,filter$
,for-each$
çã®ãªã¹ãå¦çé¢æ°ã使ã£ã¦ãã¾ããã大ä½ãã®ããããææ¡ãã¦ããã°ãã¾ãã¾ãé¢æ°åã¹ã¿ã¤ã«ãªããã°ã©ãã³ã°ãã§ãããã§ãã- ãããããå±éºããªçç¶ãæ¢ã«åºã¦ããæããããã¾ããã
*1:SchemeでF# 風パイプライン演算子を書いてみた - 技術memo
*2:ããã«æ°ã¥ããã«ãããã°ã«æéãããã£ã¦ãã¾ãã¾ããã
*3:ã¾ãæ®éã«èãã¦ç¡çããã§ãã