令第三部分;:第11章sua| Prolog数据元素 第11章Ⅵ /isual Prolog数据元素 本章介绍 Visual| Prolog的数据元素,内容包括论 域段( Domains sections)、通用类型和根类型 ( Universal and root types)等。 2004.11.3 A|程序设计
第三部分:第11章 Visual Prolog数据元素 2004.11.3 AI程序设计 1 第11章 Visual Prolog数据元素 本章介绍Visual Prolog的数据元素,内容包括论 域段(Domains Sections)、通用类型和根类型 (Universal and Root Types)等
令第三部分;:第11章sua| Prolog数据元素 第11章isua| Prolog数据元素 11.1论域段 11.2通用类型和根类型 本章小结 本章习题 2004.11.3 A|程序设计
第三部分:第11章 Visual Prolog数据元素 2004.11.3 AI程序设计 2 第11章 Visual Prolog数据元素 11.1 论域段 11.2 通用类型和根类型 本章小结 本章习题
令第三部分;:第11章sua| Prolog数据元素 11.1论域段 个论域段在当前作用域内定义一组论域(参见接口、类声明和类实现)。 domains section domains domain Definition-dot-term-list-opt 论域定义 个论域定义,声明了一个当前作用域内已命名的论域。 domainDefinition domainName typeExpression 如果在右边的论域表示一个接口或一个复合论域,那么所定义的论域就是类 型表达式的同义词(即完全相同)。否则,所定义的论域称为类型表达式所指 示的论域的子类。在这里,论域名 domain Name应当是小写标识符。 有些地方必须使用论域名而不是类型表达式: )作为形式变元类型的声明; 2)作为一个常量或一个事实变量的类型; 3)作为列表论域中的类型 2004.11.3 A|程序设计
第三部分:第11章 Visual Prolog数据元素 2004.11.3 AI程序设计 3 11.1 论域段 一个论域段在当前作用域内定义一组论域(参见接口、类声明和类实现)。 domainsSection : domains domainDefinition-dot-term-list-opt 论域定义 一个论域定义,声明了一个当前作用域内已命名的论域。 domainDefinition : domainName = typeExpression 如果在右边的论域表示一个接口或一个复合论域,那么所定义的论域就是类 型表达式的同义词(即完全相同)。否则,所定义的论域称为类型表达式所指 示的论域的子类。在这里,论域名domainName应当是小写标识符。 有些地方必须使用论域名而不是类型表达式: 1) 作为形式变元类型的声明; 2) 作为一个常量或一个事实变量的类型; 3) 作为列表论域中的类型
令第三部分;:第11章sua| Prolog数据元素 11.1论域段 类型表达式 个类型表达式指示一种类型。 typeExpression: typeName compoundDomain listDomain referenceDomain predicateDomain integralDomain realdomain 2004.11.3 A|程序设计
第三部分:第11章 Visual Prolog数据元素 2004.11.3 AI程序设计 4 11.1 论域段 类型表达式 一个类型表达式指示一种类型。 typeExpression: typeName compoundDomain listDomain referenceDomain predicateDomain integralDomain realDomain
令第三部分;:第11章sua| Prolog数据元素 11.1.1类型名 个类型名或者是一个接口名,或者是一个值论域的 名字。值论域这一术语用来指定元素不可变的论域。这里 可以说,属于与接囗名相一致的论域的对象具有可变的声 明,任意其它论域的项都是不可变的。因此,实际上数值 类型是除了对象类型以外的其它类型。一个类型名指示与 现有论域的名称相应的类型。 2004.11.3 A|程序设计
第三部分:第11章 Visual Prolog数据元素 2004.11.3 AI程序设计 5 11.1.1 类型名 一个类型名或者是一个接口名,或者是一个值论域的 名字。值论域这一术语用来指定元素不可变的论域。这里 可以说,属于与接口名相一致的论域的对象具有可变的声 明,任意其它论域的项都是不可变的。因此,实际上数值 类型是除了对象类型以外的其它类型。一个类型名指示与 现有论域的名称相应的类型
令第三部分;:第11章sua| Prolog数据元素 11.1.1类型名 typeName interfaceName classQualifiedDomainName domainName className, domainName classqualifiedDomainNa me className lowercaseldentifier interfaceName lowercaseldentifier 这里, interfaceName是一个接口 名, domainName是一个值域 domainName 名,Css№ame是一个类名。 lowercaseldentifier 2004.11.3 A|程序设计
第三部分:第11章 Visual Prolog数据元素 2004.11.3 AI程序设计 6 11.1.1 类型名 typeName: interfaceName domainName classQualifiedDomainNa me interfaceName : lowercaseIdentifier domainName : lowercaseIdentifier classQualifiedDomainName : className :: domainName className : lowercaseIdentifier 这里,interfaceName是一个接口 名,domainName是一个值域 名,className是一个类名
令第三部分;:第11章sua| Prolog数据元素 11.1.1类型名 举例 domains newDomain 1= existing domain new Domain2 myInterface 在本例中,论域名是 existingDomain,接 口名 myInterface用来定义新的论域。 2004.11.3 A|程序设计
第三部分:第11章 Visual Prolog数据元素 2004.11.3 AI程序设计 7 11.1.1 类型名 举例 domains newDomain1 = existingDomain. newDomain2 = myInterface. 在本例中,论域名是existingDomain,接 口名myInterface用来定义新的论域
令第三部分;:第11章sua| Prolog数据元素 11.1.2复合论域 复合论域( Compound domains),也称作代数数据类型,用于 表示列表、树和其它树形结构的数值。在其简单形式中,复合论域用于 代表结构和枚举数值。复合论域可以递归定义,也可以相互或间接递归。 compounddomain alignment-opt functorAlternative-semicolon-sep-list alignment align integra/ConstantExpression 这里, integralConstantExpression是一个表达式,它必须是在编 译时间赋为整数。 2004.11.3 A|程序设计
第三部分:第11章 Visual Prolog数据元素 2004.11.3 AI程序设计 8 11.1.2 复合论域 复合论域(Compound Domains),也称作代数数据类型,用于 表示列表、树和其它树形结构的数值。在其简单形式中,复合论域用于 代表结构和枚举数值。复合论域可以递归定义,也可以相互或间接递归。 compoundDomain : alignment-opt functorAlternative-semicolon-sep-list alignment : align integralConstantExpression 这里,integralConstantExpression是一个表达式,它必须是在编 译时间赋为整数
令第三部分;:第11章sua| Prolog数据元素 11.1.2复合论域 如果一个复合论域包含一个算符选项,那么它被视为结构,并且具有与C语 言中的适当结构二进制兼容的表示法。 functor/ternative functorName functorName( formalArgument-comma-sep-list -opt 这里, functorName是一个算符选项的名称,它应当是小写标识符 Forma| Argument为: formalArgument typeName argument/ame-opt argumentName可以是任意标识符,编译器忽略它。复合论域是从它们派 生岀来的引用论域的子类,否则复合论域与任何其它论域都不具有这样的子类关 系。如果一个论域作为一个等价的复合论域进行定义,那么这两个论域是同义类 型而不是子类型。意思就是说它们是同一类型的两个不同名字。 2004.11.3 A|程序设计
第三部分:第11章 Visual Prolog数据元素 2004.11.3 AI程序设计 9 11.1.2 复合论域 如果一个复合论域包含一个算符选项,那么它被视为结构,并且具有与C语 言中的适当结构二进制兼容的表示法。 functorAlternative: functorName functorName ( formalArgument-comma-sep-list-opt ) 这里, functorName是一个算符选项的名称,它应当是小写标识符。 FormalArgument为: formalArgument : typeName argumentName-opt argumentName可以是任意标识符,编译器忽略它。复合论域是从它们派 生出来的引用论域的子类,否则复合论域与任何其它论域都不具有这样的子类关 系。如果一个论域作为一个等价的复合论域进行定义,那么这两个论域是同义类 型而不是子类型。意思就是说它们是同一类型的两个不同名字
令第三部分;:第11章sua| Prolog数据元素 11.1.2复合论域 举例 domains t1 = ffo gg(integer, t1) t1是一个带有两个选项的复合论域。第一个选项是空变元算符ff。 第二个选项是两个变元的算符gg,采用一个整型数论域和论域t1自身 作为参数。因此,论域t1是递归定义的。 以下表达式是论域t1的项: f gg(77,f() gg(33,gg(44,gg(55,ff()) 2004.11.3 A|程序设计 10
第三部分:第11章 Visual Prolog数据元素 2004.11.3 AI程序设计 10 11.1.2 复合论域 举例 domains t1 = ff(); gg(integer, t1). t1是一个带有两个选项的复合论域。第一个选项是空变元算符ff。 第二个选项是两个变元的算符gg,采用一个整型数论域和论域t1自身 作为参数。因此,论域t1是递归定义的。 以下表达式是论域t1的项: ff() gg(77, ff()) gg(33, gg(44, gg(55, ff())))