Hi Alex,

Thanks for the reply, and for suggesting a better solution than the one I made 
up. I have no immediate use for such a 'sindex' function, and maybe this is not 
a function that one would need very often when doing things the PicoLisp way.

Have a nice weekend!


On 12. sep. 2014, at 16:06, Alexander Burger <a...@software-lab.de> wrote:

> Hi Jon,
>> The other day I noticed that I hadn't seen a PicoLisp function for
>> locating a string fragment within a longer string. Is there one that I
>> just have failed to notice?
> Yes, that's right. In fact, the only functions which I would regard as
> "string manipulations" (i.e. operate directly on a symbol name) are
>   pre?
>   sub?
>   uppc
>   lowc
> This is on purpose. In general, arbitrary manipulations of string data
> are supposed to be done with the (quite rich) set of List functions
> (after 'chop'ing the symbol name, for example). This gives much more
> flexibility and avoids duplicate functionalities.
>> It is quite common for programming languages
>> to have an "index" function that does this. PicoLisp has an 'index'
>> function, but that one cannot be used like this: (index "Li" "PicoLisp")
> The above 'sub?' is close to it, but doesn't return a position.
>> One way to make up the function I'm missing, could be like this:
>> (de sindex (Frag Src)
>>   (if (match (make (link '@A) (mapcar link (chop Frag)) (link '@B)) (chop 
>> Src))
>>      (length @A) ) )
> It is not a good idea to build a list only to count its length. Better
> count in a loop directly, e.g.:
>   (de sindex (Frag Src)
>      (for ((I . L) (chop Src) L (cdr L))
>         (T (pre? Frag L) I) ) )
>> Then (sindex "Li" "PicoLisp") would give 4. Maybe it would be
>> preferable for it to give 5.
> Yes, the above returns 5. This is more in sync with the PicoLisp
> convention of counting elements from 1.
>> As it is quite common for PicoLisp functions to have different
>> behaviours depending on the type of input, the behaviour of my 'sindex'
>> could also be made a part of the standard PicoLisp 'index' function.
> I must say that rings an alarm in my head when index numbers are used to
> operate on lists (or symbol names). Usually there is a better way. What
> do you need this function for?
> ♪♫ Alex

PԔ � &j)m����X�����zV�u�.n7�

Reply via email to