一邊準備期中考,一邊摸著電腦。
看到functional programming就開始手癢,挑了一個聽過且令我好奇的Haskell來學一學。
範例中有階層數列(factorial)的code,忍不住也想寫一個費氏數列(fibomacci)。
經過了一長段的跌跌撞撞,在考完英文之後仍然努力地研究。
由於不熟悉與法,幾乎所有的時間都在查資料和debug。
終於在吃完晚餐之後,完成了大致的費氏數列。 (4/22-23)
------------------------以下是經過很多次複製貼上得到的成果------------------------
module Main where
import System
fib :: Integer -> Integer
fib n
| n == 0 = 0
| n == 1 = 1
| n > 1 = fib (n-1) + fib (n-2)
getInteger :: IO Integer
getInteger = do line <- getLine
return (read line)
putInteger :: Integer -> IO String
putInteger int = do return (show int)
main :: IO ExitCode
main = do putStrLn "n = ?"
n <- getInteger
if n > 0
then do str <- putInteger (fib n)
putStrLn $ str
else putStrLn "You want to exit"
system "pause"
-----------------------------------------------------------------------------------------
學了一個與程序式語言完全不同的函數式語言之後,總該對它有點對他抱怨。
首先,它的語法對於學程序式語言的人來說確有點奇怪,不過這還可以接受。
重點是:Haskell真是他X的難寫,每個縮排都要用很多個<space>來完成!!
如果沒有遵照他的「方式」,編譯器就會說: "parse error in pattern" 。
在我用Haskell寫費氏數列之前,我還先用C寫了費氏數列,用遞回跑真的很慢。
但是用Haskell寫得跑更慢! 跑得真的是有夠他X的慢! 不過就是有很多人用Haskell寫遊戲。
我不知道這種長得像數學表達式的語言究竟在寫遊戲方面有什麼威力,不過在目前,
Haskell的OpenGL函式庫支援度已經很好了,畢竟OpenGL也是跨語言的API嘛!
留言列表