Mã lambdada là gì?


16

Gần đây tôi đã nghe mọi người nói về mã là "lambda". Tôi chưa bao giờ nghe cụm từ này trước đây. Nó có nghĩa là gì?


Nó đã làm. Vài lần. Tôi thậm chí đã thử nó một vài lần - nhưng thật đáng buồn khi không có thành công. Có lẽ bạn sẽ gặp nhiều may mắn hơn? Cảm ơn những người đã repsond.
Oliver Moran

10
@Oliver, một phần của việc đặt câu hỏi ở đây là cũng cho thấy những gì bạn đã làm để trả lời câu hỏi đó để mọi người không thử những điều tương tự bạn đã làm và bị mắc kẹt. Bằng cách chỉ định vị trí trong các liên kết Wikipedia hoặc Google mà bạn thấy bạn đã nhầm lẫn, điều này đảm bảo câu hỏi của bạn được trả lời tốt hơn vì ở cấp độ chung, câu trả lời có thể không phải là điều bạn muốn vì nó chỉ tham khảo những gì bạn không nhận được trước đây. Chỉ cần xem xét thử những gì người khác đang đăng và xem những gì sẽ xảy ra. Bạn có thể ngạc nhiên với kết quả.
JB King

7
Tôi cảm thấy một bài rap có thể được tạo ra từ điều này - "mã của tôi rất lambda". Nhưng tôi không thể đánh bại nó có giá trị gì. :-)
Paul Nathan

1
@JB King + JB King - Cảm ơn bạn đã bình luận lịch sự. Theo nghĩa rộng, những gì cả hai bạn nói là hợp lý. Tuy nhiên, tùy thuộc vào truy vấn, đôi khi một câu hỏi ngắn gọn và mở sẽ tốt hơn trong việc gợi ra các loại câu trả lời không được tìm thấy ở nơi khác. Câu hỏi của tôi gợi ra chính xác loại câu trả lời mà tôi đang tìm kiếm. Tôi phras nó để nó sẽ. Tôi hy vọng các câu trả lời dưới đây hữu ích cho những người khác có cùng câu hỏi. Thật trớ trêu khi tôi hài lòng với câu trả lời đồng thời khiến một số người thất vọng với câu hỏi.
Oliver Moran

2
@Paul Nathan - bạn là mã nên lambda bạn rõ ràng không bao giờ lên kế hoạch cho tôi làm việc theo bất kỳ tiêu chuẩn nào; nó khó khăn hơn một máy đánh bóng!
glenatron

Câu trả lời:


20

Biểu thức Lambda là một sự trừu tượng hóa (đôi khi được gọi là hàm ẩn danh), một ứng dụng hoặc một biến (hầu hết các ngôn ngữ cũng thêm các hằng số vào danh sách này). Các thuật ngữ Lambda không nhất thiết phải là các hàm và không nhất thiết phải được truyền dưới dạng tham số, mặc dù đây là cách làm phổ biến.

Một ví dụ phổ biến về biểu thức lambda trong C #

Ví dụ:

List<int> items = new List<int>();
items.add(1);
items.add(2);
items.add(1);
items.add(3);

int CountofOnes = items.FindAll(item => item == 1).Count();

Console.Out.WriteLine(CountofOnes);

sẽ xuất: 2

Trong mã này, tôi chuyển một cấu trúc lambda cho FindAllchức năng của Listđối tượng .NET .

items.FindAll(item => item == 1)

Lambda trong cuộc gọi này thực hiện một phương trình đơn giản và trả về một boolean, cho FindAllbiết phải làm gì.


2
Điều đó không hoàn toàn đúng. Biểu thức Lambda là một sự trừu tượng hóa (không nhất thiết phải nhỏ ), một ứng dụng hoặc một biến (hầu hết các ngôn ngữ cũng thêm các hằng số vào danh sách này). Các thuật ngữ Lambda không nhất thiết là các hàm và không nhất thiết phải được truyền dưới dạng tham số.
SK-logic

Bạn nói đúng, tôi sẽ đưa ra câu trả lời cho rõ ràng.
Timothy Groote

3
Vui lòng cho tôi một ví dụ về biểu thức lambda không phải là hàm.
Ingo

1
@Ingo, đây là một thuật ngữ của tính toán lambda, tất nhiên. vi.wikipedia.org/wiki/Lambda_calculus#Lambda_terms
SK-logic

1
@ SK-logic Tôi thích nhìn nó khác đi. Các ngôn ngữ như Haskell và C # cho phép liên kết các hàm với các tên trong cấu trúc let (rec) hoặc ở dạng "siêu tổ hợp" (nghĩa là các ràng buộc chức năng cấp cao nhất) và điều này tôi thấy đó là một sự khác biệt nghiêm trọng mà tôi làm không cảm thấy đúng khi áp dụng thuật ngữ lambda ban đầu ở đây. Bởi vì không có điều gì khả thi trong LC (đó chính xác là lý do tại sao bạn cần một tổ hợp Y để đệ quy). Kết quả của ((\ xy -> x) a) và (const a) trong Haskell là giống nhau và cả hai đều là ứng dụng, nhưng tôi chỉ sử dụng thuật ngữ đầu tiên là "ứng dụng lambda".
Ingo

3

Hàm ẩn danh (chưa được đặt tên) hoặc một đối tượng thường được nội tuyến làm đối số cho hàm khác.

Do đó, không gian tên ít bị ô nhiễm.


1

Lambda thường đề cập đến một biểu thức chức năng trong ngữ cảnh lập trình chức năng.

Đây là một biểu hiện lambda trong python:

lambda x: x + 1

Đại diện cho một hàm làm tăng tham số của nó xthêm 1.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.