[发明专利]拉姆达表达式有效
申请号: | 200680027768.1 | 申请日: | 2006-06-23 |
公开(公告)号: | CN101233487A | 公开(公告)日: | 2008-07-30 |
发明(设计)人: | H·J·M·梅杰;A·赫杰斯伯格;D·F·布克斯;M·J·瓦纳;L·伯洛格纳斯;G·S·凯茨泽伯格;P·A·豪拉姆;D·C·库尔卡尼 | 申请(专利权)人: | 微软公司 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 上海专利商标事务所有限公司 | 代理人: | 张政权 |
地址: | 美国华*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 拉姆达 表达式 | ||
背景
编程语言持续发展以便于程序员的说明以及高效的执行。在早期的计算机语言中,低级机器码是普遍的。采用机器码,计算机程序或构成计算机程序的指令是用机器语言或汇编语言来编写的,并由硬件(例如,微处理器)执行。这些语言提供了控制计算硬件的有效手段,但是对程序员而言非常难以理解和开发复杂逻辑。随后,引入了提供各层抽象的语言。因此,程序员可用较高级源语言在较高的级别上编写程序,该程序然后经由编译器或解释器转换成硬件理解的较低级机器语言。编程中的进一步进展提供了另外的抽象层,以允许比以前快得多地指定更高级的编程逻辑。然而,这些进步并不是在没有处理成本的情况下发生的。
编译器和/或解释器承担了将高级逻辑转换成可执行机器码的负担。一般而言,编译器和/或解释器是接收以源编程语言(例如,C、C#、Visual Basic、Java…)指定的程序并将由此提供的逻辑转换成可由硬件设备执行的机器语言的组件。然而,转换无需逐字完成。实际上,常规的编译器和/或解释器分析源代码并生成非常高效的代码。例如,程序员编写直观且为人们易于理解的陈述了操作逻辑流程的代码,但是这通常对计算机执行而言是低效的。编译器和/或解释器可标识该低效性并通过消除不必要的操作和/或重新排列指令的执行同时仍实现预期的结果而在硬件级上改进程序性能。以此方式,程序员可创建健壮且高效的软件程序。
概述
以下提出了简化概述以提供对所要求保护的主题的某些方面的基本理解。本概述并不是广泛综述。它并不旨在标识所要求保护的主题的关键/决定性要素,也不旨在描绘其范围。其唯一的目的是以简化形式提出某些概念作为以后提出的更详细描述的序言。
简言之,所提供的主题涉及拉姆达表达式以及这种表达式在命令性和/或面向对象的计算机编程语言中的应用。拉姆达表达式提供了比常规形式更简明的指定值或数据的方式。例如,拉姆达表达式可提供指定匿名方法的更简洁且功能性方式。
拉姆达表达式也可参与类型推导。拉姆达表达式本身无需具有类型。相反,它可具有参数类型和返回类型等等。为减少与拉姆达表达式的指定相关联的冗长性,这些类型不必明确规定。提供了用于基于上下文来推导这些类型的系统和方法。
另外,拉姆达表达式可便于重载解决。例如,在一方法被重载的情况中,拉姆达表达式可便于选择一特定方法。例如,在将拉姆达表达式用作重载方法的自变量时,该表达式的返回类型可用作选择特定方法的因素。
为实现上述和相关目的,此处结合以下描述和附图描述了所要求保护的主题的某些说明性方面。这些方面指示了可实施本主题的各种方式,所有这些都旨在落入所要求保护的主题的范围之内。当结合附图考虑以下详细描述时,其它优点和新颖特征将变得显而易见。
附图简述
图1是用于拉姆达表达式的执行系统的框图。
图2是用于支持拉姆达表达式的编程系统的框图。
图3是类型转换系统的框图。
图4是推导与拉姆达表达式相关联的类型的类型推导系统的框图。
图5是对拉姆达表达式进行类型检查的类型检查系统的框图。
图6是重载解决系统的框图。
图7是拉姆达表达式执行方法的流程图。
图8是编程方法的流程图。
图9是拉姆达表达式转换方法的流程图。
图10是与拉姆达表达式相关联的类型推导方法的流程图。
图11是示例性类型推导方法的流程图。
图12是重载解决方法的流程图。
图13是编译环境的示意性框图。
图14是示出合适的操作环境的示意性框图。
图15是示例计算环境的示意性框图。
详细描述
现在参考附图来描述本发明的各方面,在全部附图中相同的标号指代相同或对应的元素。然而,应当理解,附图和所涉及的详细描述并不旨在将所要求保护的主题限于所公开的具体形式。相反,本发明覆盖落入所要求保护的主题的精神和范围内的所有修改、等效技术方案和替换方案。
如此处所使用的,术语“组件”、“系统”等指的是计算机相关的实体,它或者是硬件、硬件和软件的组合、软件、或者是执行中的软件。例如,组件可以是,但不限于,运行在处理器上的进程、处理器、对象、可执行代码、执行的线程、程序和/或计算机。作为说明,运行在计算机上的应用程序和计算机都可以是组件。一个或多个组件可驻留在一个进程和/或执行的线程内,并且组件可位于一台计算机上和/或分布在两台或多台计算机之间。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软公司,未经微软公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200680027768.1/2.html,转载请声明来源钻瓜专利网。