作者查詢 / CoNsTaR
作者 CoNsTaR 在 PTT [ C_and_CPP ] 看板的留言(推文), 共1276則
限定看板:C_and_CPP
看板排序:
全部C_and_CPP1276Soft_Job1202Tech_Job827Salary646Minecraft431PokeMon346Programming273Canada252Oversea_Job217Storage_Zone157WomenTalk108CATCH106Mix_Match100Free_box79PLT57logic43Folklore35Prob_Solve30HI_3rd26MiHoYo26Immigration21Gossiping20Modchip19soul19Military17kochikame13studyabroad10nb-shopping9Boy-Girl8MayDay5CD-R4Buddha3java3L_LifeJob3P2PSoftWare3sex3cookclub2Headphone2marvel2Math2MH2CompBook1Employee1japanavgirls1L_TalkandCha1Sub_CS1Taoism1<< 收起看板(47)
3F推: primer plus 和 primer 是兩本完全不同的書欸07/15 19:51
4F→: 如果有人推薦給你,他推薦的應該是 primer 不是 primer p07/15 19:51
5F→: lus 哦07/15 19:51
29F推: 系統語言 rust 最讚沒有之一07/10 00:44
50F推: C++ 有所有範式反對一票,光是 fp 就沒有了07/13 07:06
52F推: 這和 fp 說他們有 first class module(或 record)存 co07/13 08:59
53F→: ntext,可以算 OOP 有什麼不同 XD07/13 08:59
68F推: @ray2501 有 lambda calculus 是個什麼說法 orz07/13 11:07
69F→: 可以函數輸入輸出又是什麼說法 orz07/13 11:07
70F→: 你的定義怎麼好像跟別人都不太一樣 XD07/13 11:08
71F推: @Killercat Agda 呢?連 reflection 都是用自己寫的07/13 11:13
75F推: 如果要“成為”一個 FP 語言,最重要的前提是必須是 decl07/13 11:36
76F→: arative 吧,或至少在某些範圍內是 declarative,或者就07/13 11:36
77F→: 算做不到也要有一些 compromise 的產物,例如 rust 的 mu07/13 11:36
78F→: table 之類的07/13 11:36
79F→: 如果只是想要“支援 FP”最重要的就是要有 GADT 去配合某07/13 11:36
80F→: 種 exhaustive check(例如 pattern matching in terms o07/13 11:37
81F→: f pattern calculus,或是 Scott、Church encoding in te07/13 11:37
82F→: rms of lambda calculus),和 first class function07/13 11:37
83F推: *某種類似 GADT 去配合某種 exhaustive check07/13 11:39
86F推: 我不是故意要在 c/cpp 版討論 fp(你可以去 PLT 版開一篇07/13 12:04
87F→: ,我或其他大大可以在那裡回你),只是如果真的是 first07/13 12:04
88F→: class,有可能會不是 higher order 嗎?為什麼要分成兩07/13 12:04
89F→: 個條件?07/13 12:04
90F→: 然後既然是 first class,為什麼 c++ 不能有 flip 和 par07/13 12:04
91F→: tial application?(我知道有 bind)07/13 12:04
92F推: 解釋一下,我說的「類似 GADT 去配合某種 exhaustive che07/13 12:15
93F→: ck」是打造 first class 函數的其中一種方法,只有用這07/13 12:15
94F→: 種方法產生函數的語言才能算是某種 FP07/13 12:15
101F推: 我也是啊(程式架構的方法),所以我開頭就說了必須是 de07/13 12:51
102F→: clarative07/13 12:51
103F→: 後來提的 GADT,pattern matching,和 first class funct07/13 12:51
104F→: ion 都是讓你能夠用「fp 的方法」建構程式的要素,缺一07/13 12:51
105F→: 個就無法獨立運作07/13 12:51
106F→: 所以我才會說 c++ 不支援 fp(不能用 fp 的方法建構程式07/13 12:51
107F→: ),因為三個裡面根本沒有一個支援,最接近 fp 的也只有07/13 12:52
108F→: higher order function 而已07/13 12:52
109F推: if else 是對 boolean 做 induction(elimination),pat07/13 12:57
110F→: tern matching 是對任何 type 的 induction,意思是只要07/13 12:57
111F→: 是 type,就能夠被使用07/13 12:57
112F推: 因為 c++ 的 bool 來歷不明(你找不到 bool 這個 type07/13 13:12
113F→: 的 definition),if else 也來歷不明,你找不到 if els07/13 13:12
114F→: e 的 definition(形式化 if else 的方法),但在 fp,這07/13 13:12
115F→: 些都是可以用程式寫出來的(不是說寫一個編譯器,而是你07/13 13:12
116F→: 要用 bool 你可以自己寫一個 bool,你要 pattern matchin07/13 13:12
117F→: g,你可以自己用 Scott encoding),這個算是 if else 和07/13 13:12
118F→: pattern matching 最大的差別07/13 13:12
119F推: *應該要說「寫出來的 bool 直接可以 pattern matching」07/13 13:32
120F→: (不需要編譯器,你在紙筆上也可以做),這樣講比較好傳07/13 13:32
121F→: 達 GADT 和 pattern matching 之間的關係07/13 13:32
126F推: ...... 我不知道要講什麼了 orz07/13 16:35
127F→: 你真的知道你講的那些名詞是什麼意思嗎?07/13 16:35
128F→: 關於那個 library,等到它不用 macro 的時候再來嘴吧07/13 16:35
134F推: 問題是 TMP 做不到這樣啊,TMP 自己都做不到 FP 很多事07/13 17:12
135F→: 情了,你怎麼會期待用它寫出來的元件可以 magically 把你07/13 17:12
136F→: 的程式“變成” FP07/13 17:12
142F推: 如果能接受英文的話可以看這個07/13 18:39
143F→: https://youtu.be/PLFl95c-IiU07/13 18:39
144F→: 它標題雖然寫 DDD 可是其實是在講 FP07/13 18:39
145F→: lisp 我不會,但不一定非得 GADT,GADT 和 pattern match07/13 18:39
146F→: ing 也都只是語法糖而已,別的類似的東西也可以07/13 18:39
147F→: 如果你接受 untyped 的程式,你也可以完全不要任何類似 G07/13 18:39
148F→: ADT 或 pattern matching 的東西,就完全的 function 也07/13 18:39
149F→: 是可以,但我認為大部分人說的 FP 不是那樣的東西07/13 18:39
150F推: 那要請教一下 L 大 How modern C++ looks like07/13 18:48
161F推: 整理了一下:07/13 19:42
162F→: 1. C++ 是地表最強語言,因為不論什麼功能沒有都只是目前07/13 19:42
163F→: 沒有,什麼功能不好都只是目前不好,以後還是都會有,都07/13 19:42
164F→: 會變好的07/13 19:42
165F→: 2. 要是真的不能有,也是因為相容性和標準化,才不是因07/13 19:42
166F→: 為 C++ 不支援07/13 19:42
167F→: 我是不知道把語言的“狀況”寫在紙上叫它“標準”有什麼07/13 19:42
168F→: 神奇的效果,但就我所知,所有的社群語言誰不是經過很多07/13 19:42
169F→: 年的討論才會讓實作成為語言的一部分,語言的發展哪個沒07/13 19:43
170F→: 有目標和提案,哪個不會考慮相容性07/13 19:43
171F→: 如果有一個人跑來跟你說 Haskell 有 dependent types,沒07/13 19:43
172F→: 有 dependent types 的都是 ancient Haskell 你覺得如何07/13 19:43
173F→: ?07/13 19:43
176F推: enum 的確在有些狀況下可以做 sum type07/13 20:01
177F→: 可以用 struct(product type,and)和 inheritance(sum07/13 20:01
178F→: type,or)兜出來07/13 20:01
179F→: 雖然這兩個東西本意應該也不是給你這樣用的就是了 XD07/13 20:01
180F推: 然後那個影片只是在講用 FP 做 typing 的方法,還是有很07/13 20:04
181F→: 多其他東西是沒有講到的,所以真的用 FPL 寫程式的時候可07/13 20:04
182F→: 能還是會有點陌生07/13 20:04
195F推: 我會在這邊回是因為有人宣揚 c++ 支援 FP,你可能漏看前07/13 20:14
196F→: 因後果了07/13 20:14
197F→: 我不會沒事跑去跟不認識的人說某個語言沒有某個特性/功07/13 20:14
198F→: 能,目前沒那麼無聊,謝謝07/13 20:14
199F推: 而且 fyi,就算你講的那兩個提案都通過了,c++ 仍然離支07/13 20:16
200F→: 援 FP 非常遙遠07/13 20:16
201F→: 至少我想不出有什麼提案的組合能夠讓 c++ 支援 FP 又向07/13 20:19
202F→: 後相容啦,可能我廢07/13 20:19
8F推: rust07/06 04:20
20F推: 聽說之前有人把一個已經廣泛使用超過十年的 c lib(加密07/07 23:29
21F→: 用的 lib),用 Agda 重寫(要證明語意想等性的),結果07/07 23:29
22F→: 還是發現幾十個 bug...07/07 23:29
25F推: 應該都有問題吧 樓上07/11 21:29
26F推: 這就像問走路跌倒是你的問題還是鞋子的問題一樣07/11 21:31
27F→: 非得只能是其中一邊的問題嗎?07/11 21:31
32F推: 樓上這麼說意思是對於所有問題,一定可以找到至少一種完07/13 07:15
33F→: 全合適的語言囉?07/13 07:15
34F推: 在我看來反而是因為都當成語言來學習「能溝通(用)就好07/13 07:31
35F→: 」,才會這樣07/13 07:31
36F→: 語言(有限符號的集合)只是一個程式語言的很小一部分,07/13 07:31
37F→: 只是那個形式系統的長相而已07/13 07:31
41F推: ... 身為開發者不懂自己寫的東西的意思,會比專案管理選07/13 11:20
42F→: 錯鞋還要好嗎,我是不太懂啦07/13 11:20
1F推: 重點應該是 ra2,雖然十幾年前就已經有 XCC 了07/07 23:17
2F→: 抱歉,重點誤07/08 10:00
17F推: EA 的 code 就不用太認真了吧,以前做過 ra2 的模組,光07/10 01:02
18F→: 是從設定檔就已經可以看出整個疊床架屋了,新舊系統混在07/10 01:02
19F→: 一起,而且同一個單位(兵種、建築)有各種不同實作,根07/10 01:02
20F→: 本不知道最後用的是哪個,數千個參數之間互相干擾,還可07/10 01:02
21F→: 以看出整個系統是直接從別款遊戲改來的,連內部名稱都沒07/10 01:02
22F→: 有換,原本的遊戲機制也直接晾在那裡,就直接加 ra2 的07/10 01:02
23F→: 機制...07/10 01:02
24F→: 雖然 ra2 是真的經典啦...07/10 01:03
10F推: clang 記得也可以有 closure,不過也是 extension07/08 09:57
11F→: 在 clang 叫做 blocks,-fblocks07/08 09:58
12F→: 想要用 clang 編 gcc 的 source 應該可以用 -std=gnu1107/08 09:59
13F→: 之類的?07/08 09:59
13F推: option, result06/29 04:37
35F推: 想要有保障就用 inheritance,不要用 union 啊06/21 11:02
36F→: 要用 union 就要自己人腦生成 induction principles 和06/21 11:07
37F→: 檢查所有 introduction/elimination06/21 11:07
2F推: 應該可以用 member reference?reference 到陣列元素06/21 10:55
3F→: 這樣你就可以保留變數名稱,同時也有陣列的優點06/21 10:55
28F推: 認真建議你先寫 Agda 或 Coq 來熟悉一下直構邏輯(types05/29 05:19
29F→: )和 pattern calculus(lambda calculus)05/29 05:19
30F→: 如果你選的是 Agda,應該可以無痛直接接上 Haskell05/29 05:19
31F→: 在 Haskell 裡就有對電腦程式各種東西做數學的抽象05/29 05:19
32F→: 掌握了 Haskell 的 GADT 之後就很容易可以掌握 OO 語言了05/29 05:19
33F→: 語法從 Haskell 跳到 OO 不習慣的話,可以先寫 rust 找一05/29 05:19
34F→: 下對應05/29 05:19
35F推: 啊... 我說的對程式的東西做數學的抽象指的就是像你講的05/29 05:28
36F→: void、IO 之類的東西05/29 05:28
17F推: 不影響架構的東西都隨便啦05/11 09:57
18F→: 沒定 convention 你管他那麼多05/11 09:57