Tôi biết điều này không thực sự trả lời câu hỏi của bạn, nhưng điều đáng chú ý là chỉ ra. Trong F # và các ngôn ngữ chức năng khác, bạn thường thấy các mô-đun với các phương thức tĩnh (Giống như mô đun Seq) được thiết kế để bao gồm các hàm khác. Theo như tôi đã thấy, các phương thức thể hiện không dễ dàng được tạo ra, đó là một trong những lý do tại sao các mô-đun này tồn tại. Trong trường hợp của phần mở rộng này, bạn có thể muốn thêm một hàm vào mô-đun Chuỗi.
module String =
let right n (x:string) =
if x.Length <= 2 then x
else x.Substring(x.Length - n)
Sau đó, nó sẽ được sử dụng như vậy.
"test"
|> String.right 2 // Resulting in "st"
["test"; "test2"; "etc"]
|> List.map (String.right 2) // Resulting in ["st"; "t2"; "tc"]
Mặc dù trong trường hợp này, phương pháp mở rộng sẽ không có nhiều mã hơn.
["test"; "test2"; "etc"]
|> List.map (fun x -> x.Right 2)
darn, đó là những gì tôi muốn. – esac