Re: Possible idea for a new built-in in Eu 2.4

new topic     » goto parent     » topic index » view thread      » older message » newer message

----- Original Message -----
From: <Christian.CUVIER at agriculture.gouv.fr>
To: "EUforum" <EUforum at topica.com>
Subject: Possible idea for a new built-in in Eu 2.4


>
> Hi the list!
> I often wind up with having to search for a key at a fixed place in a
> sequence of sequences. The following obviously does the job:
>
> <code>
> function ffind(object key,integer field,sequence target)
> --scans the field-th elements of target for key
> --returns index of first record with matching entry or 0 if none found
> for i=1 to length(target) do
> if target[i][field]=key then return i end if
> end for
> --not found in this "column"
> return 0
> end function
> </code>

What happens when key is a sequence? The above function looks to work best
for atoms,. Try it this way

-------------------------------------------
function ffind(object key,integer field,sequence target)
-------------------------------------------
   for n = 1 to length(target) by 1 do
       if not compare(target[n][field],key) then
          return n
       end if
   end for
   return 0
end function

>
> But it may be slow if target is large enough, and I suspect that,
> internally, there could be a way to do something like
>
> <notional code>
> function ffind(object key,integer field,sequence target)
> --same purpose, args and returns as above
> return find(key,target[..][field])
> end function
> </notional code>

Yes, i think if there was an internal way of doing that it would be
helpful....however there is none that i know of. It all boils down to
looping through the sequence, sorry

Jordah
>
> Would the built-in be significantly faster? And is there a chance that
> it appears in Eu 2.4?
>
> CChris
>
>
>
> TOPICA - Start your own email discussion group. FREE!
>


---

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu