首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我不能在OCaml中再次打印此输入?

在OCaml中,无法再次打印输入的原因是OCaml的交互式环境(REPL)在读取输入后会将其解析为OCaml的内部表示形式,并将其存储在内存中。这个内部表示形式与原始输入的字符串形式不同,因此无法直接再次打印出原始输入。

OCaml是一种静态类型的函数式编程语言,它的交互式环境主要用于执行和测试代码片段,而不是用于展示输入的原始形式。当你在OCaml的交互式环境中输入一个表达式或语句时,它会对其进行求值并显示结果,但不会保留原始输入的字符串形式。

如果你需要在OCaml中再次打印输入,可以将输入保存为变量或使用其他方法将其存储为字符串。例如,你可以定义一个函数来接受输入并将其保存为变量,然后在需要时再次打印出来。

以下是一个示例代码:

代码语言:txt
复制
let rec print_input () =
  let input = read_line () in
  print_endline input;
  print_input ()

let () =
  print_input ()

在这个示例中,print_input 函数会读取输入并将其保存为变量 input,然后使用 print_endline 函数将其打印出来。然后,函数会递归调用自身,以便连续读取和打印输入。

请注意,这只是一个简单的示例,用于说明如何在OCaml中保存和打印输入。实际应用中,你可能需要根据具体需求进行适当的修改和扩展。

关于OCaml的更多信息和学习资源,你可以参考腾讯云的《OCaml 简介与入门教程》(链接:https://cloud.tencent.com/developer/article/1790368)。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

函数式编程很难,这正是你要学习它的原因

它给你的初次印象友善   7岁时就开始编程,在漫长无聊的郊区夏季里,在祖父的计算机上瞎搞一气。学了BASIC,用它在屏幕上画一个蹦跳的球。...即使不算这些该死的指针,写、读、学习、练习,同样遭遇无数的失败。把祖父的硬盘给毁掉了两次(一次属意外),最后弄得不少次要自己重装操作系统。失败,一遍遍的失败。   ...大多数人,包括,则需要不断的练习和参考例子来理解什么是指针、为什么它们很重要。   这种艰难的努力过程不是偶然的,是一种几乎普遍的现象。指针是一种非常强大和基础功能的概念。...这些叠加起来的复杂因素导致了不出意外的结果:很多人情愿在函数式编程学习投入时间。很容易理解这种情愿,干嘛不把花在学习这些东西的时间用在实现什么东西上呢?...因为已经学习了Lisp和Erlang,而且使用OCaml做专业工作,决定研究一下Haskell,这完全是另外一个世界。

1K51

Java的传值调用

探讨了网上关于Java只有值传递的说法,当时写这篇文章的缘由是因为之前看的文章讲解的Java只有值传递,讲的不是让很明白,没有拿出比较专业的解释或定义,没有说服。...从那篇文章后,了解到Java的参数传递其实牵涉到了Java语言的设计的参数传递方式,可能在语言设计之时就考虑了这个问题,所以在工作之余自己简单的研究了一下,最终也能根据自己的理解解释一下关于Java...此时我们看输出,发现经过change()方法实参u1打印信息没变,为什么?...如果我们想表达引用类型传递的是引用,仅仅是想说传的是引用不是别的东西的话,我们可以说的明确点:引用类型传的是引用,和程序语言中的求值策略沾边 。...Barbara Liskov命名[1],并被Python、Java(对象类型)、JavaScript、Scheme、OCaml等语言使用。

3.5K20

无法访问网络共享怎么办?教你一个“必杀技”

网络共享问题层出穷,笔者之前也写过文章,今天又遇到一个客户来问,索性给大家介绍一个解决共享问题的“必杀技”吧。...正常来说,在地址栏输入\\服务器名称或者IP地址后,应该弹出窗口,让访问者输入用户名密码 然后才能打开共享的服务器,访问共享文件夹、安装共享打印机。 为什么没有提示输入用户名密码的对话框呢?...经验告诉,有两个可能: 一、存储的凭据有误; 这个容易,打开控制面板,打开“凭据管理器”,删除相应的凭据,然后再次访问网络共享,按照提示输入用户名和密码,并且勾选保存即可; 二、这是因为这台电脑使用了...知道了问题所在,也就知道该怎么解决这个问题了: 1、启用guest账户 2、按下Win+R键,在“运行”输入:gpedit.msc 点击确定打开“本地组策略编辑器” 3、依次打开:计算机配置-》windows...成功执行第二个命令后,打开“电脑”,在地址栏输入\\pc1,无需输入用户名和密码,直接就打开了共享路径,点击鼠标右键,再点击“连接”就能安装共享打印机了; 顺便提醒两点:1、网络共享经常出问题,其实并不是系统不稳定

1.8K20

如何掌握程序语言

语言只负责描述一个程序,而程序运行的速度,其实绝大部分取决于语言。它主要取决于 1)算法和2)编译器的质量。编译器和语言基本是两码事。...第一是因为函数式语言把程序员从底层细节解脱出来,让他们能够迅速的实现和修改自己的想法,所以他们能够迅速的找到更好的算法。第二是因为 OCaml 有高效的编译器实现,使得它能生成很好的代码。...普通程序语言写的程序,如果你给它一个输入,它会给你一个输出。但是逻辑式语言很特别,如果你给它一个输出,它可以反过来给你所有可能的输入。其实通过很简单的方法,可以不费力气的把程序从函数式转换成逻辑式的。...所有剩余的细节,会在实际使用很容易的被填补上。现在推荐几本比较好的书。...因为你会直观的看到为什么现在的计算机系统会设计成这个样子:为什么处理器里面有寄存器(register),为什么需要堆栈(stack),为什么需要堆(heap),它们的本质是什么。

1.1K90

java手机号正则表达式验证,面试必会「建议收藏」

为什么会报各种类相关的 Exception? 改的代码为什么没有执行到?难道是没 commit?分支搞错了? 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?...Arthas 的命令、功能在其官方文档有详细介绍,下文将介绍一下近期几个使用场景。 场景 1:定位压测时的性能瓶颈 平时服务器请求都很正常。...最终发现的问题比较简单:日志打印了 location 的信息,包括 类名、方法名和行号。...trace 命令能监控每一步的耗时,并且可以配合条件表达式,当耗时超过 xx ms 时打印详细日志。 找台机器,输入命令,后面的就是静等了。再次出现 rt 尖刺时,能够捕捉到耗时的分布情况。...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

39410

如何掌握程序语言

语言只负责描述一个程序,而程序运行的速度,其实绝大部分取决于语言。它主要取决于 1)算法和2)编译器的质量。编译器和语言基本是两码事。...第一是因为函数式语言把程序员从底层细节解脱出来,让他们能够迅速的实现和修改自己的想法,所以他们能够迅速的找到更好的算法。第二是因为 OCaml 有高效的编译器实现,使得它能生成很好的代码。   ...普通程序语言写的程序,如果你给它一个输入,它会给你一个输出。但是逻辑式语言很特别,如果你给它一个输出,它可以反过来给你所有可能的输入。其实通过很简单的方法,可以不费力气的把程序从函数式转换成逻辑式的。...所有剩余的细节,会在实际使用很容易的被填补上。现在推荐几本比较好的书。   ...因为你会直观的看到为什么现在的计算机系统会设计成这个样子:为什么处理器里面有寄存器(register),为什么需要堆栈(stack),为什么需要堆(heap),它们的本质是什么。

1.2K40

2017值得一瞥的JavaScript相关技术趋势

并且WebAssembly仍处于襁褓,才进入到预览阶段,离真正的发布还有很长的距离。...Henry Zhu在这篇文章称述了为什么我们需要另一个压缩工具,关键点如下: 目前大部分压缩工具只能 够处理ES5代码,因此在压缩之前需要先进性编译,而Babili能够支持直接输入ES2015+。...OCaml本身和JS没啥关系,不过列表接下来的两项都是基于OCaml,因此还是要先介绍下。...而得益于OCaml能够编译到就S,其以后来居上的姿态凌驾于Haskell。Facebook的不少开发者都是OCaml的粉丝,他们的Hack、Flow以及Infer都是基于OCaml构建的。...能够想象2017年GraphQL会继续处于上升势头,不过要谈到真的大规模实施,还要到2018年吧。

1.2K40

年后面试必备:95%错误率的9道面试题!

因此,与明显的答案不同,程序将打印0.0,因为Double.MIN*VALUE大于0。...这个问题的答案是,如果你再次使用相同的密钥,那么它将替换旧的映射,因为HashMap不允许重复密钥。相同的密钥将产生相同的哈希码,并最终将在桶的相同位置。...然而,这不是程序打印的,这就是为什么这个问题很棘手。事实上,程序的输出是依赖于操作系统和语言环境的。...在具有美国语言环境的Windows XP上,上述程序打印[63],如果在Linux或Solaris上运行程序,则会得到不同的值。...为什么?因为没有对编译器的任何指令,例如synchronized或volatile, bExit = true 可能在编译器重新排序在x = 1之前出现。

94220

Auto CAD 2019文完整版安装教程(3264位)-cad软件全版本下载地址

】 8、点击【同意】 9、点击【激活】 10、输入CAD2019序列号:666-69696969 产品密钥:001K1 点击【下一步】 11、进入界面提示序列号有误是正常现象,点击【关闭】,...再次进入激活界面 12、再次点击【激活】后会进入正式激活界面,此时我们选择第二项有激活码,并复制申请号 13、现在我们打开注册机文件夹,找到注册机,右键以管理员身份启动注册机 14、先点击左下方的...如要作1:30的图框,第一次图框放大40后不合适,再次缩放输入3/4,即可得到1:30的图框B.家具层(FURNITURE) >>>>其 他 1....文字的大小是根据图纸的比例变化的,如A3图纸,比例为1:50,注释文字打印出的尺寸应该是3mm,在文字制作时,文字尺寸大小输入150。 3....不能在DEFPOINTS层建立图元,层默认是不打印的,在图层上的图形会打印不出来。 9. 在CAD软件的使用过程,虽然一直说是画图,但实际上大部分都是在编辑图。

71720

性能测试如何定位瓶颈?偶发超时?看高手如何快速排查问题

为什么会报各种类相关的 Exception? 改的代码为什么没有执行到?难道是没 commit?分支搞错了? 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?...Arthas 的命令、功能在其官方文档有详细介绍,下文将介绍一下近期几个使用场景。 场景 1:定位压测时的性能瓶颈 平时服务器请求都很正常。...最终发现的问题比较简单:日志打印了 location 的信息,包括 类名、方法名和行号。...trace 命令能监控每一步的耗时,并且可以配合条件表达式,当耗时超过 xx ms 时打印详细日志。 找台机器,输入命令,后面的就是静等了。再次出现 rt 尖刺时,能够捕捉到耗时的分布情况。...,接着往下看。 场景 4:做点坏事 在问题排查过程,发现了日志输出到了控制台,这个对性能的损耗是比较大的。有什么办法,在不发布的情况下紧急解决它?

1.4K10

每日算法题:Day 14(数据结构)

作者:TeddyZhang,公众号:算法工程师之路 Day 14, 数据结构知识点走起~ 1 编程题 【剑指Offer】字符串的排列 输入一个字符串,按字典序打印出该字符串字符的所有排列。...例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入一个字符串,长度超过9(可能有字符重复),字符只包括大小写字母。...【数据结构】STLvector详解? 在内存中分配一块连续的内存空间进行存储。支持指定vector大小的存储。...STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacituy()函数返回的大小,当超过分配的空间时再整体重新放分配一块内存存储,这给人以vector可以指定vector即一个连续内存的大小的感觉...通常默认的内存分配能完成大部分情况下的存储。 优点: 指定一块内存大小的数组的连续存储,即可以像数组一样操作,但可以对此数组进行动态操作。

50920

笨办法学 Python3 第五版(预览)(一)

当你创建这个单元格时,请记住这些要点: 没有在左侧输入行号。这些行号是在书中打印出来的,这样就可以通过说“看第 5 行…”来谈论特定的行。你不需要在 Python 脚本输入行号。...不知道如何在我国的键盘上输入 # 字符。该怎么做? 一些国家使用 ALT 键和其他键的组合来打印与其语言不同的字符。你需要上网搜索如何输入它。 为什么要倒着读代码?...一个变量不会在单引号。 像你在练习 1 说的那样,为每一行代码写一个英文注释是正常的吗? ,你只需要为难以理解的代码或者为什么要这样做写注释。...为什么不能这样做 input('? ') = x? 因为这是反向的工作方式。按照的方式去做,它就会起作用。 为什么你要让一次只输入一行?...确保你理解是如何将"""样式的多行字符串与{}格式激活器结合在一起作为最后一个打印的。 尝试找到在 Jupyter 运行代码的方法。

15410

ireport使用_result with

思考:以前出现翻页打印时常出现打印内容缺失、打印格式不对齐的bug。功能可以解决上诉问题。 5、问题:iReport的子报表如何实现根据其上部是否有打印数据而变打印位置?...具体操作:选择Frame,右键选择属性,在Common选项卡的Print When excepression文本框输入控制代码,如“new Boolean($V{PAGE_NUMBER}.intValue...3、在子报表引用值,首先在子报表定义一个变量Parameter,然后引用即可。 那为什么能找到呢?...当然第二个步骤的功能在做表格的时候很有用,例如:表格是2列,那么两边的数据肯定不一样,或者是左边就是静态的,那么如果选择这个属性,你就会发现,右边的数据很多的时候会扩充,但是左边不会,这个时候,我们就可以设置该属性...“共几页 第几页” 是写在page footer

1.8K20

C++、Python、Rust、Scala 构建编译器的差异性究竟有多大?

除了标准库之外也不允许使用任何库,甚至连辅助解析的库都不允许(如果标准库没有包含功能的话)。这意味着也不会出现任何仅有部分团队使用的、强大的编译器库来干扰比较。...例如,我们需要基础设施,才能在分析代码过程向AST添加信息供以后使用,而Python只需要给AST结点添加新的域即可。 强大的元编程也是造成差异的原因之一。...例如,他们设置了单独的is_abstract、is_native和is_static域,由此导致的约束使得检验的代码需要被复制粘贴两次,一次在返回结果的方法,另一次在返回结果的方法,两者只有微小的修改...他们还从Java语法网站上找到了一段150行的Python脚本,该脚本从Java语法网站的页面上搜集语法并转换成了生成工具的输入,从而他们不必自己写LR语法。...所以,除了语法分析器的设计不一样之外,Rust和OCaml的表达性很相似,除了OCaml需要一些Rust不需要的接口定义而已。 ? 总结 总的来说,对于比较结果非常满意。

1.4K40

生成算法让机器人在真实世界中演化,全程无需人类介入(视频)

【新智元导读】挪威奥斯陆大学研究者让机器人使用“生成设计”算法和3D打印机,自我设计、发展和制造,全程无需人类输入。...要知道,在自然界,大约有 99.9%的“演化”是走上一条死路,最终物种迎来灭绝。但这也正是演化的本质——不断尝试新的事物、失败,再次尝试,直到有什么事情发生。 ?...这这一过程,这台拥有创造力的机器会经历上万次迭代,保持最佳版本并再次迭代。 “这就是人工进化。它从这些‘香肠’和简单电动机非常简单的组合开始。” Glette 看着屏幕上的可视化演变过程解释说。...所以,将来有一天,机器人完全可以设计自己、打印自己并且将自己组装起来。 自此基础上再向前一步,机器人也许很快就能在实验室里生长,就像英国宇航系统(BAE)使用新的分子组装工具生产无人机一样。 ?...将来,类似的机器人可能会想出如何避开意想不到的障碍,甚至当场就打印出新的身体部位来解决这些问题。 这也是为什么包括一些有名科学家在内的人都担心“杀人机器”会出现。

71760

MoonBit:Wasm优化语言,代码量少于Rust

然而,问题在于现有的语言,例如 Java、Go 甚至 Rust 在编译时会生成大量的 WebAssembly 代码,即使它们仅仅是打印“Hello World”,IDEA 科学家、语言开发人员 Hongbo...Moonbit 的灵感来自于 Rust 和 Go 这使其与同样设计为编译成 Wasm 的 Grain 语言处于相似的分类。有趣的是,Grain 的创建者将 OCaml 作为他们的灵感来源。...但对于开发人员来说,仍然希望有一个 IDE 来告诉其他信息是正确的,即使程序不正确。...他补充说,当 IDE 与编译器共享相同的代码库时,会导致结果不一致。 IDE 是开发人员可能发现 MoonBit 对 Wasm 有吸引力的另一个原因。...“因为有很多使用语言工具的经验,认为让语言对开发人员来说可用且令人愉快的最重要的一件事是他们拥有非常快、非常可靠的 IDE,”他说。

7810

Python 循环 while,for

如: 输入一个数,打印指定宽度的正方形: 如:输入:5 n = int(input("输入一个数:")) j = 1 while j <= n:     i = 1     while i <= n:...3,break语句终止循环时,循环语句的else子句将不会被执行 4,break语句只能终止当前循环的执行,如果有循环嵌套时,不会跳出嵌套的外重循环 5,break语句只能在循环语句(while或for...语法说明: 1,可迭代对象每次提供一个元素依次赋值给变量列表的变量,赋值完毕后执行语句块1,重复执行步骤, 2,当可迭代对象不能够提供数据时,执行else子句部分的语句块2,然后退出循环。...2,在for语句中执行continue语句,将会从可迭代对象取下一个元素,绑定变量后再次进行循环。...,直到stop为止(包含stop,且step可以为负数。)

1.2K20

【python系统学习09】while循环

, whileVal) 7 8# 打印结果 9# while子句: 1 10# while子句: 2 11# while子句: 3 12# while执行完毕,跳出循环后执行了 4 在上边的代码...再次返回去判断条件,2<=3条件成立,继续执行while子句,打印“while子句: 2” 然后变量whileVal递增一位,变成3。...再次返回去判断条件,3<=3条件成立,继续执行while子句,打印“while子句: 3” 然后变量whileVal递增一位,变成4。...再次返回去判断条件,4<=3条件不成立,执行while子句结束循环并跳出 于是代码向下,执行else里的代码块,打印“while执行完毕,跳出循环后执行了 4” 并且我们可以通过打印明确得知...的人机对话过程 只要用户输入的不是20,这个循环中while子句的内容就会一直执行。 而当用户输入20时,条件不成立(myAge=20,而不是!=20),则跳出循环。执行else内容。

1.1K20
领券