- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面的函数createTuple
可以表示为pointfree吗?
let createTuple = fun v -> (v, v*2)
createTuple 2 |> printfn "%A" // (2,4)
最佳答案
F# 库没有提供很多用于以无点样式编写代码的函数(主要是因为它不是编写 F# 的特别惯用的方式),因此您不能仅使用什么来编写 createTuple
函数在核心库中可用。
如果您真的想这样做,您可以定义几个辅助组合器来处理元组:
/// Duplicates any given value & returns a tuple with two copies of it
let dup a = a, a
/// Transforms the first element using given function
let mapFst f (a, b) = (f a, b)
/// Transforms the second element (not needed here, but adding for symmetry)
let mapSnd f (a, b) = (a, f b)
有了这些,您可以以无点方式实现您的功能:
let createTuple = dup >> mapSnd ((*) 2)
这与您的函数做同样的事情。我认为要破译这里发生的事情要困难得多,而且我永远不会真正编写该代码,但这是另一个问题:-)。
关于f# - 创建元组 pointfree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39230520/
我正在尝试移植以下 Haskell 代码 (http://codepad.org/MMydRCxo) foo :: Int -> Int -> Int -> Maybe Bool foo a b c
好吧,事实证明我在我的程序代码中定义了这个函数: st_zipOp :: (a -> a -> a) -> Stream a -> Stream a -> Stream a st_zipOp f xs
我有一个函数对象: const src = { foo: str => str.toUpperCase(), bar: str => str + str, baz: str => str.
下面的函数createTuple可以表示为pointfree吗? let createTuple = fun v -> (v, v*2) createTuple 2 |> printfn "%A" /
我想编写一个 Haskell 函数,它返回一个附加到自身计数时间的列表(如 Python 中的 lst * count)。 我的第一次尝试是: self_append_n :: Int -> [a]
在 Haskell 中,我定义了一个乘法表生成器函数,如下所示: multTable :: [[Int]] multTable=map (\b -> map (b*) [1..12]) [1..12]
Learn You a Haskell使用以下 Prob 类型讨论“制作 Monad”: import Data.Ratio newtype Prob a = Prob { getProb :: [(
当参数应该散布在柯里化(Currying)组合函数中时,我试图弄清楚是否存在编写无点组合函数的模式 即(使用 Ramda): add_1_and_multiply = (add, mul) => R.
我想知道我是否可以像这样使用 Swift/RxSwift 来使用 pointfree-style: class MyClass { private let ageService: Observa
我一直在重用 lambda 表达式,例如 \x -> (f x, g x) 我将相同的输入应用于两个函数并将结果封装成一对。我可以写一个函数来捕捉这个 combine :: (a -> b) -> (
我有这个功能 rulesApply :: [PhrasePair] -> Phrase -> Phrase rulesApply pp = try (transformationsApply "*"
pointfree 函数可以返回一个元组吗?例如,以下是否可以用 pointfree 风格编写(其中 f1、f2 和 f3 已被定义): (\t -> (f1 t, f2 t, f3 t)) 在这种情
我想定义一个函数来计算列表中满足给定谓词的元素数量: number_of_elements :: (a -> Bool) -> [a] -> Int number_of_elements f
我怎样才能使以下函数成为 pointfree(使用 Ramda)? const prefixAll = R.curry((prefix, list) => R.map(R.concat(prefix)
可以this完成 pointfree 了吗? var joinByKey = R.curry(function(key, model){ return R.assoc(key, R.join(
我有一些谓词,例如: is_divisible_by_13 = lambda i: i % 13 == 0 is_palindrome = lambda x: str(x) == str(x)[::-
我正在以无点风格查看 Haskell 中的一些函数。在尝试重写一些简单的示例时,我卡在了这个上 func a b c d = sum $ take 2 $ sort [a, b, c, d] 如何将参
我在 ramda.js 中编写 pointfree 风格的函数时遇到问题,想知道是否有人可以帮助我。 getEnv 函数读取环境变量,如果找不到,则将其记录到控制台。 这是我的代码 const env
当我尝试以 pointfree 风格编写 JavaScript 时,我发现如果强制每个函数都采用这种风格,有时会失去其可读性。例如: import R from 'ramda' const ceil
鉴于下面的功能,如何将其转换为无点样式?使用 Ramda 的 prop 会很好和 path并跳过数据参数,但我无法弄清楚正确的语法。 const mapToOtherFormat = (data) =
我是一名优秀的程序员,十分优秀!