我正在练习明天练习考试.该文本告诉我将数据库实现到库中,以定义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],它在我的数据库中按名称搜索并向我提供该人请求的书籍.
我该怎么做呢?
众所周知,如果自然数的平方根不是整数,那么它是不合理的.这种平方根的十进制扩展是无限的,没有任何重复模式.
二的平方根是
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 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 解决这个问题?
以下代码正确地考虑在Haskell中进行currying.以下是haskell中添加的示例
f = \x -> \y -> x + y
Run Code Online (Sandbox Code Playgroud)
总的来说,在函数式编程中使用lamdbas实现了currying?
我尝试用类型指定组合两个函数.
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) 我目前有这段代码:
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做了一个完全不同的事情,所以在这一点上我知道为什么它不起作用,但我不知道如何替换它.
我必须将以下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