iT邦幫忙

functional programming相關文章
共有 288 則文章
鐵人賽 Software Development DAY 23

技術 mostly:functional 第二十二章:Monoid 的實體

來到隔壁的建築,我發現這裡幾乎跟剛才那棟非常類似,房間的格局、配置、擺設。但不同的是,這裡的每一間房間,都有一面鏡子。 中綴與前綴 我們可以發現,Semi...

鐵人賽 Software Development DAY 25

技術 Day 25 - Reader Monad

今天來介紹 Reader Monad,其主要處理的就是 dependency injection, 痛點 說到 dependency injection 如果最...

鐵人賽 Software Development DAY 29

技術 Day 29 - State Monad IV

Review 由於 State 原本可以一篇寫完的,被我拖成四篇的關係,所以來回顧一下,哈哈哈哈哈哈 這是我們的前幾章實作的 State Monad const...

鐵人賽 Modern Web DAY 4

技術 摯友:Array(2/2)

每個複雜的問題,都有個簡單的解法。這句話簡直錯得離譜。 Umberto Eco 此文討論Array為主,但可能會牽扯些許Object。 今天老闆不在,就來聊...

鐵人賽 Software Development DAY 22

技術 mostly:functional 第二十一章:Monoid 的法則

…那我告訴你一件有趣的事吧。----- 腦只是鏡子。連接在機械上的腦所生出的不是腦的原主意識,而是所接續的機械的意識。 -- 京極夏彥, 魍魎之匣 而當我...

鐵人賽 Modern Web DAY 13

技術 Day 13:什麼是純函式 ?(1):單輸入單輸出

純函式(Pure Funciton)在 FP 中是一個很核心的概念,在 FP 這個設計典範中,我們都會使用純函式的方式來撰寫我們的程式碼。 首先讓我們來看看純函...

鐵人賽 Modern Web DAY 22

技術 Day 22 :什麼是 Currying(4)?自己動手寫一個 Curry 吧!

在先前的文章中,我們花了很多的時間來討論閉包,這是為什麼呢?因為在 FP 中,如果我們想要更有效率、更嚴謹的方法來撰寫函式,了解函式在呼叫堆疊中的運行模式可以說...

鐵人賽 Software Development DAY 29

技術 mostly:functional 第二十八章的試煉: Applicative 的證明

小測驗 我們在上一章的最開始,示範了元組上的 <*>,其中有一條是這樣寫的: pure (+8) <*> ("hello&...

鐵人賽 Modern Web DAY 20

技術 Day 20 :什麼是 Currying(2)?JavaScript Call Stack

在前一章節中,我們了解到 JavaScript 從我們撰寫出來,到可以被執行這個過程中,其實在背後會發生很多事,其中就包含能優化 JavaScript 單執行緒...

鐵人賽 Modern Web DAY 19

技術 Day 19:什麼是 Currying(1)?瀏覽器運作簡介

在先前的章節中,我們了解了 FP 一個最基礎的概念:純函式,其實光是了解及在自己的專案中實作 純函式,就可以讓程式碼乾淨不少,但在 FP 這個設計模式中,我們還...

鐵人賽 Modern Web DAY 17

技術 Day 17:什麼是純函式 ?(5):宣告式程式設計

在自己學習程式語言時,不斷會在技術文件或是技術書籍中看到以下關鍵字,凡舉:「物件導向設計(Object-oriented programming,常縮寫為 OO...

鐵人賽 Software Development DAY 7

技術 Day7. Closure

Closure(閉包)是一種特殊的函數,可以讀取外面環境中的資料,而外部無法修改函數內部的資料。這樣的介紹有如天書,實際上Closure是一個C#工程師幾乎天天...

鐵人賽 Software Development DAY 3
大閘蟹料理指南(rust) 系列 第 3

技術 [D3] 讓程式跑起來

這一篇應該對於程式老手來說駕輕就熟. 只是就自己心血rust的心得稍微琢磨在這些程序控制相關的部分. Condition if else if else 與一般...

鐵人賽 Modern Web DAY 16

技術 Day 16:什麼是純函式 ?(4):Impure Function

在先前的章節中,我們花了很多的篇幅來介紹純函式與副作用(Side Effects)的定義,這對我們來了解 Impure Function 會非常有幫助! 那什麼...

鐵人賽 Software Development DAY 13
大閘蟹料理指南(rust) 系列 第 13

技術 [D13] Functional Programming in Rust

Functional Programming 寫在如何使用 functional programming(之後都簡稱FP)之前, 我們得先來看看為什麼我們要這樣...

鐵人賽 Software Development DAY 24

技術 mostly:functional 第二十三章:Monoid 的 Monoid

延著走道往下,我走過一個又一個的房間。忽然有一種奇怪的念頭浮上,我感覺其實每個房間裡的鏡子雖然看似迥異,但其實一直都是同一面鏡子。它只是跟隨著我,不斷的移動到下...

鐵人賽 Software Development DAY 9

技術 Day9. Linq and Immutable

先從一個小故事開始 我記得我剛開始學C#的時候,先碰到了迴圈,假設有一個數列,我希望將數列中的每一項加1: var array = new int[] { 1,...

鐵人賽 Software Development DAY 4

技術 Day4. Pattern Match

第一次聽到Pattern,我以為是設計模式,難以理解為什麼都是pattern好像在講兩件事。這邊的模式意謂資料的型態,FP的函數需要關注的是輸入的資料格式,然後...

鐵人賽 Modern Web DAY 5

技術 過氣網紅:Class

舊觀念組成新結構,這些結構形成新觀念,新觀念不斷復合,並無休止地持續下去,越來越遠離每個人的最原始的本質。這就是人類思維的運作方式。 Douglas R. H...

鐵人賽 Software Development DAY 5

技術 Day5. Higher Order Function

再把map方法貼過來一次 public static Option Map<TSource, TResult>(this Option source...

鐵人賽 Software Development DAY 24

技術 mostly:functional 第二十三章的試煉:Monoid 的證明*

我們可以自己實作一個模仿 Maybe 行為的 type: -- Haskell 語法 data MightBe = NoThanks | Ok a deriv...

鐵人賽 Software Development DAY 10
Functional Programming with C# 系列 第 10

技術 Day10. ImmutableCollection

昨天的例子其實不需要特別轉成ImmutableList,因為linq的操作本身就具有不可變的概念,不可變得集合在多執行緒的時候具有很大的優勢,我們不需要考慮當共...

鐵人賽 Modern Web DAY 3

技術 摯友:Array(1/2)

唯有全然的了解,才有資格說愛或恨。 Leonardo da Vinci 此文討論Array為主,但可能會牽扯些許Object。 如果你跟JS打交道一段時間,...

鐵人賽 Modern Web DAY 24

技術 Day 24:高階函數與複合函數(2):科里化陣列方法

陣列方法可以說是 JavaScript 中最常使用的計算工具,不論是資料的處理,或是畫面的呈現,都少不了陣列方法。 在了解高階函式與複合函式的概念後,我們來試著...

鐵人賽 Software Development DAY 8

技術 Day8. 試試看用函數思考

今天來試試看函數式的思考吧,碎念一下當初選這個題目是因為發現自己OO中毒,沒有繼承不會寫程式。想要深入學習的FP話推薦Haskell趣學指南,我就拿裡面的題目來...

鐵人賽 Software Development DAY 12
Functional Programming with C# 系列 第 12

技術 Day12. Record(2)

昨天大概介紹了record的功能,今天來介紹一下可以怎麼使用。 觀察資料流程 假設今天有一個csv格式的資料,我想要把他整理成容易使用的方式 var csv =...

鐵人賽 Modern Web DAY 18

技術 Day 18:什麼是純函式 ?(5):結語

在這邊我們再次針對純函式做個簡單的整理,一個函式若要成立純函式需要包含以下特性: 一定要傳入參數 不帶有自身的狀態 回傳值只依賴傳入的參數 函式本身不會對其他...

鐵人賽 Software Development DAY 11
Functional Programming with C# 系列 第 11

技術 Day11. Record(1)

昨天講到了不可變的集合,今天再介紹C#中另一個具有不可變特性的的元素-Record,進入用C#寫FP的重點了! 基本介紹 如何建立一個Record // 跟...

鐵人賽 Software Development DAY 6

技術 Day6. Currying

昨天談到利用委派把函數最為另一個函數的參數,不知道大家有沒有注意到一見事情,當透過委派傳遞的時候,函數的內容其實並不馬上被執行。當我們傳遞委派的時候,目的是希望...