小编myt*_*hbu的帖子

Haskell:如何手动推断表达式的类型

给出了Haskell函数:

head . filter fst
Run Code Online (Sandbox Code Playgroud)

现在的问题是如何手动"手动"找到类型.如果我让Haskell告诉我我得到的类型:

head . filter fst :: [(Bool, b)] -> (Bool, b) 
Run Code Online (Sandbox Code Playgroud)

但是我想了解它是如何工作的,只使用已定义如下的已使用函数的签名:

head :: [a] -> a
(.) :: (b -> c) -> (a -> b) -> a -> c
filter :: (a -> Bool) -> [a] -> [a]
fst :: (a, b) -> a
Run Code Online (Sandbox Code Playgroud)

编辑:这么多很好的解释......选择最好的一个并不容易!

haskell types type-inference unification

13
推荐指数
4
解决办法
1955
查看次数

Javascript:将(十六进制)有符号整数转换为javascript值

我有一个以十六进制数给出的带符号值,例如,0xffeb并希望将其转换-21为"正常"Javascript整数.

到目前为止我写了一些代码:

function toBinary(a) { //: String
    var r = '';
    var binCounter = 0;
    while (a > 0) {
        r = a%2 + r;
        a = Math.floor(a/2);
    }
    return r;
}

function twoscompl(a) { //: int
    var l = toBinaryFill(a).length;
    var msb = a >>> (l-1);

    if (msb == 0) {
        return a;
    }

    a = a-1;
    var str = toBinary(a);
    var nstr = '';
    for (var i = 0; i < str.length; i++) { …
Run Code Online (Sandbox Code Playgroud)

javascript sign

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

如何使用CSS,HTML和一些Javascript显示二叉搜索树?

我想使用CSS和HTML在屏幕上"绘制"树,而不是以任何方式或数据结构表示它...

html javascript css binary-search-tree

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

Haskell:重载siginiture并为不同的输入类型返回不同的结果

我需要这个功能:

blubb :: ??? -> Int
blubb (n :: Int) = n
blubb (n :: Char) = 42
Run Code Online (Sandbox Code Playgroud)

这是它应该如何工作:函数获取Int并返回它.如果函数得到一个Char它返回一个常量值,其他情况是无关紧要的.

由于Haskell中的类型系统,它可能是不可能的,但我需要让它工作......

haskell

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

Haskell:编写一个函数来添加由函数映射到Ints的Ints和Chars

代码bellow适用于这样的输入:

*Main> eval 'y' (21 :: Int)
42
*Main> eval 'x' 'a'
42
*Main> eval (21 :: Int) (21 :: Int)
42
*Main> eval (42 :: Int) 'a'
42
Run Code Online (Sandbox Code Playgroud)

这背后的一般问题是我想添加两件事.添加到Ints并不难实现(它已经内置).但是我有一个给定的函数(这里geti)将Chars 解析为Ints和my add-function现在应该添加两个Ints以及Int组合Char(在每个排列中).的CharS被转换geti函数Int是如此,它们可以被添加.我考虑过另一种解决方案可能是:

eval (geti 'a') (42 :: Int)
Run Code Online (Sandbox Code Playgroud)

但这对我来说是不可能的.

所以一般来说我的问题是:有没有办法让这个更简单或实现它更优雅?

这是代码:

-- A static function only used to resolve some demo data
geti :: Char -> Int
geti c …
Run Code Online (Sandbox Code Playgroud)

haskell

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