【问题标题】:In LISP, how do I define a function that requires three arguments that are all Strings that is NOT a list?在 LISP 中,如何定义一个需要三个参数的函数,这些参数都是不是列表的字符串?
【发布时间】:2015-10-15 01:55:26
【问题描述】:

例如,我将如何做

的 Java 等价物
public void threeArgs(String arg1, String arg2, String arg3)
{
blah blah blah
}

【问题讨论】:

  • 在 Lisp 中你不需要声明类型。
  • 在 Common Lisp 中,您可以调用 CHECK-TYPE 来测试参数是否属于特定类型。

标签: lisp


【解决方案1】:
(defun threeArgs (arg1 arg2 arg3)
  (declare (type string arg1 arg2 arg3))
  ...)

【讨论】:

    【解决方案2】:
    (defun threeArgs (arg1 arg2 arg3) ...)
    
    (threeArgs "x" "y" "z")
    

    正如 Barmar 所说,Lisp 不做静态类型。

    【讨论】:

    • 我觉得应该是“不需要……”
    • @Vatine:嗯。 AFAIK 静态类型由一些编译器完成,例如 CMUCL 的 Python,但不是任何 Lisp 标准的一部分。所以你的表述可能更接近事实。
    • 是的,SBCL 和 CMU CL 都基于类型信息进行了相当多的类型推断和优化。但是,从不需要类型信息。
    猜你喜欢
    • 1970-01-01
    • 2021-11-01
    • 2013-10-06
    • 2015-07-15
    • 2021-03-19
    • 2023-03-14
    • 2018-01-08
    • 2018-01-14
    • 1970-01-01
    相关资源
    最近更新 更多