Examples of using Functor in Vietnamese and their translations into English
{-}
-
Colloquial
-
Ecclesiastic
-
Computer
Tôi không biết monoid, functor, vân vân.
Một cuộc thảo luận về functor có thể dễ dàng có được rất chính thức và lý thuyết.
Functor, giống như bất kỳ tạo phẩm lập trình chức năng nào khác, bị chi phối bởi một số thuộc tính quan trọng.
Trên thực tế, bạn đã sử dụng functor suốt mà không nhận ra điều đó.
Nhưng với functor áp dụng, ta có thể áp dụng một hàm giữa nhiều functor.
People also translate
Thật dễ làm cho Maybe trở thành một thực thể của Functor, vì lớp Functor được định nghĩa như sau.
Khi nói đến một functor trên các con số, bạn có thể hình dung như là một functor có chứa các con số trong đó.
Nếu bạn bị rối trí về ý nghĩa của(-gt;) r, hãy đọc lại mục trước trong đó chúng tôi đã giải thích(-gt;)r là một functor như thế nào.
Nếu ta xem functor như là thứ có thể được ánh xạ lên, thì định luật fmap id= id có vẻ quá tầm thường, hoặc dễ thấy.
Biểu thức fmap(* 2) là một hàm nhận vào một functor f trên các số rồi trả về một functor cũng trên các số.
Các cấu trúc như functor bị cấm ném ngoại lệ, biến đổi các thành phần trong danh sách hoặc thay đổi hành vi của chức năng.
Và lần tới đây nếu có tạo ra một thực thể của Functor, thì hãy dành một phút để dảm bảo chắc rằng nó tuân theo các định luật functor.
Thật không may họ cũng có thể khá cồng kềnh đểsử dụng, đặc biệt nếu functor bạn muốn áp dụng là duy nhất cho hàm cụ thể.
A hèm, danh sách là một functor, vì vậy thứ này có lẽ cũng là một functor, vì ta vừa mới bổ sung thêm gì đó vào danh sách.
Như vậy căn bản nhất, điều này có nghĩa là nếu ta viết fmap id lên một functor, thì nó sẽ phải giống như là chỉ gọi id lên functor đó.
Nếu một kiểu tuân theo các định luật functor, thì ta biết rằng việc gọi fmap lên một giá trị thuộc kiểu đó sẽ chỉ ánh xạ hàm lên giá trị này, không hơn không kém.
Lý do cho điều này là, giống như tất cả các kỹ thuật lập trình chức năng, functor bắt nguồn từ toán học trong trường hợp này, lý thuyết thể loại.
Nhưng sẽ thế nào nếu ta có một giá trị functor là Just( 3*) và một giá trị functor Just 5, đồng thời muốn lấy hàm ra khỏi Just( 3*) để ánh xạ nó lên Just 5?
Ồ, một mặt, ta có thể ánh xạ các hàm nhận những hàm này làm tham số lênchúng, vì bất kì thứ gì bên trong một functor sẽ được trao cho hàm mà ta ánh xạ lên nó như là tham số.
Nếu bạn thực hiện tìm kiếm trên web nhanh chóng cho functor, bạn sẽ tìm thấy các bài viết sẽ bắn phá bạn bằng các thuật ngữ như: hình thái và thể loại.
Khi ta dùng một functor, thì chẳng khác gì nếu ta hợp lại các hàm trước rồi mới ánh xạ chúng lên functor, hoặc là ta lần lượt ánh xạ từng hàm lên functor.
Ví dụ: một hàm tạo kiểu được gọi là List là một functor nếu nó được trang bị chức năng kiểu( a-gt; b)-gt; List a-gt; List b tuân thủ luật pháp ở trên.
Functor được sử dụng để thao túng giá trị này, bằng cách trước tiên mở khóa nó khỏi bối cảnh, áp dụng hàm đã cho vào nó và bọc lại giá trị đó vào một bối cảnh mới.
Và lần tới đây nếu có tạo ra một thực thể của Functor, thì hãy dành một phút để dảm bảo chắc rằng nó tuân theo các định luật functor.
Về bản chất, functor không gì khác hơn là một cấu trúc dữ liệu mà bạn có thể ánh xạ các hàm với mục đích nâng các giá trị từ một thùng chứa, sửa đổi chúng, sau đó đưa chúng trở lại vào một thùng chứa.
Hình 1 Giá trị 1được chứa trong một thùng chứa W, functor được gọi với hàm bao bọc đã nói và hàm tăng, biến đổi giá trị bên trong và đóng lại vào một thùng chứa.
Nếu bạn nghĩ functor là những thứ để trả lại giá trị, thì bạn có thể hình dung việc ánh xạ lên các functor cũng như gắn một phép biến đổi với đầu ra của functor mà đầu ra này làm thay đổi giá trị.
Nếu bạn muốn áp dụng nhiều phép biến đổi với dữ liệu nào đó trong một functor thì bạn có thể khai báo hàm riêng của mình ở cấp chương trình cao nhất, tạo một hàm lambda, hoặc lý tưởng nhất là, dùng hàm hợp.
Nếu các thực thể Functor và Monad của một kiểu dữ liệu đều tuân theo các định luật functor và monad, thì hai thứ này sẽ tương đương nhau( và tất cả những monad mà ta đã gặp đến giờ đều tuân theo cả hai nhóm định luật).
Ở chương này, ta sẽ xem xét kĩ hơn về functor, cùng với những dạng mạnh hơn và hữu dụng hơn của functor có tên là functor áp dụng.