我想编写一些调用给定参数指定的函数的代码.例如:
def caller(func):
return func()
Run Code Online (Sandbox Code Playgroud)
然而,我还想做的是为'caller'函数指定可选参数,以便'caller'使用指定的参数调用'func'(如果有的话).
def caller(func, args):
# calls func with the arguments specified in args
Run Code Online (Sandbox Code Playgroud)
有一种简单的pythonic方法吗?
我正在尝试修改我的函数式编程考试,并且对过去论文的第一个问题感到困惑,是的,我们不允许使用解决方案表,这里是过去论文中第一个问题的示例.
对于以下每个表达式,在Haskell中给出其类型(对于具有多种类型的表达式,只需给出一种类型).
Run Code Online (Sandbox Code Playgroud)(True, "hello", 42) [42, 4, 2] length [True] filter even
我个人认为,对于一个和两个的答案将是bool,String和int的元组以及一个int的列表,这是正确的假设吗?第二,你如何回答3和4,我确定长度为True只输出一个具有该长度的所有元素的列表,并且该过滤器甚至只是将一个int列表更改为所有偶数的列表,尽管如何我可以将此作为答案吗?
是否可以添加元素类型或css选择自己的事件函数?
就像是:
$("a").bind("blub", function() { alert("aaa" + this); });
$("a").get(0).blub();
Run Code Online (Sandbox Code Playgroud)
我想定义一些仅适用于某些特殊元素的函数,例如:
<div class ="myDivContainer"> ... </ div>应该具有以下功能:
$("myDivContainer").get(0).blub();
Run Code Online (Sandbox Code Playgroud)
但也许:
$("myDivSeparator").get(0).blub();
Run Code Online (Sandbox Code Playgroud)
这应该不起作用,因为它没有为它定义
这可能吗?!
有人可以解释一下(p:Char => Boolean)的意思吗?如何使用该参数?
def search(p: Char => Boolean): Boolean = {
}
Run Code Online (Sandbox Code Playgroud) 为什么我不能在Haskell中这样做?
[a * b | a <- [0..b], b <- [0..10]]
error: Variable not in scope: b
Run Code Online (Sandbox Code Playgroud)
如果使用列表理解是不可能的?还是我可以做些什么来达到目标?
我读过有关无标签决赛的内容,我认为这很棒。我想建立自己的这种模式的小例子,并解决了问题。
这是我的代码:
trait Calculator[F[_]] {
def sum(a: Int, b: Int): F[Either[Throwable, Int]]
def minus(a: Int, b: Int): F[Either[Throwable, Int]]
}
object calculatorInstances {
implicit val futureCalculator: Calculator[Future] = new Calculator[Future] {
override def sum(a: Int, b: Int) =
Future {
Try(a + b).toEither
}
override def minus(a: Int, b: Int) =
Future {
Try(a - b).toEither
}
}
}
import calculatorInstances.futureCalculator
def getPlusAndMinus[F[_]: Monad: Calculator](a: Int, b: Int): F[Either[String, Int]] = {
for {
sum <- Calculator[F].sum(a, b)
res <- …Run Code Online (Sandbox Code Playgroud) 我正在从Haskell Wikibook看一个简单的IO程序。该页面上显示的构造效果很好,但是我试图理解“如何”。
writeChar下面的函数采用一个文件路径(作为字符串)和一个字符,并将该字符写入给定路径的文件中。该函数使用括号来确保文件正确打开和关闭。在方括号中进行的三个计算中,“在中间进行运算”(据我所知)是一个lambda函数,可返回的结果hPutChar h c。
现在,hPutChar它本身具有的声明hPutChar :: Handle -> Char -> IO ()。这是我迷路的地方。我似乎已经过关h了hPutChar。我希望一个句柄能以某种方式引用打开的文件fp,但相反,它似乎是递归调用lambda函数\h。我没有看到这个lambda函数调用自身递归是如何知道写c在文件fp。
我想了解为什么不应该阅读此函数的最后一行(\h -> hPutChar fp c)。尝试以这种方式运行它会导致“无法将类型'[Char]'与'Handle'匹配”,鉴于hPutChar期望使用Handle数据类型而不是字符串,因此我认为这是明智的。
import Control.Exception
writeChar :: FilePath -> Char -> IO ()
writeChar fp c =
bracket
(openFile fp WriteMode)
hClose
(\h -> hPutChar h c)
Run Code Online (Sandbox Code Playgroud) 我目前正在尝试在函数内部生成列表。用户将传入一个参数,该参数将是Int。该函数的工作是生成一个列表,从开始1,一直到n。所以列表看起来像
[1....n]
Run Code Online (Sandbox Code Playgroud)
到目前为止,我所做的是:
iterate (+1) 1
Run Code Online (Sandbox Code Playgroud)
尽管这提供了正确的模式,但它会永远持续下去。我怎么能停在n?另外,我如何能够'1'在列表的末尾附加这样的内容:
[1...n,1]
Run Code Online (Sandbox Code Playgroud) 为什么不能在Haskell中导入Data.Stream?
Prelude> import Data.Stream
<no location info>: error:
Could not find module ‘Data.Stream’
Perhaps you meant Data.String (from base-4.12.0.0)
Run Code Online (Sandbox Code Playgroud) 下面的代码通过递归在Haskell中重新创建“ take”函数:
take' :: Int->[a]->[a]
take' 0 _=[]
take' _ []= []
take' n (x:xs)=x : take' (n-1) xs
Run Code Online (Sandbox Code Playgroud)
我想使用列表理解来创建'take'函数:
take' n a=[x|x<-a]
Run Code Online (Sandbox Code Playgroud)