Oz程序如何区分列表和非列表?

时间:2015-10-19 09:53:38

标签: list haskell scalar oz

Oz程序如何区分List类型的值和非列表的值(例如简单标量值1或字符串{{1}之间的区别}}? (与Haskell一样,Oz是否将字符串视为字符列表?)

2 个答案:

答案 0 :(得分:2)

  

Oz程序如何区分List类型的值与非列表的值之间的区别,例如简单标量值1或字符串' Hello'?

List.is

  

(和Haskell一样,Oz会将字符串视为字符列表吗?)

您在链接的页面上解释了这一点:

  
    

对于其元素对应于字符代码的列表,允许使用其他符号变体。用这种表示法写的列表称为字符串

  

另见

  
    

This chapter describes modules for handling data encoding textual information. Characters are encoded as integers. Strings are lists of characters. Virtual Strings are atoms, strings, byte strings, integers, and floats closed under virtual concatenation encoded by tuples with label '#'.

  

答案 1 :(得分:2)

这是Alexey在他的回答中提到的List.is函数的可能实现。

fun {IsList Xs}
   case Xs of nil then true
   [] _|Xr then {IsList Xr}
   else false
   end
end