云网牛站
所在位置:首页 > Linux编程 > 在Fedora Linux系统中安装和使用Haskell的方法

在Fedora Linux系统中安装和使用Haskell的方法

2020-06-25 10:19:20作者:戴进稿源:云网牛站

本文介绍的内容有:在Fedora Linux系统中安装Haskell、Haskell中的第一个程序和使用Haskell软件包。

在Fedora Linux系统中安装和使用Haskell的方法

 

简介

Haskell是一种功能编程语言,与使用过程性语句的命令式语言相比,用户可以创建和创建程序。

Haskell具有最新的编程范例,可用于通用程序、研究和工业应用。最值得注意的是,它使用高级类型的系统纯粹是功能性的,这意味着每个计算,即使是产生副作用IO操作的计算,也都使用纯函数在数学意义上进行定义。

另外,Haskell越来越受欢迎的主要原因包括易于维护、广泛的软件包、多核性能以及针对某些错误(例如空指针或死锁)的语言安全性。

 

在Fedora Linux中安装Haskell

Fedora Linux提供了一种通过官方存储库安装Glasgow Haskell编译器(GHC)的简便方法:

$ sudo dnf install -y ghc

$ ghc --version

The Glorious Glasgow Haskell Compilation System, version 8.6.5

参考:dnf命令_Linux dnf命令使用详解:新一代的RPM软件包管理器

现在已经安装了GHC,让我们编写一个简单的程序,对其进行编译并执行。

 

Haskell中的第一个程序

让我们写传统的“Hello, World!” Haskell中的程序,首先,创建一个main.hs文件,然后键入或复制以下内容:

main = putStrLn ("Hello, World!")

运行该程序非常简单:

$ runhaskell main.hs

Hello, World!

生成程序的可执行文件就像运行它一样简单:

$ ghc main.hs

[1 of 1] Compiling Main   ( main.hs, main.o )

Linking main ...

$ ./main

Hello, World!

GHC提供了“Read Eval Print Loop”(REPL)命令,以交互方式评估Haskell表达式:

$ ghci

Prelude> :load main.hs

[1 of 1] Compiling Main   ( main.hs, interpreted )

Ok, one module loaded.

*Main> main

Hello, World!

*Main> :type putStrLn

putStrLn :: String -> IO ()

*Main> :info String

type String = [Char]    -- Defined in ‘GHC.Base’

*Main> :help

...

最常见的REPL命令是:

:load加载文件。

:reload重新加载已加载的文件。

:type显示表达式的类型。

:info显示有关名称的信息。

:browse列出已加载的函数。

 

使用Haskell软件包

Haskell具有打包系统以共享功能。

为了展示如何使用软件包,让我们写一个新的,首先,创建MyPackage.hs文件,然后键入或复制以下内容:

module MyPackage where

greet name = putStrLn ("Hello, " ++ name ++ "!")

接下来,修改main.hs文件,如下所示:

import MyPackage

main = greet ("Fedora")

在修改后的main.hs中,而不是使用标准的putStrLn函数来打印“Hello, World!”该应用程序现在使用新创建的包中的greet函数:

$ runhaskell main.hs

Hello, Fedora!

GHC会自动在当前工作目录中查找软件包,也可以查找系统上全局安装的软件包,要在Haskell项目中使用Fedora软件包,您需要安装开发文件,例如,让我们使用ansi-wl-pprint库添加颜色:

$ sudo dnf install -y ghc-ansi-wl-pprint-devel

接下来,修改MyPackage.hs文件:

module MyPackage where

import Text.PrettyPrint.ANSI.Leijen

greet name = putDoc (green (text ("Hello, " ++ name ++ "!\n")))

然后,您可以使用动态链接构建一个小的可执行文件:

$ ghc -dynamic main.hs -o greet && strip greet

[1 of 2] Compiling MyPackage   ( MyPackage.hs, MyPackage.o )

[2 of 2] Compiling Main   ( main.hs, main.o )

Linking greet ...

$ du --si greet

17k     greet

$ ./greet

Hello, Fedora!

至此,使用Haskell软件包的操作完成。

 

相关主题

在Debian 10系统上安装GCC编译器及编译Hello World示例

精选文章
热门文章