言,例如Scheme、Clojure、Haskell、OCaml、StandardML和Uniambda,允许副作用的存在。Р逻辑式编程:逻辑式编程语言如Prolog声明关系并且对关系进行提问。同函数式编程一样,许多逻辑编程语言允许副作用的存在。Р函数式编程Р函数式编程(英语:functionalprogramming)或称函数程序设计,又称泛函编程,将计算机的运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。Р函数式编程最重要的技术是入演算(lambdacalculus)。而且入演算的函数可以接受函数作为输出或输出。Р典型的函数式编程語言Р•纯函数式编程語言Р强静态类型:ConcurrentClean,Haskell,MirandaР弱类型:LazyKР-非纯函数式编程語言Р强静态类型:F#,ML,OCaml,ScalaР强动态类型:Erlang,LISP,LOGO,Scheme,Clojure,Mathematica,RР弱类型:UnlambdaР其他函数式编程語言:APL,XSLTР1980年代末期,集函数式编程研究成果於大成的Haskell发布。Р元编程Р元编程(英語:Metaprogramming),又称超编程,是指某些计算机程序能够编写和操纵其他程序(或者自身),或者在运行时完成部分本应在编译时完成的工作。Р编写元程序的语言称之为元语言。被操纵的程序的语言称之为「目标语言」。一门编程语言同时也是自身的元语言的能力称之为「反射」或者「自反」。反射是促进元编程的一种很有价值的语言特性。支持泛型编程的语言也使用元编程能力。Р元编程通常通过两种方式实现。Р通过应用程序编程接口(APIs)将运行时引擎的内部信息暴露于编程代码。Р另一种是动态执行包含编程命令的字符串表达式。因此,"程序能够编写程序”。虽然两种方式都能用于同一种语言,但大多数语言趋向于偏向其中一种。