小编Tri*_*Gao的帖子

我应该在F#中使用Nullable <'a>还是Option <'a>?

使用Nullable <'a>或使用Option <'a>来表示可为空的int更具惯用性?

f#

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

为什么类型参数不能是什么?

在我看来,type参数a可以是包括列表在内的任何东西.为什么这不行?

fun :: a -> a
fun [] = []
Run Code Online (Sandbox Code Playgroud)

Haskell不想编译这段代码.我想知道为什么.

Couldn't match expected type `a' with actual type `[t0]'
 `a' is a rigid type variable bound by
    the type signature for fun :: a -> a
Run Code Online (Sandbox Code Playgroud)

我可以让它像这样重写签名

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

但这不是我想要的东西,因为我想保持函数的多态性.我想知道如何id在空列表上工作.

Prelude> :t id
id :: a -> a
Prelude> id []
[]
Run Code Online (Sandbox Code Playgroud)

haskell

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

无法在TypeScript中重载泛型函数

我在这做错了什么:

export function fail<a>(problem: SomeProblem): a;
export function fail<a>(message: string): a;
export function fail<a>(messageOrProblem: any): a { throw Error(); }
Run Code Online (Sandbox Code Playgroud)

编译器说:

TS2148: Build: Overload signature is not compatible with function definition.
Run Code Online (Sandbox Code Playgroud)

typescript

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

如何从Option'a的序列中的Some(x)值中提取x值?

对我来说,这似乎是一个脑子.我需要从序列中提取包含在Some(x)中的x值.我可以做到

xs |> Seq.fold (fun state x -> match x with -> | Some(y) -> y::state | None -> state) [] 
    |> Seq.toList 
    |> List.rev 
    |> List.toSeq
Run Code Online (Sandbox Code Playgroud)

有更好的方法吗?

f#

0
推荐指数
2
解决办法
972
查看次数

数据构造函数是一个函数吗?

我在这里找到了以下示例

instance Monad Maybe where
    Nothing  >>= f = Nothing
    (Just x) >>= f = f x
    return         = Just
Run Code Online (Sandbox Code Playgroud)

return方法以pointfree样式定义,我知道它适用于函数,但是这里我们有一个数据构造函数,其声明语法看起来与函数不同,更不用说它的用途了.

另一个教程:

数据构造函数是Haskell中的第一类值,实际上有一个类型.例如,Either数据类型的Left构造函数的类型是:

左:: forall b a.a - > ab

作为第一类值,它们可以被传递给函数,保存在列表中,是其他代数数据类型的数据元素等等.

因此,任何人都可以清楚地知道数据构造函数是什么以及它们与函数的区别(如果有的话).

haskell

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

委托"模板"绑定不起作用

小提琴:http://jsfiddle.net/ZA5k9/

所以我想为模板绑定创建一个快捷方式,如下所示:

ko.bindingHandlers.shortcut = {
        init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
            var data = valueAccessor();
            var nextValueAccessor = function () {
                return  { name: 'someTemplate', data: data };
            };
            ko.bindingHandlers.template.init.call(this, element, nextValueAccessor, allBindings, viewModel, bindingContext);
        }
}
Run Code Online (Sandbox Code Playgroud)

HTML:

<div data-bind="shortcut: 'Hey!'"></div>
<script type="text/html" id="someTemplate">
   <div data-bind="text: $data"></div>
</script>
Run Code Online (Sandbox Code Playgroud)

定义了"someTemplate"模板.只是没有说什么就行不通.我在这做错了什么?

javascript data-binding user-interface web knockout.js

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

什么带来了更大的性能影响:currying或类型?

我正在讨论是否应该使用类型类或只是创建具有所有必要功能的部分应用程序.

processWith validate accept reject x xs = if validate x then accept x xs else reject x xs
process = processWith (> 0) (\x xs -> x:xs) (\x _ -> error "Unexpected x: " ++ show x)
Run Code Online (Sandbox Code Playgroud)

据我所知,从概念上讲,这只是个人品味的问题.现在我想知道使用currying而不是类型类的性能影响.

haskell

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

什么是编程语言中的不变量,为什么它很重要?

谁能解释一下编程语言中的不变量是什么以及它们为什么重要?

programming-languages invariants

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

如何通过点击 Escape 使 VSCode 专注于活动编辑器?

这让我发疯了,我已经习惯了 Visual Studio,在那里我可以点击 Escape 并重新开始编辑。VSCode 不会!啊! 有没有办法让它工作?

visual-studio-code

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

C#中的静态(编译时/严格类型)多分派支持

我最近发现自己在我的代码中反复使用相同的模式.基本上它是访问者模式的变体,我用它来解析对派生类的基类实例的引用.这种方法需要大量的样板代码.

问题:

  • 如何在不写入大量访问者代码的情况下以静态/严格类型的方式在C#中多方式调度方法?
  • 是否有生成此代码的工具/扩展程序?
  • 为什么C#语言中没有任何内容可以解决多方调度?我不相信我是唯一发现这令人讨厌的人.我可能是非常错误的,问题不存在,所以我想知道你是怎么回事.

c# design-patterns programming-languages visitor-pattern multimethod

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