1
語法錯誤,我目前正在99個哈斯克爾問題爲什麼我得到「=」
我不明白爲什麼我得到一個錯誤,在此功能: -
repli :: [a] -> Int -> [a]
repli xs n = concatMap (take n . repeat) xs
語法錯誤,我目前正在99個哈斯克爾問題爲什麼我得到「=」
我不明白爲什麼我得到一個錯誤,在此功能: -
repli :: [a] -> Int -> [a]
repli xs n = concatMap (take n . repeat) xs
如果您正在使用在REPL,嘗試
>>> let repli xs n = concatMap (take n . repeat) xs
寫作哈斯克爾在REPL(AKE GHCI)是在文件中寫入有點不同。一方面,變量綁定和函數定義必須與let
前綴爲
>>> let a = 1
>>> let f x = x + a
另一個原因是,你通常需要輸入全部在一行上定義。您可以用分號分隔單獨的定義,這樣
>>> let a = 1; b = 2
,或者您可以使用多行模式,這樣
>>> :{
>>> let c = 3
>>> d = 4
>>> :}
如果您已經瞭解單子(是嗎?),然後你可以想象,您在REPL中編寫的所有內容都是do
塊的一部分,該塊的類型爲IO()
,並且在鍵入它們時執行語句。因此,在一個文件,你可以寫
main :: IO()
main = do
name <- getLine
let greeting = "Hello " ++ name ++ "!"
putStrLn greeting
而在REPL,你會您使用的是解釋寫
>>> name <- getLine
Chris
>>> let greeting = "Hello " ++ name ++ "!"
>>> putStrLn greeting
Hello Chris!
>>>
? – soulcheck 2014-09-03 15:18:40
適合我。你在某處有隱形角色嗎? – 2014-09-03 15:45:24
'拿n。 repeat'與'replicate n'相同。在這裏並不重要,但如果你願意的話,它可以使寫點免費更容易一些。 – genisage 2014-09-03 19:33:04