热门问题
时间线
聊天
视角

Clean語言

来自维基百科,自由的百科全书

Remove ads

Clean,在開發期間稱為Concurrent Clean,是純函數式程序設計語言。Clean由荷蘭奈梅亨拉德伯德大學自1987年開始製作和維護[4]

快速預覽 編程範型, 設計者 ...

概述

Clean和Haskell有很多相似之處:參照透明性英語referential transparence列表推導式守衛垃圾回收高階函數柯里化惰性求值

Clean是用C寫成的。Clean程式很容易跨平台,在大部分情況下,要轉移到另一個平台只需在那裏重新編譯一次即可,不用改動原始碼。它可運行於WindowsMacintoshSolarisLinux。Clean具有叫做「ITasks」的面向任務編程工具箱。

例子

一個在屏幕上列印"Hello World!"的程序:

module hello

Start :: String
Start = "Hello, world!"

第一行module hello,告訴編譯器這個模組(或一個project的部份)叫「hello」。除非你改變了這一行,否則它必須儲存於一個叫hello.icl的檔案。之後的一行,Start :: String,表示這個變數Start的type是String。最後一行表示這個變數是「Hello, world!」。因為這裏無指定用GUI,所以這句「Hello, world!」會顯示在控制台(console)之中。

階乘:

fac :: Int -> Int
fac 0 = 1
fac n = n * fac (n-1)

Start = fac 10
fac :: Int -> Int
fac n = prod [1..n] // The product of the numbers 1 to n

Start = fac 10

斐波那契數列

fib :: Int -> Int
fib 0 = 1
fib 1 = 1
fib n = fib (n - 2) + fib (n - 1) 

Start = fib 7
fibs :: Int Int -> [Int]
fibs x_2 x_1 = [x_2:fibs x_1 (x_2 + x_1)]

fib :: Int -> Int
fib n = (fibs 1 1) !! n

Start = fib 7

中綴算子:

(^) infixr 8 :: Int Int -> Int
(^) x 0 = 1
(^) x n = x * x ^ (n-1)

類型聲明聲稱了這個函數是右結合中綴算子,具有優先級8:這聲稱了x*x^(n-1)等價於x*(x^(n-1))而不是(x*x)^(n-1)。這個算子預定義於Clean標準庫StdEnv中。

Remove ads

比較於Haskell

語法區別

Clean的語法非常類似於Haskell,具有一些值得注意的區別:[5]

更多資訊 Haskell, Clean ...

一般而言,Haskell比Clean介入了更多的語法糖

Remove ads

引用

Loading content...

外部連結

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads