Wolfram语言
Wolfram语言(通常指代Mathematica或者缩写为 M)是Mathematica 和Wolfram Programming Cloud所使用的语言。这是一种由沃尔夫勒姆研究公司开发的多范型编程语言。它具有广泛和普遍的适用性,主要特点是符号计算、函数式编程和基于规则的编程。它可以用来创建和表示任何结构和数据。 它与Raspberry Pi上安装的系统软件捆绑。Intel Edison与Unity游戏引擎也集成了该语言。 命名 该…
共 21 篇文章
Wolfram语言(通常指代Mathematica或者缩写为 M)是Mathematica 和Wolfram Programming Cloud所使用的语言。这是一种由沃尔夫勒姆研究公司开发的多范型编程语言。它具有广泛和普遍的适用性,主要特点是符号计算、函数式编程和基于规则的编程。它可以用来创建和表示任何结构和数据。 它与Raspberry Pi上安装的系统软件捆绑。Intel Edison与Unity游戏引擎也集成了该语言。 命名 该…
Nix 是一个操作系统包管理器。同 RPM、APT 和许多其它的软件包管理系统一样,它可以用来控制软件包的安装,或已命名的,带版本号的文件组,例如软件应用及其相关的配置数据等。 Nix Nix 包采用一种专门设计的,惰性求值的纯函数式语言进行配置;Shell 脚本或其它外部程序(如 Make)可用于从源码构建包。此系统的纯函数式性质能够保证非常精准的依赖跟踪。例如,一个二进制包依赖于对应的源码包、编译器和其它用于构建的包。密码散列函数确…
在物件導向及函數程式語言中,不可變物件()是一種物件,在被創造之後,它的狀態(成员变量、属性等的值)就不可以被改變。至於狀態可以被改變的物件,則被稱為可變物件()。 不可变意味着只读不写,因此不可變物件天然地具備執行緒安全的特性,即是说如无其它特殊限制的话可以在任何线程上自由调用。此外,相較於可變物件,不可變物件在一些场合下也較合理,易於了解,而且提供較高的安全性。 小型的不可變物件可以被有效率的複製,但是較大的不可變物件,如果想要有效…
GNU Guix()是一个跨平台的包管理器,也是一个用于实例化和管理类Unix操作系统的工具。其余大部分组件使用GNU Guile进行编写。默认情况下只提供自由的软件包。 GNU Guix是GNU Guix System的默认包管理器。 与传统的包管理器不同,Guix(如Nix一样)采用了纯函数式的部署模型,软件被安装到通过密码散列函数生成的唯一的目录中。每个软件的所有依赖都作为每个密码散列函数的输入,解决了依赖地狱的问题。 这种包管理…
-{zh-cn:头等函数;zh-tw:一級函式;}-(first-class function;第一級函數)是指在程序设计语言中,函数被当作头等公民。这意味着,函数可以作为别的函数的参数、函数的返回值,赋值给变量或存储在数据结构中。 有人主张应包括支持匿名函数(函数字面量,function literals)。在这样的语言中,函数的名字没有特殊含义,它们被当作具有函数类型的普通的变量对待。1960年代中期,克里斯托弗·斯特雷奇在“fun…
匿名函数()在计算机编程中是指一类无需定义标识符(函数名)的函数或子程序,普遍存在于多种编程语言中。 1958年LISP首先采用匿名函数,自此之后,越来越多编程语言陆续采用,主流的编程语言如PHP和C++也陸續采用。 用途 排序 尝试将类按名称排序: a = [10, '10', 10.0] a.sort(lambda x,y: cmp(x.class.name, y.class.name)) print a [10.0, 10, '1…
在计算机科学中,函数副作用(side effect)指当调用函数时,除了返回可能的函数值之外,还对主调用函数产生附加的影响。例如修改全局变量(函数外的变量),修改参数,向主调方的终端、管道输出字符或改变外部存储信息等。 在某些情况下函数副作用会给程序设计带来不必要的麻烦,给程序带来十分难以查找的错误,并降低程序的可读性与可移植性。严格的函数式语言要求函数必须无任何副作用,但功能性静态函数本身的目的正是产生某些副作用。在生命科学中,副作用…
TidalCycles(也称为Tidal)是一个可以即兴演奏音乐的现场编程环境。 更具体地,它是一个嵌入在Haskell中的领域特定语言 ,主要用于声音与视觉模式的生成与操作。 Tidal 最初是为偏打击乐、基于网格的复节奏音乐而设计,但现在被认为是一个使用有理数时间的,灵活的、函数响应式的模式表示。 虽然其在时间上循环的处理方式 意味着它可能更适合重复的风格,比如 ,但 Tidal 仍可用于更广泛的音乐风格中。 在早期,Tidal 官…
函数式反应式编程(FRP) 是一种编程范式,它采用函数式编程的基础部件(如map、reduce、filter等),进行反应式编程(异步数据流程编程)。FRP被用于GUI、机器人和音乐方面的编程,旨在通过显式的建模时间来简化这些问题。 FRP的形式 函数式反应编程,自从1997年由Conal Elliott和保罗·胡达客在ICFP 97论文《函数式反应式动画》中提出以来 连续 FRP的最早形式采用了连续的语义,旨在抽象出对程序的意义无关紧…
在函数式编程中,单子(monad)是一种抽象,它允许以泛型方式构造程序。支持它的语言可以使用单子来抽象出程序逻辑需要的。为了达成这个目标,单子提供它们自己的数据类型(每种类型的单子都有特定的类型),它表示一种特殊形式计算,与之在一起的有两个过程,一个过程用来包装单子内“任何”基本类型的值(产生单子值),另一个过程用来那些输出单子值的函数(叫做单子函数)。 单子的概念和术语二者最初都来自范畴论,这里的单子被定义为具有额外结构的函子{{ef…
函数式编程,或称函数程序设计、泛函编程(),是一种编程范型,它将电脑运算视为函数运算,并且避免使用程式以及可變物件。 简介 在函数式编程中,函数是头等对象即头等函数,这意味着一个函数,既可以作为其它函数的输入参数值,也可以从函数中返回值,被修改或者被分配给一个变量。λ演算是这种范型最重要的基础,λ演算的函数可以接受函数作为输入參數和输出返回值。 比起指令式編程,函數式編程更加強調程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让…
在编程语言(尤其是函数式编程语言)和类型论中,可选类型()是一种表示可选值的多态类型,也称作可能类型()。例如,函数可以使用可选类型的返回值,表示执行该函数后可能返回有意义的值,也可能不返回。 可选类型的构造函数通常有两种形式:一种形式不包含任何参数,表示空(常记作 None 或者 Nothing);另一种形式包含原始数据类型 A(常记作 Just A 或者 Some A)。 面向对象编程领域可空类型的概念(常记作 A?)与可选类型类似…
强函数式编程(也称为全函数式编程),与之相对的是普通的或者说弱函数式编程。是一种编程范式,它将程序的范围限制为可证明停机的程序。 限制 在满足下列限制的条件时,程序一定会终止: 受限制的递归。仅对其参数的“简化”形式进行操作,例如Walther 递归、子结构递归或通过代码的抽象解释证明的“强规范化”。 每个函数都必须是全函数(而非偏函数)。也就是说,它必须对定义域内的所有取值均有定义。 # 有很多方式可以将常用的偏函数(例如除法)扩展为…
列表構造函數是用來構造列表的基本函數,在大多數 LISP 體系的計算機編程語言中,使用的函數名稱是cons。 cons構成了存放兩個變量與其指針的記憶體物件,這個物件被稱為CONS單元、非原子的 S 表達式或cons對。LISP 編程中表達要把 x 加入 y 的語法:(cons x y),構造了一個新物件。產生的結果具備了左半部,稱為CAR(第一元素或暫存器位址的內容);以及右半部稱為CDR(其餘元素或遞減暫存器的內容)。 以上約略地和…
菲利普·李·瓦德勒(Philip Lee Wadler,)是一位美国電腦科學家,以其对编程语言设计和类型论的贡献而闻名,2003年以来担任爱丁堡大学理论计算机学讲席教授。他对函数式编程背后的理论做出了许多贡献,包括函数式编程中单子的使用、纯函数式语言Haskell的设计、和XQuery声明式查询语言等。1984年,他创建了Orwell编程语言。瓦德勒参与了向Java5.0添加泛型类型的工作。 参考文献
關係的哈斯圖,其縱向為對數尺度]] 正规数()是指可以整除60的乘幂的整數,也就是60乘幂的因數,例如602 = 3600 = 48 × 75,48和75都可以整除60的平方,也都是正规数。 在許多數學及應用的領域會用到60乘幂的因數,在不同的領域中其名稱也有所不同。 在數論中,60乘幂的因數也稱為5-光滑數,因為其質因數只有2,3或是5,這是k-光滑數中的一個特例,k-光滑數是指其質因數都小於等於k的整數。 在巴比伦数学中,60乘幂的…
在计算机编程中 语法分析组合子 是一个 高阶函数 ,它接受几个的语法分析器作为输入,并返回一个新的语法分析函器作为其输出。 在这个上下文中, 语法分析器 是一个函数,它接受字符串作为输入,返回的一些结构作为输出,通常为 分析树 或一组索引表示在字符串中成功停止分析的位置。 分析器组合子使用 递归下降分析 战略,提倡模块式建造和测试。 这种分析技术是所谓的 组合分析。 使用组合子构建的分析器易于构造、可读、模块化、结构良好且易于维护它们被…
斜率场是一个数量函数y(x)的一阶微分方程,可以在二维空间中被解畫,而可能的解可以在斜率场中以實線被繪畫出來。由于各种原因,有時求微分方程的解或將會被定義為不可行,然而方程的解仍可在切线被画在网格上,而切线在网格处与函数相切。 注釋
在计算机编程中,append是一些高级语言中用于连接链表或数组的操作。继LISP之后,其他以链表作为原始数据结构的高级语言也都采用了append。Haskell則使用++操作符来附加列表。OCaml使用@操作符来附加列表。 参考文献
{{Infobox scientist|name=Paul Hudak|image=File:Paul Hudak in 2013.jpg|caption=2013年的保罗·胡达克|birth_name=Paul Raymond Hudak|birth_date=|birth_place=Baltimore, Maryland|death_date=|death_place=New Haven, Connecticut|resting …