Haskell在线运行

版本:

所属目录
点击了解高性能代码运行API
运行结果
教程手册
代码仓库
极速运行
终端运行
图形+终端

                        
以下是用户最新保存的代码
小黑盒题目 发布于:2023-05-24 11:57 这是一个小程序 发布于:2021-10-12 22:01 haskell 测试 发布于:2021-09-23 22:38 [更多]
显示目录

基本数据类型



学习嵌入式的绝佳套件,esp8266开源小电视成品,比自己去买开发板+屏幕还要便宜,省去了焊接不当搞坏的风险。 蜂鸣版+触控升级仅36元,更强的硬件、价格全网最低。

点击购买 固件广场

基本数据类型

Haskell是一种纯函数式编程语言,因此它比其他编程语言更具交互性和智能性.

数字

Haskell非常智能,可以将某个数字解码为数字.因此,您不必像其他编程语言那样在外部提及其类型.按照例子,转到你的前奏命令提示符,然后运行"2 + 2"并点击回车.

sh-4.3$ ghci 
GHCi, version 7.6.3: http://www.haskell.org/ghc/  :? for help 
Loading package ghc-prim ... linking ... done. 
Loading package integer-gmp ... linking ... done. 
Loading package base ... linking ... done. 
Prelude> 2+2

您将收到以下输出结果.

4

在上面的代码中,我们只是将两个数字作为参数传递给GHCI编译器而没有预定义它们的类型,但编译器可以轻松解码这两个条目作为数字.

现在,让我们尝试更复杂的数学计算,看看我们的智能编译器是否给出了正确的输出.试试"15+(5 * 5)-40"


 Prelude> 15+(5 * 5)-40

上述表达式根据预期输出得出"0".

 0

字符

与数字一样,Haskell可以智能识别作为输入给出的字符.转到您的Haskell命令提示符并输入带双引号或单引号的任何字符.

让我们提供以下行作为输入并检查其输出.

Prelude> :t "a"

它将产生以下输出 :

 "a":: [Char]

请记住在提供输入时使用(: t ).在上面的示例中,(:t)将包括与输入相关的特定类型.我们将在接下来的章节中详细了解这种类型.

看一下下面的示例,我们将一些无效输入作为char传递,这反过来会导致错误.

Prelude> :t a 
<interactive>:1:1: Not in scope: 'a'  

Prelude> a 
<interactive>:4:1: Not in scope: 'a'

错误消息"< interactive>:4 :1:不在范围内:"a""Haskell编译器警告我们它无法识别您的输入. Haskell是一种语言,其中所有内容都使用数字表示.

Haskell遵循传统的ASCII编码风格.让我们看一下下面的例子,了解更多和减号;

 Prelude> '\ 97'
'a'
 Prelude> '\ '67'
'C'

查看输入如何解码为ASCII格式.

字符串

字符串只是一组字符.使用字符串没有特定的语法,但Haskell遵循用双引号表示字符串的传统方式.

看一下我们传递字符串"Tutorialspoint"的下面的例子. com".

 Prelude> :t"JS.com"

它将在屏幕上产生以下输出 :

 "JS.com":: [Char]

查看整个字符串是如何被解码为仅限Char的数组.让我们转到其他数据类型及其语法.一旦我们开始实际练习,我们将习惯所有数据类型及其用途.

布尔

布尔数据类型也相当多像其他数据类型一样直截了当.请看下面的例子,我们将使用一些布尔输入使用不同的布尔运算,例如"True"或"False".

Prelude> True && True 
True  
Prelude> True && False 
False   
Prelude> True || True 
True  
Prelude> True || False 
True

在上面的例子中,我们不需要提到"True"和"False"是布尔值. Haskell本身可以对其进行解码并执行相应的操作.让我们用"true"或"false"修改我们的输入.

 Prelude> true

它将产生以下输出 :

<interactive>:9:1: Not in scope: 'true'

在上面的例子中,Haskell无法区分"true"和数字值,因此我们的输入"true"不是数字.因此,Haskell编译器抛出一个错误,指出我们的输入不是它的范围.

列表和列表理解

像其他数据类型一样, List 也是Haskell中使用的非常有用的数据类型.例如,[a,b,c]是一个字符列表,因此,根据定义,List是由逗号分隔的相同数据类型的集合.

与其他数据类型一样,您无需将List声明为List. Haskell足够智能,可以通过查看表达式中使用的语法来解码输入.

看一下下面的例子,它显示了Haskell如何处理List.

  Prelude> [1,2,3,4,5]

它将产生以下输出 :

  [1,2,3,4,5]

Haskell中的列表本质上是同质的,这意味着他们赢了" t允许您声明不同类型的数据类型的列表.任何像[1,2,3,4,5,a,b,c,d,e,f]这样的列表都会产生错误.

  Prelude> [1,2,3,4,5,a,b,c,d,e,f]

此代码将产生以下错误 :

<interactive>:17:12: Not in scope: 'a' 
<interactive>:17:14: Not in scope: 'b' 
<interactive>:17:16: Not in scope: 'c' 
<interactive>:17:18: Not in scope: 'd' 
<interactive>:17:20: Not in scope: 'e' 
<interactive>:17:22: Not in scope: 'f'

列表理解

列表理解是使用数学表达式生成列表的过程.请看下面的例子,我们使用数学表达式生成一个列表,格式为[output |范围,条件].

Prelude> [x*2| x<-[1..10]] 
[2,4,6,8,10,12,14,16,18,20]  
Prelude> [x*2| x<-[1..5]] 
[2,4,6,8,10]  
Prelude> [x| x<-[1..5]] 
[1,2,3,4,5]

这种使用创建一个List的方法数学表达式被称为列表理解.

元组

Haskell提供了另一种在单个数据中声明多个值的方法类型.它被称为 Tuple .元组可以被认为是一个列表,但是元组和列表之间存在一些技术差异.

元组是一个不可变的数据类型,因为我们无法修改元素的数量在运行时,List是一种可变数据类型.

另一方面,List是一种同类数据类型,但是Tuple本质上是异构的,因为元组可能包含不同类型的其中的数据.

元组用单括号表示.看一下下面的例子,看看Haskell如何处理一个元组.

 Prelude> (1,1,'a')

它将产生以下输出 :

 (1,1,'a')

在上面的例子中,我们使用了一个带有两个数字

由JSRUN为你提供的Haskell在线运行、在线编译工具
        JSRUN提供的Haskell 在线运行,Haskell 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。
yout