小编Bak*_*riu的帖子

如何在列表中搜索匹配的项目?

我正在练习明天练习考试.该文本告诉我将数据库实现到库中,以定义Item可以是书籍或杂志的s.对于每本书,我保存了姓名+作者.每个Magazine我保存的名称:

 data Item = Book String String
      | Magazine String
      deriving(Show)

data Requisition = Req String Item

type Database = [Requisition]

exDB :: Database
exDB = [Req "John" (Book "PF" "HS"),Req "Jay"(Book "Apple" "Steve Jobs"),Req "Francis"(Magazine "Forbes")]

books :: Database -> String -> [Item]
books db name = {-- what's next?-}
Run Code Online (Sandbox Code Playgroud)

现在,我需要创建一个名为的函数books :: Database -> String -> [Item],它在我的数据库中按名称搜索并向我提供该人请求的书籍.

我该怎么做呢?

haskell list abstract-data-type

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

正确计算平方根数字扩展

项目欧拉的第80号问题是:

众所周知,如果自然数的平方根不是整数,那么它是不合理的.这种平方根的十进制扩展是无限的,没有任何重复模式.

二的平方根是1.41421356237309504880...,并且前一百个十进制数字的数字和是475.

对于前100个自然数,找到所有无理平方根的前100个十进制数字的数字和的总和.

这是我为这个问题制作的代码:

from decimal import *

from math import sqrt

getcontext().prec = 100


def digitalsum(n):
    sum = 0
    for a in n:
        sum += int(a)
    return sum
total = 0
for a in range(1, 101):
    if not sqrt(a) % 1 == 0:
        ans = str(Decimal(a).sqrt())
        ans = ans[2::]
        print(a)
        print(digitalsum(ans))
        print("-------")

        total += digitalsum(ans)
print(total)
Run Code Online (Sandbox Code Playgroud)

它显示错误的答案,我认为我一路上都错过了一些东西.任何形式的帮助表示赞赏.

python square-root

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

没有使用 python 3.2 命名模拟的模块

我可以使用 python 2.7、3.3 和 3.4 导入模拟,但是在使用 3.2 时出现以下导入错误。

Python 2.7.5 (default, Mar  9 2014, 22:15:05) 
>>> from mock import patch

Python 3.2.5 (default, Aug 25 2015, 09:22:32) 
>>> from mock import patch
...
ImportError: No module named mock
Run Code Online (Sandbox Code Playgroud)

如何为 Python 3.2 解决这个问题?

python python-3.2

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

在haskell中使用lambdas实现currying吗?

以下代码正确地考虑在Haskell中进行currying.以下是haskell中添加的示例

f = \x -> \y -> x + y
Run Code Online (Sandbox Code Playgroud)

总的来说,在函数式编程中使用lamdbas实现了currying?

lambda haskell currying

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

组成两个函数时出错

我尝试用类型指定组合两个函数.

foo :: Num a => a -> a
foo a = a + 2

bar :: Num a => a -> a
bar a = a * 2

fooBarCompose :: (Num a, Num b, Num c) => (a -> b) -> (c -> a) -> c -> b
fooBarCompose f g = f . g
Run Code Online (Sandbox Code Playgroud)

我的模块编译,但在运行时我调用

fooBarCompose bar foo
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

No instance for (Show (b0 -> b0))
  (maybe you haven't applied enough arguments to a function?)
  arising from a …
Run Code Online (Sandbox Code Playgroud)

haskell function-composition

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

使用不同的函数将映射应用于列表的每个元素

我目前有这段代码:

function string keys = map (xor 1) (map ord string)
Run Code Online (Sandbox Code Playgroud)

它从字符串中获取每个元素,并将xor与1一起使用.我想通过用键中的任何元素替换1来使地图函数更高级.

因此,举例来说,如果string == "Test"keys = [1,3,6,9]我会得到:

'T' xor 1
'e' xor 3
's' xor 6
't' xor 9
Run Code Online (Sandbox Code Playgroud)

有没有办法迭代所有键的元素,以便我可以实现这一点?我对Haskell很新,我对它的概念没有很好的把握.

我解决这个问题的尝试是:

function string keys = map (iterate xor keys) (map ord string)
Run Code Online (Sandbox Code Playgroud)

但我得到了一些错误,我猜这是因为迭代功能.

任何帮助将不胜感激!


正如我发布的那样,我注意到iterate做了一个完全不同的事情,所以在这一点上我知道为什么它不起作用,但我不知道如何替换它.

haskell functional-programming list

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

减少WHNF中的lambda表达式

我必须将以下lambda表达式减少为WHNF,但我不太清楚如何做到这一点:

(?x y. x 3) (+ 4) (+ 6 7)
Run Code Online (Sandbox Code Playgroud)

那么,我该怎么做?呼叫减少名称?

这个表达式(其他例子)(?z x. (?x. x) z) x在WHNF中了吗?

haskell lambda-calculus lazy-evaluation weak-head-normal-form

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