小编Lay*_*lez的帖子

是否可以在浏览器中运行用Haskell编写的游戏?(通过GHCJS可能?)

我想知道目前是否可以使用Helm或通过GHCJS在浏览器上运行的任何其他引擎在Haskell中编写游戏?

haskell sdl-2 ghcjs kubernetes-helm

10
推荐指数
2
解决办法
1004
查看次数

Haskell中的不安全功能是什么?

我相信一个不安全的函数是一个函数,它表示它将返回某种类型的值,但它实际上可以抛出异常并结束执行因此根本不返回任何值,但我不确定.

或者,不安全的函数是否可以返回除签名中声明的其他类型的值的函数?这不是一个弱类型的功能吗?

或者是Haskell 中弱类型不安全的同义词?

这可能是一个愚蠢的问题,但我找不到一个直截了当的答案.

我检查了文档,readLn希望看到对不安全函数的引用,但没有任何.

这篇文章,不安全的函数,说明了打破类型系统,但它没有指明以哪种方式; 通过例外?,通过返回错误类型的值?

那么,Haskell中的不安全功能是什么?

haskell unsafe

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

如何在角度服务调用中捕获401(或其他状态错误)?

使用$ http我可以轻松地捕获像401这样的错误:

$http({method: 'GET', url: 'http://localhost/Blog/posts/index.json'}).
success(function(data, status, headers, config) {
    $scope.posts = data;
}).
error(function(data, status, headers, config) {
    if(status == 401)
    {
        alert('not auth.');
    }
    $scope.posts = {};
});
Run Code Online (Sandbox Code Playgroud)

但是,在使用服务时,我怎么能做类似的事情.这是我当前服务的外观:

myModule.factory('Post', function($resource){
    return $resource('http://localhost/Blog/posts/index.json', {}, {
          index: {method:'GET', params:{}, isArray:true}
    });
});
Run Code Online (Sandbox Code Playgroud)

(是的,我只是学习角度).

解决方案(感谢Nitish Kumar和所有贡献者)

在Post控制器中,我正在调用这样的服务:

function PhoneListCtrl($scope, Post) {
    $scope.posts = Post.query();
}
//PhoneListCtrl.$inject = ['$scope', 'Post'];
Run Code Online (Sandbox Code Playgroud)

根据所选答案的建议,现在我这样称呼它并且它有效:

function PhoneListCtrl($scope, Post) {
    Post.query({},
    //When it works
    function(data){
        $scope.posts = data;
    },
    //When it fails
    function(error){
        alert(error.status);
  }); …
Run Code Online (Sandbox Code Playgroud)

rest angularjs

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

你可以在Haskell中为一个类而不是整个类创建一个类的实例吗?

假设我想让所有数字成为一个实例Monoid.而不是Num像这样为每个人创建一个实例:

instance Monoid Int where
  mappend = (+)
  mempty = 0

instance Monoid Float where
  mappend = (+)
  mempty = 0.0

-- etc
Run Code Online (Sandbox Code Playgroud)

有这样的事吗?

instance Num t => Monoid t where
  mappend = (+)
  mempty = 0
Run Code Online (Sandbox Code Playgroud)

编辑

有些人正在回答GHC扩展并警告潜在的问题; 我发现信息丰富,但我想我会坚持Sum,Product无论如何coerce.

haskell typeclass type-constraints

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

如何在Haskell中编写编译器?在C#中我使用了很多状态

我正在C#中为一个学校项目做一个编译器,我不禁想知道如何在Haskell中做到这一点.

例如:

我为While循环生成的代码是:

public override void generateCode(Compiler compiler)
    {
        int jumpToTheBeginningInstructionIndex = compiler.getIndexOfNextActionInCurrentFunction();
        MachineInstructions.JMP jumpTotheBeginning = new MachineInstructions.JMP(jumpToTheBeginningInstructionIndex);
        MachineInstructions.JMPF jumpToTheEnd = new MachineInstructions.JMPF();

        booleanExpression.generateCode(compiler);

        //I insert the jump to the end here:
        compiler.addAction(jumpToTheEnd);

        foreach(IAction action in this.thenActions)
        {
            action.generateCode(compiler);
        }
        compiler.addAction(jumpTotheBeginning);

        //...But is here where I know where should it jump to:
        jumpToTheEnd.whereToJump = compiler.getIndexOfNextActionInCurrentFunction();
    }
Run Code Online (Sandbox Code Playgroud)

您可以看到我如何在方法的中间插入jumpToTheEnd的代码,但直到我知道跳转的行的末尾.幸运的是,我保留了一个指向该跳转的指针,我可以轻松地在方法的最后设置其whereToJump属性.

你会怎么做Haskell!?任何推荐的教程?

compiler-construction state haskell

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

在类别理论中是否有类型a - > a(在Haskell表示法中)的箭头名称?

什么是类别理论中具有此类型的箭头的名称:

a -> a
Run Code Online (Sandbox Code Playgroud)

"从类型(?)到同一类型的另一个对象"

或许他们没有特别的名字?

换句话说:是否有从任何类型a到相同类型a的所有箭头的名称?该集的箭头(函数?)示例:

\x->x+x   :: Int->Int
\x-> "hello, " ++ x :: String -> String
...
Run Code Online (Sandbox Code Playgroud)

编辑

@leftaroundabout说我正在使用对象的OO定义来进行类别理论,这是错误的.因此,我真正要问的是:"在类别理论中,在一个范畴中,从某个对象O到O本身的态射的名称是什么?"

haskell category-theory

6
推荐指数
2
解决办法
319
查看次数

在Haskell中,是否存在(liftM.liftM),(liftM.liftM.liftM)等的别名?

在Haskell中,是否存在(liftM.liftM),(liftM.liftM.liftM)等的别名?

所以我不必如此冗长,例如:

(liftM . liftM) (+ 1) [Just 1,  Just 2]  = [Just 2, Just 3]
(liftM2 . liftM2) (+) [Just 1] [Just 2]  = [Just 3]
Run Code Online (Sandbox Code Playgroud)

monads haskell lifting

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

如何在Rx中进行模式匹配.在一个运营商的哪里和选择?

假设我有这种类型:

type T = int option
Run Code Online (Sandbox Code Playgroud)

以及该类型的可观察量:

let o : IObservable<T> = // create the observable
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种更好的表达方式:

o.Where(function | None -> false | Some t -> true)
 .Select(function | Some t -> t)
Run Code Online (Sandbox Code Playgroud)

一个只能传播Some案例的可观察者.

有几件事我不喜欢.

  • 我正在使用2个运营商
  • 我模式匹配两次
  • 第二种模式匹配并不详尽(使视觉工作室显示警告并感觉奇怪)
  • 代码太多了.每次我需要模式匹配时,模式都会重复.

f# pattern-matching system.reactive

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

关于Rx的CombineLatest和默认初始值

给出2种类型AB默认值d(A)&d(B).和2个主题:

let sa = new Subject<A>()
let sb = new Subject<B>()
Run Code Online (Sandbox Code Playgroud)

f类型的功能A -> B -> C

我创建了这个可观察的:

let o = Observable.CombineLatest(sa, sb, f)
Run Code Online (Sandbox Code Playgroud)

但是,我需要o根据d(A)&生成初始值d(B).文档说,一旦两个主题产生了他们的第一个输出,CombineLatest只会产生它的第一个输出.

我有两种方法,但我不知道哪种方法可行/哪种方法最好,或者我是否遗漏了一些已经做了我需要的运算符.

我来到了第一种方法是手动调用OnNextsasb到相关的订阅后的默认值o已经作出.

我的第二种方法是使用BehaviorSubjects而不是plain Subjects,用初始值创建它们,并希望CombineLatest将它用于它的第一个输出.

谢谢阅读.

附录 我已经确认第二种方法有效,但我仍然不知道在这种情况下引入一个BehaviorSubject而不是一个平原Subject是最好的.

.net f# system.reactive

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

Haskell社区中的约定"runSomething"的含义是什么?

我在一些文档和教程中看到过:

这种模式涵盖的抽象概念是什么?在Haskell中运行什么意味着什么?

附带问题,是否有一个你一直想知道的东西的标签,但是太害怕了?

haskell newtype

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