小编MFl*_*mer的帖子

Haskell中的存在性与普遍量化类型

这些有什么区别?我想我理解存在类型是如何工作的,它们就像在OO中拥有一个基类而没有一种方法可以用.普遍类型有何不同?

polymorphism haskell existential-type

52
推荐指数
2
解决办法
8096
查看次数

Data.Lens或Control.Lens

可能重复:
镜头,fclabels,数据访问器 - 用于结构访问和变异的库更好

我将在下一个Haskell项目中使用和学习Lens包.Data.Lens当我发现这篇文章中提到van Laarhoven Lenses时,我几乎决定了这个Control.Lens包.

我还不太了解差异,还没决定使用哪一个.您建议我在真实项目中学习/使用哪个软件包?

谢谢.

镜头,fclabels,数据访问器 - 用于结构访问和变异的库更好

haskell lenses

11
推荐指数
2
解决办法
1228
查看次数

如何升级Haskell平台

我在Windows上安装了Haskell Platform 2012.4.我想在GHC 7.6.2中尝试新的扩展.看起来GHC 7.6.2 x86_64下载不包含安装程序,只是二进制文件.安装最新版本并将其设置为构建Haskell项目的默认设置的正确方法是什么?谢谢.

haskell ghc

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

我们能创建自定义Rust运算符吗?

我知道我们可以实现覆盖标准算术运算符的特征.我们还可以创建自己的特征来重载自定义运算符吗?我真的很喜欢Haskell用于定义运算符的系统.

operator-overloading rust

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

被困在州Monad

我想使用节点和唯一键的IntMap创建图形结构.这里这里已经很好地介绍了这个主题.我理解状态monad是如何工作的,基本上将状态函数 - >(val,state)包装在newtype中,这样我们就可以为它创建一个monad实例.我已经阅读了很多相关主题.我仍然无法理解如何在程序执行过程中获得唯一(或仅增量)值.获得一系列连续的ID很容易,但是一旦我"runState"退出monad,似乎我回到了我开始跟踪当前ID的位置.我觉得我被卡在了monad中.我考虑的另一个选择是保持整个IntMap和当前"下一个"ID作为状态,但这似乎非常"必要"和极端.这个问题非常相似,但没有得到很多答案(或者我可能只是错过了一些明显的答案).在程序执行过程中利用状态monad获取唯一ID的惯用方法是什么?谢谢.

haskell state-monad

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

Control.Lens性能开销

我很欣赏Control.Lens包.它确实有助于稍微弱的Haskell记录语法.我正在研究图书馆的某些部分,其中表现是一个问题.有没有人知道如果有的话,使用通过类型类暴露的简单镜头(如下所示)与功能中的基本模式匹配相比会有什么性能损失?使用像这样的镜头有可能成为记录命名空间冲突问题的一个很好的工作.我可以自己设置一些基准测试,但是如果有人可以帮我解决问题,我很好奇.谢谢.

镜头课程

class LensX v where
  _x :: Functor f => (Double -> f Double) -> v -> f v

class LensY v where
  _y :: Functor f => (Double -> f Double) -> v -> f v

class LensZ v where
  _z :: Functor f => (Double -> f Double) -> v -> f v 
Run Code Online (Sandbox Code Playgroud)

镜头实例

instance LensX Vec3 where
  _x f (Vec3 x y z) = fmap (\x' -> Vec3 x' y z) (f x)

instance LensY Vec3 …
Run Code Online (Sandbox Code Playgroud)

performance haskell lenses

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

另一种铁锈仿制药运动

我正试图在Rust中实现像Monad一样的特性.主要是为了娱乐和熟悉类型系统.我很确定我不能完全实现Monad特性,因为缺乏"更高种类",正如在这个reddit讨论中所解释的那样,但我想知道我能接近多少.出于某种原因,我无法编译这段代码.似乎应该这样.有人可以解释原因吗?谢谢.

trait Monad<T> {
    fn lift(val: T) -> Self;
}

struct Context<T>{ 
    val: T 
}

impl<T> Monad<T> for Context<T> {
    fn lift(x: T) -> Context<T> {
        Context{val: x}
    }
}

fn main() { 
    let c:Context<int> = Context<int>::lift(5i);
}
Run Code Online (Sandbox Code Playgroud)

rust

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

适用于ADT的Haskell Zipper,具有许多构造函数

我有几个ADT代表Haskell中的一个简单的几何树.关于让我的操作类型与树结构分离的事情困扰着我.我正在考虑让Tree类型包含运算符的构造函数,它看起来似乎更干净.我看到的一个问题是我的Zipper实现必须改变以反映所有这些新的可能的构造函数.有没有办法解决?还是我错过了一些重要的概念?总的来说,我觉得我无法掌握如何在Haskell中一般构建我的程序.我理解大多数概念,ADT,类型类,monad,但我还不了解大局.谢谢.

module FRep.Tree
   (Tree(?)
   ,Primitive(?)
   ,UnaryOp(?)
   ,BinaryOp(?)
   ,TernaryOp(?)
   ,sphere
   ,block
   ,transform
   ,union
   ,intersect
   ,subtract
   ,eval
   ) where



import Data.Vect.Double
--import qualified Data.Foldable as F
import Prelude hiding (subtract)
--import Data.Monoid


data Tree = Leaf    Primitive
          | Unary   UnaryOp   Tree
          | Binary  BinaryOp  Tree Tree
          | Ternary TernaryOp Tree Tree Tree
          deriving (Show)

sphere ?  Double ? Tree
sphere a = Leaf (Sphere a)

block ?  Vec3 ? Tree
block v = Leaf (Block v)

transform ?  Proj4 ? Tree ? …
Run Code Online (Sandbox Code Playgroud)

haskell zipper algebraic-data-types

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

创建新的 WinRT 投影?

我想知道是否有人知道创建 WinRT 语言投影的任何资源或有任何创建 WinRT 语言投影的经验。我正在研究如何为 Haskell 创建投影。我发现了一些关于现有投影的博客和视频,它们提到了为其他语言创建新投影的概念,但我找不到太多关于从哪里开始创建投影的信息。我了解一些 COM 的工作原理,并且已经熟悉了暴露给 C++/CX 的 WinRT API。谢谢。

windows winapi visual-c++ windows-runtime

5
推荐指数
0
解决办法
260
查看次数

WinRT应用程序在发布版本中崩溃,但没有调试

我有一个在调试中运行良好但在尝试在发布时启动时崩溃的应用程序.这是抛出的异常.

Napkin.exe中0x5D2F7717(Windows.UI.Xaml.dll)的未处理异常:0xC000027B:发生了应用程序内部异常(参数:0x034F6C70,0x00000001).

什么想法可能是这个问题的根源?谢谢.

这是更多的输出窗口

Napkin.exe中0x55257717(Windows.UI.Xaml.dll)的未处理异常:0xC000027B:发生了应用程序内部异常(参数:0x02D029E0,0x00000001).Napkin.exe中0x750D2722(combase.dll)的未处理异常:0xC0000602:发生了失败快速异常.不会调用异常处理程序,并且将立即终止该进程.

遇到STATUS_STACK_BUFFER_OVERRUN,Napkin.exe已触发断点.线程0x1b20已退出,代码为-1073740791(0xc0000409).线程0xb50已退出,代码为-1073740791(0xc0000409).线程0x108c已退出,代码为-1073740791(0xc0000409).线程0x16cc已退出,代码为-1073740791(0xc0000409).线程0x222c已退出,代码为-1073740791(0xc0000409).线程0x78c已退出,代码为-1073740791(0xc0000409).线程0x14a4已退出,代码为-1073740791(0xc0000409).线程0x2164已退出,代码为-1073740791(0xc0000409).程序'[6392] Napkin.exe已退出,代码为-1073740791(0xc0000409).激活Windows应用商店应用'cdbbf746-1a99-4261-8bfa-9cb2934d4ac0_qddg1e943mmj2!App'失败并显示错误'Windows无法与目标应用程序通信.这通常表示目标应用程序的进程已中止.可以在"输出"窗口的"调试"窗格(调试 - > Windows->输出)中获得更多信息.

在此输入图像描述

visual-c++ microsoft-metro winrt-xaml

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