我必须在ML中编写一些代码,这是我第一次使用该语言.标准ML是否有任何开发环境?(最好在Windows下).我尝试使用googling(和stackOverFlowing!),但我发现的只是Linux的简单编译器(最多使用交互式控制台),但没有IDE或Eclipse/NetBeans插件.有什么建议 ?
曾经有人在SML中向我展示了一个小技巧,他们在他们的REPL中写出了大约3或4个函数,最后一个值的结果类型非常长(就像许多页面滚动一样长).
有谁知道什么代码生成这么长的类型,或者是否有这种行为的名称?
我正在学习ML,用SML/NJ方言.我想弄清楚的是,是否有一个行注释运算符.我找到了块注释运算符,(*...*),但我真的错过了行注释.
建议?或者我只是坚持使用块评论?
功能深度优先搜索在有向无环图中很可爱.
然而,在带循环的图中,我们如何避免无限递归?在程序语言中,我会在我点击它时标记节点,但是让我说我不能这样做.
访问节点列表是可能的,但速度很慢,因为使用一个会导致在重复之前对该列表进行线性搜索.比这里的列表更好的数据结构显然会有所帮助,但这不是游戏的目的,因为我在ML中编码 - 列表是王道,还有其他任何我必须自己写的东西.
这个问题有巧妙的方法吗?或者我是否必须处理访问列表或上帝禁止,可变状态?
根据Harper(https://existentialtype.wordpress.com/2011/04/16/modules-matter-most/),似乎Type Classes根本没有提供与Modules提供的相同级别的抽象,而我正在拥有很难确切地弄清楚原因.并且在该链接中没有示例,因此我很难看到关键差异.还有其他关于如何在模块和类型类之间进行翻译的论文(http://www.cse.unsw.edu.au/~chak/papers/modules-classes.pdf),但这对于从程序员的角度来看实现(它只是说没有人可以做的事情,另一个人无法模仿).
具体来说,在第一个链接中:
首先,他们坚持认为类型可以完全以一种方式实现类型类.例如,根据类型类的哲学,整数可以以一种方式(通常的顺序)排序,但显然有许多有趣的排序(例如,通过可分性).第二个问题是它们混淆了两个不同的问题:指定类型如何实现类型类,以及指定在类型推断期间何时应该使用这样的规范.
我也不明白.一个类型可以在ML中以多种方式实现类型类?如果不创建新类型,您将如何通过示例按可分性排序整数?在Haskell中,您必须执行诸如使用数据之类的操作,并instance Ord
提供替代排序.
第二个,不是两个在Haskell中是截然不同的吗?指定"何时应在类型推断期间使用此类规范"可以通过以下方式完成:
blah :: BlahType b => ...
Run Code Online (Sandbox Code Playgroud)
其中BlahType是在类型推断期间使用的类而不是实现类.然而,"类型如何实现类型类"是使用完成的instance
.
有人可以解释链接真正想说的内容吗?我只是不太明白为什么模块比Type Classes更少限制.
在SML
的repl
,你可以只输入use whatever.sml
和里面所有的东西加载.sml
到repl
.
我怎么能在OCaml中做到这一点?
类型推断的限制是什么?哪种类型的系统没有通用的推理算法?
依赖类型系统似乎支持ML模块系统的一些用途.你从模块系统中获得了什么,你没有从依赖记录中获得?
模块〜记录
签名〜记录类型
functor~记录功能
具有抽象类型组件的模块〜具有类型字段的依赖记录
我对它作为模块系统的工作情况感兴趣,以及是否以及如何集成应用程序仿函数和mixin等功能.
我在使用SML/NJ交互系统时遇到了一些麻烦,即当我尝试使用我的箭头键时(左或右在我输入的表达式中进行校正,最多重复最后一个表达式),我的终端打印代码.(例如^[[A
,^[[D
左起等).虽然我仍然可以使用该系统,但它使它非常繁琐.
我在Control.Compiler中环顾四周,有什么我想念的吗?无论它的价值如何,我都在使用Mac终端.
谢谢^ _ ^
我有以下功能,它的工作原理:
(fn x => x * 2) 2;
Run Code Online (Sandbox Code Playgroud)
但是这个不起作用:
(fn x y => x + y ) 2 3;
Run Code Online (Sandbox Code Playgroud)
谁能告诉我为什么?或者给我一些暗示让它发挥作用?