小编mus*_*shi的帖子

为什么Haskell模式必须是线性的?

禁止代码示例(我希望能够编写):

isWaiting :: Eq a => a -> PriorityQueue a -> Bool
isWaiting x EmptyQueue = False
isWaiting x (Push x y p) = True 
isWaiting x (Push z y p) = isWaiting x p 
Run Code Online (Sandbox Code Playgroud)

相同的逻辑,但有效的变体:

isWaiting :: Eq a => a -> PriorityQueue a -> Bool
isWaiting x EmptyQueue = False
isWaiting x (Push z y p) = if x == z then True else isWaiting x p
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming pattern-matching

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

Python函数默认参数随机值

在下面的代码中,按照预期生成了一个随机值:

import random

for i in range(10):
    print(random.randint(0,10))
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用函数,这将不起作用:

import random

def f(val: int = random.randint(0,10)):
    print(val)

for i in range(10):
    f()
Run Code Online (Sandbox Code Playgroud)

为什么第二个代码片段的结果总是相同的数字?我能找到的最相似的问题是这个,但它指的是一种不同的语言(我不掌握)。

python random function

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