UPDATE IP_ADMISSION_REQUEST ip1
SET IP1.WRIST_BAND_PRINT_STATUS=0
WHERE IP1.IP_ADM_REQ_ID =
(SELECT IP.IP_ADM_REQ_ID
FROM IP_ADMISSION_REQUEST ip
INNER JOIN VISIT v
ON ip.ip_visit_id=v.visit_id
AND v.pat_id =3702
); `enter code here`
Ваши примеры Схемы на самом деле не исследуют функции Схемы. Я недавно сделал некоторое символьное дифференцирование в Haskell по значениям следующего типа:
data Exp a = Lit a
| Exp a :*: Exp a
| Exp a :+: Exp a
| Var String
deriving Eq
Вместо того, чтобы отличить использование atom?
или eq?
Вы используете case
(или другое сопоставление с образцом) и ==
.
Во-первых, хотя SICP является большим, я рекомендовал бы против него для изучения Haskell. (#), Часть трудности в этом вопросе происходит от этого.
В Lisp/схеме, о 'функции' думают части кода, и исследование функции просто означает исследовать свой код. В Haskell, 'функция' средства что-то ближе к его математическому определению, как карта от набора к набору B. Так, например, имеет смысл, в контексте Lisp, сравнивать две функции: просто сравните их код. (Но (x+y)^2
и x^2+2*x*y+y^2
различные функции?) В Haskell, это зависит от того, существует ли там конструктивная процедура определения равенства для класса функций, которые Вы рассматриваете.
Точно так же как в Вашем вопросе, в Lisp/схеме, Вы записали бы "получить" функцию, которая дифференцируется правильно, когда данный выражения, и просто ошибки или возвращают мусор на произвольных исходных данных. Под системой типов Haskell это (AFAIK) невозможный сделать, because—, если Вы думаете о it— нет такой вещи как дифференциация произвольного входа: можно только дифференцировать Выражение (или возможно более общий класс, но все еще все). Таким образом, как в ответе Norman Ramsey, Вы сначала определяете тип "Выражения" (или введите класс), который очень прост сделать и затем записать функцию
derive :: Expression -> Expression
, который демонтирует Expression
использование конструкций сопоставления с образцом (или что-то еще в зависимости от того, как Expression
с были созданы).
(#): причина состоит в том, что SICP имеет совершенно другую философию, которая включает использование невведенного языка программирования и воодушевляющий отсутствие различия между кодом и данными. В то время как существует некоторая заслуга к "code=data" аргументу (например, то, что на архитектуре фон Неймана мы используем, "все - 0s и 1 с так или иначе"), это - не обязательно хороший способ рассуждать об или смоделировать проблемы. (См. Philip Wadler , Почему Вычисление Лучше, чем Интригование для больше на этом.), Если Вы хотите прочитать книгу Haskell с функциональным ароматом вместо Реальный мир один, возможно, Simon Thompson Haskell: Ремесло Функционального программирования или Richard Bird Введение в Функциональное программирование с помощью Haskell является лучшим выбором.
Я не думаю, что можно сделать это. Lisp гомографический , Haskell не.
Однако дальнейший поиск с помощью Google поднялся Liskell, который является интересным гибридом.