[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: How to quote a list of functions?
From: |
Pascal J. Bourguignon |
Subject: |
Re: How to quote a list of functions? |
Date: |
Tue, 18 Aug 2015 03:43:32 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) |
Emanuel Berg <embe8573@student.uu.se> writes:
> "Pascal J. Bourguignon" <pjb@informatimago.com>
> writes:
>
>> NO! This is the point exactly!
>>
>> upcase-region is NOT a function. It is a symbol that
>> _designates_ a function.
>
> OK. But this isn't how I think. Is this - 1 - one?
> Or is is a char that designates the digit one?
Well, you better get up to speed, because this is how things are.
'(#x1 #o1 #b1 1 1.) ; are all different representations of 1!
--> (1 1 1 1 1)
But in lisp, we often just don't consider the textual representation of
the object, since both the source code and the data are sexps, we
consider rather those lisp objects. 1 is 1, and "#x1" and "1" are two
textual representation of the same object. In this case, there's no
"number designator". But you could define such a thing and say for
example that a string containing a representation of a number could
designate a number, and you could define functions taking number
designators:
(defun number-designator-p (object)
(or (numberp object)
(numberp (car (read-from-string object)))))
(list (number-designator-p 42)
(number-designator-p "42")) --> (t t)
(defun designated-number (nd)
(assert (number-designator-p nd))
(if (numberp nd)
nd
(car (read-from-string nd))))
(defun plus (nda ndb)
(+ (designated-number nda) (designated-number ndb)))
(plus 1 "42") --> 43
> And, are you suggesting every time a function or
> "function symbol designation" is used, the programmer
> should check the context to determine if what is
> expected is the function, or a symbol designating
> a function?
Yes, you should think about the type of the objects you pass to
functions.
To a function that takes a function designator, you can pass a symbol
naming a function, or a function.
To a function that takes a symbol, you can only pass a symbol.
(quote f) returns the symbol f.
(function f) returns the function named by f in the lexical scope.
Therefore you cannot pass (function f) to put.
Again, (cl-flet ((f () 'hi)) (put (function f) 'disabled nil))
Debugger entered--Lisp error: (wrong-type-argument symbolp (lambda nil (quote
hi)))
> And again, when and why are functions refered to not
> using symbols to designate them?
When you use themselves to refer to themselves.
(let ((f (symbol-function 'sin)))
(funcall f (/ pi 3))) --> 0.8660254037844386
> Isn't the most natural way to refer to a function (or
> anything else) just to type its name?
No, not in a language that treats functions as first class objects.
> What are we gaining from having people and not
> computers deal with this distinction?
You are gaining that you can manipulate functions, have anonymous
functions, write high order functions, etc.
--
__Pascal Bourguignon__ http://www.informatimago.com/
“The factory of the future will have only two employees, a man and a
dog. The man will be there to feed the dog. The dog will be there to
keep the man from touching the equipment.” -- Carl Bass CEO Autodesk
- Re: How to quote a list of functions?, (continued)
- Message not available
- Re: How to quote a list of functions?, Pascal J. Bourguignon, 2015/08/18
- Re: How to quote a list of functions?, Stefan Monnier, 2015/08/18
- Re: How to quote a list of functions?, Pascal J. Bourguignon, 2015/08/19
- get all functions (was: Re: How to quote a list of functions?), Emanuel Berg, 2015/08/20
- Message not available
- Re: How to quote a list of functions?, Rusi, 2015/08/18
- Message not available
- Re: How to quote a list of functions?, Pascal J. Bourguignon, 2015/08/18
- Message not available
- Re: How to quote a list of functions?,
Pascal J. Bourguignon <=
- Re: How to quote a list of functions?, Emanuel Berg, 2015/08/18
- Message not available
- Re: How to quote a list of functions?, Pascal J. Bourguignon, 2015/08/16
- Re: How to quote a list of functions?, tomas, 2015/08/17
- Re: How to quote a list of functions?, Emanuel Berg, 2015/08/17
- Re: How to quote a list of functions?, Marcin Borkowski, 2015/08/18
- Re: How to quote a list of functions?, Emanuel Berg, 2015/08/18
- Re: How to quote a list of functions?, Marcin Borkowski, 2015/08/19
- Re: How to quote a list of functions?, tomas, 2015/08/19
- Re: How to quote a list of functions?, Emanuel Berg, 2015/08/21
- Message not available
- Re: How to quote a list of functions?, Pascal J. Bourguignon, 2015/08/21