Комментарии 21
Напрашивается фраза вроде «Мое Script-fu круче твоего».
+1
Спасибо, хорошая статья. Но есть замечание. Если уже пишете на lisp-подобном языке, то ставьте отступы как принято в lisp'ах, а не в C. Скобки — для синтаксического анализатора, а не для программиста, для них нет смысла выделять отдельные строки:
Пусть вас не смущает "))))))" в конце строк, это нормально смотрится. Любой редактор с подсветкой скобок поможет понять где чья скобка.
(let ((a 1)
(b 2))
(+ a b))
Пусть вас не смущает "))))))" в конце строк, это нормально смотрится. Любой редактор с подсветкой скобок поможет понять где чья скобка.
+4
И ещё: императивщина!
(define (difference x y)
(let ((z (- (if (< x 0) (- x) x)
(if (< y 0) (- y) y))))
(if (< z 0) (- z) z)))
+4
Я тем примером как раз и хотел показать императивные возможности. Потому как картинку проще обрабатывать по шагам, а не в одну строчку.
За замечания спасибо.
За замечания спасибо.
0
Ваш вариант хуже читается и вводит дополнительную переменную, в которой смысла нет.
-1
Вариант Грибозавра не изменяет аргументы.
Кстати, Dragonizer, ваша версия функции difference должна называться difference!..
Кстати, Dragonizer, ваша версия функции difference должна называться difference!..
0
Не занком с lisp, параметры передаются по ссылке или по значению? Если второе, то какая разница, изменяются или нет локальные переменные.
Если первое, то беру свои слова обратно.
Если первое, то беру свои слова обратно.
+1
Не совсем понимаю. Здесь же нет никакого стороннего эффекта, нам передалась копия, которую никто кроме нас не видит. Я неправ?
0
Ох уж эти требования к скобкам. :)
Конечно, единые правила оформления это здорово, но мне, например, удобнее редактировать когда вижу где начинается и заканчивается каждый блок. Без прицеливания выделил строки и удалил по Ctrl+D или перенёс куда-нибудь. Или закомментировал.
Я бы и не против свои скрипты через какой-нибудь beautifier перед публикацией прогонять, но что-то пока ничего понятно-как-работающего (рекомендуют pprint.el) найти не получилось. Может подскажите чего?
Конечно, единые правила оформления это здорово, но мне, например, удобнее редактировать когда вижу где начинается и заканчивается каждый блок. Без прицеливания выделил строки и удалил по Ctrl+D или перенёс куда-нибудь. Или закомментировал.
Я бы и не против свои скрипты через какой-нибудь beautifier перед публикацией прогонять, но что-то пока ничего понятно-как-работающего (рекомендуют pprint.el) найти не получилось. Может подскажите чего?
0
Много букв и без самого главного — Крутейших картинок с результами.
+1
Крутейшие картинки смотрите в упомянутом топике. Алгоритм оттуда, поэтому и результат тот же.
К тому же, речь шла о приручении языка, а не о решении конкретно моей задачи.
И еще: букв очень мало для статьи, которая с нуля рассказывает о том, как пользоваться новым языком. Обычно это занимает порядка десятка статей.
К тому же, речь шла о приручении языка, а не о решении конкретно моей задачи.
И еще: букв очень мало для статьи, которая с нуля рассказывает о том, как пользоваться новым языком. Обычно это занимает порядка десятка статей.
+1
ВНИМАНИЕ. Если вы в другом источнике встретите противоречащую информацию, верьте ему, а не этой статье. Здесь всё слишком упрощено для новичков.
Прочитали, попробовали, порадовались что работает, и больше так никогда не пишите.
Прочитали, попробовали, порадовались что работает, и больше так никогда не пишите.
0
Вы правильно поняли назначение статьи.
Кстати, а что именно прямо-таки противоречит?
Кстати, а что именно прямо-таки противоречит?
0
> Переменные в Scheme определяются с помощью конструкции let*
Везде в остальных расскажут про let.
> Здесь мы использовали функцию if
Ранее вы сказали что функция применяется к аргументам, но в данном случае не все аргументы вычислятся. if — это специальная форма, а не функция. Причём чуть раньше set! правильно не называется функцией. :)
Про стиль уже сказали, но вот точнейшее описание со всеми подробностями: mumble.net/~campbell/scheme/style.txt Вы правильно обращаетесь со скобками чтобы не пугать народ, но писать так не стоит.
Везде в остальных расскажут про let.
> Здесь мы использовали функцию if
Ранее вы сказали что функция применяется к аргументам, но в данном случае не все аргументы вычислятся. if — это специальная форма, а не функция. Причём чуть раньше set! правильно не называется функцией. :)
Про стиль уже сказали, но вот точнейшее описание со всеми подробностями: mumble.net/~campbell/scheme/style.txt Вы правильно обращаетесь со скобками чтобы не пугать народ, но писать так не стоит.
+1
Большое спасибо за замечания.
Про
Стиль взят опять же из гимпового туториала. Да, для снижения порога погружения.
Собственно, всё дело в том, что статья про Script-fu в GIMP, а не про Scheme как самостоятельный язык. Для изучения последнего эта статья — далеко не лучший выбор, тогда как для первого вполне сносна.
Да, пожалуй, добавлю это замечание в заключение.
let*
взял из гимпового туториала (ссылка в посте), там другого и не упоминается.Про
if
— точно, сейчас поправлю одно слово.Стиль взят опять же из гимпового туториала. Да, для снижения порога погружения.
Собственно, всё дело в том, что статья про Script-fu в GIMP, а не про Scheme как самостоятельный язык. Для изучения последнего эта статья — далеко не лучший выбор, тогда как для первого вполне сносна.
Да, пожалуй, добавлю это замечание в заключение.
+1
Для пакетной обработки также можно взять плагин для GIMP — BIMP (Batch Image Manipulation), скачать BIMP можно с сайта GIMP
+1
Спасибо за наводку, выглядит и вправду удобно.
registry.gimp.org/node/26259
www.alessandrofrancesconi.it/projects/bimp/
registry.gimp.org/node/26259
www.alessandrofrancesconi.it/projects/bimp/
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
GIMP Script-fu: быстрое изучение и написание простых скриптов на Scheme (+ пакетная обработка бесплатно)