[plt-scheme] procedure instrospection
FWIW, I'd be a very interested client of well-designed introspection
facilities for PLT Scheme. For language experimentations that would be
very valuable, at least from my perspective. Macros already give a
nice bit of extensibility, but I've hit the lack of introspection on
lambdas a couple of times already.
Maybe if the PLT team does not want to directly support it in the
core, adding necessary hooks (in the Open Implementation line of
thought) would be feasible? This would avoid everyone that needs some
facilities to implement completely ad-hoc solutions.
-- Éric
On Apr 18, 2009, at 14:17 , Eli Barzilay wrote:
> On Apr 18, Jose A. Ortega Ruiz wrote:
>> Eli Barzilay <eli at barzilay.org> writes:
>>
>>> But the name for the "optional" in the above is `b'... I've put
>>> "optional" in quotes since it doesn't have to be an optional
>>> argument, it can be anything, and can have behavior that is not
>>> related to the other cases in the `case-lambda' form (that's why I
>>> used different strings in the above). The resulting arities can
>>> also be arbitrary, for example:
>>>
>>> (case-lambda [(x) 1]
>>> [(a b c) 2]
>>> [(i j k l m) 3])
>>>
>>> has an arity list of (1 3 5), which cannot be described with such
>>> an `#:optional'.
>>
>> OK, i see your point now. what about something like:
>>
>> (foo [x] [a b c] [i j k l m])
>>
>> or
>>
>> (foo [(x) (a b c) (i j k l m)])
>>
>> ?
>>
>>> Here's another random example from the texpict collection:
>>>
>>> (define inset/clip
>>> (case-lambda
>>> [(p l t r b) ...]
>>> [(p h v) (inset/clip p h v h v)]
>>> [(p a) (inset/clip p a a a a)]))
>>
>> one could even try to be smart and share common prefixes:
>>
>> (insert/clip p [l t r b] [h v] [a])
>>
>> does that make sense?
>
> [Yes -- but that's a presentation issue. My point was that there are
> all of these additional considerations to make.]
>
> --
> ((lambda (x) (x x)) (lambda (x) (x x))) Eli
> Barzilay:
> http://www.barzilay.org/ Maze is
> Life!
> _________________________________________________
> For list-related administrative tasks:
> http://list.cs.brown.edu/mailman/listinfo/plt-scheme