오른쪽 문자열을 변환하는 데 어려움을 겪고 있습니다. 나는 수학 식 (기본적으로 String)를 평가 getEval라는 방법이 있고, 다음과 같이 나는 그것을 다시 얻을 :오른쪽 문자열을 부동으로 변환
이*Main> getEval "3+6"
Right "9"
getEval의 유형 getEval은 다음과 같습니다
*Main> :t getEval "3+6"
getEval "3+6"
:: (Functor m, Control.Monad.CatchIO.MonadCatchIO m) =>
m (Either InterpreterError String)
입니다 :
getEval str = runInterpreter $ setImports ["Prelude"] >> eval str
getEval은 하스켈의 힌트 라이브러리 (Language.Haskell.Interpreter)에서 eval을 사용하여 실제 구문 분석 및 계산을 수행합니다. 어떻게 이것을 부유물에 넣을 수 있습니까?
'liftM read (getEval "3 + 6")'. ghci 유형 서명을 제공해야 할 수도 있습니다. –
liftM이란 무엇입니까? – Niklas9
첫 번째로'Functor' 제약 조건을 간과했기 때문에'fmap'과 의미 상 (의미 상) 같습니다. (모나드 버전도 마찬가지였습니다). 그 타입은'liftM :: Monad m => (a -> b) -> m a -> m b'입니다. –