無廢話學習Haskell 語言基礎

2021-04-13 11:16:29 字數 463 閱讀 4476

讓我們從如下的**開始介紹語言基礎(相信和我一樣,你看到haskell的語法時候,肯定以為自己到了火星了)

list makelist()

如果在類似於c/c++語言的**中,建立乙個列表可能會有這樣的函式。不過顯然這樣的函式在執行中會出現死迴圈——或者會生成乙個無限長的列表。

然而,在haskell中,可以這樣來寫**:

makelist=1:makelist

「:」是haskell中的乙個操作符,用來生成列表的。

那麼如果你單獨執行這段**,同樣的道理,會生成乙個沒有邊界的陣列(程式也因此不會停止了)。但是如果你只需要使用makelist中的有限長度的內容(比如長度為10),那麼這段**就可以很好的工作,因為基於「lazy」的原則,haskell只會執行10次。這就是懶載入

另外,haskell是大小寫相關的。而且這裡有乙個關鍵點,對於值或者函式,識別符號要以小寫字母打頭,對於型別,要以大寫字母打頭。

Haskell語言學習筆記(68)HDBC

cabal install hdbc sqlite3 installed hdbc sqlite3 2.3 3.1 prelude m database.hdbc database.hdbc sqlite3 prelude database.hdbc database.hdbc sqlite3 pr...

Haskell語言學習筆記(79)lambda演算

根據維基百科,lambda演算 英語 lambda calculus,calculus 是一套從數學邏輯中發展,以變數繫結和替換的規則,來研究函式如何抽象化定義 函式如何被應用以及遞迴的形式系統。lambda演算由 lambda 項的語言構成。基本的 lambda 項只包含以下三種 語法名稱 描述h...

重新學習Mysql資料庫1 無廢話MySQL入門

mysql集錦 in 真會導致全表掃瞄嗎?不一定 得看mysql版本 5.5之前的會 in 操作符允許我們在 where 子句中規定多個值。in 操作符用來指定範圍,範圍中的每一條,都進行匹配。in取值規律,由逗號分割,全部放置括號中。語法 select 欄位名 from 名 where 欄位名 i...