Вы не указали определение разделителя до и после сохраненного определения proc:
Если вы используете клиентскую программу mysql для определения сохраненной программы, содержащей символы с запятой, возникает проблема. По умолчанию mysql сам распознает точку с запятой как разделитель инструкций, поэтому вы должны переопределить разделитель временно, чтобы заставить mysql передать все сохраненное определение программы на сервер.
Чтобы переопределить разделитель mysql, используйте разделитель команда. [...] Разделитель изменен на //, чтобы включить полное определение на сервер в качестве одного оператора, а затем восстановить; перед вызовом процедуры. Это позволяет; разделитель, используемый в теле процедуры, который должен быть передан на сервер, а не интерпретируется самим mysql.
blockquote>Поскольку хранимое определение proc и тело были в порядке, синтаксический чанк дал вам большие пальцы вверх, но код не будет корректно работать на вашем клиенте.
Используйте следующий скелет для определения хранимой процедуры:
delimiter // create procedure ... ... end // delimiter ;
Наиболее известными являются OCaml и F # (которые можно смутно описать как OCaml для .NET).
Есть много других мультипарадигмальных языков, таких как Оз , но они имеют в основном педагогическую ценность. В отличие от OCaml очень практично. Это почти так же быстро, как C и почти так же красиво, как Haskell:)
Популярные языки сценариев, такие как Python и Ruby, позволяют программировать и в функциональном стиле. Однако они не предоставляют одно из самых мощных средств, которые есть у «классических» функциональных языков (а также OCaml): сопоставление с образцом (не путайте его с регулярным выражением).
JavaScript, Python и Ruby могут быть использованы таким образом, но Scala поднимает ступеньку, набирая функцию статически и работая под JVM.
Пока вы не настаиваете на «чистоте», Common Lisp поддерживает все ваши потребности.
Вы действительно задаете не тот вопрос. Ваш вопрос основан на том, что существует различие между «ОО» и «функциональным» программированием. Это различие не интересно или не актуально. Фактически, в соответствии с критериями «поддерживает первоклассную функцию», даже Java является функциональной .
Но ты ударишь ногтем по голове с «чисто функциональным». Это интересный момент. Какие языки предлагают вам ссылочную прозрачность и чистоту? Ну, большинство из них, , если вы очень осторожны. Но не многие из них действительно гарантируют, что ваши функции чисты. Я могу думать только о паре языков, которые предлагают вам это.
Одним из них является Haskell . В Haskell вы пишете программы, которые полностью функциональны от начала до конца. Побочные эффекты делегируются структуре данных, называемой IO, а состояние обрабатывается путем передачи его через чистые функции или инкапсуляции в монады. Таким образом, у вас есть «рай отладки», когда только небольшая часть вашего кода взаимодействует с глобальным состоянием, а остальная часть вашей программы чистая, а язык обеспечивает ее чистоту.
Хаскелл : Чистый функционал, практически без ОО, но продолжайте, сделайте погружение. : D
Scala : Прекрасное сочетание OO и FP, возможно, превзойдет Java в качестве основного языка в JVM через десятилетие или два. Мне это нравится, потому что оно приносит функциональное программирование в Java. платформа, что-то, что крайне необходимо ИМХО.
C # : Потрясающая поддержка ОО, а также повышение функциональности (уже есть функции первого класса, посмотрим, какие улучшения принесет .net 4)
F # : язык .net Создан специально для работы, в отличие от C #, который изначально был задуман для ООП.
Python : отлично подходит для ОО, но совсем не подходит для FP
Javascript : поддерживает функции первого класса, но не специально разработанный для FP, как Scala и F #. Все еще немного лучше чем питон ИМХО.
Почему вы хотите смешать OO и FP? Как ступенькой?
С #. Это обязательно, что может быть удобно, но также имеет много функциональных особенностей. Лямбды, итераторы и LINQ все функциональны.
Это, вероятно, не очень понравится пуристам, но это работает для меня.
Насколько мне известно, OCaml и F # являются наиболее популярными языками, которые смешивают ООП и FP.
Большинство языков, таких как Ruby, смешивают функциональное программирование, но многие даже не осознают этого. Я считаю, что такие языки оставляют желать лучшего на синтаксисе и тому подобное.
Python, javascript, обычный lisp, ruby, smalltalk, haskell и ocaml, с макушки моей головы. Это не совсем экзотическая комбинация.
Кроме того, многие языки сценариев, такие как Python, Ruby, Lua и т. Д., Имеют это возможность, но не хватает многих приятных функций функциональных языков, таких как алгебраические типы данных и сопоставление с образцом.
Рубин! В Ruby все является объектом (даже литералами), а также имеет полную функциональную поддержку программирования.
Мне интересно, почему вы ищете язык, который специально поощряет смешивание, а не просто делает это с языком, который хорошо работает с функциональным программированием и ОО-программированием? Его можно легко реализовать с помощью Python, Ruby, Perl или аналогичных интерпретируемых языков. Кроме того, ОО-языки на основе С, как правило, смешивают чистый С с ОО-функциями, например, цель C легко может быть написана таким образом, если вы выберете.
РЕДАКТИРОВАТЬ: меня предупредили, что я ошибаюсь, я оставил этот ответ здесь, если кто-то может извлечь уроки из моей ошибки - см. Комментарии.