Higher Order Function Question
Raimo Niskanen
raimo@REDACTED
Fri May 24 09:17:38 CEST 2002
I cannot come up with anything better than:
lists:filter(fun (Attr) -> not attr:isPk(Attr) end, SomeList)
or
complement(Fun) -> fun (Attr) -> not Fun(Attr) end.
lists:filter(complement({attr, isPk}), SomeList)
% or
lists:filter(complement(fun isPk/1), SomeList) % within module 'attr'
% or
lists:filter(complement(fun(Attr) -> attr:isPk(Attr) end, SomeList) %
Very pointless with the complement() function
/ Raimo Niskanen, Erlang/OTP, Ericsson AB
Alex Peake wrote:
>
> Can someone help me with this (no doubt simple) problem.
>
> I try:
>
> 1> attr:isPk(Attr).
> false
>
> 2> not attr:isPk(Attr).
> true
>
> 3> not(attr:isPk(Attr)).
> true
>
> but cannot find a permutation/combination of:
>
> 4> apply({attr, isPk}, [A1]).
> false
>
> that can include "not" and work.
>
> Actually, I am trying to lists:filter( ...not isPk... SomeList).
>
> The simple is to define notIsPk(Attr), or perhaps lists:filter( fun(Attr) ->
> .. end but they are not an abstraction of "complement".
>
> Perhaps I should define a function complement(Fn) that returns a function
> that is the complement of the function passed?
>
> Perhaps there is already an Erlang way to do this (I hope).
>
> Alex
More information about the erlang-questions
mailing list