For loop linguistic abstraction (usage)
Filip Konvička
filip.konvicka at logis.cz
Mon Feb 26 08:39:21 CET 2007
Uh, sorry....
{Dictionary.condExchange D X 0 O N}
F.
> Hi Craig,
>> Hello,
>>
>> The following code calculates the frequency of elements in a
>> list. How
>> would the second function be written using the for loop linguistic
>> abstraction for lists if possible? Thanks - Craig.
>>
>>
>> declare
>>
>> fun {IncMapForFeature FreqMap X}
>> if {HasFeature FreqMap X} == false then
>> {AdjoinAt FreqMap X 1}
>> else
>> {AdjoinAt FreqMap X FreqMap.X+1}
>> end
>> end
> You can use {CondSelect FreqMap X 1} here.
>> fun {CalcFreqMap List}
>> local
>> fun {CalcFreqMap2 List FreqMap}
>> case List of nil then FreqMap
>> [] X|Xr then {CalcFreqMap2 Xr {IncMapForFeature FreqMap X}}
>> end
>> end
>> in
>> {CalcFreqMap2 List freqmap()}
>> end
>> end
> Beware - you are using List as a local variable name, but it is a
> builtin module name. I suggest you turn on the "variable shadowing"
> compiler flag.
>
> You can do this like this
>
> fun {CalcFreqMap L}
> D={NewDictionary}
> in
> fun X in L do
> O N
> in
> {Dictionary.condExchange D X O N}
> N=O+1
> end
> {Dictionary.toRecord freqmap D}
> end
More information about the mozart-users
mailing list