Tại cốt lõi của nó, một bảng tính là một ngôn ngữ chức năng với kiểu gõ động và mỗi chức năng hoặc giá trị có thể được tham chiếu như một ô trong ma trận.
Thay vì những thứ như (defn some-name ...)
các some-name
phần được đặt trong một tế bào riêng của mình.
Nếu bạn đi đến một ide ngôn ngữ chức năng cập nhật động (chẳng hạn như lighttable cho clojure), bạn sẽ thấy nhiều chức năng tương tự như một bảng tính. Liên kết một giá trị với một tên, viết một hàm sử dụng giá trị đó, thay đổi giá trị và đầu ra của hàm thay đổi ngay lập tức. Điều này giống như làm một cái gì đó như viết =A1 + B2
ở vị trí của C3
excel.
Vì vậy, các lập trình viên chức năng thường thích viết bảng tính như các chương trình đồ chơi ... và chủ đề của các tài liệu nghiên cứu cũng vậy. (Vâng, tôi xin lỗi, tất cả họ đều đứng sau một tường thành ACM.org)
Lập trình chức năng bảng tính
Cộng đồng lập trình chức năng đã thể hiện sự quan tâm đến bảng tính, nhưng đáng ngạc nhiên là dường như không ai đã xem xét việc tạo một bảng tính tiêu chuẩn, như Excel, làm việc với ngôn ngữ lập trình chức năng tiêu chuẩn, chẳng hạn như Haskell. Trong bài báo này, chúng tôi chỉ ra một cách mà điều này có thể được thực hiện. Hy vọng của chúng tôi là bằng cách làm như vậy, chúng tôi có thể khiến các lập trình viên bảng tính thử nghiệm lập trình chức năng.
Biểu mẫu / 3: Một ngôn ngữ hình ảnh thứ nhất để khám phá các ranh giới của mô hình bảng tính
Mặc dù những người gièm pha lập trình chức năng đôi khi cho rằng lập trình chức năng quá khó hoặc phản trực giác đối với hầu hết các lập trình viên để hiểu và sử dụng, bằng chứng ngược lại có thể được tìm thấy bằng cách nhìn vào sự phổ biến của bảng tính. Mô hình bảng tính, một tập hợp con thứ nhất của mô hình lập trình chức năng, đã tìm thấy sự chấp nhận rộng rãi giữa cả lập trình viên và người dùng cuối. Tuy nhiên, có nhiều hạn chế với hầu hết các hệ thống bảng tính. Trong bài viết này, chúng tôi thảo luận về các tính năng ngôn ngữ loại bỏ một số hạn chế này mà không đi lệch khỏi mô hình đánh giá khai báo, đặt hàng đầu tiên.
Thực hiện bảng tính chức năng
Một lượng lớn phát triển người dùng cuối được thực hiện với bảng tính. Ẩn dụ bảng tính rất hấp dẫn bởi vì nó trực quan và phù hợp với thử nghiệm tương tác, nhưng theo quan sát của Peyton Jones, Blackwell và Burnett, ẩn dụ bảng tính không thừa nhận ngay cả sự trừu tượng cơ bản nhất: đó là biến một biểu thức thành một hàm được đặt tên. Do đó, họ đã đề xuất một cách để xác định hàm theo bảng tính với các ô đầu vào và đầu ra được chỉ định; chúng ta sẽ gọi nó là một bảng chức năng.
Bắt đầu Bảng tính tại Wikipedia đưa ra một số gợi ý về cách triển khai:
Một bảng tính là một chương trình ứng dụng máy tính tương tác để tổ chức và phân tích dữ liệu ở dạng bảng. Bảng tính được phát triển dưới dạng mô phỏng trên máy vi tính của bảng tính kế toán giấy. Chương trình hoạt động trên dữ liệu được biểu diễn dưới dạng các ô của một mảng, được sắp xếp theo hàng và cột. Mỗi ô của mảng là một phần tử bộ điều khiển của bộ xem mô hình, có thể chứa dữ liệu số hoặc văn bản hoặc kết quả của các công thức tự động tính toán và hiển thị một giá trị dựa trên nội dung của các ô khác.
Dựa trên mô hình này từ mô hình Outline of Model-View-Controller như được thể hiện trong các thư viện Java . Tác giả tiếp tục đề cập đến các applet (một chút ngày tháng, nó được viết vào năm '93 -96) và đề cập đến trang web của anh ta vào http://csis.pace.edu/~bergin/Java/applets.htmlm (có , applet) cho mã bảng tính tương ứng http://csis.pace.edu/~bergin/Java/S Lansheet.java
Tôi sẽ chỉ ra rằng toàn bộ bảng tính, không phải là lớn trong applet 570 dòng này bao gồm cả tài liệu.
Điều đó nói rằng, tùy thuộc vào ngôn ngữ, bạn có thể có thể làm tất cả chỉ với các con trỏ hàm trong một mảng thưa thớt.