關於模式匹配的一個加強
(更新: 很抱歉由於個人能力有限,這個功能暫時無法完成... 但我的肝一定不會放棄的...
抱歉,熬夜習慣了,再一次早睡失敗...
然後我進了一個裙聊,然後有人給我的flowpython 提了一個意見。
舉個haskell的例子
f :: (Num a) => [a] -> annf []t= 0nf (x:[]) n = xnf x = ntlet a:b = xntin a + f bn
然後他問我flowpython可不可以做到這個樣子。
我說你可以這樣。
f = .x-> r where:n condic x:n [==]n case [] => r = 0nn +[==]n case (a,*b)->b:[]=> r = ann otherwise => r = a + f(b) n
兩者差距還是挺大的我承認。。
所以我考慮了一個新語法。
case def nf ([], kw_1 = 1) = [] # if input_args = ([], kw_1 =1)nncase def+(type)nf (a:float) = 1.0 # if a == input_args and type(a) == floatnncase def[is not]nf (5) = "not 5"n
於是上面的sum就變成
case def nf ([]) = 0ncase def+[==]nf (a,*b)-> b:[] = ancase def+[]nf (a,*b) = a + f(b) n
嘛,如何?
推薦閱讀:
※Python Web 框架大亂斗:哪個框架適合你?
※如何用數學軟體畫一個「聖誕樹」?
※反反爬蟲利器!教你怎麼用代理,撥號換IP……
TAG:Python |