pointfree

    3热度

    2回答

    我被一个看似微不足道的问题困住了:如果函数以无点的方式写入,我无法处理函数中的异常。 考虑这两个功能: let divide1 x y = try x/y with | :? System.DivideByZeroException -> 42 let divide2 = try (/) with | :?

    7热度

    2回答

    在haskell.org我碰到这点自由风格的函数来了(()$())(==)的含义,被称为 “猫头鹰”。 ((.)$(.)) 它的类型签名是 (a -> b -> c) -> a -> (a1 -> b) -> a1 -> c。 这相当于 f a b c d = a b (c d) 显然, ((.)$(.)) (==) 1 (1+) 0 回报True。 所以我的问题是: 是什么在类型签名a1是什

    3热度

    4回答

    在一个Haskell项目中,我给出了调试,代码中有map只有一个参数 - 一个列表 - 被传递。 例如 printReports :: [Report] -> IO() printReports = putStrLn . unlines . map show 和 printRuns' :: [Run] -> IO() printRuns' = putStrLn . unlines . ma

    3热度

    1回答

    作为一个侧面的问题在这里What's the easiest way to do something like delegate multicast in F#我认为用适当的标题提出一个完整的问题可能会更好。 该版本不会造成递归:(这里notify似乎不可改变的d) let mutable notify = fun x -> x let wrap f i = f(i); i let a x

    1热度

    2回答

    可能重复: What are advantages and disadvantages of “point free” style in functional programming? 当我在大学,我不得不学习哈斯克尔。在我的一个课程中,我们学习了如何使用无点功能。除了学术观点以外,还有点自由式编程的优点吗? 就效率而言有没有什么区别?在有很多代码行的应用程序中,点没有更难理解的地方?

    21热度

    2回答

    我在Haskell以下功能 agreeLen :: (Eq a) => [a] -> [a] -> Int agreeLen x y = length $ takeWhile (\(a,b) -> a == b) (zip x y) 我想学习如何写“地道”的Haskell,这似乎优先使用.和$而不是括号,并且在可能的情况下也优选无点代码。我似乎无法明确地摆脱提及x和y。有任何想法吗? 我想我

    6热度

    2回答

    我想写一个功能点,免费在Haskell,让事情变得简单可以说,我想使这个功能: maxmin :: Ord a => a -> a -> a -> a maxmin a b c = max a (min b c) 我可以改善这 maxmin a b = (max a) . (min b) 但有什么办法摆脱a和b?

    8热度

    3回答

    我保持重用lambda表达式如 \x -> (f x, g x) 其中I施加输入到两个相同的功能和封装该结果中的一对。我可以写一个函数来捕获这个 combine :: (a -> b) -> (a -> c) -> a -> (b,c) combine f g x = (f x, g x) 现在上面的lambda表达式只是combine f g。我有两个问题。 我很想知道是否有一个标准的

    3热度

    2回答

    我是一个试图学习哈斯克尔的新手,我试图寻找类似的东西在其他论坛,但无法找到类似的问题。 addPoly :: (Num a)=>[[a]]->[a] addPoly x = map sum $ transpose x 运行正常 ,但是当我在最后它的错误删除X出来 addPoly :: (Num a)=>[[a]]->[a] addPoly = map sum $ transpose 错

    5热度

    2回答

    我经常需要将多个函数映射到相同的数据。我已经实现dpMap为做到这一点我 dpMap fns = (`map` fns) . flip ($) dpMap是一个功能,这是否意味着我读的数据DT只有一次(像一样的输入馈电路无谓的系统电路的提醒。只是管道没有数据)? 作为一个例子,考虑计算列表dt的最小值和最大值。 minimax dt = (dpMap [minimum, maximum]) d