小编Tar*_*sch的帖子

映射python字典中的值

鉴于{ k1: v1, k2: v2 ... }我想要{ k1: f(v1), k2: f(v2) ... }提供的字典,我传递了一个函数f.

有没有这样的内置功能?或者我必须这样做

dict([(k, f(v)) for (k, v) in my_dictionary.iteritems()])
Run Code Online (Sandbox Code Playgroud)

理想情况下我会写

my_dictionary.map_values(f)
Run Code Online (Sandbox Code Playgroud)

要么

my_dictionary.mutate_values_with(f)
Run Code Online (Sandbox Code Playgroud)

也就是说,如果原始字典被改变或创建了副本,对我来说无关紧要.

python dictionary map-function

219
推荐指数
4
解决办法
21万
查看次数

在vim中执行<Plug>命令

我最近发现了一个使用名为的vim插件<Plug>.例如,有一个<Plug>abc_def我想要执行的命令.

我尝试过:<Plug>abc_def类似的东西.没有任何效果.并:help <Plug>没有提供任何信息.

但是,我已经能够通过创建映射来执行它:map x <Plug>(unite_redraw).然后我可以按下来执行它x.

现在,有没有办法执行:<Plug>abc_def而不创建虚拟映射只是为了运行它?我使用的实际插件是Unite.

vim vim-plugin

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

Monoidal解析 - 它是什么?

我只是偶然发现了由Edward Kmett命名为" Monoids " 的幻灯片中的monoidal 解析这个术语.幻灯片始终使用haskell.

现在,在搜索这个词的时候,我发现只有极少数提及它,而且来自同一作者.所以我认为这个术语可以在这里解释.

那么,monoidal解析一些有趣和新的东西吗?它出现在除我链接到的幻灯片之外的任何地方吗?最重要的是它是什么?幻灯片本身似乎没有给出定义,也没有强调它.

parsing haskell monoids

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

Matlab - 用于匿名函数的循环

我对matlab很新,但我知道如何为循环和匿名函数做两件事.现在我想结合这些.

我想写:

sa = @(c) for i = 1:numel(biscs{c}), figure(i), imshow(biscs{c}{i}.Image), end;

但这是无效的,因为matlab似乎只想要换行符作为命令分隔符.我的代码以清晰的方式编写(没有函数头):

for i = 1:numel(biscs{c})
    figure(i)
    imshow(biscs{c}{i}.Image)
end
Run Code Online (Sandbox Code Playgroud)

我寻找一个解决方案,我可以用一个匿名函数在一行中编写它,就像我的第一个例子.如果我可以用另一种方式创建该函数,我也会很高兴,只要我不需要一个新的函数m文件.

matlab for-loop anonymous-function

16
推荐指数
2
解决办法
1万
查看次数

声明后自动实例派生

在Haskell中,在定义数据类型时,您可以选择自动派生某些实例,但是我可以推迟自动派生,甚至可以将其放在另一个库中吗?

这是一个例子:

在Haskell中自动导出是一个实时节省!

module MoneyModule where

data Money = Money Int
  deriving Show
Run Code Online (Sandbox Code Playgroud)

现在我想使用MoneyModule,但我也想要一个Read实例Money:

module ExternalModule where

instance Read Money where
  read = error "Can't this be done automatically instead?"
Run Code Online (Sandbox Code Playgroud)

但我真的更喜欢它自动派生,我知道如果只有MoneyModule作者自动派生Read实例,ghc可以做到.


我知道:

  • 最好MoneyModule通过使用缺少的实例修补问题来解决实际问题.
  • 孤立实例被认为是不好的.实例声明最好放在模块中,其中定义了类型类或数据类型.

在我的情况下,我无法遵循最佳实践,因为类型类与数据类型无关.我怀疑类型类模块和数据类型模块是否想要保存实例,因此我创建了第三个库,因为在某些应用程序中需要实例声明.

haskell typeclass

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

什么时候想要使用OneTuple?

在包装我只是偶然OneTuple 上hackage.我想知道它的目的,我确信作者并不是为了它的乐趣而创造它.那么这什么时候有用呢?很清楚它的作用,但不会在人们使用它的时候.

那么,当你可以从中受益时,任何人都知道任何很酷的例子吗?或者也许展示它背后的数学美?

haskell tuples

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

测试函数在python中返回迭代

我在测试返回迭代的python函数时遇到了困难,比如正在产生的函数或只返回一个iterable的函数,比如return imap(f, some_iter)return permutations([1,2,3]).

因此,使用排列示例,我期望函数的输出[(1, 2, 3), (1, 3, 2), ...].所以,我开始测试我的代码.

def perm3():
  return permutations([1,2,3])

# Lets ignore test framework and such details
def test_perm3():
  assertEqual(perm3(), [(1, 2, 3), (1, 3, 2), ...])
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为perm3()它是可迭代的,而不是列表.所以我们可以解决这个特殊的例子.

def test_perm3():
  assertEqual(list(perm3()), [(1, 2, 3), (1, 3, 2), ...])
Run Code Online (Sandbox Code Playgroud)

这很好用.但是,如果我有嵌套的iterables怎么办?这是迭代产生迭代?喜欢说出表达方式 product(permutations([1, 2]), permutations([3, 4])).现在这可能没有用,但很明显它会(一旦展开迭代器)就像这样[((1, 2), (3, 4)), ((1, 2), (4, 3)), ...].然而,我们不能只是包装list围绕我们的结果,因为这只会反过来iterable<blah>[iterable<blah>, iterable<blah>, ...].当然,我可以这样做map(list, product(...)),但这仅适用于2的嵌套级别.

那么,python测试社区在测试iterables时是否有解决问题的方法?当然,有些迭代物不能以这种方式进行测试,就像你想要一个无限的发生器一样,但是这个问题应该是足够普遍的,以便有人想到这个.

python testing iterator

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

Haskell有一个严格的Set容器吗?

如果我们看一下containers包裹.他们有Data.Map.Strict,但没有相应的Data.Set.Strict.它存在是否有意义?

containers haskell set strictness

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

Unix命令忽略以X开头的行

我目前正在使用不断返回警告的编译器,我不想看到警告.我注意到所有警告都以字符串"Note:"开头,所以我认为可以过滤掉这些行.

我编译

jrc *.jr
Run Code Online (Sandbox Code Playgroud)

是否有一个unix命令改变它给出的输出,不打印出以"Note:"开头的行?

unix sed

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

计算模数n

当用大数字进行模数计算时,你会遇到巨大的性能惩罚mod (123456789^987654321) n.相反,你必须使用自己的^内部计算mod n进行中间计算.

当然,我可以很容易地实现自己的功能,但是我必须为每个操作明确说出"mod n".相反,可以构建一个数值表达式树并推迟实际计算,并且在最终状态模数n只有一次.(见下面的代码)

我开始这是为了清楚地表明我的意思,但我想知道是否已经存在这种实现,它看起来非常有用,所以有人应该实现它.

module Modulo where

data Expr =
    V Integer 
  | Plus Expr Expr
  | Mult Expr Expr
  deriving (Eq, Show)

instance Num Expr where
  (+) = Plus
  (*) = Mult
  fromInteger = V

eval :: Integer -> Expr -> Integer
eval m (V i) = i `mod` m
eval m (Plus e1 e2) = (eval m e1 + eval m e2) `mod` m
eval m (Mult e1 e2) = (eval …
Run Code Online (Sandbox Code Playgroud)

haskell modulo

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