有些內容使用中英雙語,有些只有英文或中文。歡迎使用與分享任何內容,但先來信告知並標示此部落格為出處。
Some parts use both Chinese and English, but some parts use only one language. Feel free to share, but please contact me first and list this blog as your reference.

2014年7月7日 星期一

[FLOLAC] 安裝Haskell環境與基本操作教學 - 使用GHCi

在 2014 FLOLAC的時候,接觸我第一個functional language - Haskell !
如果你也有興趣想接觸一下Haskell ~ 就來安裝一下吧 XD
我是安裝GHCi在Windows環境裡面,請點這裡下載。


安裝 Haskell 環境


下載位置: http://www.haskell.org/platform/
安裝系統: Windows (Mac or Linux 就自己試試看吧QQ)
安裝方式: 一直按 next 和 accept 就可以了 XD


首先進入頁面後,選擇左邊的 Windows 

Haskell Platform 2013.2.0.0 for Windows 下載檔案

之後會下載一個 "HaskellPlatform-2013.2.0.0-setup.exe" 的檔案,
下載好之後執行,只要一直按 next 和 accept 就可安裝完成了 XD
安裝的路徑位置要記得!


安裝好之後點進去 Haskell 的資料夾,
依照 ../Haskell Platform\2013.2.0.0\winghci 的路徑進去,
("2013.2.0.0"應會依版本不同名字不同)

執行 winghci.exe ! 就會看到下圖,這就是操作介面!

基本操作


很多程式語言的第一個程式都是 Hello, World! 我們也來~
請在打開的操作介面打上 "Hello, World!"

耶!!! 直接就印出來了耶 XDDD
好啦...這不算,在來幾個簡單的試試看~

操作介面可以直接跟你互動
來試試看基本數學運算
直接打上算式 (ex: 2 + 4),就會跳出答案。

再來,我們試試看比較像程式的檔案
C++檔案附檔名是.cpp ; C是.c ;JAVA是 .java
Haskell 當然也有,是 name.hs 檔案!

先隨意開一個空白文件(任意文件編輯器)
取名叫作 test.hs,在裡面打上這兩行
square ::Int->Int 
square x = x * x  

長的會類似下圖! {- 和-}可以多行註解, --可以一行註解後面的內容

第一行宣告函式的參數 type,
第二行是函式定義,這是平方的函式~

寫好之後要怎麼使用這個函式呢!?
回去剛剛的 GHCi 操作介面,點 Menu 左上角的 File -> Load
如果 Load 成功,大概是這樣~

如果語法錯誤或操作錯誤,就會有紅紅的錯誤訊息出現!

也有看起來比較潮的Load方式,都使用cmd line 語法
先到存放 test.hs 的位置
Ex:  :cd C:\software\Haskell Platform\2013.2.0.0\winghci\hs
然後打上Load指令 Ex:  :load "test.hs"

如果你更改或是修正了 test.hs 檔案,要重新 reload !
reload有三種方式
1. Menu 的 Actions 裡面的Reload
2. 按鍵盤的 Crtl + R                    
3. 打cmd 指令, :reload                

Load/Reload後,要怎麼使用這個平方函數呢
在操作介面打上 square n (n是數字),參考下圖~



環境基本操作大概就這樣了!
宣傳一下FLOLAC這裡有老師上課的講義 XD
也可以參考書籍或是網路資源來接觸 Haskell。

我在上課時有練習老師出的練習題,
另外我也放上題目跟我作出的解答。
如果有興趣,可以參考一下下面幾篇文章!

1. Haskell Practicals 1 - Functions 函數
2. Haskell Practicals 2 - Products and Sums 乘積和合
3. Haskell Practicals 3 - Lists and Recursive Function 遞回函數


If you want to use (copy, paste or quote) my original article, please contact me through email. (autek.roy@gmail.com) If there is any mistake or comment, please let me know. :D

如要使用(複製貼上或轉載)作者原創文章, 請來信跟我聯絡。(autek.roy@gmail.com) 如果有發現任何的錯誤與建議請留言或跟我連絡。 : )

沒有留言:

張貼留言

請留下您的任何想法或建議!
Please leave any thought or comment!