- パターンマッチを極限まで高めたら [無断転載禁止]©2ch.net
1 :デフォルトの名無しさん[sage]:2016/01/06(水) 20:16:42.56 ID:29zUzdnx - haskellとかにパターンマッチあるじゃん?
fib 0 = 1 fib 1 = 1 fib n = fib (n-1) + fib (n-2) みたいなやつ 計算量とか無視してあれをもっと強力にしたら面白くね? haskell だとリストが x:xs みたいなパターンマッチできるけど xs ++ [a] ++ ys ++ [a] ++ zs (同じ要素を2つ含むリストにマッチ) みたいなのもできるようにするとかどうなん?
| - パターンマッチを極限まで高めたら [無断転載禁止]©2ch.net
6 :デフォルトの名無しさん[sage]:2016/01/06(水) 20:59:07.00 ID:29zUzdnx - 正規表現かー。
正規表現をそのまま流用すればいい線行くのかな?
| - パターンマッチを極限まで高めたら [無断転載禁止]©2ch.net
7 :デフォルトの名無しさん[sage]:2016/01/06(水) 21:25:38.71 ID:29zUzdnx - [ ] リスト
x 一個の要素 xs... 複数の要素 a|b a or b [ x , xs... ] リストを先頭と残りに分解 [ 0 , xs... ] 先頭が0のリストにマッチ [ xs... , 1 , yx... ] 1を含むリストにマッチ [ xs... , xs... ] 同じ内容が繰り返してるリストにマッチ [ xs... , a , ys... , a , zs ... ] 同じ要素を二つ含むリストにマッチ [ xs... , 0|1 , ys... ] 0または1を含むリストにマッチ
| - パターンマッチを極限まで高めたら [無断転載禁止]©2ch.net
8 :デフォルトの名無しさん[sage]:2016/01/06(水) 21:26:26.53 ID:29zUzdnx - 計算量がやばいかな?
計算量はひとまず目をつぶろう
| - パターンマッチを極限まで高めたら [無断転載禁止]©2ch.net
9 :デフォルトの名無しさん[sage]:2016/01/06(水) 21:50:41.46 ID:29zUzdnx - [ xs... , xs... ] 同じ内容を繰り返すリスト
って正規言語なんだっけ?忘れちゃった。
| - パターンマッチを極限まで高めたら [無断転載禁止]©2ch.net
10 :デフォルトの名無しさん[sage]:2016/01/06(水) 21:57:56.85 ID:29zUzdnx - a=[1,2,3]
b=4 c=[5,6] match([1,2,3,4,5],[a... , b , c...]) => true
| - パターンマッチを極限まで高めたら [無断転載禁止]©2ch.net
11 :デフォルトの名無しさん[sage]:2016/01/06(水) 21:58:51.25 ID:29zUzdnx - ミスった
match([1,2,3,4,5,6],[a... , b , c...]) => true
| - パターンマッチを極限まで高めたら [無断転載禁止]©2ch.net
13 :デフォルトの名無しさん[sage]:2016/01/06(水) 22:06:01.20 ID:29zUzdnx - a=[1,2,3]
c=[5,6] [1,2,3,4,5,6].match{| [a... , x , c... ] | x } => 4 Ruby風に書いてみた
| - パターンマッチを極限まで高めたら [無断転載禁止]©2ch.net
14 :デフォルトの名無しさん[sage]:2016/01/06(水) 22:07:23.13 ID:29zUzdnx - >>12
わからん。 場合によっては綺麗にかけるようになるものもあるかも。
| - パターンマッチを極限まで高めたら [無断転載禁止]©2ch.net
15 :デフォルトの名無しさん[sage]:2016/01/06(水) 22:17:11.90 ID:29zUzdnx - あんまり正規表現にすり合わせようとしないほうがいいかもしれないな。
俺の勘だが。
| - パターンマッチを極限まで高めたら [無断転載禁止]©2ch.net
16 :デフォルトの名無しさん[sage]:2016/01/06(水) 22:44:46.34 ID:29zUzdnx - [1,2,3,4,5].match_all{| [ xs... , ys... ] | [ xs , ys ] }
=> [ [[],[1,2,3,4,5]], [[1],[2,3,4,5]], [[1,2],[3,4,5]], [[1,2,3],[4,5]], [[1,2,3,4],[5]], [[1,2,3,4,5][]]] 妄想が広がるなぁ
| - パターンマッチを極限まで高めたら [無断転載禁止]©2ch.net
17 :デフォルトの名無しさん[sage]:2016/01/06(水) 22:57:46.34 ID:29zUzdnx - rstrip [ xs... , ' ' ] = rstrip xs
rstrip xs = xs 上から優先してパターンマッチされる感じで。
|
|