AngularJS по умолчанию портирует входные данные, поэтому вам нужно использовать ng-trim="false"
, чтобы передать ведущее и конечное пробелы в ваше pattern
regex.
ngTrim (необязательно)
Если установлено значение
false
, угловой не будет автоматически обрезать вход. Этот параметр игнорируется для элементов управленияinput[type=password]
, которые никогда не будут обрезать вход.(по умолчанию: true)
blockquote>
Это немного похоже на поездку на велосипеде, это просто берет практику. Попытайтесь решить некоторые проблемы с ним, возможно ProjectEuler, и в конечном счете это нажмет.
Кто-то упомянул книгу "Маленький Интриган", и это - довольно хорошее чтение. Хотя это предназначается для Схемы, фактические проблемы будут стоить работать через.
Удачи!
В дополнение к тому, что другие SO'ers уже предложили, вот мои 2 цента:
Всего наилучшего
Я проверил бы Программирование Clojure. Это - замечательная книга для non-lispers.
Кто сказал, что это собирается нажать? я всегда смущаюсь
, Но если Вы думаете о том, сколько абстракции возможно скрыться позади макросов шепелявости. Тогда Ваш мозг взорвется.
:)
Для меня важная вещь состоит в том, чтобы удостовериться, что Вы делаете все в 'шепелявости-y' путь. Не испытывайте желание думать 'В Java, который я использовал бы для цикла здесь, как я делаю для циклов в Lisp?' но пройти достаточно примеров и учебных руководств (поскольку кто-то указал, , SICP идеально подходит для этого), что можно начать определять, когда взгляды кода 'Lisp-y' и распознают общеязыковые парадигмы.
я, конечно, знаю чувство рассмотрения некоторого кода, который я только что написал и интуитивно зная, что это правильно идиоматично для того языка и платформы/платформы - что, я думаю, когда это 'нажимает'.
Редактирование : И престижность за выбор функционального языка, меньшие студенты просто сделали бы это в Java:)
Если у Вас нет alrady, читайте на том, что делает шепелявость уникальным языком. Если Вы не сделаете этого сначала, то Вы будете пытаться сделать то же самое, которое Вы могли сделать на некоторых других языках программирования.
Тогда попытка реализовать некоторую мелочь (пытаются сделать это полезным для Вас или у Вас не могло бы быть мотивации).
Lisp в поле является отличным способом намочить ноги.
Удача. Это взяло меня до примерно на полпути через курс "Языков программирования" в колледже, прежде чем Схема "нажала". Как только это произошло, тем не менее, все просто имело смысл, и я влюбился в функциональное программирование.
Запись интерпретатор Lisp в Lisp.
Моя персональная практика должна найти маленький проект (что-то, что могло бы устранить 3-5 ночей, взламывая), и реализуйте ее. Как насчет блога фильтруют инструмент? Возможно, просто Ханойские башни или реализация Связанного списка (это - обычно 1-суточные проекты).
способ, которым это обычно удается, я реализую его плохо в первый раз, выбрасываю то, что я имел, и это наконец нажимает несколько часов в.
А ОГРОМНАЯ справка берет курс в чем-то как... гм... LISP!:) Домашняя работа вынудит Вас противостоять большому количеству понятий, и она нажала для меня задолго до законченного семестра.
Удачи!!
Легкий!
M-x
lisp-mode
хорошо, хорошо, таким образом, у Вас не могло бы быть Emacs для мозга. Во всей серьезности, что необходимо сделать, должен стать действительно хорошим в рекурсии. Это может быть вполне мозговой деформацией первоначально при попытке расширить понятие рекурсии вне канонических примеров, но в конечном счете это приведет к большему количеству жидкости, lispy код.
кроме того, много людей становится одержимым круглой скобкой, и я действительно не знаю, почему - синтаксис очень прост и последователен и может быть освоен в минутах. Для меня я приехал для Интригования изучив C++ и Java, и я всегда думал, что различием между "функциями" и "операторами" была ложная дихотомия, и это обновлялось для наблюдения того устраненного различия.
Насколько функциональное программирование идет, пока можно обернуть голову вокруг того, что функция является первоклассным значением и может быть передана и в и из других функций, необходимо быть в порядке. Полноценность этого будет становиться ясной со временем, но это достаточно, что можно записать берущие функцию и возвращающие функцию функции.
Наконец, я не уверен, что поддерживает Clojure, имеет для макросов, но их считают основной частью шепелявости. Однако я не волновался бы об изучении их, пока Вы не очень знакомы с вышеупомянутыми объектами - хотя макросы невероятно полезны и универсальны, они также используются менее часто, чем другие методы, которые я упомянул.
Я запустил бы с языка, который может быть интерпретирован. Я нашел Московский ML быть довольно легким. Это - легкая реализация Стандартного ML.
Некоторые мысли о Шепелявят, не характерный для Clojure (я не эксперт Lisp, таким образом, я надеюсь, что они главным образом корректны и полезны):
я знаю мало о компиляторе или теории интерпретатора, но каждый раз я кодирую в Lisp, это поражает меня, что как непосредственно создавать AST.
Это - часть того, что "код =, который данные" означают, кодируя в Lisp, много похож на заполняющиеся структуры данных (вложенные списки) с узлами AST. Удивительный, и легко читать также (с правильным текстовым редактором).
Так блоки кода просто вкладывается списки и перечисляет операции, часть языка. Таким образом, можно очень легко написать код Lisp, который генерирует код Lisp (см. макросы Lisp). Это делает Lisp программируемым (сам по себе!) язык программирования.
Это делает создание , DSL или интерпретатор в Lisp очень легки (см. также метакруговая оценка ).
И в большинстве систем Lisp, код (включая документацию) может анализироваться и заменяться в горячем режиме во время выполнения.
Затем большинству Систем Lisp получили своего рода Объектную Систему из CLOS, который является усовершенствованным (по сравнению со многими реализациями ООП) и настраиваемая Объектная Система (см. Искусство Протокола Метаобъекта).
Все эти функции, где изобретено давно, но я не уверен, что они доступны на многих других языках программирования (хотя большинство нагоняет, например, с закрытиями), таким образом, необходимо "открыть вновь" и привыкнуть к ним путем осуществления (см. книги в других ответах).
В образовательных целях я рекомендовал бы Схему PLT. Это - портативная и мощная среда с очень хорошими примерами и еще лучшей документацией. Это поможет Вам обнаружить мысли позади функционального программирования шаг за шагом и в очень очевидном способе. Выбор небольшого приложения для реализации поможет Вам учащий новый язык.
Дополнительно "Структура и Интерпретация Компьютерных программ" H. Abelssn, G. Sussman и J. Sussman является очень хорошей книгой относительно Схемы (и программирующий).
Отношения
mue
Ну, для меня я встретился с той же проблемой, как Вы делаете в начале, когда я начал делать OCAML, но прием - то, что необходимо начать думать приблизительно , что Вы хотите от кода и не , как сделать это !!!
, Например, для вычисления квадрата элементов списка, забывают о длине списка, и такие приемы, всего думают математически как этот:
, если список пуст->, я сделан
в противном случае тогда, список должен иметь голову и хвост-> Вы вычисляете квадрат головы, затем просите, чтобы Ваша функция сделала то же с хвостом.
Просто думают об общем случае и основном, и что Вы испускаете данные и не изменяете их (если Вы не хотите изменить их;)).
Удачи!
Запишите некоторые простые классические функции, к которым способен Lisp, как
инвертируют список
, говорят, находится ли атом где-нибудь в записи s-выражения
, РАВНОЙ, чтобы сказать, ли 2 s-выражения равны
, КРАЙ записи для получения списка атомов в краю s-выражения
пишет SUBST, то пишет SUBLIS
Символьное дифференцирование
, Алгебраическое упрощение
пишет простую ОЦЕНКУ и/или ПРИМЕНЯЕТСЯ
, Понимают, что Lisp хорош для этих видов функциональных программ без побочных эффектов.
Это также полезно для побочного эффекта с сохранением информации (нефункциональные) программы, но это больше похоже на "программы", чем "функции".
то, Которое лучше для данного приложения, зависит от приложения. В целом это должно содержать не меньше, и не больше, информация состояния, чем необходимый.
Как насчет этого: http://www.defmacro.org/ramblings/lisp.html
Это очень простое, пошаговое введение в мышление в lisp с точки зрения обычного императивного программиста (Java, C # и т. д.).