programming

Haskell教程:#6 类型和类

类型和类(Types and Type Class) Haskell 是一种函数式语言,它是严格类型化的,这意味着整个应用程序中使用的数据类型将在编译时为编译器所知。 内置类型类 在 Haskell 中,每个语句都被视为一个数学表达式,这个表达式的类别称为类型。 您可以说“类型”是编译时使用的表达式的数据类型。要了解有关类型的更多信息,我们将使用 “:t” 命令。 在泛型中,Type 可以被认为是一个值,而 Type Class 可以被认为是一组相似类型的类型。 在本章中,我们将了解不同的内置类型。 Int Int 是表示 Integer 类型数据的类型类。 2147483647 到 -2147483647 范围内的每个整数都属于 Int 类型类。 在以下示例中,函数 fType() 将根据其定义的类型运行。 fType :: Int -> Int -> Int fType x y = x*x + y*y main = print (fType 2 4) 在这里,我们将函数 fType() 的类型设置为 int。 该函数采用两个 int 值并返回一个 int 值。 如果编译并执行这段代码,它将产生以下输出 sh-4.3$ ghc -O2 --make *.hs -o main -threaded -rtsopts sh-4.

Continue reading

Haskell教程:#5 基本运算符

Basic Operations 在本章中,我们将了解 Haskell 中使用的不同运算符。 与其他编程语言一样,Haskell 可以智能地处理一些基本运算,如加法、减法、乘法等。在接下来的章节中,我们将了解有关不同运算符及其用法的更多信息。在本章中,我们将使用我们的在线平台 (https://www.tutorialspoint.com/codingground.htm) 在 Haskell 中使用不同的运算符。 请记住,我们仅使用整数类型数字,因为我们将在后续章节中了解有关十进制类型数字的更多信息。 Addition Operator 顾名思义,加法 (+) 运算符用于加法函数。 以下示例代码显示了如何在 Haskell 中将两个整数相加 main = do let var1 = 2 let var2 = 3 putStrLn "The addition of the two numbers is:" print(var1 + var2) 在上面的文件中,我们创建了两个单独的变量 var1 和 var2。 最后,我们使用加法运算符打印结果。 使用编译和执行按钮运行您的代码。此代码将在屏幕上产生以下输出 The addition of the two numbers is: 5 Subtraction Operator 顾名思义,此运算符用于减法运算。 以下示例代码显示了如何在 Haskell 中减去两个整数 main = do let var1 = 10 let var2 = 6 putStrLn "The Subtraction of the two numbers is:" print(var1 - var2) 在本例中,我们创建了两个变量 var1 和 var2。 此后,我们使用减法 (-) 运算符将两个值相减。此代码将在屏幕上产生以下输出

Continue reading

Haskell教程:#4 基础数据模型

基础数据模型 Haskell 是一种纯函数式编程语言,因此它比其他编程语言更具交互性和智能性。 在本章中,我们将学习 Haskell 的基本数据模型,这些模型实际上是预定义的或以某种方式智能地解码到计算机内存中的。在本教程中,我们将使用我们网站 (https://www.tutorialspoint.com/codingground.htm) 上提供的 Haskell 在线平台。 Number 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 Characters 像数字一样,Haskell 可以智能地识别作为输入的字符。 转到您的 Haskell 命令提示符并键入任何带有双引号或单引号的字符。让我们提供以下行作为输入并检查其输出。 Prelude> :t "a" 它将产生以下输出 "a" :: [Char] 请记住,在提供输入时使用 (:t)。 在上面的例子中, (:t) 是包括与输入相关的特定类型。 我们将在接下来的章节中了解有关此类型的更多信息。看看下面的例子,我们将一些无效的输入作为字符传递,这又会导致错误。

Continue reading

Haskell教程:#3 设置环境

设置环境 我们已经在线设置了 Haskell 编程环境 - https://www.tutorialspoint.com/compile_haskell_online.php 这个在线编辑器有很多选项来练习 Haskell 编程示例。 转到页面的终端部分并输入“ghci”。 该命令会自动加载 Haskell 编译器并在线启动 Haskell。 使用 ghci 命令后,您将收到以下输出。 sh-4.3$ ghci GHCi,version7.8.4:http://www.haskell.org/ghc/:?forhelp Loading package ghc-prim...linking...done. Loading packageinteger gmp...linking... done. Loading package base...linking...done. Prelude> 如果您仍然想在本地系统中离线使用 Haskell,那么您需要从其官方网页下载可用的 Haskell 设置 - https://www.haskell.org/downloads 市场上有三种不同类型的安装程序 - Minimal Installer - 它提供 GHC(格拉斯哥 Haskell 编译器)、CABAL(构建应用程序和库的通用架构)和堆栈工具。 Stack Installer - 在此安装程序中,GHC 可以在托管收费链的跨平台中下载。它将全局安装您的应用程序,以便它可以在需要时更新其 API 工具。它会自动解决所有面向 Haskell 的依赖项。 Haskell 平台 - 这是安装 Haskell 的最佳方式,因为它将在您的机器中安装整个平台,并从一个特定位置安装。此安装程序不像上述两个安装程序那样是分布式的。 我们已经在市场上看到了不同类型的安装程序,现在让我们看看如何在我们的机器中使用这些安装程序。在本教程中,我们将使用 Haskell 平台安装程序在我们的系统中安装 Haskell 编译器。 Windows 安装 要在您的 Windows 计算机上设置 Haskell 环境,请访问他们的官方网站 https://www.

Continue reading

Haskell教程:#2 概览

概览 Haskell 是一种函数式编程语言,专门设计用于处理符号计算和列表处理应用程序。 函数式编程基于数学函数。 除了 Haskell,其他一些遵循函数式编程范式的流行语言包括:Lisp、Python、Erlang、Racket、F#、Clojure 等。在传统的编程中,指令被视为一组特定语法或格式的声明,但在函数式编程的情况下,所有的计算都被视为单独的数学函数的组合。 使用 Haskell 实现功能性 Haskell 是一种广泛使用的纯函数式语言。在这里,我们列出了使这种语言相对于其他传统编程语言(如 Java、C、C++、PHP 等)如此特别的几点。 函数式语言 - 在传统的编程语言中,我们指示编译器执行一系列任务,这些任务只不过是告诉您的计算机“要做什么”和“如何做?”但是在 Haskell 中,我们会告诉我们的计算机“它是什么?” 懒惰 - Haskell 是一种懒惰的语言。懒惰是指 Haskell 不会无缘无故地评估任何表达式。当求值引擎发现表达式需要求值时,它会创建一个 thunk 数据结构来收集该特定求值所需的所有信息以及指向该 thunk 数据结构的指针。仅当需要评估该特定表达式时,评估引擎才会开始工作。 模块化 - Haskell 应用程序只不过是一系列功能。我们可以说一个 Haskell 应用程序是众多小型 Haskell 应用程序的集合。 静态类型 - 在传统的编程语言中,我们需要定义一系列变量及其类型。相比之下,Haskell 是一种严格类型的语言。通过术语严格类型语言,我们的意思是 Haskell 编译器足够智能,可以确定声明的变量的类型,因此我们不需要明确提及所使用的变量的类型。 可维护性 - Haskell 应用程序是模块化的,因此维护它们非常容易且具有成本效益。 函数式程序更加并发,并且它们在执行中遵循并行性以提供更准确和更好的性能。 Haskell 也不例外。它的开发方式可以有效处理多线程。 Hello World It is a simple example to demonstrate the dynamism of Haskell. Take a look at the following code.

Continue reading

Haskell教程:#1 导读

首页 Haskell 是一种广泛使用的纯函数式语言。 函数式编程基于数学函数。 除了 Haskell,其他一些遵循函数式编程范式的流行语言包括:Lisp、Python、Erlang、Racket、F#、Clojure 等。 Haskell 比其他流行的编程语言如 Java、C、C++、PHP 等更智能 . 在本教程中,我们将通过相关示例讨论 Haskell 的基本概念和功能,以便于理解。 观众 本教程是为初学者准备的,让他们了解使用 Haskell 作为编程语言的函数式编程的基本概念。 先决条件 虽然是初学者教程,但我们假设读者对任何编程环境都有一定的了解,并了解变量、命令、语法等基本概念。

Continue reading