OCaml样本代码

OCaml for windows安装 1.获取安装包 官网下载:https://www.ocaml.org/ 点install Ocaml跳转进入Documentation,点击windows,便是windows下的安装方式 https://fdopen.github.io/opam-repository-mingw/installation/ 下载Graphical Installer下的64-bit 2.安装OCaml ... 阅读详情

这段代码演示了好的OCaml编程风格。代码使用不平衡有序二叉树简单实现有限集合。代码中的注释可能多了点,但还可接受。


(*
* An implementation of functional, finite sets.
*
* Author: Brian Emre Aydemir
* Email: emre@cs.caltech.edu
*
* ------------------------------------------------------------------------
*
* NOTE: The implementation here uses unbalanced, ordered, binary trees.
* More efficient structures could be used, such as Red-Black trees. The
* emphasis here is on coding style, not data structures.
*
* BUG: The implementation here relies on the (<) operator. A more
* general implementation would use modules and functors to specify
* the element type and its comparison operator.
*)

(*
* The type for finite sets.
* For simplicity, we use an unbalanced binary tree. The first
* 'a set is the left branch, and the second is the right branch.
*)
type 'a set =
      Leaf
   | Node of 'a * 'a set * 'a set

(*
* Duplicate_element is raised when an attempt is made to insert
* an element twice into a set.
*)
exception Duplicate_element

(*
* The empty set.
*)
let empty : 'a set = Leaf

(*
* Test to see if a set is empty.
*)
let is_empty (fset : 'a set) : bool =
      match fset with
          Leaf -> true
        | Node _ -> false

(*
* Insert an element into a set and return the new set.
* Raises Duplicate_element if the element is already in the set.
*)
let rec insert (elt : 'a) (fset : 'a set) : 'a set =
      match fset with
          Leaf -> Node (elt, Leaf, Leaf)
       | Node (value, left_branch, right_branch) ->
              if elt < value then
                   Node (value, insert elt left_branch, right_branch)
              else if value < elt then
                   Node (value, left_branch, insert elt right_branch)
              else
                   raise Duplicate_element

(*
* Insert a list of elements into a set.
*)
let insert_list (lst : 'a list) (fset : 'a set) : 'a set =
      let f set elt = insert elt set in
          List.fold_left f fset lst

(*
* Test to see if an element is a member of the given set.
* BUG: Doesn't use the fact that the nodes are ordered.
*)
let rec member (elt : 'a) (fset : 'a set) : bool =
      match fset with
          Leaf -> false
        | Node (value, left_branch, right_branch) ->
                (value = elt) || (member elt left_branch) || (member elt right_branch)

(*
* Implement a simple toploop and run it. The code below would
* not normally be in the same file as the above code.
*)
let loop () =
      let set = ref empty in
          try
              while true do
                     output_string stdout "set> ";
                     flush stdout;
                     let line = input_line stdin in
                           if member line !set then
                               Printf.printf "%s is already in the set\n" line
                           else begin
(* It's safe to add line since it isn't in the set. *)
                               set := insert line !set;
                               Printf.printf "%s added to the set\n" line
                           end
              done
         with
               End_of_file -> ()

let _ = loop ()


44、深入理解OCaml语言:使用、理解和剖析 本文深入探讨了OCaml语言的核心概念及其实际应用,涵盖基础语法、类型系统、控制结构、数据结构、模块与命名空间管理、错误处理机制等内容。同时,还介绍了OCaml的高级特性如泛型编程、多态变体和模式匹配,并结合具体案例分析展示了如何使用OCaml解决实际问题。最后,讨论了并发编程、异步I/O、网络编程以及调试与性能优化等技术细节,为开发者提供了宝贵的实践经验。 阅读详情

相关推荐

代码样本:一些样本代码

代码样本 一些示例代码

【PL理论深化】(4) Ocaml 语言:基础讲解 |通过 REPL 执行 Ocaml 程序 | Ocaml 解释器 | 编译器 ocamic | 程序构成的基本单位 | 原始值 | 基本数据类型

本章我们要开始介绍如何使用 OCaml 进行函数式编程。书中探讨函数式编程的原因主要有三点。首先,我们将会设计和实现编程语言,而实现语言将会使用函数式编程语言OCaml,因为在实现编程语言的解释器 (interpreter) 或类型系统 (type system) 等处理程序作为数据的程序时,函数式语言非常方便。第二个原因是,包括OCaml在内的函数式语言从编程语言理论的角度来看是设计良好的语言。仅仅是研究这些语言的特征,就能对编程语言有很多了解。尤其是函数式编程的概念,近年来大多数编程语言都在借鉴,因此深

有道无术, 术尚可求。有术无道, 止于术。 3661

代码样本

代码样本 CellRangeJoiner Объединениеячееквсписокпрямоугольныхдиапазоновнакрывающихтужеобласть 面试 Коднаписанныйкакобразец“приемлемого”результатаприпроведенииинтервьюсразработчиками RleCollection Специализированнаяколлекциядляхранениязначенийсиспользованием游程长度编码

【PL理论深化】(11) Ocaml 语言:函数式编程 vs. 命令式编程 | 递归函数的代价 | 尾递归函数(tail-recursive function)

本章我们来比较在C语言中用循环实现的插入排序函数,与前面定义的函数式编程版本。

有道无术, 术尚可求。有术无道, 止于术。 1103

样本:代码样本

代码样本 C和JavaScript中的代码示例 C矩阵数学 内存分配和释放 断言 结构(矩阵,向量) 可读代码 JS六角地图 干净的GUI HTML表单控件 ES6课程 基于网络的编程 文件资料 显示如何获取我的简历和求职信的最新副本

OCaml

编码和编译 ocamlc emacs 创建或打开文件 $ emacs文件路径 重要命令/快捷方式 线路作业 %保存文件$ C + x,C + s %复制$ M + w 削减百分比$ C + w %粘贴$ C + y 退出emacs的百分比$ C + x,C + c 程序运行 %执行ocaml $ C + c,C + e的一项功能 %执行整个文件$ C + c,C + b %给出光标下的术语类型$ C + c,C + t

OCaml入门(一)——OCaml中的基本数据类型、运算符号、表达式和函数

OCaml入门——基本数据类型、运算符、表达式和函数介绍

m0_62056106的博客 4233

TensorFlOcaml:TensorFlow的Ocaml实现

张量 康奈尔大学CS3110(功能编程)的最终项目 我们的目标是使用OCaml语言定义类似Api的Tensorflow。 用户可以使用TensorFlOwcaml API定义自己的神经网络,并在特定数据上对其进行训练。 依存关系: 迷彩> = 4.06.0 奥帕姆 优拓 麦克马 摄像机(用于图像加载) 包配置 情节 猫头鹰数值库 酒精测试 核 类型 本征 ocaml-compiler-libs Openblas 设置: 首先更新Opam。 这很重要,因为某些旧版本的opam可能会导致错误。 opam update && opam upgrade 在您的系统上安装OpenBlas。 如果您使用的是OSX并且有自制软件,则可以使用 brew install openblas 然后,您将需要获取最新版本的owl repo。 git clone https://github.co

Ocaml练习分享(附答案)

ocmal的练习分享,附带答案,ocaml新手

weixin_45314871的博客 196

【TestNG自动化测试框架详解】

TestNG是一款设计测试用例执行流程的测试框架。

weixin_43936332的博客 1540

从零开始安装 Windows 11 和 Ubuntu 22.04 双系统

本文详解Windows与Ubuntu 22.04双系统安装流程:需提前确认BIOS模式(UEFI/GPT或Legacy/MBR),关闭BitLocker加密、设备加密及快速启动;推荐Rufus/Ventoy制作启动盘。安装时需规划分区方案(建议单独划分EFI系统分区),注意引导器安装位置选择。双系统启动通过BIOS引导顺序管理,安装后需同步Windows与Linux系统时间。教程适配主流UEFI+GPT设备,强调操作前数据备份及Windows更新策略调整,避免兼容性问题。

萑澈的博客 3768

VSCode OCaml Platform:提升OCaml开发体验的利器

VSCode OCaml Platform:提升OCaml开发体验的利器 项目介绍 VSCode OCaml Platform 是一个专为OCaml开发者设计的Visual Studio Code扩展。它集成了OCaml语言服务器(ocaml-lsp),提供了丰富的语言支持功能,包括语法高亮、自动补全、跳转到定义、类型提示等。此外,该扩展还支持多种OCaml工具,如ocamlformat、Dune...

gitblog_00196的博客 753

麒麟V10 ARM环境离线部署MySQL:从依赖缺失到服务自启的完整避坑指南

本文详细介绍了在麒麟V10 ARM环境下离线部署MySQL的完整流程,包括依赖缺失解决方案、目录配置、服务自启设置及性能调优。特别针对国产操作系统和ARM架构的兼容性问题,提供了实用的避坑指南和优化建议,帮助用户高效完成MySQL部署与维护。

weixin_28741413的博客 409

ocaml_如何从OCaml代码中调用C函数

ocamlI am writing a OCaml program but want to call some C functions provided in some source code or library. 我正在编写OCaml程序,但想调用某些源代码或库中提供的某些C函数。 How to achieve this? Is there any good tutorials on thi...

cuma2369的博客 369

海康威视国内版监控设备改英文界面难题:原因解析与解决方案

跨境安防设备部署中,国内采购的海康威视监控设备常因仅支持中文界面导致海外用户无法操作。本文剖析了该问题的核心原因:海康威视对国内版和海外版设备实行区域锁定策略,国内版固件仅内置中文且无法通过常规方式切换语言。针对此问题,文章提供了三种解决方案:1)官方合规的海外版固件更换;2)低成本的操作界面翻译与远程协助;3)长期更换海外版设备的彻底解决方案。同时给出了跨境采购的注意事项,强调应提前确认设备版本、拒绝非官方改造并预留适配时间。

海康威视技术支持 3954

同态加密与SEAL库实战:CKKS参数调优避坑指南

本文深入探讨了同态加密技术中CKKS方案的参数调优实践,重点解析了SEAL库中`poly_modulus_degree`、`coeff_modulus`和`scale`三大核心参数的配置技巧与避坑指南。通过实战案例展示了如何平衡计算深度、精度与性能,为开发者提供了一套完整的参数优化方法论,帮助避免常见的'scale out of bounds'等错误,显著提升同态加密应用的可靠性和效率。

weixin_29315569的博客 229

wasm_of_ocaml:编译OCaml字节码至WebAssembly的强大工具

wasm_of_ocaml:编译OCaml字节码至WebAssembly的强大工具 项目介绍 wasm_of_ocaml 是一个基于 Js_of_ocaml 的分支项目,其主要功能是将 OCaml 的字节码编译为 WebAssembly(Wasm)。WebAssembly 是一种高效的编译格式,使得代码可以在网页浏览器中快速运行,同时也支持其他多种执行环境。通过 wasm_of_ocaml,开发者...

gitblog_00053的博客 973

基于STM32的IMU惯性/姿态解算与多参数上位机可视化实现_资料编号38

本项目实现基于STM32F103C8T6标准库,对姿态/惯性(IMU)传感器姿态解算,通过USB-TTL转串口模块将姿态角/欧拉角、加速度、角速度、磁场、气压、海拔高度、磁力计温度、气压计温度等数据显示在PC端上位机,系统采用可充电锂电池供电。

嵌入式阿齐Archie 1万+

ocaml_如何获取由ocamlopt生成的OCaml代码的汇编代码?

ocamlHow to get the native assembly code (e.g. x86-64 asm) for OCaml code generated by the native ocamlopt compiler? 如何获取本机ocamlopt编译器生成的OCaml代码的本机汇编代码(例如x86-64 asm)? To get the assembly code for an ...

cuma2369的博客 236

使用NXP SBC插件开发FS26软件

FS26作为功能安全可达ASIL D的SBC,在配合NXP MCU的使用中非常广泛,本文介绍基于NXP官网的SBC代码包快速进行FS26软件的开发FS26使用过程中还有不少坑的地方,后面有空可以再介绍相关的功能。

赞的博客 650

uniapp [安卓苹果App端] - 实现集成微信一键登录及授权获取用户信息全流程源码,uniApp唤起微信客户端app实现微信授权头像昵称手机号(提供移动应用/开放平台/资质认证/签名/权限申请

uni-app,安卓Android,苹果ios,安卓app端,苹果App端,uniapp苹果安卓app,微信一键登录,uniapp项目App端实现微信登录,Uniapp实现微信授权登录,调起微信客户端授权用户信息,uniappapp端微信一键登录打开手机微信app,app端如何唤起用户本机微信应用并授权登陆,如何申请微信一键登录,uniapp实现APP微信登录流程,打开本地微信软件,接入微信登录,UniApp实现微信登录教程,获取头像昵称手机号用户数据,超详细实现微信登录功能,唤起没反应,授权失败,获取

🏆 前端领域优质创作者 1万+

OCaml-rs:用Rust编写OCaml扩展的开源项目

OCaml-rs:用Rust编写OCaml扩展的开源项目 OCaml-rs 是一个开源项目,它允许开发者使用 Rust 语言直接编写 OCaml 的扩展,而无需编写 C 语言的 stubs。这个项目提供了一个安全且高效的途径来实现 OCaml 和 Rust 之间的互操作性。 1. 项目基础介绍和主要编程语言 OCaml-rs 项目主要使用 Rust 和 OCaml 两种编程语言。Rust 用于编写...

gitblog_00555的博客 828

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

探索游戏编程的乐趣:Raylib-OCaml——简洁而强大的OCaml绑定

探索游戏编程的乐趣:Raylib-OCaml——简洁而强大的OCaml绑定 项目介绍 Raylib-OCaml为OCaml程序员打开了一个全新的世界,通过提供对Raylib(版本4.5.0)的无缝绑定,它使得在OCaml中进行游戏开发变得既简单又愉快。Raylib本身是一款设计轻巧、易于上手的游戏开发库,旨在降低游戏编程的门槛。而今,借助Raylib-OCaml,函数式编程爱好者可以利用OCam...

gitblog_00877的博客 943

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

在 Wasmtime 中通过 ocaml-interop 调用 OCaml Wasm 规范解释器:构建、FFI 桥接与差分模糊测试实战

本篇技术指南聚焦 Wasmtime 模糊测试基础设施中的 `wasm-spec-interpreter` crate,讲解如何在 Rust 中构建 OCaml 版 WebAssembly 规范解释器的静态库、利用 `ocaml-interop` 搭建 Rust↔OCaml FFI 桥接层,并将其链接进 Rust crate 的全过程。读完本文,你将掌握该 crate 的依赖环境、`build-li

gitblog_00695的博客 615

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

探索OCaml的实战之旅:《真实世界中的OCaml》代码库深度揭秘

探索OCaml的实战之旅:《真实世界中的OCaml》代码库深度揭秘 在这个快节奏的技术时代,寻找一个既能深化理论理解又能实践落地的资源成为了许多开发者的一大挑战。今天,我们要向您推荐的开源项目——《真实世界中的OCaml》代码库,正是这样一座连接理论与实战的桥梁。 项目介绍 《真实世界中的OCaml》代码库是一个珍贵的学习和研究资源,它汇集了书籍《真实世界OCaml》中所有的代码示例。这个仓库随着...

gitblog_00571的博客 485

VSCode + Merlin 打造 Windows 下 OCaml 开发环境

打造 Windows 下的 OCaml 开发环境前言安装 OCaml验证是否安装成功通过 opam 安装 Merlin 和其他工具安装 Merlin安装 Depext安装 Depext-cygwinports第一个 OCaml 程序在 VSCode 中编写运行 OCaml 代码配置本地环境变量配置 VScode编写运行 OCaml 代码 前言 因为最近在学习 OCaml 函数式语言,但是个人不喜欢在虚拟机的环境中编写 OCaml 代码(个人已经用 VSCode 用习惯了)。相信大部分的读者也都习惯在 Win

qq_52287721的博客 3779
上一篇: 告别人工智能之父、Lisp语言发明者John McCarthy
下一篇: OCaml for Haskellers
lambda_z
博客等级 码龄19年 35粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值