小编The*_*nce的帖子

为类类的子类定义方法

我试过这个:

class Functor f where
    fmap :: (a -> b) -> f a -> f b
class (Functor f) => Applicative f where
    pure  :: a -> f a
    (<*>) :: f (a -> b) -> f a -> f b
    fmap f x = pure f <*> x
Run Code Online (Sandbox Code Playgroud)

我懂了:

`fmap' is not a (visible) method of class `Applicative'
Run Code Online (Sandbox Code Playgroud)

如何定义fmapfor Applicative和其他子类Functor

haskell typeclass

5
推荐指数
2
解决办法
550
查看次数

将函数定义为列表元素

>>> list=[None]
>>> def list[0](x,y):
  File "<stdin>", line 1
    def list[0](x,y):
             ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

如何将函数定义为列表的元素?

python

4
推荐指数
2
解决办法
344
查看次数

绑定多个参数

在Haskell中,有:

(>>=) :: Monad m => m a -> (a -> m b) -> m b
Run Code Online (Sandbox Code Playgroud)

有功能:(?)

bind2 :: Monad m => m a -> m b -> (a -> b -> m c) -> m c
Run Code Online (Sandbox Code Playgroud)

monads haskell

4
推荐指数
3
解决办法
269
查看次数

`Show`实例中的自动括号

ghci> show (Left 3)
"Left 3"
ghci> show (Just 0)
"Just 0"
ghci> show (Just (Left 3))
"Just (Left 3)"
Run Code Online (Sandbox Code Playgroud)

Haskell如何自动将括号放在嵌套的构造函数参数周围?

haskell

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

如何解决F#的类型系统

在Haskell中,您可以使用unsafeCoerce覆盖类型系统.如何在F#中做同样的事情?

例如,实现Y-combinator.

f# haskell

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

为什么在Haskell中不进行这种类型检查?

这不会输入检查:

module DoesntTypeCheck where {
import Prelude(Either(..));
defaultEither :: a -> Either b c -> Either a c;
defaultEither a (Left _) = Left a;
defaultEither _ b = b;
}
Run Code Online (Sandbox Code Playgroud)

但这确实是:

module DoesTypeCheck where {
import Prelude(Either(..));
defaultEither :: a -> Either b c -> Either a c;
defaultEither a (Left _) = Left a;
defaultEither _ (Right b) = Right b;
}
Run Code Online (Sandbox Code Playgroud)

编译器可能是越野车,一个Either a c类型只能是Left (x::a)或者Right (y::c),如果它不Left那么它是Right的,我们知道Right …

polymorphism haskell types

3
推荐指数
2
解决办法
133
查看次数

如何在Sage Math中使用Scheme而不是Python

与商业数学应用程序不同,Sage Math使用Python作为其脚本语言.我不喜欢它,因为它没有尾递归,不是homoiconic,并使用缩进来输出语句块.我怎样才能使用像Scheme这样的其他语言?

python math scheme sage

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

在Go中输入变量

在Haskell中,map有类型:

map :: (a -> b) -> [a] -> [b]
Run Code Online (Sandbox Code Playgroud)

请注意,a并且b不是绝对类型而是类型变量,这意味着它们可以是任何类型,只要每个变量在特定函数调用中始终引用相同类型即可.如何在Go中做同样的事情?

go

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

F#中的定点组合器

这不起作用:

let rec fix f = f (fix f)
Run Code Online (Sandbox Code Playgroud)

解决方案是添加一个额外的参数:

let rec fix f x = f (fix f) x
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点使用lazyLazy.force呢?

f# fixpoint-combinators

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

为什么"Main.main","IO()"的类型而不是"IO a"?

为什么类型Main.main必须是IO ()IO StringIO IntIO whatever

main :: IO ([] Char) -- Type error
main = (>>) ((>>=) getLine putStrLn) getLine
Run Code Online (Sandbox Code Playgroud)

haskell

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