Funarg problem (original) (raw)
Ο τεχνικός όρος funarg είναι συντομογραφία της αγγλικής έκφρασης «functional argument» («συναρτησιακή παράμετρος»). Στη θεωρητική πληροφορική το λεγόμενο πρόβλημα funarg αναφέρεται στη δυσκολία υλοποίησης συναρτήσεων σαν σε υλοποιήσεις . Η δυσκολία εμφανίζεται μόνο όταν το σώμα μιας συνάρτησης αναφέρεται απευθείας (δηλ. όχι μέσω περάσματος παραμέτρων) σε αναγνωριστικά που έχουν οριστεί στο περιβάλλον που ορίστηκε η συνάρτηση, αλλά όχι στο περιβάλλον που αυτή καλείται. Γενικά υπάρχουν δύο βασικές λύσεις: είτε να απαγορευτούν αυτές οι αναφορές, ή να δημιουργηθούν κλεισίματα.
Property | Value |
---|---|
dbo:abstract | Ο τεχνικός όρος funarg είναι συντομογραφία της αγγλικής έκφρασης «functional argument» («συναρτησιακή παράμετρος»). Στη θεωρητική πληροφορική το λεγόμενο πρόβλημα funarg αναφέρεται στη δυσκολία υλοποίησης συναρτήσεων σαν σε υλοποιήσεις . Η δυσκολία εμφανίζεται μόνο όταν το σώμα μιας συνάρτησης αναφέρεται απευθείας (δηλ. όχι μέσω περάσματος παραμέτρων) σε αναγνωριστικά που έχουν οριστεί στο περιβάλλον που ορίστηκε η συνάρτηση, αλλά όχι στο περιβάλλον που αυτή καλείται. Γενικά υπάρχουν δύο βασικές λύσεις: είτε να απαγορευτούν αυτές οι αναφορές, ή να δημιουργηθούν κλεισίματα. Υπάρχουν δύο εκδοχές του προβλήματος funarg. Το πρόβλημα funarg προς τα πάνω (upwards funarg problem) προκύπτει από την επιστροφή (ή διάδοση με κάποιον άλλον τρόπο "προς τα πάνω") μιας συνάρτησης από μια κλήση κάποιας άλλης συνάρτησης. Το πρόβλημα funarg προς τα κάτω (downwards funarg problem) προκύπτει από το πέρασμα μιας συνάρτησης σαν παράμετρο σε μια κλήση άλλης συνάρτησης. (el) In computer science, the funarg problem (function argument problem) refers to the difficulty in implementing first-class functions (functions as first-class objects) in programming language implementations so as to use stack-based memory allocation of the functions. The difficulty only arises if the body of a nested function refers directly (i.e., not by argument passing) to identifiers defined in the environment in which the function is defined, but not in the environment of the function call. A standard resolution is either to forbid such references or to create closures. There are two subtly different versions of the funarg problem. The upwards funarg problem arises from returning (or otherwise transmitting "upwards") a function from a function call. The downwards funarg problem arises from passing a function as a parameter to another function call. (en) Фунарг — сокращение от «функциональный аргумент»; в компьютерных науках, проблема фунарга относится к сложности реализации функций как первоклассных объектов в стеково-ориентированных языках программирования (в широком смысле, включая все языки, в которых передача параметров функциям осуществляется через стек). Сложность возникает, если тело функции ссылается непосредственно (например, не через передачу параметров) на идентификаторы, определённые в окружении, в котором функция определена, а не в окружении её вызова. Подводя итог нижеследующих рассуждений, два стандартных решения — запрещать такие ссылки, либо создавать замыкания. Различают два варианта проблемы: проблема восходящего фунарга возникает при возврате функции из некоторой функции, проблема нисходящего фунарга — при передаче функции в качестве параметра некоторой функции. (ru) |
dbo:wikiPageExternalLink | https://web.archive.org/web/20120722020445/http:/classes.soe.ucsc.edu/cmps203/Winter11/09-lambda.ppt.pdf http://dspace.mit.edu/handle/1721.1/5854 http://www.softwarepreservation.org/projects/LISP/MIT/Weizenbaum-FUNARG_Problem_Explained-1968.pdf |
dbo:wikiPageID | 810385 (xsd:integer) |
dbo:wikiPageLength | 10034 (xsd:nonNegativeInteger) |
dbo:wikiPageRevisionID | 1049303645 (xsd:integer) |
dbo:wikiPageWikiLink | dbr:Program_analysis_(computer_science) dbr:Scheme_(programming_language) dbr:Tail_call dbr:Joseph_Weizenbaum dbc:Programming_language_implementation dbr:Closure_(computer_science) dbr:Modula-2 dbr:Continuation-passing_style dbr:Anonymous_function dbr:ML_(programming_language) dbr:Call_stack dbr:Stack-based_memory_allocation dbr:Standard_ML dbr:Computer_science dbr:Function_composition_(computer_science) dbr:Functional_programming dbr:Pascal_programming_language dbr:Static_program_analysis dbr:C_(programming_language) dbr:C_Sharp_(programming_language) dbr:Garbage_collection_(computer_science) dbr:Heap_(data_structure) dbr:Local_variable dbr:D_(programming_language) dbr:Dynamic_memory_allocation dbr:PHP dbr:Haskell_(programming_language) dbr:Java_(programming_language) dbr:Java_programming_language dbc:Compiler_construction dbr:Joel_Moses dbr:Lambda_calculus dbr:Blocks_(C_language_extension) dbr:Referential_transparency dbr:Reference_counting dbr:Apple,_Inc. dbr:Final_(Java) dbr:OCaml dbr:Oberon_(programming_language) dbr:Name_binding dbr:Nested_function dbr:Spaghetti_stack dbr:First-class_function dbr:Man_or_boy_test dbr:Pseudocode dbr:Parameter_(computer_science) dbr:Scope_(programming) dbr:First-class_object dbr:Function_(programming) dbr:Functional_language dbr:Functional_programming_languages |
dbp:wikiPageUsesTemplate | dbt:Citation_needed dbt:Reflist |
dct:subject | dbc:Programming_language_implementation dbc:Compiler_construction |
rdfs:comment | Ο τεχνικός όρος funarg είναι συντομογραφία της αγγλικής έκφρασης «functional argument» («συναρτησιακή παράμετρος»). Στη θεωρητική πληροφορική το λεγόμενο πρόβλημα funarg αναφέρεται στη δυσκολία υλοποίησης συναρτήσεων σαν σε υλοποιήσεις . Η δυσκολία εμφανίζεται μόνο όταν το σώμα μιας συνάρτησης αναφέρεται απευθείας (δηλ. όχι μέσω περάσματος παραμέτρων) σε αναγνωριστικά που έχουν οριστεί στο περιβάλλον που ορίστηκε η συνάρτηση, αλλά όχι στο περιβάλλον που αυτή καλείται. Γενικά υπάρχουν δύο βασικές λύσεις: είτε να απαγορευτούν αυτές οι αναφορές, ή να δημιουργηθούν κλεισίματα. (el) In computer science, the funarg problem (function argument problem) refers to the difficulty in implementing first-class functions (functions as first-class objects) in programming language implementations so as to use stack-based memory allocation of the functions. The difficulty only arises if the body of a nested function refers directly (i.e., not by argument passing) to identifiers defined in the environment in which the function is defined, but not in the environment of the function call. A standard resolution is either to forbid such references or to create closures. (en) Фунарг — сокращение от «функциональный аргумент»; в компьютерных науках, проблема фунарга относится к сложности реализации функций как первоклассных объектов в стеково-ориентированных языках программирования (в широком смысле, включая все языки, в которых передача параметров функциям осуществляется через стек). Различают два варианта проблемы: проблема восходящего фунарга возникает при возврате функции из некоторой функции, проблема нисходящего фунарга — при передаче функции в качестве параметра некоторой функции. (ru) |
rdfs:label | Πρόβλημα Funarg (el) Funarg problem (en) Проблема фунарга (ru) |
owl:sameAs | freebase:Funarg problem wikidata:Funarg problem dbpedia-el:Funarg problem dbpedia-fa:Funarg problem dbpedia-ru:Funarg problem https://global.dbpedia.org/id/3HLfr |
prov:wasDerivedFrom | wikipedia-en:Funarg_problem?oldid=1049303645&ns=0 |
foaf:isPrimaryTopicOf | wikipedia-en:Funarg_problem |
is dbo:wikiPageRedirects of | dbr:FUNARG_problem dbr:Upwards_funarg_problem dbr:Downwards_funarg_problem dbr:Downward_funarg dbr:Downward_funarg_problem dbr:Downwards_funarg dbr:Upward_funarg_problem dbr:Funarg dbr:Funarg_problems |
is dbo:wikiPageWikiLink of | dbr:FUNARG_problem dbr:Upwards_funarg_problem dbr:Erik_Sandewall dbr:Closure_(computer_programming) dbr:Downwards_funarg_problem dbr:Downward_funarg dbr:Downward_funarg_problem dbr:Downwards_funarg dbr:Jensen's_device dbr:OCaml dbr:Nested_function dbr:Procedural_parameter dbr:First-class_function dbr:Man_or_boy_test dbr:Parent_pointer_tree dbr:Upward_funarg_problem dbr:Funarg dbr:Funarg_problems |
is foaf:primaryTopic of | wikipedia-en:Funarg_problem |