我对函数式编程相当陌生。我以前的编程经验主要是 Java。
用函数式语言设计函数时,传递原语还是集合更好?由于我缺乏函数式语言的知识,我觉得我无法通过选择一种或另一种来看到影响。
在我看来,传递一个集合会产生更清晰和更直观的代码(例如,传递一个名为 person 的地图而不是 name、surname 等)。另一方面,这会创建集合结构的依赖关系。也许这仅取决于您必须从该地图中使用的信息量。不确定...
我意识到这是一个公开的讨论,但我主要关心的是是否有一种事实上的方法来设计功能。
更新1
让我们假设我们有我之前说的人图,我们想要 str 它的内容。我想我们会做类似的事情:
;
(def person {:name "John" :surname "Doe"})
(defn str-person
"Give the full name of a person"
[person]
(apply str (interpose ", " (map #(get-in person [%]) [:surname :name]))))
; => Doe, John
; primitive alt
(defn str-person
"Give the full name of a person"
[name surname]
(str surname ", " name))
; => Doe, John
现在,我相信第一个解决方案更接近 FP 的含义,并且可以扩展等,但另一方面,它似乎有点矫枉过正。