MoonBit 编译器(留档学习)
MoonBit 编译器
MoonBit 是一个用户友好,构建快,产出质量高的编程语言。
MoonBit | Documentation | Tour | Core
This is the source code repository for MoonBit, a programming language that is user-friendly, builds fast, and produces high quality output.
安装
先安装依赖:
sudo apt install ocaml
安装opam
bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh)"
如果这个下载不下来,可以使用apt安装:
sudo apt install opam
初始化opam
如果是第一次用opam,那就就要先初始化:
opam init
提示完成初始化
<><> Creating initial switch 'default' (invariant ["ocaml" {>= "4.05.0"}] - initially with ocaml-system)<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><>
Switch invariant: ["ocaml" {>= "4.05.0"}]<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
∗ installed base-bigarray.base
∗ installed base-threads.base
∗ installed base-unix.base
∗ installed host-arch-x86_64.1
∗ installed host-system-other.1
⬇ retrieved ocaml-system.4.14.1 (https://opam.ocaml.org/cache)
⬇ retrieved ocaml-config.2 (2 extra sources)
∗ installed ocaml-system.4.14.1
∗ installed ocaml-config.2
∗ installed ocaml.4.14.1
Done.
# Run eval $(opam env --switch=default) to update the current shell environment
安装
sudo apt install ocaml-dune
下载源代码
git clone https://github.com/moonbitlang/moonbit-compiler
编译安装
进入源代码目录moonbit-compiler,安装:
opam switch create 4.14.2
opam install -y dune
dune build -p moonbit-lang
opam的知识
Using opam
This document starts with a quick introduction, then covers most commonly-used opam features.
If you are a developer and want to get a project packaged or change an existing package, see the step-by-step packaging guide.
The full documentation is available inline, using
opam --help
opam <command> --help
This document is intended as a quicker overview, use the above to dig into the details.
Basics
# ** Get started **
opam init # Initialize ~/.opam# ** Lookup **
opam list -a # List all available packages
opam search QUERY # List packages with QUERY in their name or description
opam show PACKAGE # Display information about PACKAGE# ** Install **
opam install PACKAGE # Download, build and install the latest version of PACKAGE# and all its dependencies
opam remove PACKAGE # Uninstall the given package# ** Upgrade **
opam update # Update the packages database
opam upgrade # Bring everything to the latest version possible# ** More **
opam CMD --help # Command-specific manpage
MoonBit
MoonBit 新手之旅 | MoonBit Docs
构建系统教程 - Moon 手册
开始编码
本文中我们会把以下所有的代码都写在 main.mbt 中。main 函数是程序的入口点,并且只能出现在 main 包中。 更细致的介绍可以在我们的《MoonBit 构建系统配置》一文中找到。
变量
let e = 2.718281828459045 // double
let int_min = -2147483648 // int
let int_max : Int = 2147483647 // 显式类型标注
let tuple = (1, 2) // 2-tuplefn init {let array = [1, 2, 3, 4, 5]// array = [4, 5, 6, 7, 8] // 错误:`let` 创建的是不可变绑定。let mut mut_array = [1, 2, 3, 4, 5]mut_array = [4, 5, 6, 7, 8]println(mut_array)
}
调试
安装opam下载文件报错curl -fsSL https://opam.ocaml.org/install.sh
直接使用wget下载,也报错
wget https://opam.ocaml.org/install.sh
--2024-12-22 19:33:18-- https://opam.ocaml.org/install.sh
Resolving opam.ocaml.org (opam.ocaml.org)... 51.158.232.133, 151.115.76.159, 2001:bc8:5090:bf9:dc00:ff:fe2e:c1e9
Connecting to opam.ocaml.org (opam.ocaml.org)|51.158.232.133|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh [following]
--2024-12-22 19:33:19-- https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 0.0.0.0, ::
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|0.0.0.0|:443... failed: Connection refused.
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|::|:443... failed: Connection refused.
使用apt安装
opam build moonbit报错
dune build -p moonbit-lang
Command 'dune' not found, but can be installed with:
sudo apt install ocaml-dune
安装ocaml-dune
sudo apt install ocaml-dune
dune build -p moonbit-lang 报错
dune build -p moonbit-lang
Error: I don't know about package moonbit-lang (passed through
--only-packages)
原来是要在moonbit-lang的目录下执行:
dune build -p moonbit-lang
相关文章:
MoonBit 编译器(留档学习)
MoonBit 编译器 MoonBit 是一个用户友好,构建快,产出质量高的编程语言。 MoonBit | Documentation | Tour | Core This is the source code repository for MoonBit, a programming language that is user-friendly, builds fast, and produces high q…...
使用 DeepSeek-R1 与 AnythingLLM 搭建本地知识库
一、下载地址Download Ollama on macOS 官方网站:Ollama 官方模型库:library 二、模型库搜索 deepseek r1 deepseek-r1:1.5b 私有化部署deepseek,模型库搜索 deepseek r1 运行cmd复制命令:ollama run deepseek-r1:1.5b 私有化…...
网络工程师 (13)时间管理
一、定义与重要性 项目时间管理是指为确保项目按时完成而采取的一系列规划、安排和控制活动。它始于项目启动阶段,贯穿整个项目生命周期,直至项目结束。时间管理对于项目的成功至关重要,它有助于项目团队明确工作目标和时间节点,增…...
【xdoj-离散线上练习】T251(C++)
解题反思: 开始敲代码前想清楚整个思路比什么都重要嘤嘤嘤!看到输入m, n和矩阵,注意不能想当然地认为就是高m,宽n的矩阵,细看含义 比如本题给出了树的邻接矩阵,就是n*n的,代码实现中没有用到m这…...
定时器按键tim_key模版
低优先级放在高优先级内势必是程序卡死 把高优先级放到低优先级内,会使程序卡死 可修改 Debuger调试方法 Pwm rcc #include "my_main.h" uint8_t led_sta0x10; char text[30]; void LED_Disp(uint8_t dsLED) {HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPI…...
Kanass快速安装配置教程(入门级)
Kanass是一款国产开源免费的项目管理工具,工具简洁易用、开源免费,本文将介绍如何快速安装配置kanass,以快速上手。 1、快速安装 1.1 Linux 安装 点击官网 -> 演示与下载 ->下载,下载Linux安装包,…...
无用知识之:std::initializer_list的秘密
先说结论,用std::initializer_list初始化vector,内部逻辑是先生成了一个临时数组,进行了拷贝构造,然后用这个数组的起终指针初始化initializer_list。然后再用initializer_list对vector进行初始化,这个动作又触发了拷贝…...
论文阅读笔记 —— 英文论文常见缩写及含义
正文 缩写全称含义Reference发音w.r.twith reference to关于, 根据WRT - Wikiet al.拉丁语et alia的缩写等等Et Al. | Meaning & Use in APA, MLA & Chicago–etc拉丁语et cetera的缩写等等ETC - Cambridge DictionaryWhat’s ‘etc.’ an abbreviation of (and what …...
实验9 JSP访问数据库(二)
实验9 JSP访问数据库(二) 目的: 1、熟悉JDBC的数据库访问模式。 2、掌握预处理语句的使用 实验要求: 1、使用Tomcat作为Web服务器 2、通过JDBC访问数据库,实现增删改查功能的实现 3、要求提交实验报告,将代…...
[c语言日寄]C语言类型转换规则详解
【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋:这是一个专注于C语言刷题的专栏,精选题目,搭配详细题解、拓展算法。从基础语法到复杂算法,题目涉及的知识点全面覆盖,助力你系统提升。无论你是初学者,还是…...
Airflow:选择合适执行器扩展任务执行
Apache Airflow是面向开发人员使用的,以编程方式编写、调度和监控的数据流程平台。可伸缩性是其关键特性之一,Airflow支持使用不同的执行器来执行任务。在本文中,我们将深入探讨如何利用这些执行器在Airflow中有效地扩展任务执行。 理解Airfl…...
使用冒泡排序模拟实现qsort函数
1.冒泡排序 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h>int main() {int arr[] { 0,2,5,3,4,8,9,7,6,1 };int sz sizeof(arr) / sizeof(arr[0]);//冒泡排序一共排序 sz-1 趟for (int i 0; i < sz - 1; i){//标志位,如果有序,直接…...
AI大模型开发原理篇-4:神经概率语言模型NPLM
神经概率语言模型(NPLM)概述 神经概率语言模型(Neural Probabilistic Language Model, NPLM) 是一种基于神经网络的语言建模方法,它将传统的语言模型和神经网络结合在一起,能够更好地捕捉语言中的复杂规律…...
Eigen::Tensor使用帮助
0 引言 用python实现了某些算法之后,想转成C来获取更高的性能。但是python数组的操作太灵活了,尤其是3维、4维、5维等高维数组,以及它们的广播、数组坐标、切片等机制。还有numpy的pad、where等操作更是给C转换带来了更多的麻烦。 查阅了相…...
git基础使用--3---git安装和基本使用
文章目录 git基础使用--3--git-安装和基本使用1. git工具安装1.1 git1.2 TortoiseGit1.3 远程仓2. git本地仓库版本管理2.1 git常用命令2.2 git基本操作2.2.1 设置用户名和邮箱 2.2 git基本操作2.2.1 初始化本地仓 git init2.2.2 查看本地库状态 git status2.2.3 添加暂缓区2.2…...
html的字符实体和颜色表示
在HTML中,颜色可以通过以下几种方式表示,以下是具体的示例: 1. 十六进制颜色代码 十六进制颜色代码以#开头,后面跟随6个字符,每两个字符分别表示红色、绿色和蓝色的强度。例如: • #FF0000:纯红…...
OpenAI发布o3-mini:免费推理模型,DeepSeek引发的反思
引言 在人工智能领域,OpenAI再次引领潮流,推出了全新的推理模型系列——o3-mini。这一系列包括low、medium和high三个版本,旨在进一步推动低成本推理的发展。与此同时,OpenAI的CEO奥特曼也在Reddit的“有问必答”活动中罕见地公开…...
Zemax 中带有体素探测器的激光谐振腔
激光谐振腔是激光系统的基本组成部分,在光的放大和相干激光辐射的产生中起着至关重要的作用。 激光腔由两个放置在光学谐振器两端的镜子组成。一个镜子反射率高(后镜),而另一个镜子部分透明(输出耦合器)。…...
大模型训练(5):Zero Redundancy Optimizer(ZeRO零冗余优化器)
0 英文缩写 Large Language Model(LLM)大型语言模型Data Parallelism(DP)数据并行Distributed Data Parallelism(DDP)分布式数据并行Zero Redundancy Optimizer(ZeRO)零冗余优化器 …...
C# 实现 “Hello World” 教程
.NET学习资料 .NET学习资料 .NET学习资料 C# 作为一种广泛应用于.NET 开发的编程语言,以其简洁、高效和类型安全等特性,深受开发者喜爱。在踏入 C# 编程领域时,编写经典的 “Hello World” 程序是重要的起点,它能帮助我们快速熟…...
Z-Image-Turbo-辉夜巫女惊艳效果:神社鸟居背景+巫女舞动姿态动态构图
Z-Image-Turbo-辉夜巫女惊艳效果:神社鸟居背景巫女舞动姿态动态构图 想看看AI如何将“辉夜巫女”的古典神秘与神社鸟居的庄严宁静完美融合,并赋予其灵动的舞姿吗?今天,我们就来深度体验一个名为“Z-Image-Turbo-辉夜巫女”的专属…...
uniapp集成腾讯地图:从marker点聚合到轨迹回放的跨端实战与性能调优
1. uniapp集成腾讯地图SDK的核心步骤 第一次在uniapp里用腾讯地图SDK时,我踩了个大坑——直接在H5端跑代码发现地图出不来。后来才明白,腾讯地图在H5端需要单独配置安全域名。具体操作是在腾讯地图开放平台申请key时,必须把H5的域名加入白名单…...
数据中台是什么?怎么搭建数据中台?
去年,一家零售企业的CEO找到我,说了一句让我印象很深的话: "我们公司有数据,但没有数据能力。"很多企业建数据中台,是为了管好数据。 但这个出发点,从一开始就错了。 数据中台的核心不是管理&…...
TTL门电路在现代数字设计中的应用:从基础到OC门实战
TTL门电路在现代数字设计中的应用:从基础到OC门实战 在数字电路设计的工具箱里,TTL(晶体管-晶体管逻辑)门电路就像瑞士军刀一样经典而实用。尽管CMOS技术如今占据主流,但TTL在特定场景下依然展现出独特的优势。特别是在…...
手把手教你为OpenBMC (AST2600平台) 正确配置PCA9545 I2C Switch的DTS节点
深入解析AST2600平台PCA9545 I2C Switch设备树配置实战指南 在嵌入式系统开发中,I2C总线扩展是连接多个外设的常见需求。NXP的PCA9545作为一款4通道I2C总线开关芯片,能够有效解决I2C地址冲突问题,但在实际应用中,设备树(DTS)配置…...
初学Java之范型
范型包装类包装类的定义包装类的作用场景1:我想把数字放进列表里场景2:我想让方法返回"没有结果"场景3:我想用工具类处理数字场景4:泛型方法要求对象类型场景5:我想在同步代码块里用数字作为锁装箱与拆箱定义…...
AI应用架构师讲解AI在金融市场应用案例的模型构建
AI应用架构师讲解:AI在金融市场应用案例的模型构建 一、引入与连接:当AI成为金融市场的“智能分析师” 2023年,某头部量化基金的AI策略实现了35%的年化收益率,远超市场平均水平;同年,某国有银行用AI风险模型…...
如何打破微信单设备限制:WeChatPad终极指南
如何打破微信单设备限制:WeChatPad终极指南 【免费下载链接】WeChatPad 强制使用微信平板模式 项目地址: https://gitcode.com/gh_mirrors/we/WeChatPad 你是不是也遇到过这样的尴尬时刻?在电脑上登录微信工作,手机上的微信就被迫下线…...
XPath与lxml解析库
test.xml<?xml version"1.0" encoding"utf-8"?><bookstore><book name"halibote"><title lang"en">Harry Potter</title><author>J K. Rowling</author><year>2005</year>&l…...
Z-Image-GGUF模型Java后端集成指南:SpringBoot微服务实战
Z-Image-GGUF模型Java后端集成指南:SpringBoot微服务实战 最近在做一个内容创作平台的后台重构,产品经理提了个需求,想给用户加个“AI一键生成文章配图”的功能。团队评估了几个方案,最终决定用Z-Image-GGUF这个模型,…...
