小编Bla*_*Cap的帖子

用于curried函数的惰性类型推断

在以下示例中,对于以下调用,类型推断失败mkPair2:

#include <functional>

template <class A, class B>
struct Pair {
  A left; B right;
};

template <class A, class B>
Pair<A,B> mkPair1 (A left, B right) {
  return (Pair<A,B>) { left, right };
}

template <class A, class B>
std::function<Pair<A,B>(B)> mkPair2 (A left) {
  return [left] (B right) {
    return (Pair<A,B>) { left, right };
  };
}

Pair<int, char> ex1 = mkPair1 (2, 'a');
Pair<int, char> ex2 = mkPair2 (2) ('a');
Run Code Online (Sandbox Code Playgroud)

问题是mkPair2有两个模板参数,但是调用(2)只提供了其中一个参数,因此编译器立即抛出它并确定程序是不明确的,即使第二种类型可以从下面的('a') …

c++ type-inference

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

使用无限列表管理内存使用

所以我试图找到使用数字15来表示数字5的方法

import Data.List
import Control.Monad
import Control.Monad.Omega
import System.IO

data Expr = X | Sub Expr Expr | Div Expr Expr | Pow Expr Expr
          deriving Show

eval x X = x
eval x (Sub a b) = eval x a -  eval x b
eval x (Div a b) = eval x a /  eval x b
eval x (Pow a b) = eval x a ** eval x b

exprs | v <- each exprs
      = (X:) . …
Run Code Online (Sandbox Code Playgroud)

haskell

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

为什么vb.net这么快?

我用几种语言编写了相同的控制台应用程序.应用程序向用户询问一个数字,并从1到该数字进行计数,在控制台的单独行上打印每个数字.我实际上期望vb.net在编程语言中变得最糟糕,让我好奇的是它没有,它实际上是最快的.

VB.Net - 运行VS调试器:

Sub Main()
    Console.Write("Give me a number, any number: ")

    For i = 1 To CInt(Console.ReadLine)
        Console.WriteLine(i)
    Next

    Console.ReadLine()
End Sub
Run Code Online (Sandbox Code Playgroud)

C++ - 运行VS调试器(比VB慢大约5倍):

#include <iostream>
using namespace std;

int main() {
cout << "Give me a number, any number: ";

int number; cin >> number;
cout << '\n';

for (int i = 1; i <= number; i++) cout << i << '\n';

while (true) {}
}
Run Code Online (Sandbox Code Playgroud)

Haskell - 从控制台编译并运行(仅比VB略慢):

import System.IO
import Control.Monad 

main = do …
Run Code Online (Sandbox Code Playgroud)

.net vb.net

-5
推荐指数
1
解决办法
325
查看次数

标签 统计

.net ×1

c++ ×1

haskell ×1

type-inference ×1

vb.net ×1