Post something only your language can do. My contribution: I double dare you to do that in your language. Probably takes a fucking parser! javadocs don't count cuz its crap.
(defun print-package-documentation (package)
"Lists package external symbols and prints
their documentation"
(let ((doc-types '(compiler-macro function method-combination
setf structure type variable))
undocumented)
(do-external-symbols (s package)
(let ((docstrings (remove-if-not #'identity
(mapcar (lambda (doc-type)
(documentation s doc-type))
doc-types))))
(if docstrings
(format t "~A: ~%~{ ~A~%~}" s docstrings)
(push s undocumented))))
(when undocumented
(format t "The following symbols are undocumented:~%~{~A~^, ~}~%"
undocumented))))
E.g.:
m1cr0p3n1z> (print-package-documentation :cffi)
FOREIGN-STRING-ALLOC:
Allocate a foreign string containing Lisp string STRING.
The string must be freed with FOREIGN-STRING-FREE.
FOREIGN-SLOT-POINTER:
Return the address of SLOT-NAME in the structure at PTR.
MAKE-SHAREABLE-BYTE-VECTOR:
Create a Lisp vector of SIZE bytes can passed to
WITH-POINTER-TO-VECTOR-DATA.
...
The following symbols are undocumented:
LISP-STRING-TO-FOREIGN, FREE-TRANSLATED-OBJECT, CALLBACK, INCF-POINTER, EXPAND-TO-FOREIGN, FREE-CONVERTED-OBJECT, TRANSLATE-FROM-FOREIGN, CONVERT-TO-FOREIGN, WITH-FOREIGN-OBJECTS, EXPAND-FROM-FOREIGN, FOREIGN-POINTER, LOAD-FOREIGN-LIBRARY-ERROR, GET-CALLBACK, FOREIGN-SYMBOL-POINTER, DEFCALLBACK, DEFINE-FOREIGN-TYPE, EXPAND-TO-FOREIGN-DYN, USE-FOREIGN-LIBRARY, CONVERT-FROM-FOREIGN, FOREIGN-FUNCALL-POINTER, TRANSLATE-TO-FOREIGN
NIL
>>22
What I'm getting at, for those of you to stupid to substitute words in a sentence, is that claiming a lack of documentation is a problem specific to lispers is intellectually dishonest, as evidenced by the vast body of non-lisp open source code.
>>25
And what I'm saying is that by explicitly singling them out, you are effectively saying that "only" Lispers don't. But since you are going to generalize to all Lispers, I'm going to presume you conveniently forget things like Emacs and PLT, which are both documented pretty well.
>>26
Come off that bullshit already. I've disproven you hundreds of times.
Name:
Anonymous2010-05-21 22:30
>>30
no, you haven't. the only way you can do it in your toy language is by creating an ad-hoc, informally specified, slow implementation of half of ecmascript.
>>32
everyone knows he was just an FIOC faggot who was trying to use poorly-formatted javascript to make FIOC seem appealing. >>31 obviously isn't him.
>>35 Prelude> let on = flip ((.).(.))
Prelude> let foo = (,) `on` (*2)
<interactive>:1:20:
No instance for (Num (a, a1))
arising from a use of `*' at <interactive>:1:20-21
Possible fix: add an instance declaration for (Num (a, a1))
In the second argument of `on', namely `(* 2)'
In the expression: (,) `on` (* 2)
In the definition of `foo': foo = (,) `on` (* 2)
Prelude>
Name:
Anonymous2010-05-22 4:04
>>35-36
why not do this instead? Prelude> :m + Control.Arrow Control.Monad Control.Monad.Instances
Prelude Control.Arrow Control.Monad Control.Monad.Instances> let { both = join (***); foo = curry $ both (*2) }
Prelude Control.Arrow Control.Monad Control.Monad.Instances> foo 2 3
(4,6)
Name:
Anonymous2010-05-22 10:04
>>26
I've already shown how to add call-stack access functionality to Common Lisp, and shown how to implement your example here: