[問題] Julia函數可能有解也可能沒有的情況

看板Programming作者 (我有一隻貓)時間7年前 (2017/10/20 05:08), 編輯推噓3(3020)
留言23則, 3人參與, 7年前最新討論串1/1
我平常喜歡的程式語言很多在臺灣可能都偏冷 自然PTT這裡也沒有專版 其實這樣應該直接去StackOverflow啦 但畢竟有個programming版擺在這裡還是來看看 最近開始接觸Julia 雖然跟Matlab和R一樣index從1開始令人受不了 但感覺還算是一個蠻帥的語言 動態卻有一套不錯複雜的type system. 還有multiple dispatch都挺讓人驚艷的 不過由於蠻新的網路上資源相較少 我看到doc有提到說一個函數要盡量回傳相同的type 我想請問像是假設我現在要有一個函數來解決一些constraint的feasibility的問題 (例 如LP 有feasible的點就回傳 不然回傳確定infeasible或者技術問題無法判斷 這時候通常會怎麼做? 1. 除了確定feasible都throw exeption 2. 像一般沒在管type的language一樣有時回傳vector有時回傳string 3. 我個人超想用Haskell的Either 但這應該不是Julia解決問題的方式 4. 算是類似上面吧 用個enum(variant)的type來解決 尤其不同的情況分別是一個分支 但顯然Julia不直接支援代表這應該也不是Julia的解決方式 5. 類似C同樣回傳vector但一些特殊的值代表不同的意思 我看一下簡單的預定義函數就 是用類似的方法 像是找東西找不到回傳index 0之類的 但是在情況複雜化時感覺會很麻 煩 6. 回傳一個Symbol和Nullable{AbstractVector{<:Real}}的couple之類的 我目前是直接用2不過比起string回傳symbol 雖然好像沒啥差 Julia由於網路資源不多常常都不知道怎樣是比較好的practice 像是什麼時候函數參數要給type比較好 怎樣給比較適合 甚至連naming convention都有點複雜 (要不要_之類的 然後第一次在這個版發文 最喜歡的語言是OCaml 雖然寫到一半的tuto被冷凍一段時間了 然後PLT比這邊更冷 雖然PTT本來性質就不太偏這種東西 請多多指教這樣 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 92.90.16.47 ※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1508447317.A.051.html

10/20 10:58, 7年前 , 1F
……陣列1 base就受不了 只能稱為怪癖
10/20 10:58, 1F

10/20 13:20, 7年前 , 2F
單純習慣問題吧 (茶 不過因為其他方
10/20 13:20, 2F

10/20 13:20, 7年前 , 3F
面目前看起來不錯就算了
10/20 13:20, 3F

10/21 00:15, 7年前 , 4F
看了一下教學文件,可以用 typeof 來實現
10/21 00:15, 4F

10/21 00:15, 7年前 , 5F
嗎?
10/21 00:15, 5F

10/21 00:15, 7年前 , 6F
不過如果語言有支援的話,我會比較想用 r
10/21 00:15, 6F

10/21 00:15, 7年前 , 7F
efinement types 來做
10/21 00:15, 7F

10/21 00:48, 7年前 , 8F
用inner constructor來做算是有支援
10/21 00:48, 8F

10/21 00:48, 7年前 , 9F
但是我看不出來要怎麼應用 關鍵在於回
10/21 00:48, 9F

10/21 00:48, 7年前 , 10F
傳的type要長怎樣才好 不過這可能不好
10/21 00:48, 10F

10/21 00:48, 7年前 , 11F
回答吧
10/21 00:48, 11F

10/21 01:59, 7年前 , 12F
假設函數可能回傳A、B兩個型別
10/21 01:59, 12F

10/21 01:59, 7年前 , 13F
那有 refinement type 的話就可以把會讓
10/21 01:59, 13F

10/21 01:59, 7年前 , 14F
函數回傳 B 的參數 refine 掉
10/21 01:59, 14F

10/21 01:59, 7年前 , 15F
這樣就能保證函數只會回傳 A
10/21 01:59, 15F

10/21 04:11, 7年前 , 16F
嗯嗯只是這裡的問題是要計算過後才知道
10/21 04:11, 16F

10/21 04:11, 7年前 , 17F
有沒有解 而且refine掉感覺跟throw exc
10/21 04:11, 17F

10/21 04:11, 7年前 , 18F
eption一個意思
10/21 04:11, 18F

10/21 09:24, 7年前 , 19F
是啊,支援 refinement type 的語言是在
10/21 09:24, 19F

10/21 09:25, 7年前 , 20F
compile time 用 SMT solver 來求成員
10/21 09:25, 20F

10/21 09:25, 7年前 , 21F
10/21 09:25, 21F

10/21 09:25, 7年前 , 22F
不過我也覺得 refinement type 應該不是
10/21 09:25, 22F

10/21 09:25, 7年前 , 23F
julia 的風格
10/21 09:25, 23F
文章代碼(AID): #1PwHHL1H (Programming)
文章代碼(AID): #1PwHHL1H (Programming)