ли смысл иметь такие функции, определенныедавя кортежи (а, (б, в)) (а, б, в) в FSharp
let squash12 (e:('a*('b*'c) )) = e |> (fun (a,(b,c) ) -> (a,b,c ))
let squash21 (e:(('a*'b)*'c )) = e |> (fun ((a,b),c ) -> (a,b,c ))
let squash13 (e:('a*('b*'c*'d))) = e |> (fun (a,(b,c,d)) -> (a,b,c,d))
let seqsquash12 (sa:seq<'T>) = sa |> Seq.map squash12
let seqsquash21 (sa:seq<'T>) = sa |> Seq.map squash21
let seqsquash13 (sa:seq<'T>) = sa |> Seq.map squash13
Я не мог найти другой способ, чтобы сделать мой (приводящий к вложенным кортежам), но показывая простую функцию, которая сопоставляется обобщенным n-мерным координатам.
Thks. Я заметил, что вывод типа медленный (я использую материал более высокого порядка только для базовых функций), поэтому я мог бы также указать тип, если он ускорит его. – nicolas
@nicolas - действительно, я не думаю, что тип inferrence медленный + эта версия будет намного быстрее во время выполнения (избегает вызова функции) –
@nicolas: см. Мой ответ на предложение в общих случаях. – pad