小编Seb*_*raf的帖子

分析使用堆栈构建

我如何告诉stack构建我的可执行文件及其所有依赖项-prof

只需将它添加到ghc-options了在.cabal文件是不够的,因为它只是试图生成可执行文件与启用分析其失败.

haskell cabal haskell-stack

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

/ Will Rust是否支持函数式编程习语?

随着Rust越来越多地充实,我对它的兴趣开始激起.我喜欢它支持代数数据类型,特别是那些匹配的事实,但是对其他功能习语有什么想法吗?

  1. 例如,标准库中是否有标准过滤器/ map/reduce函数的集合,更重要的是,您能否以语法上令人愉悦的方式链接/组合它们[1]?

  2. 既然已经有优雅的ADT使用方法,那么monad,特别是一些语法糖呢?

[1] Haskell得到(.)和(>>>),C#扩展方法和可选的LINQ,D具有统一的函数调用语法.

functional-programming rust

26
推荐指数
2
解决办法
8845
查看次数

强制`stack`重建已安装的包

我经常安装一个依赖于外部库的软件包,并设法将这些外部库移动到其他位置,以便编译后的程序以加载程序错误退出.

在这些情况下,我只想要堆栈来重建已经安装的软件包,但我不知道这是怎么回事.stack install --force-dirty似乎没有用,因为它只是尝试在当前工作目录中重建项目.


最近的例子:

我想看看是否regex-pcre需要在Windows系统上不存在C库,所以我点击了stack install regex-pcre.这很好,但后来我意识到我在此之前mingw-w64-x86_64-pcre通过stacks 安装了pacman.我再次删除它pacman -R并尝试stack install regex-pcre再次运行,但没有重建它.由于--force-dirty上述原因,也没有添加工作.

haskell haskell-stack

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

在数据透视表中使用WebBrowser时生产崩溃

我知道将WebBrowser放在Pivot/RadSlideView控件中是个坏主意.无论如何我这样做了:

<phone:PhoneApplicationPage
    x:Class="**.HtmlView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:controls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    SupportedOrientations="PortraitOrLandscape" Orientation="Portrait"
    mc:Ignorable="d"
    Style="{StaticResource LeafPageNavigationStyle}">

    <controls:Pivot x:Name="Html" ItemsSource="{Binding Items}" 
                    Style="{StaticResource HeaderlessPivot}">
        <controls:Pivot.ItemTemplate>
            <DataTemplate>
                <phone:WebBrowser Source="{Binding}" />
            </DataTemplate>
        </controls:Pivot.ItemTemplate>
    </controls:Pivot>

</phone:PhoneApplicationPage>
Run Code Online (Sandbox Code Playgroud)

基本上我想使用Pivot在我通过我的ViewModel提供的URI中滑过一系列HTML文档,它只是将数组包装在Caliburn.Micro OneActive Conductor中:

namespace DSBMobile.ViewModels
{
    public class HtmlViewModel : Conductor<Uri>.Collection.OneActive
    {
        private readonly IUnburyableState<Uri[], HtmlViewModel> _state;

        public HtmlViewModel(IUnburyableState<Uri[], HtmlViewModel> state)
        {
            _state = state;
            Items.AddRange(_state.State.ForceGetValue());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这在我手动部署的调试版和发行版中运行良好.该应用程序通过商店强加的所有测试,但只要我尝试在应用程序中打开此特定视图,它就会崩溃而没有任何机会重定向到Telerik MessageBox.

一旦我删除外部Pivot并相应地调整ViewModel,它就会顺畅运行.正如我所说,崩溃只发生在生产中.Application.UnhandledException处理程序无法让应用程序吞下异常并显示错误.

这真是错综复杂,几个月来一直困扰着我.任何人都可以解决这个错误或指向一个有价值的方向吗?我还要感谢更多的WP-ish建议,用于显示多个可用的Web链接.

c# webbrowser-control windows-phone-7 windows-phone windows-phone-8

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

`coerce`和类型变量的实例化

考虑以下GHCi会话:

>:set -XTypeApplications
>import Data.Map.Strict
>import GHC.Exts
>newtype MySet a = MySet (Map a ())
>let member' :: Ord a => a -> MySet a -> Bool; member' = coerce member

<interactive>:21:57: error:
    * Couldn't match representation of type `a0' with that of `()'
        arising from a use of `coerce'
    * In the expression: coerce member
      In an equation for member': member' = coerce member
>let member' :: Ord a => a -> MySet a -> Bool; member' = coerce …
Run Code Online (Sandbox Code Playgroud)

haskell unification coerce

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

Cont的monad实例有什么用?

我正在玩CPS,Control.Monad.Cont并想知道我们通过注意monadic结构获得了什么.对于这样的代码:

sumOfSquares'cps :: Cont r Int -> Cont r Int -> Cont r Int
sumOfSquares'cps x y = x >>= \x' ->
                       y >>= \y' ->
                       return (x'*x' + y'*y')
Run Code Online (Sandbox Code Playgroud)

可以很容易地重写为

type Cont' r a = (a -> r) -> r

sos'cps :: Cont' r Int -> Cont' r Int -> Cont' r Int
sos'cps x y = \k -> x $ \x' -> 
                    y $ \y' -> 
                    k (x'*x' + y'*y') 
Run Code Online (Sandbox Code Playgroud)

不要误会我的意思,但除了能够使用do符号和a 之外,我无法看到这种感觉newtype.我认为这 …

monads haskell continuation-passing

7
推荐指数
2
解决办法
185
查看次数

遗产的monad运营商的名字

我正在阅读类别理论基础知识,并尝试理解Haskell在语义上分配给monad操作的名称.

我所经历的所有材料都是指return单位图和join乘法图(我的名字是"加入").因为>>=或者bind我甚至没有找到一个在数学中常见的名字.相反,我遇到了它的翻转形式,lift或者 - *,这反过来对我有意义.

实际问题(tldr):

  1. 为什么使用"返回"而不是"单位"?
  2. 为什么"绑定"被创造为命名法?
  3. 数学世界中有"绑定"的名称吗?
  4. 名称"绑定"和"返回"应该意味着什么语义?

monads haskell

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

在Reactive Banana中寻找`flatten :: Event [a] - > Event a`

我正在寻找像flatten :: Event [a] -> Event a(如果你想要的那样交换)这样的东西[],Foldable f => f它会为一个列表a中的每一个生成一个单独的事件Event,就像split在旧版本中一样sodium.

我怀疑这在某种程度上是可能的switchE,但后来我需要一个类型的函数[a] -> Event a.

我可以自己制作newEvent,但内置的功能是reactive-banana什么?

编辑:

实际上,我不太确定我能否实现这一点newEvent.

flatten :: Foldable f => f a -> Banana.MomentIO (Banana.Event a)
flatten xs = do
  (event, fire) <- Banana.newEvent
  liftIO $ forkIO $ mapM_ fire xs
  return event 
Run Code Online (Sandbox Code Playgroud)

fire阻塞,直到有订阅者,或者如果没有订阅者,它会立即返回吗?

编辑2:

纵观实施newAddHandler我上面的实施将无法正常工作,因为所有的事件都可能解雇之前的任何处理函数可以注册.

haskell reactive-banana

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

在GHC Haskell中键入抽象

我想得到以下示例进行类型检查:

{-# LANGUAGE AllowAmbiguousTypes    #-}
{-# LANGUAGE RankNTypes             #-}
{-# LANGUAGE TypeApplications       #-}
{-# LANGUAGE TypeFamilies           #-}

module Foo where

f :: Int -> (forall f. Functor f => Secret f) -> Int
f x _ = x

g :: (forall f. Functor f => Secret f) -> Int
g = f 4

type family Secret (f :: * -> *) :: * where
  Secret f = Int
Run Code Online (Sandbox Code Playgroud)

我得知它可能无法推断和检查gs类型(即使在这种特定情况下它很明显,因为它只是一个部分应用程序):Secret不是单射的,并且没有办法告诉编译器Functor它应该期望哪个实例.因此,它失败并显示以下错误消息:

    • Could not deduce (Functor …
Run Code Online (Sandbox Code Playgroud)

haskell existential-type type-families system-f

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

位标志数组的数据结构是什么?

我正在向Haskell移植一些命令性代码.我的目标是分析一个可执行文件,因此文本部分的每个字节都分配了许多标志,这些标志都适合一个字节(准确地说是6位).

在像C这样的语言中,我只需要分配一个字节数组,将它们归零并随时更新它们.我如何在Haskell中有效地完成这项工作?

换句话说:我正在寻找具有逐位访问和恒定时间更新的ByteString,因为我反汇编了更多的文本部分.

编辑:当然,如果它同样有效,任何其他数据结构都可以.

arrays haskell bitflags

5
推荐指数
2
解决办法
672
查看次数