【问题标题】:Power given in a String to Integer [duplicate]以字符串形式给出整数的幂[重复]
【发布时间】:2016-12-20 04:42:28
【问题描述】:

我们知道how to convert a String to an Integer 是一个字符串,例如"50"。假设字符串是"2^3",如何从中得到8?当事先不知道该操作是一种电源时,是否有什么东西可以工作,也可以为"2+3"等工作?

【问题讨论】:

  • 这听起来像一个解析器。 “etc”到底是什么意思,即您要解析的语法是什么?
  • @melpomene 一个基本表达式,其结果为整数,例如 a+b、a*b、a^b、a+b+c。
  • @Sibi 看起来不错!我会试试的。

标签: haskell


【解决方案1】:

嗯,你可以试试QuasiQuotes这个:

ghci> :set -XQuasiQuotes
ghci> :set -XTemplateHaskell
ghci> let a = [|1 + 1|]
ghci> $a
2
ghci>

【讨论】:

  • 很好,但输入不是作为字符串给出的。
  • 没有 TH 你也可以这样做:let a = 1 + 1
【解决方案2】:

据我所知,在 基本的 Haskell 库。

这对你有用吗?

import System.Process

eval :: String -> IO Integer
eval expr = do
  r <- readProcess "ghc" ["-e", expr] ""
  return (read r)

main = eval "2^3" >>= print

但它在 IO monad 中运行,并且不是很健壮。

【讨论】:

猜你喜欢
  • 2019-07-16
  • 1970-01-01
  • 1970-01-01
  • 2014-01-29
  • 1970-01-01
  • 1970-01-01
  • 2014-04-24
  • 1970-01-01
相关资源
最近更新 更多