Точное моделирование дискуссии пользователей имакса об scope илиспа из 24.x (грамматика фраз верна согласно классике):
(defun emacs-users-talks (uNumber)
(interactive "nNumber of users: ")
(let ((buf (get-buffer-create "emacs-users-talks"))
(opinions '("good" "bad"))
speaked
curUser
curOpinion)
(if (< uNumber 2) (setq uNumber 2))
(switch-to-buffer buf)
(insert (format "\nThe discussion of elisp scope between %d Emacs users:\n\n" uNumber))
(while (not (>= (length speaked) uNumber))
(setq curUser (random uNumber))
(add-to-list 'speaked curUser)
(setq curOpinion (format "Dynamic scope %s, lexical %s!"
(nth (% curUser 2) opinions)
(nth (% (+ curUser 1) 2) opinions)))
(insert (format "'%s' says user #%d.\n" curOpinion (+ 1 curUser)))
)))
Это можно вставить в scratch буфер, нажать C-x C-e, потом M-x emacs-users-talks
(defun emacs-users-talks (uNumber)
(interactive "nNumber of users: ")
(let ((buf (get-buffer-create "emacs-users-talks"))
(opinions '("good" "bad"))
speaked
curUser
curOpinion)
(if (< uNumber 2) (setq uNumber 2))
(switch-to-buffer buf)
(insert (format "\nThe discussion of elisp scope between %d Emacs users:\n\n" uNumber))
(while (not (>= (length speaked) uNumber))
(setq curUser (random uNumber))
(add-to-list 'speaked curUser)
(setq curOpinion (format "Dynamic scope %s, lexical %s!"
(nth (% curUser 2) opinions)
(nth (% (+ curUser 1) 2) opinions)))
(insert (format "'%s' says user #%d.\n" curOpinion (+ 1 curUser)))
)))
Это можно вставить в scratch буфер, нажать C-x C-e, потом M-x emacs-users-talks
Permalink: https://plus.google.com/115290581164606462017/posts/EMAYW5L8Nu6