首页 > 其他分享 >无涯教程-Haskell - 输入&输出

无涯教程-Haskell - 输入&输出

时间:2023-12-21 22:32:27浏览次数:28  
标签:文件 教程 abc 代码 无涯 Haskell txt 我们

到目前为止,我们讨论的所有示例本质上都是静态的,在本章中,我们将学习与用户动态交流,我们将学习Haskell中使用的不同输入和输出技术。

文件和流

到目前为止,我们已经对程序本身中的所有输入进行了硬编码,我们一直在从静态变量获取输入,现在,让我们学习如何从外部文件读取和写入。

让我们创建一个文件并将其命名为" abc.txt",接下来,在此文本文件中输入以下行:"Welcome to  Learnfk"

接下来,我们将编写以下代码,这些代码将在控制台上显示此文件的内容,在这里,我们使用函数readFile()来读取文件,直到找到EOF字符为止。

main=do  
   let file="abc.txt" 
   contents <- readFile file 
   putStrLn contents   

上面的代码将读取文件" abc.txt"作为字符串,直到遇到任何文件结尾字符。这段代码将生成以下输出。

Welcome to Learnfk

观察到在终端上打印的内容均写入该文件中。

命令行参数

Haskell还提供了通过命令提示符来操作文件的函数,让我们回到终端并输入" ghci" 。然后,键入以下命令集-

let file="abc.txt" 
writeFile file "I am just experimenting here." 
readFile file 

在这里,我们创建了一个名为" abc.txt"的文本文件,接下来,我们使用 writeFile 命令在文件中插入了一条语句,最后,我们使用了命令 readFile 在控制台上打印文件的内容。我们的代码将产生以下输出-

I am just experimenting here.

异常

Exception异常可被视为代码中的错误,在这种情况下,编译器在运行时无法获得预期的输出,像任何其他好的编程语言一样,Haskell提供了一种实现异常处理的方法。

如果您熟悉Java,那么您可能会知道Try-Catch块,我们通常会在该块中引发错误并在 catch 块中捕获该错误,在Haskell中,我们还具有捕获运行时错误的相同函数。

try的函数定义类似于"try::Exception e => IO a-> IO(Either e a)",看下面的示例代码, 它显示了如何捕获“除以零"异常。

import Control.Exception 

main=do 
   result <- try (evaluate (5 `div` 0))::IO (Either SomeException Int) 
   case result of 
      Left ex   -> putStrLn $"Caught exception: " ++ show ex 
      Right val -> putStrLn $"The answer was: " ++ show val 

在上面的示例中,我们使用了 Control.Exception 模块的内置 try 函数,因此我们提前捕获了异常。上面的代码段将在屏幕上产生下面的输出。

Caught exception: divide by zero 

参考链接

https://www.learnfk.com/haskell/haskell-input-and-output.html

标签:文件,教程,abc,代码,无涯,Haskell,txt,我们
From: https://blog.51cto.com/u_14033984/8927075

相关文章

  • Microsoft Visio 2021专业版安装包软件下载安装教程
    Microsoftvisio2021,简称visio2021。这是一款专业的专业矢量绘图软件。visio2021不但新增了许许多多的功能,而且还优化了众多的界面性能,其一系列的改动就是为了给予用户们最直观、最便利的操作感体验。同时呢,软件的操作也是相当的简单,只要用户熟悉软件上方中的菜单栏,其菜单栏与大家......
  • 无涯教程-Haskell - 函数组合
    功能组合是将一个功能的输出用作另一个功能的输入的过程,如果我们学习组成背后的数学会更好,在数学中,组成由f{g(x)}表示,其中g()是一个函数,其输出用作输入另一个功能,即f()。看下面的示例代码。在这里,我们使用函数组合来计算输入数字是偶数还是奇数。eveno::Int->Boolnoto......
  • 无涯教程-Haskell - 运算符
    在本章中,我们将了解Haskell中使用的不同运算符,在接下来的章节中,我们将学习更多有关不同运算符及其用法的信息。 +加法顾名思义,加法(+)运算符用于加法函数。main=doletvar1=2letvar2=3putStrLn"Theadditionofthetwonumbersis:"print(var1+var......
  • 无涯教程-Haskell - 类型类
    Haskell是一种函数语言,它是严格类型化的,这意味着编译器将在编译时知道整个应用程序中使用的数据类型。Int整数类型Int是代表Integer类型数据的类型类,2147483647到-2147483647范围内的每个整数都属于Int类型类。fType::Int->Int->IntfTypexy=x*x+y*ymain=print(fT......
  • 软件测试/测试开发|Ubuntu系统入门教程
    前言上文我们介绍了Ubuntu系统的安装,还没有介绍Ubuntu系统的使用,对于习惯了使用Windows系统的我们来说,Ubuntu和Windows还是有着比较大的区别的,本文就来介绍一下Ubuntu系统的入门使用。Windows和Linux文件系统区别我们都知道,Windows操作系统的文件管理是分盘的,我们有C盘,D盘......
  • 无涯教程-Haskell - 环境设置
    从其官方网页下载可用的Haskell设置-https://www.haskell.org/downloadsWindows环境设置要在Windows计算机上设置Haskell环境,请访问其官方网站https://www.haskell.org/platform/windows.html并根据您可定制的体系结构下载安装程序。检查系统的体系结构并下载相应的设置文件......
  • opencv图像处理机器学习真实项目教程(python实现)3图像处理基础
    3图像处理基础在本章中,我们将介绍图像处理中的各种操作,首先是基于平移的操作,如旋转和调整大小。读者将学习如何使用OpenCV旋转和调整图像大小,以及如何控制生成图像的大小和方向。本章接着介绍了图像的算术运算,如加法、减法和除法。本章继续以图像运算为主题,介绍图像的位运算,如......
  • 无涯教程-Go - 函数指针
    Go编程语言使您可以将指针传递给函数,只需将函数参数声明为指针类型。在下面的示例中,我们将两个指针传递给一个函数,并更改该函数内部的值,该值会反映在调用函数中-packagemainimport"fmt"funcmain(){/*局部变量定义*/varaint=100varbint=200fmt.P......
  • PostgreSQL从入门到精通教程 - 第39讲:数据库完全恢复
       PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUGPG技术大讲堂。 第39讲:数据库完全恢复 PostgreSQL第39讲:12月23日(......
  • 无涯教程-Go - 多维数组函数
    Go编程语言允许多维数组,这是多维数组声明的一般形式-varvariable_name[SIZE1][SIZE2]...[SIZEN]variable_type如,以下声明创建了三维5、10、4个整数数组-varthreedim[5][10][4]int二维数组二维数组是多维数组的最简单形式,本质上,二维数组是一维数组的列表,要声明大小为[x......