Functional Programming Patterns TIL 635 Functional Programming 12 checkraiser viết ngày 27/06/2018

Functional Programming Patterns

• Adding a function parameter (Parameterization)
• Passing a function parameter (Currying)
• Applying a function ( \$ )
• Composing a function: applies a succession of transformations to supplied data ((.))
• Folding: reduces a sequence of values to a single value by combining adjacent pairs (foldr1)
• Mapping: applies the same transformation to each value in a sequence (fmap)
• Iteration: applies the same transformation repeatedly to its own delivered values, building a sequence of successively more refined iterates (iterate)
iterate f x = [d0, d1, d2,..]
where [d0, d1, d2,...] = [x, f x, (f . f) x, ...]

• Zipping: delivers a sequence whose length matches that of the shorter of the sequences supplied as its last two arguments. Zipping stops when one of those arguments runs out of elements.
zipWith op [x1, x2, x3, ..] [y1, y2 , y3 , ...] =
[op x1 y1, op x2 y2 , op x3 y3 , ... ]


Example:

fibs :: [Int]
fibs = 0 : 1 : zipWith (+) fibs (tail fibs)

• Filtering: selecting certain elements from a given sequence to form a new one.
-- Filter as Folding:

filter keep = foldr op []
where
op x ys
| keep x = [x] ++ ys
| otherwise = ys


Note: When you are trying to describe a computation that involves repetition, try to view it as one of common patterns: mapping, folding, filtering, iteration, and zipping. The operators map, foldr, filter, iterate, and zipWith make up a kind of linguistic shorthand that covers probably over 90% of the computations involving repetition that you will encounter in practice.

• Polymorphic: operate on many different types of arguments (reverse)
• Type Class: collection of types that share a collection of functions and/or operations (Eq), for example, with Eq class, it made comparision possible.
• Higher order function: Functions that have an argument that is, itself, a function are called higher-order functions. Functions that deliver a value that is, itself, a function are also called higher-order functions. The composition operator is a higher-order function that does both.
• Encapsulation: Isolating components of software so that modifying internal details in one com- ponent will have no affect on other components of the software (where)

checkraiser 23-06-2018

Bình luận

Bỏ hay Hay
{{comment.like_count}}
{{ comment_error }}

Hiển thị thử

Chỉnh sửa

checkraiser

17 bài viết.
20 người follow
Cùng một tác giả
6 1
Tôi dự sẽ viết 1 loạt series về việc thiết kế 1 ứng dụng Rails như thế nào để nó có thể giúp bạn ăn ngon ngủ yên trong hằng năm trời: Khi mà việc t...
checkraiser viết 3 năm trước
6 1
5 10
Cũng ngót nghét đi làm hơn 6 năm rồi, mình chỉ thấy một điều khá "ngược đời": Các ông chủ , những người trả tiền cho bạn lại có tư duy lập trình ké...
checkraiser viết 1 năm trước
5 10
3 3
This post is a sample chapter from my (Link) How to render a ReactJS component isomorphically ? The trick is in defaultProps and componentDidM...
checkraiser viết hơn 3 năm trước
3 3
Bài viết liên quan
0 2
fCC: Technical Documentation Page note So I have finished the HTML part of this exercise and I want to come here to lament about the lengthy HTML ...
HungHayHo viết 5 tháng trước
0 2
20 1
Toán tử XOR có tính chất: + A XOR A = 0 + 0 XOR A = A Với tính chất này, có thể cài đặt bài toán sau với độ phức tạp O(N) về runtime, và với O(1)...
kiennt viết 2 năm trước
20 1
9 0
Có một tuyên ngôn cho chủ nghĩa tối giản trong ngành phần mềm. Link: http://minifesto.org/ Fight for Pareto's law, look for the 20% of effort th...
Cẩm Huỳnh viết 2 tháng trước
9 0

kipalog

bình luận

17 bài viết.
20 người follow

Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!