作为一个有面向对象编程背景的人,我对Clojure API设计的推荐方式有疑问。例如,在面向对象的语言(如Python)中,我将按照以下方式使用API:
api = someWebService()
api.setWriteApiKey(WRITE_API_KEY)
api.sampleloadSong('file.mp3')
在上面的例子中,我设置了 API 密钥一次并反复调用相关方法,而无需再次传递 API 密钥。在 Clojure 或任何其他 LISP 语言家族中,推荐的做法是什么?
我需要像这样在每个函数调用中传递密钥吗?
(sampleloadSong "WRITE_API_KEY" "file.mp3")
还有其他更好的方法吗?
(make-api "the key" ...) ... (sample-load-song api song)
。即使在命令式语言中,这实际上是一个相当合理的设计。 - om-nom-nom