2011-05-31 65 views
3

我試圖將方案代碼轉換爲Haskell代碼。將基本Scheme功能轉換爲Haskell等效

對於這一點,我想知道如何使用計劃的

  1. 地圖
  2. 拉姆達
  3. 從文件路徑
  4. 返回端口
  5. 從端口讀取線
  6. 追加列出
  7. 正則表達式匹配
  8. GUI

在Haskell

有人可以告訴我如何在haskell中做到這一點嗎? 謝謝

+0

對於1 - 5,所有答案都在R5RS中。至於6和7,請參閱您的計劃實施的文檔。 – leppie 2011-05-31 11:43:32

+0

感謝您的評論。我認爲R5RS是關於計劃而不是哈斯克爾。不知道它對我有什麼幫助。謝謝 – 2011-05-31 11:46:20

+0

Map和lambda是微不足道的,只是語法有點不同。但是,您必須使用Haskell的IO monad來處理端口,並且可能需要重新構建。 – 2011-05-31 11:55:23

回答

9

本質上你需要學習Haskell,語言和它的圖書館生態系統。要找到圖書館和功能,從學習Prelude開始,因爲這裏定義了許多東西。然後轉到Hackage,在那裏你有數千個圖書館可供選擇。

具體而言,您需要的大部分內容可以在Prelude和via Hoogle中找到。

  1. map被定義。

  2. 「lambda」是語法:\x -> ... e ..

  3. 「從文件路徑返回港口」:儘量openFile

  4. 「讀行從端口」,嘗試hGetLine

  5. 「添加到列表」,嘗試++

  6. 「正則表達式-match「,使用Hackage的fine regex libraries之一。

  7. 「GUI」,選擇gtk2hswxHaskell之一。

3

首先,如果你在Haskell沒有經驗,我建議你讀一個很好的介紹像

雙方都可以在自由。

特別是,對你很重要,那Haskell有(例如計算)和不純(如IO)的計算之間的差異。處理它們需要你有時會有不同的想法。另外,Haskell很懶,因此你的代碼可能無法通過簡單的語法修改來翻譯。

對於其他點,請參閱Don Steward的answer