小编Aar*_*kon的帖子

具有多种参数类型的多态输入函数

出于纯粹的好奇,我想知道 Haskell 中可能有以下类似的东西:一个函数foo将另一个函数作为参数,在foo多次调用的主体中,在此过程中更改参数的类型。

下面的代码无法编译,因为fn一旦被调用,它的参数类型就会被固定,但希望它说明了我在胡说八道的内容。

main = putStrLn (foo id)

foo :: (* -> *) -> [Char] -- maybe I'm also getting the whole *-thing wrong
foo fn =
    let
        val1 = fn "hey"
        val2 = fn 42
    in
        show (val1, val2)
Run Code Online (Sandbox Code Playgroud)

我想知道它是否可以实现,如果没有像 typeclasses 这样的助手,你是否可以做到。

polymorphism haskell

7
推荐指数
2
解决办法
118
查看次数

val 函数中多态的 Scala 语法

这可能非常简单,但我找不到关于我的问题的任何文档。
在 Scala 中有两种定义函数的方法,一种def是使用 theval关键字,另一种是使用关键字。作为函数式编程的高手,我更喜欢使用后者。

现在我有一个问题:写一个def带有多态类型参数的函数是没有问题的:

def function[T](n: T) = {print(n)} // syntactically fine
Run Code Online (Sandbox Code Playgroud)

但是,如何使用val关键字做同样的事情仍然让我感到困惑。这种天真的方法在语法上是无效的:

val function[T]: (a: T) => print(a) // Doesn't compile
Run Code Online (Sandbox Code Playgroud)

也就是说,我绝对有可能在这里误解了 Scala 在多态性和泛型方面的方法。

generics syntax polymorphism functional-programming scala

1
推荐指数
1
解决办法
63
查看次数