这些功能有何不同?

疯狂的鼓膜

我有一个功能:

fn x => x

现在,参数x应用于实数和整数(例如(x:real))。这两个函数有什么不同之处和相同之处,即使它们看起来实际上在做相同的事情:

1. fn (x:int) => x;
2. fn (x:real) => x;
莫尔布德尼洛

这三个都是身份函数,但后两个不是多态的。

非多态版本的功能不完全相同-一个具有类型int -> int另一个具有类型real -> real,因此它们只能分别应用于intreal

例子:

Standard ML of New Jersey v110.79 [built: Wed Oct  7 00:59:52 2015]
fn (x:int) => x;
val it = fn : int -> int
- fn (x:real) => x;
val it = fn : real -> real 
- (fn (x:int) => x) 3;
val it = 3 : int
- (fn (x:int) => x) 3.0;
stdIn:2.1-2.22 Error: operator and operand don't agree [tycon mismatch]
  operator domain: int
  operand:         real
  in expression:
    (fn x : int => x) 3.0
- (fn (x:real) => x) 3;
stdIn:1.2-1.22 Error: operator and operand don't agree [overload conflict]
  operator domain: real
  operand:         [int ty]
  in expression:
    (fn x : real => x) 3
- (fn (x:real) => x) 3.0;
val it = 3.0 : real

相反,多态版本适用于所有内容:

- fn x => x;
val it = fn : 'a -> 'a
- (fn x => x) 3.0;
val it = 3.0 : real
- (fn x => x) 3;
val it = 3 : int
- (fn x => x) "hello";
val it = "hello" : string
- (fn x => x) [1,2,3];
val it = [1,2,3] : int list

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

换能器与部分应用的功能有何不同?

来自分类Dev

这些功能有什么区别?

来自分类Dev

这些功能有什么作用?

来自分类Dev

指针算术:这些语句有何不同?

来自分类Dev

这些C函数有何不同?

来自分类Dev

这些快速代码行有何不同?

来自分类Dev

这些mondaic功能有什么区别?

来自分类Dev

/boot 下的这些文件是什么以及有何不同?

来自分类Dev

睡眠功能有所不同

来自分类Dev

警报框不出现-此功能有何不正确之处?

来自分类Dev

初始化方法与构造函数加赋值-性能有何不同?(C ++)

来自分类Dev

在mysql中,int和float数据类型之间的性能有何不同?

来自分类Dev

dplyr的select助手功能everything()与复制有何不同?

来自分类Dev

`{⊂⍵}`与`⊂`有何不同?

来自分类Dev

GDI +功能有多快?

来自分类Dev

JVM具有相同标志的功能有很大不同

来自分类Dev

JVM具有相同标志的功能有很大不同

来自分类Dev

Swift-录音机/语音转换器应用程序:这些功能有何关系?

来自分类Dev

为什么Internet Explorer与后退按钮上的预期功能有所不同

来自分类常见问题

GRPC与REST有何不同?

来自分类Dev

元组与班级有何不同?

来自分类Dev

x ++与++ x有何不同?

来自分类Dev

Cucumber与JUnit有何不同?

来自分类Dev

Gnote与Tomboy有何不同?

来自分类Dev

安装与cp有何不同?

来自分类Dev

猫王与Vim有何不同?

来自分类Dev

“ putty”与“ telnet”有何不同?

来自分类Dev

Ubuntu与Debian有何不同?

来自分类Dev

BC与DC有何不同?