Max*_*x K 1 haskell types constants
我有一个键盘输入unsafePerformIO $ entryGetText myTextEntry
.如何将此值保存为"常量"(在数据类型中,如下所示:
data SimuInfo = Information {
massSaved:: Double
} deriving Show
Run Code Online (Sandbox Code Playgroud)
)程序启动后.我知道"保存变量"的唯一方法是:
valuea::Int
valuea = 120
Run Code Online (Sandbox Code Playgroud)
但是,当用户未定义该值时,此方法才有效.
提前致谢
unsafePerformIO
应该不惜一切代价避免,因为它的执行是不可预测的.
Haskell是一种纯语言,值是不可变的,因此您将无法"保存"在其他地方显示为变异的值.
相反,您需要读取值并根据需要传递它.
main = do
putStrLn "Enter the default massSaved value"
val <- getLine
doThingsWithDefaultSimuInfo (Information (read val :: Double))
doThingsWithDefaultSimuInfo :: SimuInfo -> IO ()
doThingsWithDefaultSimuInfo si = do
...
Run Code Online (Sandbox Code Playgroud)
(对于读者来说,有更清晰,更惯用的方法可以做到这一点,但我试图将这个答案针对初学者级别)