let add1 x = x + 1
和之间有什么区别let add2 x = x +1
.意外删除的空间从改变的函数的类型
val add1 : x:int->int
来
val add2 : x:(int -> 'a) -> 'a
据我所知,第一种类型的声明说add1
映射int
到int
.但第二个是什么意思.
好吧,'a
代表一个泛型类型,但该函数如何'add2'
返回泛型?
谢谢你的帮助.
面向对象的编程范例使用继承来建模遵循泛化 - 专业化关系的实体之间的关系.这里,Base类用于封装一组实体的公共(常规)属性和行为,Derived Classes 通过添加其他属性和/或添加/修改现有行为来扩展基类.
作为功能编程的新手,我需要在F#等函数语言中建模这种关系的指导.
例如,建模如下所示的简单情况的最佳方法是什么:
abstract class Tutorial {
private String topic;
abstract public void learn();
}
class VideoTutorial extends Tutorial {
private float duration;
public void learn () {
System.out.println ("read PDF");
}
}
class PDFTutorial extends Tutorial {
private int pageCount;
public void learn () {
System.out.println ("Watch Video");
}
}
Run Code Online (Sandbox Code Playgroud)
然后使用教程集合并调用学习 观察多态行为.
在阅读有关函数组合的教程时,我尝试了以下内容:
let prefixFun a b = a + "" + b;;
let exclaim s = s + "!";;
let bigHello = prefixFun >> exclaim;;
Run Code Online (Sandbox Code Playgroud)
但是定义bigHello
返回以下类型不匹配错误
let bigHello = prefixFun >> exclaim;;
----------------------------^^^^^^^
stdin(28,29): error FS0001: Type mismatch. Expecting a
'(string -> string) -> 'a'
but given a
'string -> string'
The type 'string -> string' does not match the type 'string'
Run Code Online (Sandbox Code Playgroud)
prefixFun
返回字符串并exclaim
期望字符串.你能帮我理解并解决问题吗?
谢谢.