iT邦幫忙

haskell相關文章
共有 61 則文章
鐵人賽 Software Development DAY 30
Haskell 從入門到放棄 系列 第 30

技術 [Haskell 從入門到放棄] Day 30 - 開始也是結束

終於寫到最後一天了,今天就輕鬆一點吧xD。 首先感謝所有讀者,在開賽前就有心理準備這個題材本來就是屬於比較冷門領域所以應該沒什麼人關注,本來以為可能完全沒有回饋...

鐵人賽 Software Development DAY 29
Haskell 從入門到放棄 系列 第 29

技術 [Haskell 從入門到放棄] Day 29 - Monad (6)

State Monad 可能有讀者看到 state monad 這個名字時可能會想,Haskell 這樣的語言允許我們擁有 state 這種感覺應該是 muta...

鐵人賽 Software Development DAY 28
Haskell 從入門到放棄 系列 第 28

技術 [Haskell 從入門到放棄] Day 27 - Monad (5)

Writer Monad 不知道讀者有沒有想過,如果今天我想要把每一步 monadic 操作的過程都有 log 紀錄方便我們 debug 的話要怎麼做?(用 p...

鐵人賽 Software Development DAY 27
Haskell 從入門到放棄 系列 第 27

技術 [Haskell 從入門到放棄] Day 27 - newtype

newtype 大概在之前的 monoid 的時候有提到過這個語法。 getProduct $ Product 1 `mappend` Product 2 `...

鐵人賽 Software Development DAY 26
Haskell 從入門到放棄 系列 第 26

技術 [Haskell 從入門到放棄] Day 26 - Monad (4)

Monad Law 畢竟 monad 是來自於數學上的概念,所以就算某個type 實作了 Monad 的 instance ,嚴格定義上我們也不能說它是 m...

鐵人賽 Software Development DAY 25
Haskell 從入門到放棄 系列 第 25

技術 [Haskell 從入門到放棄] Day 25 - Monad (3)

List Monad 在講 list monad 前我們先回憶一下 applicatives,我們知道 <*> 是可以把一個在 context 裡的...

鐵人賽 Software Development DAY 24
Haskell 從入門到放棄 系列 第 24

技術 [Haskell 從入門到放棄] Day 24 - Monad (2)

I/O Monad 雖然 Haskell 是一個純粹的 FP 語言,這意味著它的函數更接近數學意義上的「函數」,也就是我們所說的 pure function 。...

鐵人賽 Software Development DAY 23
Haskell 從入門到放棄 系列 第 23

技術 [Haskell 從入門到放棄] Day 23 - Monad (1)

在看 monad 相關的文章時不時想到一個剛開始學 FP 時聽過的笑話 「a monad is just a monoid in the category of...

鐵人賽 Software Development DAY 22
Haskell 從入門到放棄 系列 第 22

技術 [Haskell 從入門到放棄] Day 22 - Monoid (2)

Maybe 在 Haskell 中 Maybe a 也是能具有 Monoid 特性的。 instance Monoid a => Monoid (Mayb...

鐵人賽 Software Development DAY 21
Haskell 從入門到放棄 系列 第 21

技術 [Haskell 從入門到放棄] Day 21 - Monoid (1)

Monoid 我們先來看一下幾個 expression (4 * 2) * 1 4 * (2 * 1) ([1] ++ [2,3]) ++ [] [] ++...

鐵人賽 Software Development DAY 20
Haskell 從入門到放棄 系列 第 20

技術 [Haskell 從入門到放棄] Day 20 - Applicative (2)

再談 Applicative 先看一下昨天最後的範例 import Control.Applicative let foo = fmap (*) [1..5...

鐵人賽 Software Development DAY 19
Haskell 從入門到放棄 系列 第 19

技術 [Haskell 從入門到放棄] Day 19 - Applicative

繼續談 Functor fmap (*2) (+100) 1 看到這樣的程式碼你能想的到結果是什麼嗎?好像跟我們平常在 map 時的操作不太一樣,感覺好像少了...

鐵人賽 Software Development DAY 18
Haskell 從入門到放棄 系列 第 18

技術 [Haskell 從入門到放棄] Day 18 - Functor

Functor 用最簡單的一句話來解釋 functor 就是指可以被 map 的東西像是 List ,而在 Haskell functor 就只是 typecl...

鐵人賽 Software Development DAY 17
Haskell 從入門到放棄 系列 第 17

技術 [Haskell 從入門到放棄] Day 17 - Typeclass

Typeclass 讓我們重新回顧一下 typeclass 是什麼,它類似於其他語言中的介面(interface)。Typeclass 提供了一種定義一組類別所...

鐵人賽 Software Development DAY 16
Haskell 從入門到放棄 系列 第 16

技術 [Haskell 從入門到放棄] Day 16 - Algebraic Data Types (3)

Recursive Data Type 我們除了裡用 product 或者 sum 來組成的我們 type 以外,還可以使用 recursive 的概念來定義...

鐵人賽 Software Development DAY 15
Haskell 從入門到放棄 系列 第 15

技術 [Haskell 從入門到放棄] Day 15 - Algebraic Data Types (2)

Sum Type 我們先來看一下 Bool 在 Haskell 是如何被定義的 data Bool = False | True deriving (Read...

鐵人賽 Software Development DAY 14
Haskell 從入門到放棄 系列 第 14

技術 [Haskell 從入門到放棄] Day 14 - Algebraic Data Types (1)

昨天我們說到可以使用 tuple (Double, Double, Double) 用三個double來表示三角形的三邊長。 但我們使用 tuple 來描述的話...

鐵人賽 Software Development DAY 13
Haskell 從入門到放棄 系列 第 13

技術 [Haskell 從入門到放棄] Day13 - Tuple

Tuple 簡單介紹 跟大部分語言的 Tuple 一樣就是可以把多種資料型態塞進一個容器來表示資料的型別,像是 ("Todd",100,Tr...

鐵人賽 Software Development DAY 12
Haskell 從入門到放棄 系列 第 12

技術 [Haskell 從入門到放棄] Day 12 - lazy…evaluation…

今天要來介紹一個在 FP 中相當常見的特性 lazy evaluation (惰性求值) ,簡單來說就是當需要值的時候才會真正把值計算出來。 lazy eval...

鐵人賽 Software Development DAY 11
Haskell 從入門到放棄 系列 第 11

技術 [Haskell 從入門到放棄] Day 11 - 繼續談 higher order function

Fold 所謂 Fold 就是來簡化我們在遞迴中很常遇到的模式,匹配 (x:xs) 將 x 取出來後繼續將 xs 放入 function 運算 直到 [] 。通...

鐵人賽 Software Development DAY 10
Haskell 從入門到放棄 系列 第 10

技術 [Haskell 從入門到放棄] Day 10 - 再談 higher order function

Filter filter 是傳入一個會回傳 Bool 的 function 及 List,然後將 List 中每個元素丟進去 function 最後回傳所有執...

鐵人賽 Software Development DAY 9
Haskell 從入門到放棄 系列 第 9

技術 [Haskell 從入門到放棄] Day 09 - 終於來到 higher order function

終於來到一個跟 FP 的核心概念有關的特性了,首先我們需要知道 Haskell 是具有 First-class function 這個特性,意思是指 func...

鐵人賽 Software Development DAY 8
Haskell 從入門到放棄 系列 第 8

技術 [Haskell 從入門到放棄] Day 08 - Pattern Matching (2)

今天我們將繼續了解 pattern matching 的語法。 Guard 昨天只講到 pattern 如果是「特定值」那我們做什麼行為,但如果我們是有多個參數...

鐵人賽 Software Development DAY 7
Haskell 從入門到放棄 系列 第 7

技術 [Haskell 從入門到放棄] Day 07 - Pattern Matching

pattern matching 這個許多語言都有的概念,它的常見形式會很像一個switch cass,然後根據不一樣的 case/pattern 決定執行不一...

鐵人賽 Software Development DAY 6
Haskell 從入門到放棄 系列 第 6

技術 [Haskell 從入門到放棄] Day 06 - type 入門課

Haskell 的型別系統 之前有稍微提到 Haskell 的是一個靜態語言,意思每個 expression 在編譯期間就已經被確定型別了,又因為 Haskel...

鐵人賽 Software Development DAY 5
Haskell 從入門到放棄 系列 第 5

技術 [Haskell 從入門到放棄] Day 05 - List Comprehension

今天我們來更加深入 Haskell 中的 List,昨天我們講到了運用無限 List 加上一些 function 可以幫我們快速產生一個 List,但如果我們今...

鐵人賽 Software Development DAY 4
Haskell 從入門到放棄 系列 第 4

技術 [Haskell 從入門到放棄] Day04 - 簡簡單單的List

Day 04 | 簡簡單單的List 今天要來介紹不管在哪個語言都是非常常用的資料結構 List ,在 Haskell 中 List 中每個元素只能是同樣型別...

鐵人賽 Software Development DAY 3
Haskell 從入門到放棄 系列 第 3

技術 [Haskell 從入門到放棄] Day 03 - 基礎語法

今天來介紹 Haskell 的基礎語法,我們可以先用 ghci 來試著運行 Haskell 語法看看。 只要在 terminal 輸入 ghci 然後我們就可...

鐵人賽 Software Development DAY 2
Haskell 從入門到放棄 系列 第 2

技術 [Haskell 從入門到放棄] Day 02 - 開發環境

今天先來輕鬆的開發環境設定 因為 Haskell 是一個靜態語言所以我們勢必需要安裝所需要的編譯器,接下來我們都會使用最主流的 GHC (Glasgow Has...

鐵人賽 Software Development DAY 1
Haskell 從入門到放棄 系列 第 1

技術 [Haskell 從入門到放棄 ] Day 01 - 前言

Haskell 是什麼? Haskell 是一個非常純粹的函數式程式語言(functional progrmming language),它所擁有的一些特性像是...