宣言型プログラミングは、現行式枠外の外部状態への代入コマンド、および外部状態の現行式への影響(副作用)といった命令的な性質を持たないパラダイムとして定義されている。命令的性質のステートメントに対して、宣言的なプログラム基本文は式とされる。宣言的パラダイムにあるべき特徴は以下のようになる。宣言的オペレータの性質である参照透過性は、同じ引数に対するオペレータの動作と返り値が不変であることを意味する。式は単体で評価されるほか、引数に適用されて評価値(返り値)になる。式はほかへの引数にもなり、高階論理の式は他の式を引数にする。微分の導関数と同様に、式の返り値を式にすることもできる。引数や返り値にもできる式は、第一級とされる。問い合わせ言語のSQLのクエリは宣言的とされるが、データベースの更新という副作用が伴なわれる場合はそうとは言えない。論理プログラミングも通常の導出原理は宣言的であるが、その過程で知識表現の追加が行われる場合はそうと言えなくなる。関数型言語の多くは、コマンドと副作用の取り扱いも許容している命令型と宣言型の折衷になっている。純粋関数型言語は宣言的に徹しており、プログラム正当性の形式的検証を可能にしている。利点.計算式の抽象値化.参照透過な計算式は、時と場所に左右されない抽象値にもなる。いつどこで計算されても同じ引数に対して同じ結果が返るならば、あえて計算しないままにしておいての抽象値として扱おうとするのが宣言型のアプローチである。この概念の実装例はクロージャである。クロージャは、他の式や関数の束縛変数にされることが前提のレキシカルスコープ基準の無名関数である。計算の最適化.未来要素を内包した計算.参照透過な計算式は、次以降の式で確定される未来要素(前方参照や遅延評価)を残したままの結果値を返すこともできる。その結果値とは、次以降の式で引数が与えられることを前提にした第一級関数になる。それは次以降の式で確定される前方参照要素を残したままの未評価式であり、次の式の束縛変数にされるか、式枠外の変数に束縛されて保存されるなどして、次以降の式から渡される引数によって最終的な結果値になる。