LINUX.ORG.RU

Сообщения vladimir-vg

 

[λ] Помогите решить упражнение.

Форум — Development

Читаю Митчела, «Foundations of Programming Languages». Решаю упражнение, застопорился. Не совсем понимаю что от меня хотят.

Речь идёт о типизированном лямбда исчислении.

Exercise 1.3.2

For the purpose of this exercise and the next, the length of a typed lambda term is the number of symbols we use to write the term. For example, the length of λx:a.λy:b.y is 7. Find a pure typed lambda expression (without extra functions such as +) of the form

(λf:((a -> a) -> (a -> a)).λx:(a -> a).M) (λf:(a -> a).λx:a.f (f x))

whose length at least doubles as the result of one or more beta-reductions.

Мне нужно редуцировать приведённое выражение таким образом, чтобы его длина увеличилась вдвое, окей. Но если a в первой и второй части выражения это один и тот же тип, но похоже что здесь есть несоответствие.

второе выражение принимает два аргумента типов (a -> a) и a. Вернуть должно тоже a. То есть тип второго выражения (a -> a) -> a -> a.

В то же время первое выражение требует первый аргумент типа (a -> a) -> (a -> a).

Кроме того, правильно ли я понимаю, задание состоит в том, чтобы подобрать хитрый λ-терм заместо M?

vladimir-vg
()

[CS][λ] Интересные развития исчисления.

Форум — Development

Есть ли какие-либо интересные расширения этого исчисления? Например добавляющие парочку каких-либо правил, или вводящих другие сущности. (Но разумеется в пределах разумного).

Кроме типизированных вариантов.

Кроме того, что почитать по семантике языков программирования?

cast jtootf

 

vladimir-vg
()

[CS][OOP] Формальное описание.

Форум — Development

Есть ли статьи в которых формально описывается поведение объектов, как происходит диспетчеризация, какие методы будут иметь доступ к каким членам объекта.

Вообще ООП бывает много и разно: множественная диспетчеризация, прототипное ООП, виртуальные/невиртуальные методы, etc. Круто бы было все эти штуки формально описать.

Вообще, реквестирую научные статьи формализующие ООП или хотя бы немного пытающиеся.

btw, кастую в тред jtootf

 ,

vladimir-vg
()

[vim] Отступы табами и пробелами вперемешку.

Форум — Development

Как настроить vim так, чтобы:

  • Отступы от начала строки делались символами '\t'
  • Все отступы (с помощью клавиши TAB) после делались пробелами.

Первого легко достичь с помощью команды set noexpandtab. Как добиться второго пункта?

Например:

somecode({
	one_thing:   1
	two:         long_call(1, 2, 'option')
});

Все расположенное от начала строки и до one_thing и two должно быть заполнено '\t'.

А всё между one_thing и 1 — пробелами.

 

vladimir-vg
()

Заместо Си

Форум — Development

В этом треде прошу перечислить языки которые пытаются или пытались быть заменителем Си. (Например Cyclone)

Ручное управление памятью обязательно.

vladimir-vg
()

Опциональные аннотации типов в динамически типизированном языке.

Форум — Development

Какие есть примеры годного сабжа? Интересуют в первую очередь динамически типизированные ООП языки.

vladimir-vg
()

nil в языках программирования

Форум — Development

Меня интересует как используется nil в различных языках программирования, и вообще насколько это удобно с точки зрения дизайна языка.

В данном треде обсуждаются исключительно динамически типизированные языки.

К примеру в JavaScript есть есть два значения похожих на nil: null и undefined. (Нужно ли было плодить?)

В Scheme есть #f, но нет nil. В Factor тоже нету nil, и используют f. (Нужен ли nil если есть false?)

Кроме того, как-то читал что вроде в первых версиях Objective-C был объект nil (Objective-C не знаю вообще), который поглощал вызовы, был чёрной дырой. Т.е. вёл себя как NaN для чисел. На любое сообщение объект возвращал nil.

В треде приветствуются:

  • Ссылки на статьи с обзором различных подходов
  • Ссылки на какие-либо интересные языки, относящиеся к теме

UPD: Насколько допустимо трактовать «пустые» объекты (пустой список, пустой словарь и т.д.) как false, и есть ли у такой фичи опасные побочные эффекты, или вообще расположение к каким-либо багам.

vladimir-vg
()

Оранжево

Галерея — Скриншоты

На скрине сижу пишу небольшое веб-приложение на рельсах на зачёт по СУБД. Уломал препода писать на чём захочу.

Прикрутил себе цветовую схему с railscasts. А потом подогнал цвета в терминале.

Gtk-тема — Elegant.

Ну ещё юзается globalmenu. (Не работает для skype и firefox/thunderbird).

Шрифт в терминале и виме: Droid Sans Mono.

Набор иконок: Retrofukation (правда не особо видно). Небольшой, но приятный набор квадратненьких серых иконок.

UPD: Ещё один бонусный скрин с того же стола

>>> Просмотр (1280x800, 193 Kb)

vladimir-vg
()

[Traits]

Форум — Development

ЛОР, расскажи мне про traits. Это крутая штука или нет?

Я вот тут почитал, написано что это что-то вроде mixin, только не работает напрямую с состоянием. Tell me more.

vladimir-vg
()

[Module system] Что-нибудь эдакое.

Форум — Development

В разных языках есть разные модульные системы. Некоторые вшиты в язык, в некоторых нет (как в Lua, или JS). В некоторых можно загружать модуль в рантайме по произвольному имени/пути, в некоторых нет.

Подскажите какие-нибудь языки, в которых модульная система организована наиболее удобно или (отдельный пункт) необычно. Хочу приобрести интересный опыт. Можно эзотерику.

UPD: Ну и поясните в чём удобство.

vladimir-vg
()

[GNU Smalltalk] Забавно падает с сегфолтом.

Форум — Development

Поставил на «посмотреть» GNU Smalltalk.

Пишу в repl:

| dict |
dict := Dictionary new
dict at: 'self' put: dict

Падает с забавными криками:

"Global garbage collection... done, heap compacted"
"Global garbage collection... done, heap grown"
"Global garbage collection... done, heap grown"
"Global garbage collection... done, heap compacted"
"Global garbage collection... done, heap grown"
"Global garbage collection... Segmentation fault

Если передавать (dict copy), то всё в порядке.

Прошу объяснить что происходит в первом варианте, когда оно падает.

vladimir-vg
()

Линейщина -> Параллельщина

Форум — Development

Пусть у меня есть программа, которая исполняется линейно.

Я хочу внутри неё сделать треды, т.е. сделать так, чтобы внутри неё было несколько потоков выполнения, которые выполняются по очереди.

Какие слова гуглить? Какие сорцы смотреть?

vladimir-vg
()

Ниша C++.

Форум — Talks

Похоже она существует. Это низкоуровневые программы, но при этом достаточно сложные чтобы их писать на Си. Например: компиляторы, виртуальные машины.

Для всего остального С + <Your favorite scripting language>.

Я прав?

vladimir-vg
()

[блог] Що выбрать?

Форум — Talks

Если вести блог, какой лучше выбрать?

Что необходимо:

Подсветка синтаксиса или возможность её встраивания. (Чтобы можно было вставить <script> для gist, к примеру).

Поменьше рекламы, или хотя бы не сильно навязчивая.

Ну и вообще. Чем народ пользуется?

 

vladimir-vg
()

Помогите выбрать язык.

Форум — Development

Но этот тред не из разряда «мне нехер делать, подскажите чем помаятся?» — «ЛNСП!».

Мне нужен скриптовый язык с более-менее рабочими bindings к gtk, glib, cairo.

Также мне необходима работа под виндой и возможность встраивания в приложение (на C).

Что первое пришло на ум, так это Python. Всё бы неплохо, но встраивание выглядит немного вырвиглазно. Да и сам язык не всем устраивает.

Подошёл бы Lua, который гораздо более лаконичный и приятный в этом отношении, да и возможностей для создания песочницы (переопределение функций экспорта/импорта модулей, любую функцию можно просто затереть сделав f=nil). Гораздо больше подходящий как язык для расширения приложения.

Есть binding lgob, но там нет некоторых возможностей: нельзя объявлять новые GObject классы в lua-коде, нет привязки к GIO (а очень пригодилось бы).

Что ещё есть? Может я что-то упустил?

vladimir-vg
()

[C] shift with zero fill.

Форум — Development

Мне нужен побитовый сдвиг вправо.

Сдвиг делается над 32-битным unsigned.

Если кол-во битов для сдвига >= 32 выдает не 0. А нужен 0.

Нагуглил, что здесь undefined behaviour. Пока решил проблему вот так:

if (value_shift > 31)
{
  return 0;
}
return value >> value_shift;

Каким макаром можно сделать тоже самое, но без if?

 

vladimir-vg
()

GUI в общем и Gtk в частности. Накладно ли реализовать фичу?

Форум — Development

Многие пользуются Emacs. В нём есть удобная оконная система, можно как угодно разделять окна на части, пртом допустимо иметь один буфер в разных окнах.

Если сделать подобное (например с помощью Gtk), множество виджетов разбитое горизонтальными и вертикальными панелями.

Может кто-то уже делал подобное?

Нет ли какой-нибудь причины, по которой GUI организованный таким образом будет жутко тормозить?

vladimir-vg
()

[Поведение процессора][Мутабельный код] Вопрос.

Форум — Development

Пусть у меня есть участок памяти, в который разрешена запись.

Я записал в этот участок какие-то инструкции.

Этот кусок будет кешироваться. (Так?)

Среди этих инструкций есть одна (или несколько), которые меняют содержимое памяти, в которой они сами и записаны. (Тот же самый участок)

Эти изменения изменяют некоторые последующие инструкции.

Как будет вести себя процессор, ведь эти изменения будут для него неожиданными. Как известно, процессор обрабатывает инструкции с помощью конвеера. В случае подобного изменения кода, инструкции, которые уже были взяты на конвеер следует отбросить.

Что происходит в подобных случаях?

vladimir-vg
()

[Космические стратегии] Что есть?

Форум — Games

ЛОР, расскажи какие космические стратегии считаются классикой?

Хочу знать чем народ живёт.

vladimir-vg
()

[ANSI C] Расширение Си.

Форум — Development

Мне не хватает выразительности сишных макросов. В то же время, я хочу чтобы код был ANSI C.

Существует ли какой advanced препроцессор, макры поумнее для ANSI C? Или вообще, расширение какое (надстройка). Возможно даже небольшой язык транслирующийся в обычный Си.

Я не собираюсь городить мега абстракцию (а-ля C++), просто мне бы пригодилась небольшая возможность кодогенерации.

Необходимый функционал: что-то вроде макр (с защитой от variable capture).

Уверен, что кто-нибудь сделал, не хочу велосипедить.

 

vladimir-vg
()

RSS подписка на новые темы