Talk:Anonymous function
This is the talk page for discussing improvements to the Anonymous function article. This is not a forum for general discussion of the article's subject. |
Article policies
|
Find sources: Google (books · news · scholar · free images · WP refs) · FENS · JSTOR · TWL |
This article is rated C-class on Wikipedia's content assessment scale. It is of interest to the following WikiProjects: | |||||||||||||||||||||||||||||||||||||||||
|
To-do list for Anonymous function:
|
Lambda in Java
editJava 8 now supports lambdas, so it should be added to this page. — Preceding unsigned comment added by 12.111.88.66 (talk) 05:18, 18 August 2013 (UTC)
Typical usage summary?
editThe article might be more comprehensible if it introduced anonymous functions as *parameters* to named function. — Preceding unsigned comment added by 68.50.114.83 (talk) 22:11, 21 November 2011 (UTC)
Full vs. Some support?
editI wasn't sure what the difference was between "Full" and "Some" support. Added Perl as having "Full" support, since it can do the five examples: sort, map, grep, curry, reduce ('reduce' is in List::Util). And, it has fully anonymous functions. Benizi (talk) 00:16, 20 February 2008 (UTC)
Expert tag and merge discussion
editSee Talk:First-class_function#Merge_anonymous_function_here. Pcap ping 21:40, 20 August 2009 (UTC)
Section 3.14 Python
editHa! Unexpected humor! Πthon is section 3.14.
Sorry, I can't help myself. Unimath (talk) 01:49, 25 December 2010 (UTC)
Ubiquitous in languages with first-class functions... such as Haskell?
editThis sentence in the introduction struck me as odd:
- Anonymous functions are convenient to pass as an argument to a higher-order function and are ubiquitous in languages with first-class functions such as Haskell. [emphasis mine]
Why is Haskell used as an example of a language where anonymous functions are convenient–or better yet—why is there an example language at all? Anonymous functions aren't unique to Haskell are there are other more (historically) notable programming languages that use them. —BiT (talk) 02:20, 22 November 2011 (UTC)
PHP 5!
editin newer versions of PHP it is possible to define anonymous functions: PHP-Manual: Anonymous Functions. so please update that paragraph. --Feudiable (talk) 20:51, 5 January 2012 (UTC)
Why not use the same example for all languages?
editRuby for instance has a completely different example, this makes comparing syntaxes dificuilt. — Preceding unsigned comment added by 116.193.144.2 (talk) 05:08, 8 March 2012 (UTC)
merge from lambda (programming)
editSomeone put a merge tag on lambda (programming) back in Oct 2011. Discuss this proposal here.
- Yes, merge. Actually, a redicrect may be enough, this page is clearly more complete. linas (talk) 22:15, 8 June 2012 (UTC)
- Merge. Lambda just means "this is an anonymous function" anyway. There's really no reason to have anything besides a line on Lambda (disambiguation) that says that in programming it means anonymous function, and then link to that. Dtm1234 (talk) 21:29, 27 June 2012 (UTC)
Advantages?
editThe article does not tell me the advantages of this. For example, why is
def divide(x,y):
return x/y
def divisor(d):
return lambda x: divide(x,d)
half = divisor(2)
third = divisor(3)
print half(32), third(32)
16 10
print half(40), third(40)
20 13
any better than the (IMHO) much more obvious and shorter
def divide(x,y):
return x/y
print divide(32,2), divide(32,3)
16 10
print divide(40,2), divide(40,3)
20 13
? Thanks in advance for enlighting me! :) --2003:63:2F67:9600:F9EA:4F10:2F98:DFFE (talk) 08:07, 19 March 2014 (UTC)
Because since you wrote both 40 and 32 two times, you are unnecessarily duplicating data that should be encapsulated. This is obviously not much of a concern in a toy example like that but it starts becoming more pressing when dealing with "complex" structures. Try and review some of your old code with your new knowledge and you'll probably find a lot of examples. — Preceding unsigned comment added by 2A02:1812:908:6100:2E44:FDFF:FE65:9549 (talk) 19:37, 14 April 2014 (UTC)
There are no advantages. As you have noticed, the "plain" form is much more obvious, shorter and, well, plain. As to the answer above, the duplication occurs in both examples and can be avoided by using simple variables. — Preceding unsigned comment added by 93.35.116.238 (talk) 11:33, 5 May 2014 (UTC)
Too python centric?
editWhy are all of the examples in the Uses section written in Python? Wouldn't this be better suited to a language that puts functions first such as Haskell? — Preceding unsigned comment added by 2A02:1812:908:6100:2E44:FDFF:FE65:9549 (talk) 19:26, 14 April 2014 (UTC)
External links modified
editHello fellow Wikipedians,
I have just modified one external link on Anonymous function. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
- Added archive https://web.archive.org/web/20140531123646/http://www.reactive.io/tips/2008/12/21/understanding-ruby-blocks-procs-and-lambdas/ to http://www.reactive.io/tips/2008/12/21/understanding-ruby-blocks-procs-and-lambdas/
When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.
This message was posted before February 2018. After February 2018, "External links modified" talk page sections are no longer generated or monitored by InternetArchiveBot. No special action is required regarding these talk page notices, other than regular verification using the archive tool instructions below. Editors have permission to delete these "External links modified" talk page sections if they want to de-clutter talk pages, but see the RfC before doing mass systematic removals. This message is updated dynamically through the template {{source check}}
(last update: 5 June 2024).
- If you have discovered URLs which were erroneously considered dead by the bot, you can report them with this tool.
- If you found an error with any archives or the URLs themselves, you can fix them with this tool.
Cheers.—InternetArchiveBot (Report bug) 22:21, 6 July 2017 (UTC)
This seems to be copied from a Python document!!!
editNo only all the examples are made by Python which is supporting Anonymous functions for expressions only, but also opening statement for Higher order functions and most of the content are about Python. It is better to rewrite this document with a language with first class functions like JavaScript or Scala. I will rewrite and add all the examples in both those languages and make this text less Python centered in two weeks if no reason provided! Genius babak (talk) 18:19, 29 June 2018 (UTC)
Content added to OCaml
editI saw that there was only a one line example of an anonymous function so I added a snippet from a course. Wasn't sure how to appropriately cite. — Preceding unsigned comment added by 173.224.163.81 (talk) 14:05, 31 May 2019 (UTC)
Z Shell (zsh)
editI have removed Z shell (which had been added by Stephane Chazelas in Special:Diff/800432857) from the list since what is called anonymous function in zsh does not correspond to what is described here, i.e. closures. Anonymous functions in zsh do not intend to be like closures, as clearly explained in the zsh-users mailing-list: "These aren't closures in the sense of anonymous functions in a number of other languages; rather, they're nameless function scopes that are executed as soon as they are defined."
Note that it is possible to implement something that looks like closures in zsh (and other Unix shells) since one can manipulate shell code as strings and evaluate it with the eval
builtin, but this is limited and remains very low level due to the need of quoting mechanisms in particular. In zsh, anonymous functions can help (I have given a simple example on Unix & Linux Stack Exchange), but I don't think they are really necessary, the main work being done by string construction and the eval
builtin.
Named anonymous function?
editThe Python example uses an "anonymous" function called foo
(!) However, the intro text says "...a function definition that is not bound to an identifier" (i.e. name). I'm confused now (and perhaps so are other readers who come here to learn what an anonymous function is) - do anonymous functions have names or not (or both), or is the Python lambda
keyword used for something else than anonymous functions (e.g. local inline function definition) and therefore an unfortunate example here?