[討論] 有人用過 函數式 elm-lang 前端開發嗎?

作者: qitisland (qu-island)   2020-01-18 12:31:56
最近剛好接觸到 elm-lang
https://elm-lang.org/
意外的感覺這個跟react 跟angular 相較起來很有效率
還沒仔細嘗試 func lang 的功能
不知道有沒有先進用過 elm 來開發前端?
作者: CoNsTaR ((const *))   2020-01-18 13:51:00
和人互動的東西 (UI/UX/IO...) 用函數式做是想不開還是...
作者: OhGNM (OhGNM)   2020-01-18 14:55:00
Sovmedcare有玩過,可以去Github看看
作者: Phenomenon (Kuma)   2020-01-18 18:47:00
為什麼跟人互動就不能函數式?
作者: CoNsTaR ((const *))   2020-01-18 23:06:00
要比喻的話,操作型語言(例物件導向)之於點陣圖就像定義型語言(例函數式)之於向量圖點陣圖你哪邊須要什麼就加上去就好,適合隨時修改、新增、刪除,也適合複雜、難以規約的圖向量圖希望把圖規約成幾何圖形,畫成沒有誤差之後就不去動它,適合商標、圖示之類不會變、簡約、有組織的圖如果你想要用函數式做 UI/UX 的話,你可能須要把人的習慣、覺得方不方便、喜好,背後的原因都找出來用程式建模,否則程式會變超亂超難懂,就像硬要把照片轉成 svg 一樣,裡面的向量根本看不懂,也失去了函數式萬物皆有道理的初衷可能你常常會覺得程式裡某個片段或某部分用函數式很適合,但這不代表整個程式都適合規約成函數式
作者: zeroshine (rain)   2020-01-19 00:52:00
現在 UI 走 functional 是顯學吧 約束簡化狀態改變的度 是在 UI 這種容易有複雜狀態共享中很需要的一件事^複雜
作者: CoNsTaR ((const *))   2020-01-19 01:53:00
先分成用函數式建立 framework,和用函數式使用 framework,我想原 Po 問的是後者函數式建立框架就像圖片邊界用向量表示,或許很適合,但不代表邊界以外的部分也適合用向量而且,目前只是發現函數式的某些特性有利於設計 UI 框架而已,不是整個 functional 都適合 UI舉個例子,目前的函數式語言普遍不承認 subtyping 就是一個造成難以真正使用純函數式設計 UI 框架的原因像 Rust 就是因為不承認 subtyping,所以雖然它也很函數式,但是到現在也還沒有堪用的 UI framework(這個問題已經被討論過很久了)更何況是 elm 這種純函數式的語言,而且還是使用框架而不是建立框架
作者: radishs (radishs)   2020-01-19 14:03:00
https://www.noredink.com/ 語言作者工作的公司,都是用elm 開發完成前端,看不出來不適合在哪裡http://builtwithelm.co/ 有更多使用的網站https://youtu.be/jl1tGiUiTtI 作者講端框架的趨同演化*前端框架
作者: CoNsTaR ((const *))   2020-01-19 23:09:00
我已經把問題跟你講了,也告訴你有 subtyping 的語言比較適合,要不要用就你的問題啦(補充一下,如果不要 subtyping,那就要有 dependent types 以及一個很好的模組系統,但這樣也不會比較簡單就是了再隨便舉個例子,關於作者的 talk,你有沒有發現 div、button 等等都是函數,不是建構子?這意味著什麼?他把函數當作降階的 GADT 來用,為什麼不用真正 type safe、immutable、it compiles it runs 的 GADT 呢?因為沒有 subtyping要是你不認為這些問題是問題,那就當作是沒問題吧...
作者: caasih   2020-01-21 00:33:00
functional GUI 的一種做法是將 input 看成 steam ,然後把 UI 和使用者行為設計成方便組合的樣子,好把 input轉換成每個 frame 該畫的畫面,好奇這種做法也必須要倚靠subtyping 嗎?
作者: qwdfbn (@@)   2020-01-21 12:06:00
生態差太多了,要做認真的產品再考慮考慮吧。玩玩就沒差囉用 elm, purescript 等語言去開發就是種浪漫而已~
作者: CoNsTaR ((const *))   2020-01-25 08:36:00
一樣啊,除非你的 UI 元件種類是固定寫死的問題是出在 modeling input,要兼顧 ad-hoc、type safty和 decidability如果須要的 types 都用某些未知方法生出來了,那你講的東西就是 obvious 沒錯

Links booklink

Contact Us: admin [ a t ] ucptt.com