Sử dụng GHC 7.10
Phiên bản đầu tiên của GHC có chứa nội dung này được phát hành vào ngày 27 tháng 3 năm 2015 .
Đây là phiên bản mới nhất và Prelude có một số bổ sung mới hữu ích cho việc chơi gôn:
Các (<$>)và (<*>)khai thác
Các toán tử hữu ích từ Data.Applicativelàm cho nó trong! <$>chỉ là fmap, vì vậy bạn có thể thay thế map f xvà fmap f xvới f<$>xmọi nơi và giành lại byte. Ngoài ra, <*>là hữu ích trong Applicativeví dụ cho danh sách:
Prelude> (,)<$>[1..2]<*>"abcd"
[(1,'a'),(1,'b'),(1,'c'),(1,'d'),(2,'a'),(2,'b'),(2,'c'),(2,'d')]
Nhà (<$)điều hành
x<$atương đương với fmap (const x) a; tức là thay thế mọi phần tử trong một container bằng x.
Đây thường là một thay thế tốt đẹp để replicate: 4<$[1..n]ngắn hơn replicate n 4.
Đề xuất có thể gập lại / chuyển đổi
Các chức năng sau đây đã được nâng từ làm việc trên danh sách [a]thành các Foldableloại chung t a:
fold*, null, length, elem, maximum, minimum, sum, product
and, or, any, all, concat, concatMap
Điều này có nghĩa là bây giờ họ cũng làm việc Maybe a, nơi họ hành xử giống như "danh sách có nhiều nhất một yếu tố". Ví dụ null Nothing == True, hoặc sum (Just 3) == 3. Tương tự, lengthtrả về 0 cho Nothingvà 1 cho Justcác giá trị. Thay vì viết x==Just ybạn có thể viết elem y x.
Bạn cũng có thể áp dụng chúng trên các bộ dữ liệu, hoạt động như thể bạn gọi \(a, b) -> [b]trước. Nó gần như hoàn toàn vô dụng, nhưng or :: (a, Bool) -> Boolngắn hơn một ký tự sndvà elem bngắn hơn (==b).snd.
Các hàm Monoid memptyvàmappend
Không thường xuyên là một trình bảo vệ cuộc sống, nhưng nếu bạn có thể suy ra kiểu đó, memptythì ngắn hơn một byte Nothing, vì vậy có điều đó.