想自學入行IT(Day 16 修正 + Day 17)

29 回覆
2 Like 4 Dislike
2021-07-17 16:06:13
Day 16 修正
closure function
lower order function 可以用higher order function嘅variable,咁我當佢係一個scoping問題。
statement
1. declare statement(即係const,var,let)用const同let,因為var會較容易有side effect(畀人改到)。
2. conditional statement(if/switch)最好就有加返個else/default,咁個function就一定有嘢會retrun。
3. loop statement 應該避免直接用for loop 因為會比較容易有side-effect。 用一pure function去代替會比較好(example forEach)。
4. disruptive statement(break, continue, skip, return)但通常只係會用return。
不過關於呢啲咁嘅用法, 我覺得就應該唔會用到咁details。 因為應該冇乜機會寫純functional programming。


Recursion
關於呢part我會暫時skip先, 因為呢一part係重視algorithm。 例如depth first search, breath first search(finding shortest path)呢一啲recusive algo我淨係識講,但係唔識點樣運用。

pipeline
呢個好似middleware咁,pass一個function result入落另一個function度。
normal function可以 import pipe from lodash 去 link up啲functions
如果係object 都可以用dot operator 去 link up
example
object.filter(func1).map(func2)

currying
可以 import curry from lodash
係一個clourse function + higher order function嘅混合體。即係一個function會return 第二個function。
curry function係得unary function(only one parameter)

partial application
大至上類似curry,不過唯一分別partial application容許function可以多過一個parameters去做passing。

Day 17
我研究了幾天functor。但是,我好多source去幫助我理解它的概念。因此,今天的內容可能會有錯,同埋都唔係好知點樣去解釋。如果您發現任何錯誤,請糾正我。

咁我嘅理解係:
Functor is an object that can be mapped over。
同埋要滿足兩個rules。
Functors must preserve identity morphisms
Functors preserve composition of morphisms

即係似composition-functions
https://www.math24.net/composition-functions


咁JavaScipt 有嘅Functor應該係得Array

https://ithelp.ithome.com.tw/articles/10240162?sc=rss.qu
https://www.codingame.com/playgrounds/2980/practical-introduction-to-functional-programming-with-js/functors-and-monads

所以我跟咗個網搵埋Haskell。咁Haskell因為會有多幾個type, e.g. Either, Maybe
咁睇 [] 是 Functor
fmap :: (a -> b) -> [a] -> [b]

如果我冇記錯
fmap -- name of function 
(a-> b) -> [a] -- input parameter type 
(a->b) -- input function 
[a] -- input array
[b] -- output array 

https://blog.csdn.net/zwvista/article/details/54766541

如果有啲師兄知道一個正確嘅解釋,麻煩你下面回覆。
2021-07-17 16:08:10
** 唔係好多source去幫助我理解 ** 先啱
2021-07-17 16:42:36
點解好似咁無系統性
飛嚟飛去
有啲basic嘢未搞掂
又無端端去理Functor呢類嘢
2021-07-17 16:52:57
試下用ramda唔好用lodash
又其你想學FP
2021-07-17 16:54:07
嗰時唔記得邊個叫睇hof,之後trace trace下變fp
2021-07-17 16:56:24
學下theory啫,example係用loadsh。所以寫返落隨筆。

Btw thx ching 意見
2021-07-17 16:58:14
唔係好明你意思不過bootscamp嘅朋友應該仲勁。4個月9-6學fullstack
2021-07-17 17:10:44
To FPer:
No one cares if list/optional/maybe/nullable/etc are functors. No. one.
Don’t do abstraction when things are not the same or not even similar.
In OOP we didn’t create a “mappable” base class. Not because we can’t, but because it is disgusting. (A mappable interface maybe good though)

Seriously, no one care list::map(f) is a list->list such that map(id)=id and map(f∘g)=map(f)∘map(g). We just focus on that it can apply function on each element without mentioning the order.
2021-07-17 17:34:07
回頭是岸,如果你目標淨係入行,唔需要睇太深入fp, 你理解佢有咩情況下好過oop 就夠。 我都有興趣知道e 加有邊間公司係full stack fp, 聽黎聽去都係得jane street.

我諗e 加大多數公司所謂用fp 其實只係講緊用多左function.

E 加流行 oop mix fp, 但其實只係mix 左fp 少部份ge 概念。

真正係方便左我自己現實工作ge 用途,我諗有以下:

1. Higher order function: 你可以pass function or return function 咁可以取代 class 例如 parser class 可以變 parse function

2. Stateless function: oop 有時會有d class 係得static functions, 無任何internal state. 呢個情況我地可以用抽d functions 出黎。

3. Lambda function: 你話 map filter 呢d 我自己就唔覺得係fp 獨有ge.... 只係fp 多數有lambda 比你易d 做map 同filter

4. Recursion: 唔係建議你production 用recursion, 不過寫recursion 會訓練到你諗base case, next iteration, terminal condition. 之後你寫for loop while loop 都有用。


利申 工作 python, 學過Haskell
2021-07-17 17:38:59
你整緊咩,學D野咁散
2021-07-17 17:40:29
應該冇特別嘢整緊
我自己以前都係咁
東睇睇西望望
最後乜都唔曉
2021-07-17 17:49:22
咁我略睇fp之後直插react最近要寫,不過上網copy and paste改下code又做到。覺得咁樣唔係太理想
2021-07-17 17:53:15
本書已經推到一半我會推埋先
2021-07-17 18:04:14
其實真係無人答到你, 我覺得如果你太跟連登上面d 人comment 學ge 話,可能變左同bootcamp 差唔多。
我比唔到直接答案你。

我呢排見到個youtune channel 叫 freecodecamp.org 上面有好多教幾個鐘ge 片。 例如10個鐘react. D 片都幾高質。 如果煲得哂同煲得明,應該已經勁過好多人。

你問我真心ge 話,我會答你,你用多d 時間練熟用for loop while loop + 一兩個web framework. 你可能已經勁過一半以上 cs fg.
2021-07-17 18:05:00
lm
2021-07-17 18:09:05
多謝ching意見希望到時我開到react你可以入嚟指導下
2021-07-17 23:53:34
整幾舊實際野run到,demo到,有啲user 用下,夠你入行啦,學啲散件意義不大,用到先學最實際,用唔著就唔駛晒時間
2021-07-19 05:50:50
唔單止要識用
見工個陣要識答
唔識用又唔識答
話知你份portfolio靚到爆都唔請
所以最緊要係make sure
自己接收緊正確既知識
2021-07-19 17:42:32
學呢啲唔做project是無撚用的
2021-07-20 01:37:49
上面有師兄講到fp現實無人care functor
其實fp 個核心(我理解)
係利用唔同function 組合既特性得出唔同既rules(associative , commutative ...) 利用呢d rules 可以optimize 個performamce
要睇你個program ap唔apply 到d rules, 其實要好care input 同output type
係fp 界function 既in/output type好重要,重要到有個category theory 去研究type呢個concept, functor, monad ..都係係呢度出黎
樓主有興趣可以睇呢個fp primer 比個idea 你
https://youtu.be/XrNdvWqxBvA
2021-07-20 08:29:50
I don’t think category theory roots from fp 😓

我認同每種paradigm有佢擅長既optimization
但係我唔覺得base on “rules”係好killer既optimization
最killer既我覺得係pure所導致既parallelism which is not exclusive to fp
2021-07-20 09:15:38
加油,你仲有幾年先學得晒
2021-07-20 19:31:26
Lodash 比ramda 有咩好處?
我見前者star同fork多好多
吹水台自選台熱 門最 新手機台時事台政事台World體育台娛樂台動漫台Apps台遊戲台影視台講故台健康台感情台家庭台潮流台美容台上班台財經台房屋台飲食台旅遊台學術台校園台汽車台音樂台創意台硬件台電器台攝影台玩具台寵物台軟件台活動台電訊台直播台站務台黑 洞