Browse Wiki & Semantic Web

Jump to: navigation, search
Http://dbpedia.org/resource/Defunctionalization
  This page has no properties.
hide properties that link here 
  No properties link to this page.
 
http://dbpedia.org/resource/Defunctionalization
http://dbpedia.org/ontology/abstract In programming languages, defunctionalizatIn programming languages, defunctionalization is a compile-time transformation which eliminates higher-order functions, replacing them by a single first-order apply function. The technique was first described by John C. Reynolds in his 1972 paper, "Definitional Interpreters for Higher-Order Programming Languages". Reynolds' observation was that a given program contains only finitely many function abstractions, so that each can be assigned and replaced by a unique identifier. Every function application within the program is then replaced by a call to the apply function with the function identifier as the first argument. The apply function's only job is to dispatch on this first argument, and then perform the instructions denoted by the function identifier on the remaining arguments. One complication to this basic idea is that function abstractions may reference free variables. In such situations, defunctionalization must be preceded by closure conversion (lambda lifting), so that any free variables of a function abstraction are passed as extra arguments to apply. In addition, if closures are supported as first-class values, it becomes necessary to represent these captured bindings by creating data structures. Instead of having a single apply function dispatch on all function abstractions in a program, various kinds of control flow analysis (including simple distinctions based on arity or type signature) can be employed to determine which function(s) may be called at each function application site, and a specialized apply function may be referenced instead. Alternatively, the target language may support indirect calls through function pointers, which may be more efficient and extensible than a dispatch-based approach. Besides its use as a compilation technique for higher-order functional languages, defunctionalization has been studied (particularly by Olivier Danvy and collaborators) as a way of mechanically transforming interpreters into abstract machines. Defunctionalization is also related to the technique from object-oriented programming of representing functions by function objects (as an alternative to closures).n objects (as an alternative to closures). , Дефункционализация в программировании — теДефункционализация в программировании — техника преобразования программы на этапе компиляции, заменяющая функции высшего порядка на вызов одной-единственной функции применения функции к аргументу. Впервые была описана (англ. John C. Reynolds) в 1972 году. Поскольку всякая программа содержит конечное количество функциональных абстракций, то каждая из них может быть заменена уникальным идентификатором, а каждое применение абстрактной функции в такой программе может быть заменено вызовом функции функции применения с идентификатором абстрактной функции в качестве первого параметра. При этом функция применения выбирает по идентификатору абстрактной функции операции и выполняет их над оставшимися аргументами (исходными аргументами абстрактной функции). Одним из затруднений для этой техники является то, что функциональная абстракция может ссылаться на . В такой ситуации до выполнения дефункционализации должен быть выполнен — преобразование свободных переменных в замыкания, — чтобы любая свободная переменная, использующаяся функциональной абстракцией, передавалась бы в качестве аргумента в функцию применения. Кроме того, если замывание поддерживается в качестве значения первого класса, то необходимо обеспечить создание новых структур данных для представления захваченных значений. Вместо использования единственной функции применения для обработки всех случаев, могут использоваться различные методы анализа потока управления (включая простейшее различение разных видов арности (числа аргументов) или ) для разделения применения на несколько специализированных функций. Также язык программирования может поддерживать , использование которых может быть более эффективным, чем подход с диспетчеризацией. Помимо применения в компиляторах для функциональных языков программирования, использующих функции высшего порядка, дефункционализация также исследовалась как метод механистического преобразования интерпретатора в абстрактную машину. Дефункционализация также связана с техникой представления функций с помощью функциональных объектов в объектно-ориентированного программирования (как альтернатива использованию замыканий).как альтернатива использованию замыканий).
http://dbpedia.org/ontology/wikiPageExternalLink http://www.brics.dk/RS/01/23/BRICS-RS-01-23.pdf + , http://www.brics.dk/RS/07/7/BRICS-RS-07-7.pdf + , https://spivey.oriel.ox.ac.uk/proglan/Defunctionalization + , http://www.daimi.au.dk/~danvy/DSc/22_danvy-nielsen_ppdp-2001.pdf +
http://dbpedia.org/ontology/wikiPageID 24504713
http://dbpedia.org/ontology/wikiPageLength 5417
http://dbpedia.org/ontology/wikiPageRevisionID 1069178466
http://dbpedia.org/ontology/wikiPageWikiLink http://dbpedia.org/resource/Category:Implementation_of_functional_programming_languages + , http://dbpedia.org/resource/John_C._Reynolds + , http://dbpedia.org/resource/Programming_languages + , http://dbpedia.org/resource/Object-oriented_programming + , http://dbpedia.org/resource/Olivier_Danvy + , http://dbpedia.org/resource/Closure_%28computer_science%29 + , http://dbpedia.org/resource/Type_signature + , http://dbpedia.org/resource/Abstract_machine + , http://dbpedia.org/resource/Interpreter_%28computing%29 + , http://dbpedia.org/resource/Free_variables + , http://dbpedia.org/resource/Compile_time + , http://dbpedia.org/resource/Closure_conversion + , http://dbpedia.org/resource/Control_flow_analysis + , http://dbpedia.org/resource/Higher-order_function + , http://dbpedia.org/resource/Arity + , http://dbpedia.org/resource/Abstraction_%28computer_science%29 + , http://dbpedia.org/resource/Function_object + , http://dbpedia.org/resource/Partial_evaluation + , http://dbpedia.org/resource/Function_pointer + , http://dbpedia.org/resource/Functional_languages + , http://dbpedia.org/resource/First-class_value +
http://dbpedia.org/property/wikiPageUsesTemplate http://dbpedia.org/resource/Template:Short_description + , http://dbpedia.org/resource/Template:Cite_conference + , http://dbpedia.org/resource/Template:Cite_journal +
http://purl.org/dc/terms/subject http://dbpedia.org/resource/Category:Implementation_of_functional_programming_languages +
http://www.w3.org/ns/prov#wasDerivedFrom http://en.wikipedia.org/wiki/Defunctionalization?oldid=1069178466&ns=0 +
http://xmlns.com/foaf/0.1/isPrimaryTopicOf http://en.wikipedia.org/wiki/Defunctionalization +
owl:sameAs http://dbpedia.org/resource/Defunctionalization + , http://ru.dbpedia.org/resource/%D0%94%D0%B5%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F + , http://rdf.freebase.com/ns/m.080mmdy + , https://global.dbpedia.org/id/4jBwg + , http://www.wikidata.org/entity/Q5251733 +
rdfs:comment Дефункционализация в программировании — теДефункционализация в программировании — техника преобразования программы на этапе компиляции, заменяющая функции высшего порядка на вызов одной-единственной функции применения функции к аргументу. Впервые была описана (англ. John C. Reynolds) в 1972 году. Поскольку всякая программа содержит конечное количество функциональных абстракций, то каждая из них может быть заменена уникальным идентификатором, а каждое применение абстрактной функции в такой программе может быть заменено вызовом функции функции применения с идентификатором абстрактной функции в качестве первого параметра. При этом функция применения выбирает по идентификатору абстрактной функции операции и выполняет их над оставшимися аргументами (исходными аргументами абстрактной функции).сходными аргументами абстрактной функции). , In programming languages, defunctionalizatIn programming languages, defunctionalization is a compile-time transformation which eliminates higher-order functions, replacing them by a single first-order apply function. The technique was first described by John C. Reynolds in his 1972 paper, "Definitional Interpreters for Higher-Order Programming Languages". Reynolds' observation was that a given program contains only finitely many function abstractions, so that each can be assigned and replaced by a unique identifier. Every function application within the program is then replaced by a call to the apply function with the function identifier as the first argument. The apply function's only job is to dispatch on this first argument, and then perform the instructions denoted by the function identifier on the remaining arguments.ion identifier on the remaining arguments.
rdfs:label Дефункционализация , Defunctionalization
hide properties that link here 
http://dbpedia.org/resource/John_C._Reynolds + http://dbpedia.org/ontology/knownFor
http://dbpedia.org/resource/First-class_function + , http://dbpedia.org/resource/Mutual_recursion + , http://dbpedia.org/resource/Closure_%28computer_programming%29 + , http://dbpedia.org/resource/John_C._Reynolds + , http://dbpedia.org/resource/Higher-order_function + , http://dbpedia.org/resource/Multitier_programming + , http://dbpedia.org/resource/List_of_programming_language_researchers + , http://dbpedia.org/resource/List_of_computer_scientists + , http://dbpedia.org/resource/List_of_programmers + , http://dbpedia.org/resource/List_of_Bates_College_people + http://dbpedia.org/ontology/wikiPageWikiLink
http://en.wikipedia.org/wiki/Defunctionalization + http://xmlns.com/foaf/0.1/primaryTopic
http://dbpedia.org/resource/Defunctionalization + owl:sameAs
 

 

Enter the name of the page to start semantic browsing from.