[Prev][Next][Index][Thread]

Re: Another one: strings in method definitions?




Bruce Hoult wrote in message ...
>In article <874s87i1m0.fsf@ethereal.dyndns.org>, Nolan Darilek
><nolan@ethereal.dhis.org> wrote:
>
>> I have the following method definition:
>>
>> define method output-c-type
>>      (value :: <c-pointer-type>, name :: <string> = "anonymous", #key
>anonymous = #t)
>>  => (result :: <string>)
>>
>> But, that doesn't work; d2c complains that none of the main method
>> definition rules work. Removing the default value for name compiles,
>> but that isn't what I want. I tried 'make(<string>, "anonymous")' and
>> as(<string>, "anonymous") with no luck.
>>
>> What obvious point am I missing now? :)
>
>It should be (ignoring the keyword):
>
>define method output-c-type
>     (value :: <c-pointer-type>, name == "anonymous")
>
>... or ...
>
>define method output-c-type
>     (value :: <c-pointer-type>, name :: singleton("anonymous"))
>


Um, better watch out if you're trying to use \== on strings!

>Basically, "name" isn't of type "string", it's of type "this 'ere
>particular string".  The 'name == "anonymous"' syntax is just ahandy
>shortcut for the real thing, which is the one using the "singleton"
>function.
>
>-- Bruce





Follow-Ups: References: