私は以前の関数型プログラミングのバックグラウンドなしでf#を学んでいます-進歩し始めていますが、これに固執しています。誰かが99のf#問題の問題9の解決策を理解するのを手伝ってくれませんか?それらはここで見つけることができます:[http://fssnip.net/an] [1]
基本的に、提供されたソリューションでパターンマッチングがどのように機能するかを理解していません。まず、xssとは何ですか?助けを応援します!
問題9:リスト要素の連続した複製をサブリストにパックします。リストに繰り返し要素が含まれている場合は、それらを別々のサブリストに配置する必要があります。
例:
パック['a'; 'a'; 'a'; 'a'; 'b'; 'c'; 'c'; 'a'; 'a'; 'd'; 'e'; 'e'; 'e'; 'e']
val it:char list list = [['a'; 'a'; 'a'; 'a']; ['b']; ['c'; 'c']; ['a'; 'a']; ['d']; ['e'; 'e'; 'e'; 'e']]
サンプルソリューション;
let pack xs =
let collect x = function
| (y::xs)::xss when x = y -> (x::y::xs)::xss
| xss -> [x]::xss
List.foldBack collect xs []