小编Swi*_*ake的帖子

将Int除以Int并返回Int

我需要一个函数,它获得两个Ints(ab)并返回A/Bas Int.我相信这A/B将永远是一个整数.

这是我的解决方案:

myDiv :: Int -> Int -> Int
myDiv a b = 
      let x = fromIntegral a
          y = fromIntegral b
      in truncate (x / y)
Run Code Online (Sandbox Code Playgroud)

但是想找到更简单的解决方案.像这样的东西:

myDiv :: Int -> Int -> Int
myDiv a b = a / b
Run Code Online (Sandbox Code Playgroud)

如何将Int分为Int并获取Int?

int haskell

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

Python枚举的奇怪行为

我知道我不应该在循环中修改列表,但出于好奇,我想知道为什么以下两个示例之间的迭代次数不同.

例1:

x = [1, 2, 3, 4, 5]
for i, s in enumerate(x):
    del x[0]
    print(i, s, x)
Run Code Online (Sandbox Code Playgroud)

例2:

x = [1,2,3,4,5]
for i, s in enumerate(x):
    x = [1]
    print(i, s, x)
Run Code Online (Sandbox Code Playgroud)

示例1仅运行3次,因为何时i==3,len(x)==2.

尽管示例2运行了5次len(x)==1.

所以我的问题是,是否在循环开始时enumerate生成完整的(index, value)对列表并迭代它?或者它们是在循环的每次迭代中生成的?

python iterator loops list enumerate

18
推荐指数
3
解决办法
3512
查看次数

Haskell:FRP Reactive Parsec?

Parsec在Haskell中是否(或可能有)反应(或任何其他纯函数解析器)?

简单地说,我想通过char自己提供解析器char,并获得足够多的结果以获得输出.

或者更简单,我怎么能这样做foldr或者至少map呢?

我们是否需要不同版本来支持这种反应行为?

编辑

我的问题特别是关于FRP.我用一个解析器作为例子,这是我能想到的最好的解释我的问题并大致了解我需要的东西.

我相信FRP不只是关于UI,对吗?

haskell parsec frp reactive-programming

10
推荐指数
3
解决办法
811
查看次数

如何在Haskell中的约束中应用通配符?

这听起来微不足道,但我无法找出我应该做的事情.

以下是我的类型定义:

data CDeq q a = Shallow (q a)
              | Deep{ hq   ? q a
                    , susp ? CDeq q (q a)
                    , tq   ? q a }
Run Code Online (Sandbox Code Playgroud)

我希望它有一个实例Show.

由于GHC不允许deriving在这里,我只是试着自己写一个:

instance (Show a, Show ????) => Show (CDeq q a) where
    ....
Run Code Online (Sandbox Code Playgroud)

但我卡住了

我不知道如何for all type v, (q v) can be shown在Haskell中表示这一点.

我不能简单地做以下事情:

instance (Show a, Show (q a)) => Show (CDeq q a) where
    ....
Run Code Online (Sandbox Code Playgroud)

因为要显示CDeq q (q a),Show …

haskell

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

Haskell和Awesomium的运行时DLL问题

我正在尝试运行依赖于Awesomium库的Haskell程序.我已编译它但在运行时遇到以下问题:

找不到程序起始地址......

大致翻译,它表示无法在DLL文件[我的可执行文件的路径]中找到awe_history_entry_get_visit_count的过程起始地址.

似乎它试图从我的程序中加载该符号而不是awesomium.dll.

  • 我在Windows 10上
  • 我正在使用堆栈作为我的构建工具
  • 该程序是32位(i386),因为这是Awesomium支持的唯一架构
  • extra-libraries.cabal文件的字段中引用了我需要的DLL

任何帮助或提示将不胜感激.

dll haskell cabal awesomium

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

使用更高的类型变量导出

假设我有一个多态类型,其中一个参数是一个更高级的类型(* -> *).

data Tricky m = Tricky { numbers :: m Int, genesis :: m String }
Run Code Online (Sandbox Code Playgroud)

是否有一种在不使用奥术和不安全语言扩展的情况下为这些类型派生实例的一般方法?

我尝试启用,StandaloneDeriving以便我可以指定上下文:

deriving instance Show (m Int) => Show (Tricky m)
Run Code Online (Sandbox Code Playgroud)

但GHC然后抱怨约束不小于实例头,并指出我的方向UndecidableInstances.

总结一下:

1.我应该简单地与这一建议一起去,或者是有没有更好的办法?

2.有没有提议让这个过程更容易?

3.是它在某种程度上执迷不悟想获得"高kinded"实例?为一些具体类型派生实例会更好(例如Vector,[].Set)

haskell ghc type-kinds

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

使用 DuplicateRecordFields 创建镜头

您将如何使用新DuplicateRecordFields启用的镜头生成镜头?

我已经尝试使用makeLenses,但没有生成任何内容任何内容

我还尝试使用限定符导入我的构造函数以防止字段和镜头之间的名称冲突,但这也无济于事。

模板-haskell 是否有一些未解决的问题,因为它与这个新扩展有关(我在 GHC 错误跟踪器中找到了一张关于该效果的票,但它已被关闭),还是我遗漏了一些明显的东西?

haskell ghc haskell-lens

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

extra-deps 中的 Git 存储库

使用 引用特定版本的git存储库的正确方法是Stack什么?

堆栈抱怨在第一场出现的语法错误extra-deps的部分stack.yaml。下面的代码片段基于官方 Stack 文档中的一个示例,我不太确定为什么它不起作用。

# Dependency packages to be pulled from upstream that are not in the resolver
# (e.g., acme-missiles-0.3)
extra-deps:
- git: https://github.com/jwaldmann/moo
  commit: b429a7d371c0b268a4bb8dbea8044054aaf04cd5
- git: https://github.com/jwaldmann/monad-mersenne-random
  commit: d1f949fe60dc0c0cfbd310b339fe7fd5ecf4c5f5
- gray-code-0.3.1
#extra-deps: [gray-code-0.3.1]
Run Code Online (Sandbox Code Playgroud)

git haskell github haskell-stack

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

获取不在索引列表中的列表元素

我有一个索引列表:

idx = [1,4,5]
Run Code Online (Sandbox Code Playgroud)

和感兴趣的列表:

mylist = ['a','b','c','d','e','f']
Run Code Online (Sandbox Code Playgroud)

我想从mylist索引不在idx.

所以结果应该是:

['a','c','d']
Run Code Online (Sandbox Code Playgroud)

我也可以拆分mylist['a','c','d']and ['b','e','f'],因为无论如何我都会使用它们。

一个 numpy 版本是可以的,尽管我现在实际上只有两个列表。

python numpy list

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

正则表达式匹配任何大于 5 的数字

我需要匹配大于 5 的失败计数。

string="""fail_count 7

fail_count 8

fail_count 9

fail count 7

fail_count 71

fail_count 23
"""

match = re.search(r'fail(\s|\_)count\s[5-9]', string)

if match:

    print match.group()
Run Code Online (Sandbox Code Playgroud)

我最多可以匹配 9,但是如果我将范围增加到 999,它就不起作用。

regex python-2.7

0
推荐指数
1
解决办法
4249
查看次数

在 Swift 中,是否有将数组拆分为前缀和后缀的内置方法?

Swift Arrays上是否有一个内置方法将它分成两部分,保留所有元素的顺序?

类似于Array.prefix和 的东西Array.suffix,合二为一?

我知道partitionand split,但它们分别不保留顺序和大小。

例子:

[1,2,3,5,6,2,3,5].cut(where: { $0 < 5 })
>>> ([1,2,3], [5,6,2,3,5])
Run Code Online (Sandbox Code Playgroud)

swift

0
推荐指数
1
解决办法
108
查看次数