小编Dan*_*iel的帖子

lambda函数在bash中

有没有办法在bash中实现/使用lambda函数?我想的是:

$ someCommand | xargs -L1 (lambda function)
Run Code Online (Sandbox Code Playgroud)

bash lambda

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

F#函数调用语法混乱

我有一段代码:

links
    |> Seq.map (fun x -> x.GetAttributeValue ("href", "no url"))
Run Code Online (Sandbox Code Playgroud)

我想改写为:

links
    |> Seq.map (fun x -> (x.GetAttributeValue "href" "no url"))
Run Code Online (Sandbox Code Playgroud)

但是F#编译器似乎并不喜欢这样.我认为这两个函数调用是可以互换的:

f (a, b)
(f a b)
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

无法从此代码位置访问带有2个参数的成员或对象构造函数"GetAttributeValue".方法'GetAttributeValue'的所有可访问版本都有2个参数.

这似乎很有趣,因为它似乎表明它需要我给它的东西.我在这里错过了什么?

f#

21
推荐指数
1
解决办法
9124
查看次数

Enumerable.Intersperse的扩展方法?

我从Haskell 学到了散布函数,并一直在寻找c#中的实现.

Intersperse有2个参数,一个IEnumerable <T>源和一个T元素.它返回一个IEnumerable,其中元素插入源的每个元素之间.

一种可能的用例是在整数列表之间放置一个任意整数,例如:

// returns: {1, 0, 2, 0, 3}
(List<int>() {1, 2, 3}).Intersperse(0);
Run Code Online (Sandbox Code Playgroud)

这是string.Join(...)的一般情况.

c# ienumerable

9
推荐指数
2
解决办法
1156
查看次数

Lisp中的Ant(或NAnt)

在他的文章The Lis of Lisp中,Slava Akhmechet以Ant/NAnt为例向人们介绍了lisp.在lisp中是否有Ant/NAnt的实现?在哪里可以使用实际的lisp代码而不是xml来定义东西?我不得不处理为NAnt创建新增内容的问题,并且希望能够以Slava显示的方式绕过xml系统.

lisp ant

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

我在哪里可以找到Haskell的完整括号?

GHCI中是否有一种方法可以显示完整括号的声明版本?我发现自己有时想这样做,以帮助我理解一段我不熟悉的代码.有时候大师的简洁性让我们为n00bs掩盖了一些东西,任何帮助我打破这些野兽的东西似乎都有所帮助.

compiler-construction haskell ghc

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

我可以获得静态解析类型参数的类型吗?

说,我有这样的事情.它没有编译,但你可以看到我正在尝试做什么.我试图谷歌每个方向,但没有骰子.可以这样做吗?

let inline read (s:string) : ^x =
    let parsed = (^x : (static member ofString: string -> ^x option) (s))

    // this is the bit I'm not sure how do to. This doesn't compile.
    // I'm trying to determine what the statically chosen type for ^x is.
    let t = typeof<^x>

    match parsed with
    | Some y -> y
    | None -> failwithf "can't parse %s into %s" s (t.Name)
Run Code Online (Sandbox Code Playgroud)

f#

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

用于线程提示的gmail头文件

有没有办法帮助gmail制作线程?我们目前正在使用相同的主题来做到这一点,但这真的让这个主题变得很糟糕.

gmail

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

如何将包含在monad中的列表中的元素取出来

有点谜题我想知道你是否可以帮我澄清一下.

让我们定义一个返回列表的函数:

let f = replicate 3
Run Code Online (Sandbox Code Playgroud)

我们想要做的是将此函数映射到无限列表,连接结果,然后只获取与谓词匹配的内容.

takeWhile (< 3) $ concatMap f [1..]
Run Code Online (Sandbox Code Playgroud)

大!返回[1,1,1,2,2,2],这就是我想要的.

现在,我想做类似的事情,但函数f现在将其结果包装在Monad中.在我的用例中,这是IO monad,但这适用于讨论我的问题:

let f' x = Just $ replicate 3 x
Run Code Online (Sandbox Code Playgroud)

要映射和连接,我可以使用:

fmap concat $ mapM f' [1..5]
Run Code Online (Sandbox Code Playgroud)

返回: Just [1,1,1,2,2,2,3,3,3,4,4,4,5,5,5]

如果我想使用takeWhile,这仍然有效:

fmap (takeWhile (< 3) . concat) $ mapM f' [1..5]
Run Code Online (Sandbox Code Playgroud)

返回:只[1,1,1,2,2,2].大!

但是,如果我列出了无限列表的列表,那么这不符合我的预期:

fmap (takeWhile (< 3) . concat) $ mapM f' [1..]
Run Code Online (Sandbox Code Playgroud)

似乎takeWhile永远不会发生.不知何故,我没有得到我期待的懒惰计算.我有点迷茫.

monads haskell types list

4
推荐指数
2
解决办法
935
查看次数

可组合的FLinq表达式

在c#中执行linq-to-sql时,可以执行以下操作:

var data = context.MyTable.Where(x => x.Parameter > 10); 

var q1 = data.Take(10); 
var q2 = data.Take(3); 

q1.ToArray(); 
q2.ToArray(); 
Run Code Online (Sandbox Code Playgroud)

这将产生2个单独的SQL查询,一个用TOP 10,另一个用TOP 3.在玩Flinq时,我看到:

let data = query <@ seq { for i in context.MyTable do if x.Parameter > 10 then yield i } @> 

data |> Seq.take 10 |> Seq.toList 
data |> Seq.take 3 |> Seq.toList 
Run Code Online (Sandbox Code Playgroud)

是不是做同样的事情.这里似乎做了一个完整的查询,然后在客户端进行"接听"调用.我看到的替代方案是:

let q1 = query <@ for i in context.MyTable do if x.Param > 10 then yield i } |> Seq.take 10 @> 
let q2 …
Run Code Online (Sandbox Code Playgroud)

f# linq-to-sql

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

解析JSON帖子

我有以下代码:

data Friend = Friend
              { friend_name :: Text
              , friend_inTwitter :: Bool
              , friend_twitterName :: Maybe Text
              }
$(deriveJSON (drop 6) ''Friend)
Run Code Online (Sandbox Code Playgroud)

这段JSON被发布到处理程序中,我很难获取它。我尝试了不同的方法,但让我将其中之一放在此处以产生建议:

postTestR :: Handler RepPlain
postTestR = do
value <- parseJsonBody_
return $ RepPlain $ friend_name value
Run Code Online (Sandbox Code Playgroud)

那是行不通的,我可以看到类型不匹配,但是我不确定用什么替换它。我还想看看如何解析以JSON形式发布的列表好友。

谢谢!

yesod

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

似乎quickCheck告诉我False不等于False?

一直在尝试编写自己的Prelude,并编写QuickCheck属性.写作Prelude进展顺利,但在进行QuickCheck时我已经设法被提前阻止.以下是我拥有的2个文件的片段:

- MyLude.hs

module MyLude where

import Prelude (Bool(..))

(&&) :: Bool -> Bool -> Bool
(&&) True a = a
(&&) _ _ = False
Run Code Online (Sandbox Code Playgroud)

- MyLudeTest.hs

module MyLudeTest where

import qualified MyLude as P

prop_test_and a b = a && b == a P.&& b
Run Code Online (Sandbox Code Playgroud)

然后在ghci我运行:

:load MyLudeTest.hs
:m +Test.QuickCheck
quickCheck prop_test_and
Run Code Online (Sandbox Code Playgroud)

并得到以下错误:

*** Failed! Falsifiable (after 1 test):
False
False
Run Code Online (Sandbox Code Playgroud)

让我感到困惑的是,我已经实现了(||)并为它实现了一个quickcheck属性,它与prop_test_and完全相同,并且似乎没有任何问题.我错过了什么?

haskell

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

标签 统计

f# ×3

haskell ×3

ant ×1

bash ×1

c# ×1

compiler-construction ×1

ghc ×1

gmail ×1

ienumerable ×1

lambda ×1

linq-to-sql ×1

lisp ×1

list ×1

monads ×1

types ×1

yesod ×1