[Haskell-cafe] Beginners arrow question

Claude Heiland-Allen claudiusmaximus at goto10.org
Sat Apr 5 14:27:33 EDT 2008


Paul Johnson wrote:
> I'm using arrows for the first time, with HXT.  I think I'm getting the 
> hang of it, but one problem has me stumped.  I have a function 
> "lookupFormatter" which takes a string and returns an arrow, and I want 
> to use that arrow.  Something like this:
> 
> myProblem :: (ArrowXml a) -> a XmlTree String
> myProblem = proc xml do
>   name <- getAttrValue "name" -< xml
>   fmt <- arr lookupFormatter -< name
>   fmt -< xml
> 
> But I can't figure out how to do it.  I get "fmt: not in scope".

ArrowApply is one way, if there is an instance for it:


module Main where

import Control.Arrow

adder :: (Arrow a) => Int -> a Int Int
adder i = arr (i+)

adderUser :: (ArrowApply a, Arrow a) => a Int Int
adderUser = proc x -> do
   a <- arr adder -< x
   y <- app -< (a,x)
   returnA -< y

main = mapM_ (print . (adderUser :: (->) Int Int)) [1..10]


Claude
-- 
http://claudiusmaximus.goto10.org


More information about the Haskell-Cafe mailing list