|
a preface
soo
(23 Mar 2004 16:18 UTC)
|
|
Re: a preface
David Van Horn
(24 Mar 2004 07:38 UTC)
|
|
Re: a preface
soo
(24 Mar 2004 12:19 UTC)
|
|
Re: a preface
David Van Horn
(24 Mar 2004 19:38 UTC)
|
|
Re: a preface soo (25 Mar 2004 12:32 UTC)
|
|
Re: a preface
Francisco Solsona
(24 Mar 2004 16:45 UTC)
|
* From: David Van Horn <xxxxxx@cs.uvm.edu>
* Date: Wed, 24 Mar 2004 14:36:11 -0500
* Subj: Re: a preface
| soo wrote:
>> >> Title
>> >> Formatting
>> | Although succinct, this is completely nondescript, as is the identifier fmt.
Why not let-recursive? Why not exponent? Why not abstract?
But I don't adhere to this name of the procedure and I can follow Whatever
most people agree to.
>> >> Abstract
>> >> This SRFI introduces the FMT procedure that converts any object to a string.
>> >> Unlike the procedure called FORMAT, this FMT procedure takes one object as the
>> >> first argument and accepts several optional arguments.
>> | This abstract doesn't outline the need for, and design of, the proposal as
>> | required by the SRFI Process Document.
>> >> Rationale
>> >> The FMT procedure provides a handy optional and functional interface.
>> | This rationale is less than detailed.
>> I don't think so.
| Great, we're getting nowhere fast.
Not we but I.
| Seriously, the word "formatting" conveys no information to me.
The word reminds me of a procedure FORMAT.
|What are you
| formatting?
Any object.
|How?
Through FMT procedure.
|Why?
The same as FORMAT.
|-- Answers to these questions should appear somewhere
| in the SRFI document.
Even though you are in the right, that's none of your business.
The SRFI Process Document says: At the discretion of the editors, a proposal
that does not completely conform may be moved to draft status (although it
must conform before it will be moved to final status).
>> | The SRFI document must contain a detailed specification. This should be
>> | detailed enough that a conforming implementation could be completely created
>> | from this description. I don't think that is true of the current specification.
>> I have never seen any example of spec of this sort of parameters.
>> Let me know the way to describe this spec.
| Rather than assuming there is a problem with the specification, have you
| considered this is perhaps a poor way of designing parameters to a
| function?
No. Please let me know the way to describe the spec of this sort of procedure.
| I would rather see a keyword syntax, or pass in a record to fmt, or fix the
| order of arguments.
I have no ideas to express the function of FMT in those ways.
Please, Let me show an example.
|The current approach 1) has no precedent as far as I'm
| aware
Have you never tried anything new?
|2) is not extensible
What is not extensible?
|3) makes it very difficult to read the uses of this
| procedure and predict what the result will be.
I don't think so. Please check SPEC and EXAMPLES of this SRFI document.
>> | Regardless, allowing arbitrary order and arbitrary omission of arguments seems
>> | an especially fragile way to specify a procedure. This is why you have to
>> | stipulate things like: "<depth> or <count> can be defined only after <width> is
>> | defined." If we add more parameters to fmt this problem will blow up, quick.
I know Scheme procedures can have a variable number of arguments. If the
function of the arbitrary order can be added, it will be more convenient to
use the procedure.
Example:
(read-line [<port>] [<option>])
* <port> is an input-port.
* <option> is a symbol: 'trim 'concat ...
(define (read-line . port-option) ...)
If read-line is defined in conventional way, it is used like this;
(read-line)
(read-line <input-port>)
(read-line <input-port> 'concat)
But if read-line is defined in FMT's way, it can be used like this;
(read-line)
(read-line <input-port>)
(read-line 'concat)
(read-line 'concat <input-port>)
(read-line <input-port> 'concat)
Why not convenient?
If the type or the required value of the arguments is different, FMT's way
follows a free sequence style. If not, FMT's way follows floating sequence
style (cf. Every conventional way follows fixed sequence style.).
In conclusion, The read-line procedure can be defined in free sequence style
and the FMT procedure is defined in both free sequence and floating sequence
style.
>> | Why does fmt have two very distinct behaviors?
Because the required optional arguments are different according to the type.
>> | Why not have two distinct
>> | procedures?
Why must have two procedure? Inspite of the same processing course and return
type(string).
>> | Why have a <show> parameter when you can just apply that function to fmt's
>> | result?
To write an object to a string port.
>> |And further, why are you allowed to pass in only display or write?
FMT needs only display and write.
>> | Why have <string> parameters when you have string-append?
For convenience.
I would like to use FMT like this:
(fmt 123 (fmt 1234 '(1 1) ...) "string" (fmt ...) ...)
instead of
(string-append (fmt 123) (fmt 1234 '(1 1)) ... "string" (fmt ...) ...).
Do this incommode you?
>> I think they are FMT's forte.
| I don't understand this response. Could you elaborate on what fmt's "forte"
| is specifically or respond directly to my questions.
| I agree with Jens that a SRFI for the easy formatting of numbers as strings is
| a good idea. However, I would expect such a SRFI to be titled something along
| the lines of "Easy Formatting of Numbers as Strings", to include a rationale
| detailing why such a SRFI is a good idea, and to include a rationale as to why
| the given proposal is a good realization of that idea.
| I'm finding it very difficult to provide constructive feedback because I can't
| discern from the document what your intentions are at all. What problem does
| this SRFI address?
A Note in Preface is helpful.
| David
--
INITERM