標籤:

關於模式匹配的一個加強

(更新: 很抱歉由於個人能力有限,這個功能暫時無法完成... 但我的肝一定不會放棄的...

抱歉,熬夜習慣了,再一次早睡失敗...

然後我進了一個裙聊,然後有人給我的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 |