This article is rated C-class on Wikipedia's content assessment scale. It is of interest to the following WikiProjects: | ||||||||||||||||||||||||
|
This article is based on a former version of Purely functional, functional programming and for the datastructure page, on the intro of the purely functional data structure page.
This article is.redundant, should be deleted
editThe Functional programming article already discuss what means pure functional. That is an essential feature of FP, there is no heed to write a separate redundant article. — Preceding unsigned comment added by 2806:107E:4:FEDB:649E:5342:FF86:D820 (talk) 14:10, 6 February 2018 (UTC)
- For your information, you can do a formal request for deletion as explained in https://en.wikipedia.org/wiki/Wikipedia:How_to_delete_a_page#Proposed_deletion . Since I essentially created this page, as you can imagine, I'm going to be against deletion. I believe both subject are distinct enough to requiere separate pages. However, functional programming may need to be cleaned a little bit, and some redundant informations may be removed from there. Arthur MILCHIOR (talk) 22:01, 6 February 2018 (UTC)
- I agree. This article is just someone's opinion or original research. The word "purely" in "purely functional programming" doesn't refer to purity of evaluation, but is simply a syonym of the word "solely": purely functional programming is programming that is nothing but functional. The opposite is not purely functional programming, which mixes functional with procedural. The functional activities are based on functions, not procedures. In computer science, "pure function" is redundant. What happened is that some mainstream programming languages like Lisp and C decided to implement functions and procedures using the same syntax. Both are called "function" in the literature surrounding those languages; the distinction is behavior. So then we need "pure function" to distinguish the situation of when we use the common syntax to write an actual function and not a procedure. To write a procedure, we write a function, and imbue it with side effects like I/O or mutation. Languages like Lisp have not only first class functions but, since procedures are functions, they have also higher level procedures. Programming with procedures is procedural programming, not functional programming. It is procedural programming even if it uses declarative expressions, like mapping over collections, reducing and so on. These are basically just replacements for iteration. Higher order procedures allow a loop to be placed into a procedure rather than open-coded. Instead of "for each item, do this mutation", you can call a function which, for each item, invokes some mutating lambda.KazKylheku (talk) 22:30, 12 June 2023 (UTC)
- In the article, the one cited source is Sabry's "What is a purely functional language?", but there are plenty of sources that have adopted Sabry's definition or similar, certainly enough to satisfy WP:GNG. I would encourage adding some sources. Mathnerd314159 (talk) 20:18, 13 June 2023 (UTC)