首页 文章

检查参数是否为列表

提问于
浏览
1

如果参数x是一个列表,是否有可能在SML中编写一个返回true的通用函数?

fun isList(x) = .......

预期用途:

- isList(4);   (* returns false *)
- isList([1, 2, 3]); (* returns true *)

2 回答

  • -1

    有可能你可以尝试模式匹配然后处理适当的异常 . 但无论哪种方式都会破坏函数式编程的重点 . 在函数式编程中,目标是使用抽象的类型构建有用的函数 . 任何类型特定的函数调用都应该作为输入抽象出来 .

    map: ('a -> 'b) -> 'a list -> 'b list 为例 . 整个目标是将您想要执行的操作抽象为传入的函数(以curry形式) .

    因此输入类型的套管错过了这一点 . 因此,如果您希望根据输入类型执行不同的操作,则应将该操作作为函数输入传递 .

  • 0

    在SML中是否可以编写一个通用函数,如果参数x是一个列表,则返回true?

    没有 .

    - fun foo 4 = false
        | foo [] = true;
    ! Toplevel input:
    !     | foo [] = true
    !            ^
    ! Type clash: pattern of type
    !   'a list
    ! cannot have type
    !   int
    

相关问题