OCaml 安装以及简单的加减乘除Demo(以Ubuntu16.04为例)

2023-11-14

安装nix

参考 https://mirrors.tuna.tsinghua.edu.cn/help/nix/

安装nix

$ sh <(curl https://mirrors.tuna.tsinghua.edu.cn/nix/latest/install)

安装成功后的截图:

安装完成后遇到的问题

以清华镜像站的教程,安装完成之后应该会有对应的配置文件,如下:

但是个人在Ubuntu内没有找到对应的配置文件,不过问题也不大,毕竟这只是将清华源备用源,直接跳过该步骤做下一步也行(但建议挂个梯子)

个人的etc与config文件如下所示:

etc:

.config:

运行nix-env安装软件

完成后查看具体版本

安装完成后,可运行一下命令查看具体的版本

nix-env -q

Demo下载地址:
https://github.com/TOHKAaaaa/Calc-Demo

下载后使用

unzip xxx.zip

 

进行解压(xxx指压缩包名称)

解压完成后,进入OCaml文件夹,具体内容如下(下图中包括了编译后的文件,其中cmo、cmi为编译后的):

通过以下命令编译对应的代码

ocamllex scanner.mll # create scanner.ml
ocamlyacc parser.mly # create parser.ml and parser.mli
ocamlc -c ast.ml # compile AST types
ocamlc -c parser.mli # compile parser types
ocamlc -c scanner.ml # compile the scanner
ocamlc -c parser.ml # compile the parser
ocamlc -c calc.ml # compile the interpreter
ocamlc -o calc parser.cmo scanner.cmo calc.cmo

 

完成后即可通过

./calc

 

运行该Demo(输入完内容之后,按Ctrl+D退出)

运行结果:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OCaml 安装以及简单的加减乘除Demo(以Ubuntu16.04为例) 的相关文章

  • 未绑定图形模块

    Running open Graphics OCaml 中返回一个错误 表示它是一个未绑定的模块 在终端 ocaml 中运行它会返回相同的结果 这是否意味着我的图形模块未随 OCaml 软件包一起安装 如果是这样 我该如何安装该模块 在费多
  • 如何将模块与 js_of_ocaml 一起使用?

    我目前正在开发一个用 OCaml 编写并使用 js of ocaml 编译为 javascript 的网站项目 只要我使用该命令只有一个源文件 它就可以很好地工作ocamlfind ocamlc package js of ocaml pa
  • 模式匹配和 if-else 之间的性能差异

    为什么 OCaml 可以为模式匹配生成高效的机器代码 而不是为 if else 测试生成高效的机器代码 我在读 Real World OCaml 时发现this https realworldocaml org v1 en html lis
  • OCaml 中的函子

    我在函子 及其结果类型 方面遇到了一些问题 下面 我有一个Set使用一个函子Ordered类型 我实际上使用了set mlOCaml 附带提供一些指导 但我似乎正在做所有事情ahem正确的 我创建了一个Ordered模块与整数并将其应用到S
  • GADT 上的模式匹配失败

    我更多地使用 ReasonML 并发现了模式匹配type t从以下示例开始 无法处理该错误 错误 此模式与 t float 类型的值匹配 但需要一个与 t int 类型的值匹配的模式 float 类型与 int 类型不兼容 type t a
  • ocaml 漂亮的打印机(代码格式化程序)

    我正在寻找适用于 ocaml 的代码格式化程序或漂亮的打印机 类似 gofmt 的 go 编程语言 它最好应该保留评论 我正在纠正提交的内容 一些代码的格式使其非常难以阅读 如果你不关心评论 你可以使用camlp4 camlp4
  • 在 OCaml 中的 let 命令(即 let _ = ... in)中使用下划线通配符有副作用吗?

    使用 OCaml 时 我几乎总是使用下划线通配符let exp 特别是当结果exp并不重要 重要的是里面的计算 例如 let print endline abc in let a a 1 in let do some thing in 所以
  • OCaml 是否复制了自定义块?

    想象一下 我有一个名为 libcat 的 C 库 用于与我的毛茸茸的猫进行交互 因此 我正在为 OCaml 编写绑定来简化与 fluffy 的交互 module type CAT sig type cat val find gt cat v
  • OCaml 的并行化能力状况如何?

    我对在项目中使用 OCaml 很感兴趣 但是我不确定它的并行化功能在哪里 OCaml中有消息传递能力吗 OCaml 是否能够有效地使用 1 个以上的 CPU 我读到的关于这个主题的大部分内容都是在 2002 年至 2006 年写的 我没有看
  • 跨编译单元的 OCaml 递归模块

    我试图将以下递归模块拆分为单独的编译单元 具体来说 我希望 B 位于它自己的 b ml 中 以便能够与其他 A 一起重用它 module type AT sig type b type t Foo of b Bar val f t gt b
  • 如何使用List.fold_left?

    我仍在尝试了解如何fold left完全有效 它是否像这样迭代列表List iter 或者我的代码还有其他问题吗 我认为 e 是列表中的元素 所以它是一个元组 并且fst e获取元组的第一个元素并且snd e获取元组中的第二个元素 let
  • OCaml:如何运行包含库的脚本

    我正在按照 Real World OCaml 一书来学习 OCaml 许多程序都需要使用 Jane Street Core 库 当我在顶层使用这个核心库中的函数时 它工作得很好 在那里 我只需使用以下命令来打开 Core 库 use top
  • OCaml 3.12 中的一流模块:它们将使哪些事情变得更容易(或可能)?

    我听说 OCaml 3 12 中即将推出 一流模块 他们将提供什么优势 哪些孩子的事情会变得更容易 他们试图解决什么问题 一个简单的例子就足够了 这只是一个可能的应用程序 但一流的模块可以轻松地对存在类型进行编码 基本上是一个模块打包存在类
  • 在 OCaml 自定义顶层设置提示

    在 OCaml 自定义顶层中 有没有一种方法可以通过编程方式设置提示 到别的东西 我希望能够更改它以响应用户的最后一个自定义功能 有点像bash你如何设置PS1 我什至找不到 directive 来更改它 谢谢 在 toplevel top
  • OCaml 文字负数?

    我在学 这是我觉得奇怪的事情 let test treeways x match x with when x lt 0 gt 1 when x gt 0 gt 1 gt 0 如果我这样称呼它 test threeways 10 我会得到类型
  • 使用fold_left/right反转OCaml中的列表

    更新 解决方案 感谢 jacobm 的帮助 我想出了一个解决方案 Folding Recursion let reverse list 3 theList List fold left fun element recursive call
  • 如何强制 OCaml 推断出更通用的类型?

    我想定义一个接受可选参数的函数 该参数是一个函数 a gt b 默认值应该是identity 实际上就是 a gt a 但我认为没有理由它不应该与更通用的兼容 a gt b 当我尝试时 let optional apply f i matc
  • OCaml 前向声明

    有没有办法在 OCaml 中进行 C 风格的前向声明 我的问题是我有两个相互引用的变体 type path formula Next of state formula Until of state formula state formula
  • 通过命令行参数选择要使用的 ocaml 模块

    在我的代码中我有module M Implementation1然后我参考M 代替Implementation1 问题是 我必须重新编译我的程序才能改变Implementation1 to Implementation2 我想通过命令行参数
  • OCaml 是否具有通过引用传递的能力?

    在 C 中 程序可以向函数传递引用 而不是值 void incrementInt int x x OCaml 是否提供相同的功能 不 没有严格的等价物 有refs 它们就像指向新分配的内存的指针 还有其他复合数据类型的记录 数组 对象和值

随机推荐

  • Springboot学习笔记5:整合JDBC

    一 什么是JDBC 在web开发中 不可避免的地要使用数据库来存储和管理数据 为了在java语言中提供数据库访问的支持 Sun公司于1996年提供了一套访问数据的标准Java类库 即JDBC JDBC的全称是Java数据库连接 Java D
  • computed与watch的区别

    一 computed与watch 在之前的练习中本人碰到computed来监听某个数据变化 我们都知道computed与watch都是可以监听数据变化 但具体要怎么区别它们呢 1 1 watch 1 1 1 watch的简单执行
  • xss原理和分类

    前言 准备智警杯的过程中 也不能掉下漏洞的学习 浅浅学习一下关于xss的一些知识 何为xss 全名跨站脚本攻击 也属于注入 属于代码注入的一种 由于未进行严格的过滤 haker可以将恶意代码注入到网页当中 其他用户在访问该网页时会执行恶意代
  • 真的!!!两行css代码实现瀑布流,html,css最简单的瀑布流实现方式且没有缺点!...

    给前端宇宙加星标 提升前端小宇宙 作者 coder94 https segmentfault com a 1190000017866549 两行css如下 列间距 可有可无 默认30px column gap 0 效果图如下
  • IDEA导入Spring源码环境搭建

    一 环境准备 1 Spring源码包 下载地址 https github com spring projects spring framework 2 gradle工具 下载地址 http downloads gradle org dist
  • 获取APP签名信息或者查看签名文件的MD5,SHA1,SHA256

    1 查看APP是否签名 将APP文件后缀改为 zip并解压会得到以下内容 CERT RSA就包含签名信息 然后运行命令 keytool printcert file Users Documents app release META INF
  • uni-app 开放生态

    uni app 积极拥抱社区 创建了开放 兼容的生态系统 uni app插件市场 有数千款插件 支持前端组件 js sdk 页面模板 项目模板 原生插件等多种类型 在生态建设上远远领先于竞品 兼容 微信小程序 JS SDK 丰富的小程序生态
  • sql注入之报错注入

    目录 1 常用报错的函数 2 其他函数 一 extractvalue 二 updetaxml 1 常用报错的函数 1 extractvalue 2 updataxml 3 floor 2 其他函数 1 substring extractva
  • 数论入门笔记

    数论入门笔记 目录 数论入门笔记 一 数论是什么 二 数论基础 1 欧几里德算法 辗转相除法 2 有关素数的基础算法 单个整数素性测试 简单素数筛 多个整数素性测试 埃氏筛法 Eratosthenes筛法 区间筛法 欧拉筛法 线性筛法 3
  • VC++ Gdiplus::Bitmap抠图

    void SetBackgroundMaskImage LPCTSTR lpszImageName COLORREF crAlpha RGB 255 0 0 Gdiplus Bitmap pBkgrMaskBitmap CImageFact
  • MYSQL中mysql数据库的用户表User表

    前言 新建MySQL时 会自动安装一个mysql的数据库 该数据库下面的表都是权限表 其中 user表是最重要权限表 记录了允许连接到服务器的账号信息以及一些全局权限信息 user表有42个字段 大致分为4类 用户列 权限列 安全列及资源控
  • Git安装与卸载

    Git下载 官网 https git scm com downloads 点击官网链接 跳转到官网 选择对应操作系统 根据操作系统位数选择相应版本下载安装包 淘宝镜像 http npm taobao org mirrors git for
  • 编译原理绪论

    1 美图 5 编译过程一语法分析 任务 在词法分析的基础上 根据语言的语法规则把单词符号串分解成各类语法单位 语法范畴 依循的原则 语法规则 描述工具 上下文无关文法 6 编译过程一中间代码产生 任务 对各类不同语法范畴按语言的语义进行初步
  • 自学黑客必读的15本书,少1本都算不上真正的超级黑客

    前言 网络安全和黑客技能紧密相连 想要有效地防范黑客攻击 了解黑客的技能和思维方式非常重要 而要想成为一名合格的白帽黑客 也需要深入理解网络安全的基本原理和最佳实践 本文将介绍15本网络安全和黑客书籍 既包括了防范黑客攻击的指南书籍 也包括
  • 天梯赛 L1-046 整除光棍(除法原理)

    这里所谓的 光棍 并不是指单身汪啦 说的是全部由1组成的数字 比如1 11 111 1111等 传说任何一个光棍都能被一个不以5结尾的奇数整除 比如 111111就可以被13整除 现在 你的程序要读入一个整数x 这个整数一定是奇数并且不以5
  • java基本类型知识点

    java基本类型 java虽然是纯面向对象的语言 但为了方便也设置了八中基本类型 它们是 类型 标识 字节数 引用类型写法 字段类型 byte 1字节 引用类型是Byte 短整型 short 2字节 引用类型是Short 整型 int 4字
  • 使用SSH与github远程服务器进行无密码连接

    在git操作窗口中运行 ssh keygen t rsa 一直回车连接 然后到 ssh目录下看到两个文件 用sublime打开这个文件如图 复制里面的密钥 打开自己的github主页 点击自己的头像下的setting看到ssh那里 创建ss
  • Matlab机器人工具箱Robotics ToolBox --rvctools安装 图文详解(附rvctools工具箱资源)

    rvctools工具箱资源地址分享 链接 https pan baidu com s 1DqeCwS0F P2DgQJQeL9boA 提取码 lmgp 首先找到你的Matlab安装位置 找到toolbox文件夹 例如我的位置是D Progr
  • Linux下使用QSharedMemory异常退出时共享内存未释放解决办法

    首先看一下QSharedMemory在不同平台下的差异问题 详细描述 QSharedMemory 类提供了对一段共享内存的访问 译注 一段共享内存 在后续译文中也译为 共享内存段 QSharedMemory 提供了被多线程和多进程共享的一段
  • OCaml 安装以及简单的加减乘除Demo(以Ubuntu16.04为例)

    安装nix 参考 https mirrors tuna tsinghua edu cn help nix 安装nix sh lt curl https mirrors tuna tsinghua edu cn nix latest inst