iT邦幫忙

functional programming相關文章
共有 288 則文章
鐵人賽 Modern Web DAY 26

技術 Day 26 :第三方函式庫(1):初識Lodash.js

在先前的章節中,我們了解到要如撰寫純函式、科里化,甚至是透過高階函式與複合函式的手段,讓我們的函式重組性、復用性更高。 但如果到目前為止,這些概念對於你來說,都...

鐵人賽 Software Development DAY 20

技術 Functional Data Structure

上次的解答: fun <P1, P2, P3, R> ((P1, P2, P3) -> R).curried(): (P1) -> (P...

鐵人賽 Software Development DAY 15

技術 Lenses

今天來介紹點大家不是很常碰到的神奇用法,看看下面這段程式: data class Path(val content: String, val id: Strin...

鐵人賽 Software Development DAY 22

技術 Type system and nullability

應該很多人都是從 Java 轉到 Kotlin 陣營的吧?不管是面試或是隨意聊天,在我問別人喜歡 Kotlin 的什麼地方的時候,最常聽到的答案就是 null...

鐵人賽 Software Development DAY 2

技術 Kotlin 作為 Server Side 開發語言 - Day2

第二天來談談為何要採用 Koltin。Kotlin 現在已經廣泛的被 Java 框架例如 Spring Boot, Quarkus 所支援。Thinking...

鐵人賽 Software Development DAY 19

技術 Day 19 - Maybe Monad

yo, what's up 在之前我們都是用 Identity 作為例子,但其功用並不大,所以今天要來開始介紹一些比較常用的 ADTs,今天就從 Maybe 開...

鐵人賽 Software Development DAY 6

技術 mostly:functional 第五章:文字,是非,與一等公民

所有動物生來平等,但有些動物比其他動物更為平等。-- 喬治·歐威爾, 動物農莊 又一天,同樣的咖啡館,我們坐在窗邊。外面的天空看不見太陽,遠方的山頭,有雲...

鐵人賽 Software Development DAY 2

技術 Day2. 函數的定義域與值域

1. 函數是什麼? 我們先回到昨天的程式碼: int pi = 3.14159; 相信大家看一眼就知道,如果把3.14159放到一個int型別的參數,程式理所...

鐵人賽 Software Development DAY 8

技術 [RxJava] side effect operators and advanced operator

Side Effect Operator 前一篇介紹了 Observable 跟 Try 是如何處理Exception 這個 side effect,那麼可能有...

鐵人賽 Modern Web DAY 4

技術 Day 4 :JavaScript 型別與他們的地雷(1): 基本型別與物件

在了解 FP 與 JavaScript 的歷史之後,有沒有覺得:「咦?設計模式其實也沒有離自己那麼遠嘛!」在繼續深入了解 FP 之前,讓我們來看看 JavaSc...

鐵人賽 Software Development DAY 12

技術 mostly:functional 第十一章:冗餘的變數,連續的轉變

四月是最殘酷的季節,讓死寂的土原迸出紫丁香,摻雜著追憶與慾情,以春雨撩撥萎頓的根莖 -- T·S·艾略特, 荒原 當我們站到城的門口,有個低沉而安穩的聲音...

鐵人賽 Modern Web DAY 25

技術 Day 25:高階函數與複合函數(3):reduce 實用方法

在 FP 中,會發現我們其實沒有那麼常使用 for、forEach ,更多時候是使用 filter 與 map 陣列方法,因為在 FP 這個設計模式中,為了讓程...

鐵人賽 Software Development DAY 28

技術 Day 28 - State Monad III

嗨大家好,真希望一天能有 48 小時,不然這主題都要分到四部曲了,沒錯,應該會有四部曲! 抱歉了! Applicative Functor 上次提到了 map...

鐵人賽 Software Development DAY 17

技術 mostly:functional 第十六章:函數自身

歷史是沒有所謂歡樂結局的,只有一個接著一個被渡過的危機時刻。 -- 以薩·艾西莫夫, 諸神自身 -- 0307 進了城裡。卻發現整個城市相當相當的暗,就像...

鐵人賽 Software Development DAY 25

技術 mostly:functional 第二十四章:Functor 的法則

…人被視為一個歷程,一個成為 (becoming) 的歷程。該模式相信,每一個人都可能改變。即使外在的改變很有限,內在的改變卻是可能的。這個信念是普世皆然、毫...

技術 SICP lec6a : 流 I part1 (map, accu, filter)

此篇為 SICP教程 6a 的筆記 接續前面說到的 賦值 是因為要建立模塊,對應真實世界的物件,但卻造成了很多問題,那如何不管每個物件在"時序&quo...

鐵人賽 Software Development DAY 22

技術 Day 22 - IO Monad

上一章節簡單的介紹如何處理 side effect 的其中一個方法 dependency injection,而本章要介紹第二個方法 IO Monad,但在這之...

鐵人賽 Software Development DAY 23

技術 Natural transformation

Definition 今天又回到 Category theory 的領域了,從一開始提到的 object 之間的 morphism - function,到 C...

鐵人賽 Software Development DAY 14

技術 Day 14 - Functor

Introduction 在先前我們提到了 compose,並且將許多單一功能的純函式,透過 compose 成一個更強大的計算函式。 但問題就來了,當兩個函式...

鐵人賽 Software Development DAY 16

技術 Day 16 - Apply

到目前為止我們已經知道了 Functor 可以將 effect 跟 pure function 進行 compose,但我們沒有提到一點是 Functor 無法...

鐵人賽 Software Development DAY 11

技術 Introduce Functor

在前面的很多篇中介紹了許許多多不同的“容器”,那這些“容器”對於 Category theory 又有什麼樣的意義?今天就來介紹其中一個:Functor。 Fu...

鐵人賽 Modern Web DAY 10

技術 Day 10 :何謂 Immutable Data?(2):更新物件

在討論如何使用 Immutable 的方式來操作物件的狀態前,讓我們來思考另外一個狀況:還記得前端常常考的面試題淺拷貝、深拷貝嗎? 在這邊我們不會以深拷貝、淺拷...

鐵人賽 Software Development DAY 3

技術 Day3. Option

昨天講到了定義域,今天換來討論值域。理想上一個方法都希望有一個回傳值,但現實中很難做到,就算已經在先驗條件中把所有未定義的輸入都排除了,仍然會有狀況是導致沒辦法...

鐵人賽 Software Development DAY 21

技術 Day 21 - Handle Side Effect I

在介紹本篇我們先來複習一下先前在 pure function 那章提過的一些名詞 Side Effect: 當呼叫函式時,此函式會改變外部物件的狀態,則稱這...

鐵人賽 Software Development DAY 21

技術 Missing features: Persistent data structure and Pattern Matching

上一篇的解答: fun <R> map(transform: (T) -> R): LinkedList<R> { ret...

鐵人賽 Software Development DAY 18

技術 mostly:functional 第十七章:當我們談論容器時,我們在談論什麼?

我帶著你的心(我把它帶在我的心裡)不曾放下過(任何我去的地方你也去了,親愛的;而任何我所做的就如同你也一起做了,親愛的。) -- E. E. Cummings...

鐵人賽 Software Development DAY 25

技術 Bind, Return and Monad laws

先複習一下上一篇的內容,一個 Monad,就是一種 Moniod ,而且中間有個特別的 operator ,而他,剛好就是我們熟悉的 flatMap 如下: M...

鐵人賽 Software Development DAY 14

技術 mostly:functional 第十三章:當我們談論等號時,我們在談論什麼?*

幸福的家庭都是相似的,而不幸的家庭各有各的不幸。 --列夫·托爾斯泰, 安娜·卡列尼娜 那麼,等號 = 除了綁定還能做什麼呢?我們可以先回顧一下 JS 莊...

鐵人賽 Modern Web DAY 28

技術 Day 28 :第三方函式庫 (3):從 Ramda.js 深入了解 JavaScript

與 Lodash.js 類似, Ramda.js 是一個專門以 FP 模式設計出來的函式庫,與 Lodash 不同的是,Ramda 所提供的函式預設就已經柯里化...