Применение искинов - шоссе империализма (Стенгазета русификаторов ИТ)

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Функции, параметры, возвращаемые значения

Сообщений 1 страница 4 из 4

1

Мне, если честно, не очень понятно, что означает фраза "функция - это first class object".

https://ru.wikipedia.org/wiki/Объект_первого_класса
     элементы языка, которые могут быть переданы как параметр, возвращены из функции, присвоены переменной

нуу, через Reflection я могу описать что угодно. И передать описание (с адресом/указателем на объект) и в функцию и в переменную...

1967 Кристофер Стрэчи, Christopher Strachey «Understanding Programming Languages»

ревью на книжку, 1 страница - http://home.iitk.ac.in/~manikant/cs300/3C.pdf
   "He emphasis that a formal jargon is necessary as core concepts are so vague."

вот тут список чего почитать
    https://www.cs.cmu.edu/~crary/819-f09/
там есть ссылка:
   Christoper Strachey. Fundamental Concepts in Programming Languages. 1967 - https://www.cs.cmu.edu/~crary/819-f09/Strachey67.pdf

"It is sometimes helpful to have a picture showing the relationships between the various objects in the programming language, their representations in the store of a computer and the abstract objects to which they correspond."

Надо отпраздовать 50 летие отставания России (у нас-то до сих пор нет широкораспространённой книжки с родной терминологией по компиляторам)

вместо лямбды предлагаю символ конверта - 🖂

Отредактировано Лис (2017-03-26 17:36:40)

0

2

Посмотрел на реализацию лямбд  в C++ 11.

Думаю, что КумирИ можно будет переименовать в Кумирли после добавления в него лямбд.

Вместо [] из C++ и символа конверта думаю лучше использовать ключевое слово "лямбда". Потому что квадратные скобки ментально ассоциируются с массивами, а юникод вводить трудно.

Вместо специального слова для "массивов из октетов" ввести слово "пер" - переменная, тип должен вычисляться (выводиться) по типу присваиваемого выражения. Тогда и лямбды можно будет складывать в переменные.

пример:

Код:
пер ах_ты_моя_ля́мбдочка = лямбда (цел параметр1) нач знач := параметр1 > 0 кон

тут у меня есть непонятка - как возвращаются значения из функций?

http://bsosh6.shkola.hc.ru/teachers_pas … manual.pdf

Код:
знач := 42

Отредактировано Лис (2017-03-26 18:42:44)

0

3

Лис написал(а):

Мне, если честно, не очень понятно, что означает фраза "функция - это first class object".

Мне тоже непонятно. Передача функции куда-либо подразумевает ссылку на код, в явном или обобщенном (абстрактном) виде. У меня в Канторе нет ссылок на код, поскольку они противоречат суперкомпиляции в моем понимании. Вообще, способ организации вычислений в Канторе основывается на некой трактовке, которую я пока не могу сформулировать в окончательном виде (см. попытку заявить о машине Кантора в научной теме). Вполне возможно, что за этим действительно стоит передовая идея, меняющее наше представление о программировании. Я пока не уверен.

0

4

Нужно ли добавлять синтаксис захвата как C++, или хватит того, что есть в JavaScript?

В JavaScript приводят такой пример:
Без захвата:

Код:
for (var i = 0; i < links.length; i++) {
   links[i].onclick = function() {
      alert(i);
   }
}

С захватом:

Код:
for (var i = 0; i < links.length; i++) {
   (function(i) {
      links[i].onclick = function() {
         alert(i);
      }
   })(i);
}

Здесь с помощью еще одного замыкания мы «затеняем» переменную i, создавая ее копию в его локальной области

т.е. захват появился, а дополнительного синтаксиса к нему не нужно.

https://habrahabr.ru/post/38642/

Отредактировано Лис (2017-03-27 12:05:34)

0