4

クロージャを使用して、Elisp に Haskell のような高次関数を実装しようとしています。

;;; -*- lexical-binding: t -*-
(defun foo (pair)
    (car pair))
(defun* .curry (fn)
    (lambda (x y &rest args) (apply fn (cons x y) args)))

((lambda (x y) (1+ x)) 2 3)
((lambda (&rest args) (apply (.curry #'foo) args)) 2 3)
(funcall (.curry #'foo) 2 3)
((.curry #'foo) 2 3)

問題は、最後の行が error を返すことInvalid functionです。したがって、クロージャーは正常な機能とは見なされていないようです。で使用できます(.curry #'foo)mapc、フックでは使用できません。それについて私にできることはありますか?

4

1 に答える 1