Thực tế là có. Có một dạng đặc tả cho các ngôn ngữ chức năng dựa trên các kiểu dữ liệu trừu tượng được gọi là đặc tả đại số. Hành vi của chúng rất giống với các đối tượng theo một số cách, tuy nhiên các cấu trúc là logic và toán học, và không thay đổi như các cấu trúc hàm.
Một ngôn ngữ đặc tả chức năng cụ thể được sử dụng trong lớp Thuật toán và Cấu trúc dữ liệu trong Đại học Buenos Aires có máy phát điện, quan sát viên và các hoạt động bổ sung. Trình tạo là một biểu thức vừa là một thể hiện vừa là một thành phần có thể có của kiểu dữ liệu. Ví dụ, đối với một cây nhị phân (ADT bt), chúng tôi có các nút rỗng và các nút nhị phân. Vì vậy, chúng tôi sẽ có máy phát điện:
-nil
-bin(left:bt, root: a, right:bt)
Trường hợp còn lại là bt, gốc là giá trị chung và phải là một bt khác. Vì vậy, nil là một hình thức hợp lệ của bt, nhưng bin (bin (nil, 1, nil), 2, nil) cũng hợp lệ, biểu thị cây nhị phân có nút gốc có giá trị là 2, nút con trái với giá trị là 1 và nút con phải null. Vì vậy, đối với một chức năng có nghĩa là, tính toán số lượng các nút trong một cây, bạn xác định một người quan sát ADT, và bạn xác định một tập các tiên đề ánh xạ tới mỗi máy phát. Vì vậy, ví dụ:
numberOfNodes(nil) == 0
numberOfNodes(bin(left,x,right))== 1 + numberOfNodes(left) + numberOfNodes(right)
này có lợi thế của việc sử dụng các định nghĩa đệ quy hoạt động, và có hơn, bất động sản chính thức thú vị mà bạn có thể sử dụng một cái gì đó gọi là cảm ứng cấu trúc để chứng minh rằng đặc điểm kỹ thuật của bạn là đúng (có, bạn chứng minh rằng thuật toán của bạn sẽ tạo ra kết quả phù hợp).
Đây là một chủ đề khá khoa học hiếm thấy bên ngoài các vòng kết nối học thuật, nhưng bạn nên hiểu rõ hơn về thiết kế chương trình có thể thay đổi cách bạn nghĩ về thuật toán và cấu trúc dữ liệu. Các thư mục thích hợp bao gồm:
Bernot, G., Bidoit, M., và Knapik, T. 1995. thông số kỹ thuật quan sát và giả định việc không phân biệt. Thuyết. Tính toán. Sci. 139, 1-2 (Mar. 1995), 275-314. DOI = http://dx.doi.org/10.1016/0304-3975(94)00017-D
Guttag, J. V. và Horning, J. J. 1993. Đường thông tin: Ngôn ngữ và công cụ cho Thông số chính thức . Springer-Verlag New York , Inc. Abstraction và Đặc điểm kỹ thuật trong phát triển phần mềm, Barbara Liskov y John Guttag, MIT Press, 1986.
tắc cơ bản của đại số Specification 1. Phương trình và ban đầu Semantics. H. Ehrig y B. MAHR Springer-Verlag, Berlin, Heidelberg, New York, Tokyo, Đức, 1985.
Với các liên kết tương ứng: http://www.cs.st-andrews.ac.uk/~ifs/Resources/Notes/FormalSpec/AlgebraicSpec.pdf http://nms.lcs.mit.edu/larch/pub/larchBook.ps
Đó là một heck của một thú vị đề tài.
NẾU bạn là thành lập trình với các kiểu dữ liệu đệ quy, hãy xem bài báo "Lập trình chức năng với Chuối, Ống kính, Phong bì và Dây thép gai" [1]. Nó rất thú vị và bắt tôi rất nhiều. [1]: = http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.41.125 – Tetha