例如,如何可以利用大写字母这样我定义一个函数来生成斐波那契数:FIBÑ 我需要只使用大写字母这样从终端调用该函数:FIB 7如何在Haskell中使用大写字母定义函数?
回答
You can't。 Haskell中的函数必须以小写unicode字符或下划线开头。以大写字母开头的符号保留给类型和构造函数。
为什么你需要调用从只使用大写字母终端的功能?这似乎是一个相当武断的约束。
如果你真的想读STDIN和过程,我建议写这样的事情
import System.IO
import Text.Read (readMaybe)
import Control.Monad (forever)
data Operation
= FIB Integer
| FAC Integer
| ADD Integer Integer
deriving (Read)
-- The read instance is important here
fib :: Integer -> Integer
fib 0 = 1
fib 1 = 1
fib n = fib (n - 1) + fib (n - 2)
eval :: Operation -> Integer
eval (FIB n) = fib n
eval (FAC n) = product [1..n]
eval (ADD a b) = a + b
repl :: IO()
repl = forever loop
where
parseResponse :: String -> String
parseResponse resp = case readMaybe resp of
Just op -> show $ eval op
Nothing -> "Invalid operation"
loop = do
putStr "> "
resp <- getLine
putStrLn $ parseResponse resp
main :: IO()
main = do
hSetBuffering stdin LineBuffering
hSetBuffering stdout NoBuffering
repl
这允许用户在数据构造的确切姓名后,那么你就可以解释这个数据构造函数(是的,这是一个非常简单的交互式脚本语言的完整代码,只能执行fibs,阶乘和添加)到结果中。如果输入了无效操作,它将以Invalid operation
进行响应。您只能用CTRL-C退出翻译。
这是一堂课。无论如何,你认为实现这一目标的唯一方法是通过获取字符串输入并处理它来调用所需的函数吗? – Reeshabh 2014-11-14 21:12:54
@Reeshabh在这种情况下,是的。如果你要为你的类写某种[REPL(http://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop),你就必须做到这一点无论如何解析。如果你只是想在GHCi中做到这一点,那么你将不得不使用一个以小写字母开头的标识符。我将编辑我的答案,以展示您可以做什么的几个例子。 – bheklilr 2014-11-14 21:14:52
谢谢。这非常有帮助! – Reeshabh 2014-11-14 22:44:26
好了,你不能。函数和变量名称必须以小写字母开头。第一个大写字母被保留用于类型构造: Haskell specs
不只是类型的构造函数;一般的构造函数,以及类。 – dfeuer 2014-11-14 21:35:24
- 1. Haskell函数将小写字母转换为大写char
- 2. 如何在javascript中使用大写字母函数映射数组?
- 3. 大写字母小写函数C
- 4. 如何在Haskell中定义和使用curry和uncurry(Prelude函数)?
- 5. 如何在testdox名称中使用大写字母的首字母缩写?
- 6. 计算haskell中的大写字母和小写字符
- 7. 如何在Sequelize中使用小写字母函数Postgres
- 8. haskell:将小写字母更改为字符串列表中的大写字母
- 9. 如何大写自定义textview中的第一个字母?
- 10. Haskell函数定义
- 11. 如何在Haskell中编写showIt函数?
- 12. 使用javascript大写首字母大写
- 13. 函数定义在Haskell
- 14. 查找字母数字的Haskell函数
- 15. 如何在使用Java的字符串中首字母大写?
- 16. 如何在lwuit文本字段中使用首字母大写?
- 17. VB.net我如何使大写字母是小写字母
- 18. Prolog,使用大写字母
- 19. 在用户定义的函数中增加字母数字值
- 20. 如何识别TSQL中的大写字母和小写字母?
- 21. 如何防止用户使用大写字母锁定?
- 22. 使用jQuery自定义字母大小
- 23. 仅在Python中使用第一个字母大写字母
- 24. 如何小写字母转换为大写字母和大写字母为小写字母
- 25. 如何在haskell中定义字符串
- 26. 用大写字母
- 27. 函数使用x的写首字母
- 28. 在AutoCompleteTextView中大写字母
- 29. 如何在红宝石中使用大写字母方法
- 30. 函数在Haskell中的定义(GHCİ)
恐怕你不能。看看关于同样事情的链接问题,了解更多的细节和策略来解决这个限制。 – 2014-11-14 21:10:41