اشر (زبان برنامه‌نویسی)

اِشِر یک زبان برنامه‌نویسی اعلانی است که هر دو مدل برنامه‌نویسی تابعی و برنامه‌نویسی منطقی را حمایت می‌کند. این زبان توسط 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
زبان‌های تابعی