小编nic*_*las的帖子

重复F#中的序列

我有一个'压缩'的值流,附加了该值的出现次数,例如:

let a = [ (),1; (),4; (),3;]
Run Code Online (Sandbox Code Playgroud)

我想'解压缩'那个序列并发出原始序列.我可以定义一个重复组合来产生!为此

let rec repeat avalue n =  seq { if n > 0 then 
                                    yield avalue; yield! repeat avalue (n-1) }

let b = seq { for v,n in a do
                yield! repeat v n }  |> Seq.toList
Run Code Online (Sandbox Code Playgroud)

有没有办法以组合的形式表达内联?

let c = a |> Seq.XXX(fun e -> ...) 
Run Code Online (Sandbox Code Playgroud)

f#

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

ddply用于创建列表的并集

我有一个包含customerid和列表的数据框.我想合并那些与同一客户有关的清单.

library(plyr)
subsets <- list(c("a", "d", "e"), c("a", "b", "c", "e"))
customerids <- c(1,1)
transactions <- data.frame(customerid = customerids,subset =I(subsets))
> transactions
  customerid     subset
1          1    a, d, e
2          1 a, b, c, e
Run Code Online (Sandbox Code Playgroud)

如果我想将子集与ddply合并,我会得到一个扩展的结果

> ddply(transactions, .(customerid), summarise, subset=Reduce(union,subset))
  customerid subset
1          1   a
2          1   d
3          1   e
4          1   b
5          1   c
Run Code Online (Sandbox Code Playgroud)

虽然我希望所有的结果都在一排.

r plyr

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

agda中的重写和等式推理

通过重写,我有一个简洁的语法(例如,没有调用同余属性),我可以证明:

-- * is associative
*-assoc : ? a b c ? (a * b) * c ? a * (b * c)
*-assoc zero b c = refl
*-assoc (succ a) b c rewrite *+-dist b (a * b) c | *-assoc a b c = refl
Run Code Online (Sandbox Code Playgroud)

但是,我的小脑子可以更好地解析这个证明

--written in equational style
*-assoc' : ? a b c ? (a * b) * c ? a * (b * c)
*-assoc' zero b c = refl
*-assoc' (succ a) …
Run Code Online (Sandbox Code Playgroud)

agda

7
推荐指数
0
解决办法
451
查看次数

haskell中函数参数的模式匹配

在定义函数的代码中,有一个奇怪的"模式匹配" (cradleRootDir -> projdir)

我想这意味着应用内联函数并将结果绑定到名称projdir.

这个结构的名称是什么?

withGhcModEnv' :: (IOish m, GmOut m) => (FilePath -> (Cradle -> m a) -> m a) -> FilePath -> Options -> ((GhcModEnv, GhcModLog) -> m a) -> m a
withGhcModEnv' withCradle dir opts f =
    withCradle dir $ \crdl ->
      withCradleRootDir crdl $
        f (GhcModEnv opts crdl, undefined)
 where
   withCradleRootDir (cradleRootDir -> projdir) a = do
       cdir <- liftIO $ getCurrentDirectory
       eq <- liftIO $ pathsEqual projdir cdir
       if not eq
          then …
Run Code Online (Sandbox Code Playgroud)

haskell

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

无法演绎超类

在下面的代码中,GHC在实例的定义中找不到Functor Monoidal实例.

为什么不GHC推断出给定Applicative约束条件,则Functor 是已经什么地方?(这个推理'能力'有名字吗?)

import Prelude hiding (Applicative (..), Monad (..))

class Functor f => Applicative f where
  pure :: a -> f a
  (<*>) :: f (a -> b) -> f a -> f b

class Functor f => Monoidal f where
   unit::f ()
   (*) ::f a -> f b -> f (a,b)

instance Applicative f => Monoidal f where
  unit = pure ()
  a * b = undefined
Run Code Online (Sandbox Code Playgroud)

我知道当然Functor f …

haskell typeclass

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

缺少绑定时,haskell 中缺少多态推理

类型是否通用取决于绑定的存在与否。这可能会导致意外故障。

这是正常行为吗,有什么原因吗?

{-# LANGUAGE RankNTypes #-}


data IFix0 f a   = IFix0 ( f (IFix0 f) a   ) | In0 a 


msfcata0_OK :: (forall r. (a -> r a) -> (r a -> a) -> f r a -> a) -> (forall z. IFix0 f z) -> a 
msfcata0_OK f = go where go (IFix0 x) = f In0 go x
                         go (In0 v)   = v


msfcata0_KO :: (forall r. (a -> r a) -> (r a -> a) -> …
Run Code Online (Sandbox Code Playgroud)

polymorphism haskell

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

来自haskell中实例搜索的证明树

无论如何要欺骗haskell(原始haskell?源插件?任何东西?)以获得类型类如何派生的证明树?

我想要什么,使用下面的例子说:

**Diff**
           --      --
           Id      Id
----       ----------
Unit       Prod Id Id
---------------------
Sum Unit (Prod Id Id) 
Run Code Online (Sandbox Code Playgroud)
**Diff**
           --      --
           Id      Id
----       ----------
Unit       Prod Id Id
---------------------
Sum Unit (Prod Id Id) 
Run Code Online (Sandbox Code Playgroud)

haskell

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

重新加载类型提供者

我正在使用fsharp powerpack示例中提供的MiniCSVTypeProvider.

不幸的是,它认为提供的值是浮动的,而我的是各种(变化的)格式.因此,我重写了MiniCsvType提供程序,以便始终提供字符串,将解析工作留给调用者.

但由于某些奇怪的原因,在解除引用旧DLL并包含对新DLL的引用之后,它使用旧类型提供程序继续提供浮动.我不得不更改程序集和类的名称以使VS刷新它.

有没有其他方法可以撤销/重置以前的类型提供程序,以便VS将更改考虑在内?

f# visual-studio type-providers

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

系统范围的绑定重定向为F#4.0.0.0到4.3.0.0

我有一些xUnit测试失败的常见

Could not load file or assembly 'FSharp.Core, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. 
The system cannot find the file specified.
Run Code Online (Sandbox Code Playgroud)

为了执行机器范围的重定向,我添加到文件中

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config 

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a"
                        culture="neutral"/>
      <bindingRedirect oldVersion="4.0.0.0" newVersion="4.3.0.0"/>
    </dependentAssembly>
  </assemblyBinding>
</runtime>
Run Code Online (Sandbox Code Playgroud)

你有更好的方法来处理4.0/4.3问题吗?

.net f# assembly-binding-redirect

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

免费monad和免费操作

来形容免费单子的一种方式是说,这是一个最初在endofunctors的类别(某些类别的幺C),其对象是endofunctors从CC,箭头是它们之间的自然变换.如果我们CHask的是endofunctor所谓Functor在Haskell,这是由函子* -> *,其中*代表的对象Hask

通过initiality,从endofunctor任何地图t到幺mEnd(Hask)诱导从地图Free tm.

所述否则,从算符任何天然转化t到单子m诱导从天然转化Free tm

我原以为能够编写一个函数

free :: (Functor t, Monad m) => (? a. t a ? m a) ? (? a. Free t a ? m a)
free f (Pure  a) = return a
free f (Free (tfta :: t …
Run Code Online (Sandbox Code Playgroud)

monads haskell category-theory free-monad

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