Commits

llibra committed ce87533

Introduced CL-FN.NAMED-LET:NAMED-LET.

From Scheme.

Comments (0)

Files changed (2)

 
 (defun flip (fn x y)
   (funcall fn y x))
+
+(in-package :cl-fn.named-let)
+
+(defmacro named-let (name bindings &body body)
+  (flet ((var (x) (if (consp x) (car x) x))
+         (val (x) (if (consp x) (cadr x) nil)))
+    `(labels ((,name ,(mapcar #'var bindings) ,@body))
+       (,name ,@(mapcar #'val bindings)))))
   (:use :cl)
   (:export :flip))
 
+(defpackage :cl-fn.named-let
+  (:use :cl)
+  (:export :named-let))
+
 (defpackage :cl-fn
   (:use :cl :cl-fn.fn :cl-fn.alias :cl-fn.comp :cl-fn.pa :cl-fn.sapply
-        :cl-fn.flip)
+        :cl-fn.flip :cl-fn.named-let)
   (:export :fn :defalias :compose :conjoin :disjoin :curry :rcurry
-           :sequentially-apply :chain :-> :->> :flip))
+           :sequentially-apply :chain :-> :->> :flip :named-let))
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.