I was trying to follow along in this email and my version of Mozart/Oz
doesn't appear to have Record.hasFeature. I am running the binaries
for OS X. Do I need to import anything? The output isn't complete
but here is the results of {Show Record} (I can't seem to copy from
the tk Browse window) to show that my Record modules seem to be valid
except for the hasFeature function:
record(adjoin:<P/3 Record.adjoin> adjoinAt:<P/4 Record.adjoinAt>
adjoinList:<P/3 Record.adjoinList> all:<P/3 Record.all> allInd:<P/3
Record.allInd> arity:<P/2 Record.arity> clone:<P/2 Record.clone>
dropWhile:<P/3 Record.dropWhile> dropWhileInd:<P/3
Record.dropWhileInd> filter:<P/3 Record.filter> ,,,)
On Oct 3, 2010, at 9:27 AM, Wolfgang Meyer wrote:
If you want to check whether a record contains a value as a key, you
can use "Record.hasFeature":
{Show {Record.hasFeature unit(test:42) test}}
This is an efficient function with constant lookup time.
If you want to know whether one of the fields of a record is equal to
a value, you can either convert it to a list and use List.member, like
this:
{Show {List.member 42 {Record.toList unit(test:42)}}}
Or you use the high-order function Record.some like this:
{Show {Record.some unit(test:42) fun {$ V} V==42 end}}
Both of these methods have a O(N) lookup time, i.e. the larger the
record, the slower the test will be.
Hope this helps,
Wolfgang
On Sun, Oct 3, 2010 at 2:15 PM, Peter Breitsprecher
<[email protected]> wrote:
I am trying to write a very simple little program that will search
a record
and give me a result of true if the word is in the record, false if
it
isn't.
as an example...
Lex=lex(1:X1 2:X2 3:X3 4:X4)
declare
fun {IsItThere W}
if Lex.W \=nil then true
else
false
end
end
Firstly it doesn't work right, and I think I have the semantics
wrong for
using a record. If it were a list i would use the case statement
and pull
the head off compare them, and repeat it until the list was nil.
But for a
record to see if it is in there at all, you just have to {Browse
Lex.W} and
it would come up with the result if it is there or an error if it
isn't.
Can I make this a boolean function easily?
Kurt
--
Kurt Breitsprecher
(807) 474-9601
[email protected]
_________________________________________________________________________________
mozart-users mailing list
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users
_________________________________________________________________________________
mozart-users mailing list
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users
_________________________________________________________________________________
mozart-users mailing list
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users