اشر (زبان برنامهنویسی)
اِشِر یک زبان برنامهنویسی اعلانی است که هر دو مدل برنامهنویسی تابعی و برنامهنویسی منطقی را حمایت میکند. این زبان توسط J.W. Lloyd در اواسط سال ۱۹۹۰ میلادی گسترش یافت. اِشِر بیشتر به عنوان یک تحقیق یا وسیلهای برای آموزش طراحی شدهاست. نمای پایهای از برنامهنویسی به نمایش گذاشته شده توسط اِشِر و زبانهای وابسته به آن این است که یک برنامه نمایشی از یک تئوری در یک سری چارچوبهای منطقی است و اجرای یک برنامه (انجام محاسبات) نتیجهای از آن تئوری است. چارچوب منطقی اِشِر، تئوری سادهای از انواع از آلانزو چرچ (Alonzo Church) است.
اِشِر به ویژه در یک برنامهنویسی تابعی از ورودی/خروجی (I/O) حمایت میکند تا نشاندهندهٔ جهان بیرون به سبک زبان برنامهنویسی هاسکل (Haskell) باشد. یکی از اهداف طراحان اِشِر حمایت از متا-برنامهنویسی بود و بنابراین این زبان به منظور تولید برنامهها حمایت وسیعی شد.
مثالها
MODULE Lambda.
CONSTRUCT Person/0.
FUNCTION Jane, Mary, John: One -> Person.
FUNCTION Mother : Person * Person -> Boolean.
Mother(x,y) =>
x=Jane & y=Mary.
FUNCTION Wife : Person * Person -> Boolean.
Wife(x,y) =>
x=John & y=Jane.
FUNCTION PrimitiveRel : (Person * Person -> Boolean) -> Boolean.
PrimitiveRel(r) =>
r=Mother \/ r=Wife.
FUNCTION Rel : (Person * Person -> Boolean) -> Boolean.
Rel(r) =>
PrimitiveRel(r) \/
(SOME [r1,r2]
(r = LAMBDA [u] (SOME [z] (r1(Fst(u),z) & r2(z,Snd(u)))) &
PrimitiveRel(r1) & PrimitiveRel(r2))).
منابع
- Declarative programming in Escher, JW Lloyd, University of Bristol, Bristol, UK, 1995
- An implementation of Escher