как я могу сгруппировать getX и putX в экземпляре класса?приведенный ниже код является ответом на этот пост Метод установки классов в Haskell с использованием State-Monad
import Control.Monad.State
data Point = Point { x :: Int, y :: Int } deriving Show
getX :: State Point Int
getX = get >>= return . x
putX :: Int -> State Point ()
putX newVal = do
pt - get
put (pt { x = newVal })
increaseX :: State Point ()
increaseX = do
x - getX
putX (x + 1)
Позже, я надеюсь, я реализую установщики и получатели для иерархии из 2 классов, носейчас я просто хочу сделать что-то вроде этого:
class A a where
putX :: Int -> State Point ()
instance A (State Point) where
putX newVal = do
pt - get
put (pt { x = newVal })