[Haskell-cafe] How to implement a digital filter, using Arrows?

John Lask jvlask at hotmail.com
Thu Oct 20 23:48:42 CEST 2011


On 21/10/2011 3:00 AM, David Barbour wrote:

the f in (Automaton f) is a pure funtion runAuto is deconstructing the 
arrow by pattern matching then applying the function to the input to 
obtain the result and the continuation.

i.e. runAuto takes an arrow and applies it to a value.

> On Thu, Oct 20, 2011 at 5:19 AM, Captain Freako<capn.freako at gmail.com>wrote:
>
>> Hi David,
>>
>> I was referring to the `f' in the `runAuto' function, not the `liftAu'
>> function.
>>
>> -db
>>
>>
> Ah, I see. You quoted one thing and spoke of another, and I got all
> confused. Keep in mind that functions are arrows (instance Arrow (->)).
>
>> type FilterAu b c = Automaton (->) b c
>> runAuto :: FilterAu b c ->  [b] ->  [c]
>> runAuto a             []     = []
>> runAuto (Automaton f) (x:xs) = let
>>    (y,a) = f x
>>    in y:runAuto a xs
>




More information about the Haskell-Cafe mailing list