I love the syntax of Python, but crave the simplicity and power of Lisp.
display "Hello World!" ↦ (display "Hello World!")
define : hello-world ↦ (define (hello-world) display "Hello World!" ↦ (display "Hello World!"))
hg clone http://bitbucket.org/ArneBab/wisp
» Adding namespace support to emacs lisp in a macro with just 15 lines of code - it’s things like this which make lisp feel like the mother of all languages.«1
(defmacro namespace (prefix &rest sexps) (let* ((naive-dfs-map (lambda (fun tree) (mapcar (lambda (n) (if (listp n) (funcall naive-dfs-map fun n) (funcall fun n))) tree))) (to-rewrite (loop for sexp in sexps when (member (car sexp) '(defvar defmacro defun)) collect (cadr sexp))) (fixed-sexps (funcall naive-dfs-map (lambda (n) (if (member n to-rewrite) (intern (format "%s-%s" prefix n)) n)) sexps))) `(progn ,@fixed-sexps)))
(provide 'namespace)
(require 'namespace) (namespace foo (defun bar () "bar") (defun foo (s) "foo"))
(foo-foo (foo-bar))
(Der Hauptteil dieses Codes stammt von vpit3833 und konr und ich darf ihn verwenden. Er funktioniert dank einer Korrektur von Stefan. Er ist nicht perfekt, aber da er mir v.a. dazu dienen soll, meine eigenen Codeschnipsel besser zu organisieren, sollte ich das verschmerzen können)
Der Code mag schwer lesbar sein, hat aber riesige Implikationen: Du als einfacher Endnutzer des Lisp-Interpreters kannst Namespace-Support hinzufügen, ohne dass die Hauptentwickler dafür irgendetwas machen müssen.
Der Code stammt größtenteils aus einer Diskussion auf Stackoverflow. ↩
Update (2013-01-23): The new org-mode removed (org-make-link), so I replaced it with (concat) and uploaded a new example-file: org-custom-link-completion.el.
Happy Hacking!
I recently set up custom completion for two of my custom link types in Emacs org-mode. When I wrote on identi.ca about that, Greg Tucker-Kellog said that he’d like to see that. So I decided, I’d publish my code.
Diese Seite nutzt Drupal.
Design: Arne Babenhauserheide.
Werke von Arne Babenhauserheide.
Lizensiert unter freien Lizenzen.
![]()