私はこの機能を持っています:
data Memory = Memory
    {visited::[Point]
    ,dfsstack::[Point]
    ,currentPoz::Point
    }deriving(Eq)
perceiveAndAct :: SVal -> [Cardinal] -> a -> (Action, a)
perceiveAndAct s cs m
  | elem W cs == True && elem N cs == True && elem E cs == True && elem S cs == False = (Just S, Memory (visited m) (dfsstack m) (currentPoz m))
代わりに m を置くと  Memory (visited m) (dfsstack m) (currentPoz m)正常に動作します。そうでなければ、次のようになります。
Couldn't match expected type `(a, b)'
           against inferred type `Memory -> Point'
    In the first argument of `fst', namely `currentPoz'
    In the first argument of `($)', namely `fst currentPoz'
    In the expression: fst currentPoz $ currentPoz m
何が問題なのですか?