Haskell中的乐器弦张力计算器
我是哈斯克尔的新手,所以请记住这一点 我正在做一个相当简单的项目——弦乐器张力计算器。以下是到目前为止我得到的信息:Haskell中的乐器弦张力计算器,haskell,Haskell,我是哈斯克尔的新手,所以请记住这一点 我正在做一个相当简单的项目——弦乐器张力计算器。以下是到目前为止我得到的信息: data Operator = Metric | Imperial deriving Read eval o l u p = case o of Imperial -> (((2 * l * p)^2) * u) / 386.4 Metric -> (((2 * (l * 2.54) * p)^2) * u) / 386.4 prompt txt
data Operator = Metric | Imperial
deriving Read
eval o l u p = case o of
Imperial -> (((2 * l * p)^2) * u) / 386.4
Metric -> (((2 * (l * 2.54) * p)^2) * u) / 386.4
prompt txt = do
putStrLn txt
readLn
main = do
o <- prompt "Metric or Imperial?"
l <- prompt "Scale length?"
u <- prompt "Gauge?" -- Unit Weight
p <- prompt "Pitch? (In hertz)"
putStrLn $ "The result is " ++ show (eval o l u p)
数据运算符=公制|英制
派生读
eval o l u p=情况o
英制->((2*l*p)^2*u)/386.4
公制->((2*(l*2.54)*p)^2)*u)/386.4
提示符txt=do
putStrLn txt
雷登
main=do
我给你一个基本解决方案的提示
将地图定义为成对的列表(仪表、单位重量)
。根据仪表进行订购
gw :: [(Double, Double)]
gw = [(1, 2), (2, 4), ... ]
然后,假设您要查找g
。如果您想从gw
中放弃所有带有gauge的初始对,我将为您提供一个基本解决方案的提示
将地图定义为成对的列表(仪表、单位重量)
。根据仪表进行订购
gw :: [(Double, Double)]
gw = [(1, 2), (2, 4), ... ]
然后,假设您要查找g
。您想从gw
中丢弃所有带有gauge的初始对,请注意,使用类型化物理量库(例如)可以更好地完成此类任务。此外,我不会为这种计算编写可执行程序,ghci更方便——或者说IHaskell。以下是字符串张力计算器的外观:(您可以自由混合不同单位系统的单位,库自动执行正确的单位转换。如果您输入的单位尺寸不匹配,它也会抱怨。)请注意,使用键入的物理量库可以更好地完成此类任务,比如。此外,我不会为这种计算编写可执行程序,ghci更方便——或者说IHaskell。下面是字符串张力计算器的外观:(您可以自由混合来自不同单位系统的单位,库自动执行正确的单位转换。如果您输入的单位尺寸不匹配,它也会抱怨。)
dropWhile (some predicate here) gw