#类型

2020-11-29 16:5
Nim是一种静态类型的编译系统编程语言。它结合了来自成熟语言(如Python,Ada和Modula)的成功概念。其设计注重效率,表达力,...
Parse, Don’t Type-Check(neilmadden.blog)
2020-11-26 23:13
去年有一篇很棒的文章,标题为Parse,请不要验证。我强烈推荐给任何程序员(以及最近的后续更新,名称不是类型安全的)。基本思想是有两种方法可以检查对函数的某些输入是否有效: 验证器检查输入是否有效,如果无效,则引发错误。它不会返回任何东西。例如,检查列表是否为空。 解析器的作用与验证器相同,但是返回输入的更特定的......
Existential Haskell(blog.sumtypeofway.com)
2020-11-26 22:6
大多数软件工程文献将面向对象的编程描绘为与功能编程不同,并且常常与功能编程不相容。当然,这是错误的二分法,因为函数式编程所鼓励的技术甚至适用于大多数面向对象的语言。然而,面向对象(可能是历史上最受欢迎的软件范例)已经普及了其宗旨,有时甚至可以看到它们出现在像Haskell这样的编程语言中,该语言与面向对象的哲学尽可能......
2020-11-23 22:39
Play的语法和语义在很大程度上受到了Forth的启发。这意味着语法是干净的,没有许多控制字符,而语义则由少量但功能强大的规则组成。 无需赘述,Play中的代码由空格分隔的函数组成,这些函数以从左到右的方式调用。函数调用的一个或多个返回值用作下一个函数调用的输入参数。数字是返回自身的函数。从技术上讲,整个段落......
Caramel: An OCaml to Erlang Compiler(caramel.abstractmachines.dev)
2020-11-23 2:57
焦糖具有高表现力,声音类型系统和快速的类型检查器。这使您可以通过使用更接近您的域的类型来排除整个错误类别,并在不牺牲开发速度的情况下毫不费力地重构大量代码。 为了实现这一目标,Caramel实际上是OCaml编译器的后端,因此,它重用了整个类型检查堆栈,并进行了25年以上的研究和数百万小时的学术研究和工业使用,并......
Flow-Sensitive Typing(en.wikipedia.org)
2020-11-22 23:0
跳转至导航跳转至搜索在编程语言理论中,流敏感类型(或流类型)是一种类型系统,其中表达式的类型取决于其在控制流中的位置。 在静态类型语言中,表达式的类型由组成它的子表达式的类型确定。但是,在流敏感类型中,如果表达式的类型遵循验证其类型的语句,则可以将其类型更新为更特定的类型。通过使用类型推断确定类型,并使用代数数据类......
TypeScript 4.1(devblogs.microsoft.com)
2020-11-21 18:11
如果您不熟悉TypeScript,那么它是一种通过在JavaScript上添加类型声明和注释的语法而构建的语言。 TypeScript编译器可以使用此语法对我们的代码进行类型检查,然后输出可在许多不同的运行时上运行的清晰可读的JavaScript。由于TypeScript具有跨编辑器的丰富编辑功能,因此静态类型检查可......
2020-11-12 2:32
几年前,彭博工程(Bloomberg Engineering)决定采用打字稿作为一种一流的支持语言。这篇文章分享了我们在这段旅程中学到的一些见解和教训。 标题是,我们发现打字稿是一个很好的净值!在阅读我们探索的一些令人惊讶的角落时,请记住这一点。作为工程师,我们自然会被发现、解决和分享问题所吸引,即使我们在😉上玩得很......
F# 5(devblogs.microsoft.com)
2020-11-11 1:46
今天,我们很兴奋地宣布F#5正式发布。它与.NET5一起发布。我们在过去的一年里一直致力于F#5,我们很高兴能与大家分享它。 如果您在Windows上使用Visual Studio,则需要升级到最新的16.8版本。 从F#4.1到F#5,F#的主要关注点一直是对.NET Core(现在是.NET5)的巨大支持。有了F......
2020-11-10 15:24
对于采用Scala3的开发人员来说,最显著的变化之一是引入了新的语法来取代以前Scala版本中使用的隐式机制。 新语法背后的动机是,相同的隐式关键字用于不同的目的和模式,因此它成为表达如何实现模式的一种方式。这意味着,当用户遇到这个模棱两可的咒语时,需要破译开发者的意图:这是一种转换吗?这是否避免了参数重复?这是类型......
2020-11-7 14:13
我之前听说过Erlang和BEAM没有打包静态类型系统,因为他们的创建者“无法构建它”。 虽然构建一个复杂、可靠和可伸缩的类型检查器绝对不是在公园里散步,但构建一个工作正常的类型检查器并不难。 如果这是可以做到的,它就会被完成,而且它会通过与OTP强化相同的过程来强化,并变成今天的样子:可靠性黄金标准。 因此,我决定......
2020-11-5 20:20
我们建议扩展Go语言,在类型和函数声明中添加可选的类型参数。类型参数受接口类型的约束。接口类型用作类型约束时,允许列出可能分配给它们的一组类型。在许多情况下,通过统一算法的类型推断允许从函数调用中省略类型参数。该设计完全向后兼容GO 1。 然后,我们从零开始解释整个设计,在需要的时候介绍细节,并用简单的例子介绍它们。......
2020-11-4 11:30
这个夏天我一直在Pusher实习,写了很多围棋。哈斯克尔的背景有点改变,所以我决定在最后写下我的想法。 没什么可去的,它是一种相当小的语言。在六月之前我一行也没有写过,现在我已经写了大约三万篇了。入门并变得富有成效是非常容易的。 另一方面,Haskell以难学而臭名昭著(咳嗽单曲教程咳嗽)。人们经常发现很难从计算纯数......
Names are not type safety(lexi-lambda.github.io)
2020-11-2 9:23
Haskell程序员花了大量时间讨论类型安全。程序构造的哈斯克尔学派主张“捕获类型系统中的不变量”和“使非法状态不可表示”,这两个听起来都是令人信服的目标,但在实现这些目标所使用的技术上却相当模糊。几乎就在一年前,我出版了“解析,不要验证”(Parse,Don‘t Validation)一书,作为弥合这一鸿沟的初步尝......
2020-10-31 7:54
基本上。我并不讨厌Python类型的批注-在我看来:int=0没有什么错。但是,每当我不得不看任何给定的冗长的废墟时,这双眼睛确实会有点流血,这就是打字模块鼓励人们写作的那种杂乱无章的东西。 类型模块,以及它最好的Mypy静态分析器和Linter,已经预先劫持了两个看似有用的新的、不可靠的Python类方法:__CL......
2020-10-25 9:1
在这里,我与大家分享一位经验丰富的开发人员首次涉足现实世界的锈蚀项目。它密切关注类型系统,以及我开始思考铁锈所需要的关键洞察力。它是为那些掌握这门语言的人编写的,如果您的背景不是函数式编程,它将特别有用。 虽然最初设想为第2部分(共2部分),但可以将其作为独立条目读取。在为普通读者编写的第1部分中,我详细介绍了Mak......
2020-10-22 23:2
我们正在将镍库公之于众。镍是Tweag开发的一种实验配置语言。虽然现在还不是第一次租赁的时候,但这是一个谈论这个项目的机会。这篇文章的目标是对该项目进行一个高层次的概述。如果你的好奇心很强,但你还想学更多,那就不要害怕,因为我们将来会发布更多关于英语具体方面的博客文章。但是现在,让我们来游览一下吧! [免责声明:Ni......
Why Does Julia Work So Well?(ucidatascienceinitiative.github.io)
2020-10-21 19:9
它比其他脚本语言更快,使您可以快速开发Python/MATLAB/R,同时生成与C/Fortran一样快的代码。 为什么不干脆让其他脚本语言变得更快呢?如果朱莉娅能做到,为什么其他人做不到呢? 你如何干预朱莉娅基准来证实这一点?(这对许多人来说是出乎意料的困难!)。 许多人认为Julia速度很快,因为它是实时(JIT......
Advanced GraphQL Features(www.getcortexapp.com)
2020-10-21 16:44
在过去的几年里,GraphQL已经成为一个被广泛采用的标准。然而,并不是每个人都在利用该标准的全部功能。在本文中,我将演示创建更具表现力的模式以更好地满足您的数据需求的方法。 让我们从定义一个示例场景开始。我们正在构建一个论坛应用程序,它将拥有几种类型的用户: 管理论坛操作的管理员。例如,处理技术问题、指定版主等。 ......
2020-10-13 20:7
1+1等于2这一事实非常明显,可能很难解释为什么。幸运的是,数学家们已经设计出了一种将算术形式化并随后证明1+1=2的方法。自然数是基于皮亚诺公理的。它们是一组简单的规则,定义(与正式系统一起)什么是自然数。因此,为了证明Rust中的1+1=2,我们首先需要一个能够处理逻辑的形式系统。我们将使用的正式系统不是某个随机......
2020-10-12 21:43
//这是OK std::string to_string(Int I);std::string to_string(Bool B);std::string si=to_string(0);std::string sb=to_string(True);//这不是OK int from_string(std::strin......
2020-10-7 13:35
那么让我们回到MySQL。这样一个有趣的范围背后的原因是什么?MySQL内部手册说,Time类型的存储在版本5.6.4中有所更改,在此版本中获得了对小数秒的支持。对于非小数类型,它使用3个字节。现在,如果他们仅仅使用这3个字节来编码若干秒,他们将能够支持跨越2330小时的间隔,这与当前最多838小时相比已经是相当大的......
2020-10-1 4:8
一年多前,我写了一些关于“更小的锈”的笔记,这是一种更高级的语言,它将从Rust的一些类型系统创新中获得灵感,但由于针对的领域对用户控制和性能的要求不那么严格,所以会更简单。在今年失业期间,我致力于更详细地勾勒出这样的语言会是什么样子。我想写一点关于在这段时间里我得出了什么新的结论。 重读我的上一篇文章,我惊讶地发现......
2020-9-29 10:37
“我的语言更好,因为它有很强的类型系统!”你的同事开发人员戴夫(Dave)尖叫着,试图将编程语言Cobol推向你们公司的下一项微服务。 在开发人员中,关于编程语言及其类型系统的讨论可能很快就会变得情绪化。在这些讨论中,我们经常抛出“类型系统”、“数据类型”、“类型推断”、“静态类型”、“弱类型”、“强制”等词。但是,......
2020-9-28 19:59
▄▐░▌▀▀▀▀█░█▀▀▀▀▐░。█▀▐░█▀▐░█▀█░▌▐░█▄▐░█▄▐░▌。▐░▌▀█░▌▀█░▌▐░█▄█░▌▐░▌。▐░▌▄█░▌▄█░▌▀█░█▀▀▐░█▄▐░▌▐░。▌▀▀。 这是一个纯粹在TypeScript类型注释中实现的SQL数据库。这意味着它只在类型上操作-您定义了一个数据库(仅仅是一个类型......
2020-9-27 17:34
打印机很酷,因为它们很酷,但我有朋友至少每周提醒我黑客攻击打印机是没有用的。每一次几乎都是同样的事情,找一个1990年的类型错误,写一个愚蠢的脚本,完成。几个月前,我开始了一个新的项目,在谷歌庞大的代码库中疯狂地骑行。虽然谷歌的大部分代码,特别是Android,都是开源的,但有些部分不是开源的。我将试着谈谈一个这样的......
2020-9-27 16:28
假定受众:关心实际学习的人(在本例中,尤其是软件开发人员)。而且,我的妻子非常喜欢听我说,我错了。“😂。 认知状态:这些都是我目前认为我错了的地方。但我已经改变主意一次了,所以…。 至少在我的经验中,人们讨论他们过去错误的事情是相当罕见的。甚至当我们发帖子的时候,我也在想这个新东西!“。我们很少确切地说出我们改变主意......
2020-9-26 3:47
RBS是一种描述Ruby程序类型的语言,类型检查器(包括类型分析器和其他支持RBS的工具)将通过RBS定义更好地理解Ruby程序。 您可以写下类和模块的定义:类中定义的方法、实例变量及其类型以及继承/混合关系。RBS的目标是支持Ruby程序中常见的模式,并允许编写高级类型,包括联合类型、方法重载和泛型。它还支持具有接......
Top .NET 5.0 new APIs(blog.ndepend.com)
2020-9-23 2:51
当一个新的主要.NET版本发布候选版本时,就可以使用NDepend代码审查更改功能来浏览添加了哪些新API。 这是相当直截了当的。启动VisualNDepend.exe;单击“比较代码库的两个版本”;然后选择这两个文件夹中的所有程序集: 单击OK,一分钟后,在分析了两个BCL版本之后,您就可以查看更改和新内容了。我们......
Bottom Type in F#(tysonwilliams.coding.blog)
2020-9-23 0:26
底部类型是没有值的类型。当每次执行不终止或引发异常时,它作为函数的返回类型很有用。某些语言包括底部类型。F#增加底部类型的建议被拒绝。有趣的是,C#添加底层类型的建议仍然有效。 不过,可以在F#中定义底层类型。这是我会怎么做的。 我最初的想法是省略Bottom,然后在其模块中单独使用此行(这样公共函数就不提供对这个私......