首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >比较契约式设计与类型系统

比较契约式设计与类型系统
EN

Stack Overflow用户
提问于 2011-05-11 13:35:04
回答 5查看 3K关注 0票数 21

我最近读了一篇比较契约式设计与测试驱动开发的论文。DbC和测试驱动开发之间似乎有很多重叠,一些冗余,以及一些协同作用。例如,有一些基于合同自动生成测试的系统。

DbC与现代类型系统(例如在haskell中,或那些依赖类型的语言之一)在哪些方面存在重叠,是否存在使用两者都比两者都要好的地方?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-05-11 14:26:20

Ralf Hinze,Johan Jeuring和Andres Löh的论文有一个方便的表格,它说明了合同位于“检查”的设计范围内:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
                   |   static checking    |   dynamic checking
-------------------------------------------------------------------
simple properties  | static type checking | dynamic type checking
complex properties | theorem proving      | contract checking
票数 18
EN

Stack Overflow用户

发布于 2012-04-30 00:56:38

似乎大多数答案都假设合同是动态检查的。请注意,在某些系统中,合同是静态检查的。在这样的系统中,您可以将合同看作是可以自动检查的依赖类型的受限形式。这与更丰富的依赖类型形成对比,后者是以交互方式检查的,例如在Coq中。

有关Dana Xu's page和OCaml合同的静态和混合检查(先静态后动态)的论文,请参阅Haskell上的“规范检查”部分。徐的契约体系包括精化类型和从属箭头,两者都是从属类型。自动检查受限依赖类型的早期语言包括Pfenning和Xi的DMLATS。在DML中,与Xu的工作不同,依赖类型受到限制,因此自动检查是完整的。

票数 7
EN

Stack Overflow用户

发布于 2011-05-11 15:59:57

主要的区别是测试是动态的和不完整的,依赖于度量来证明您已经完全验证了您正在测试的任何属性,而类型和类型检查是一个正式的系统,它保证所有可能的代码路径都已经根据您在类型中声明的任何属性进行了验证。

对属性的测试只能在同一属性的类型检查提供的开箱即用的保证级别的限制内进行。合同增加了动态检查的基线。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5965144

复制
相关文章
使用代码为textview设置drawableLeft
xml中的textView中设置android:drawableLeft: <TextView          android:id="@+id/bookTitle" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:drawableLeft="@drawable/checkmark" android:gravity="center_
欢醉
2018/01/22
8790
代码中修改TextView的DrawableLeft图片
先把解决代码贴上来: Drawable weather = getResources().getDrawable(R.drawable.sunday); weather.setBounds(0, 0, weather.getMinimumWidth(), weather.getMinimumWidth()); tv_choose_weather.setCompoundDrawables(weather, null, null, null); /***********分割线*
张拭心 shixinzhang
2022/11/30
7970
在代码中设置drawableLeft
在xml中使用android:drawableLeft="@drawable/payicon_type";
yuanyuan
2019/09/10
2.6K0
Android TextView 属性大全
Android 中我们知道有一个使用频率非常高的控件,它就是 TextView,但是它的属性特别多,今天我们就来探究下,它都有哪些属性。
程序员飞飞
2020/05/11
2.7K0
一文学会所有 Android TextView 属性,妈妈再也不担心我的代码写不好了!
Android 中我们知道有一个使用频率非常高的控件,它就是 TextView,但是它的属性特别多,今天我们就来探究下,它都有哪些属性。
程序员飞飞
2022/01/11
1.9K0
[HTML5] Canvas绘制简单形状
使用canvas来进行绘画,它像很多其他dom对象一样,有很多属性和方法,操作这些方法,实现绘画
唯一Chat
2019/09/10
1.1K0
[HTML5] Canvas绘制简单形状
textview设置字体大小-设置textview字体样式
  一些字体基础的设置,都可以的textview设置字体大小,但是我们能满足吗?不能,所以继续
宜轩
2022/12/26
3.1K0
常用控件之Button详解
小伙伴们肯定都有在玩儿一些游戏,比如和平精英,在界面上展示的名字,其实就是Android中咱们上一篇介绍到的TextView控件。而今天,我们再给大家带来一个非常好玩儿的控件,这个控件可以结合咱们之前的讲到的内容做很多有趣的事情~
下码看花
2019/09/02
1.4K0
常用控件之Button详解
腾讯开源超实用的UI轮子库,我是轮子搬运工
只需要修改一份配置表就可以调整 App 的全局样式,包括组件颜色、导航栏、对话框、列表等。一处修改,全局生效。
Android技术干货分享
2019/06/22
4.9K0
TextView属性和方法大全
前面简单学习了一些Android UI的一些基础知识,那么接下来我们一起来详细学习Android的UI界面基本组件。 一、认识TextView 我们知道前面学习的HelloWorld应用程序中就是使用
分享达人秀
2018/02/02
2.1K0
TextView属性和方法大全
Origin绘制上面和右边边框
如下面两个图,是绘制前后的对比图,可以发现多了上面和右边的边框,且边框无刻度。
全栈程序员站长
2022/08/31
1.2K0
Origin绘制上面和右边边框
BottomSheet底部动作条使用
底部动作条 底部动作条(Bottom Sheets)是一个从屏幕底部边缘向上滑出的一个面板,使用这种方式向用户呈现一组功能。底部动作条呈现了简单、清晰、无需额外解释的一组操作。 使用环境 底部动作条(Bottom Sheets)特别适合有三个或者三个以上的操作需要提供给用户选择、并且不需要对操作有额外解释的情景。如果只有两个或者更少的操作,或者需要详加描述的,可以考虑使用菜单(Menu)或者对话框替代。 底部动作条(Bottom Sheets)可以是列表样式的也可以是宫格样式的。宫格布局可以增加视觉的清晰
xiangzhihong
2018/02/05
1.9K0
BottomSheet底部动作条使用
OpenGL 学习系列---基本形状的绘制
在之前的一篇博客中,讲述了 OpenGL 基础绘制流程 及相关的代码,其中关于 OpenGL 程序编译部分都是可以在其他项目中接着复用的,接下来会讲到如何去绘制其他的基本图元。
音视频开发进阶
2019/07/25
1.9K0
Android开发笔记(三十七)按钮类控件
Button是文本按钮(继承自TextView),而ImageButton是图像按钮(继承自ImageView)。两者之间的区别在于: 1、Button即可显示文本也可显示图形(通过设置背景图),而ImageButton只能显示图形不能显示文本; 2、Button可在文本周围区域显示小图,而ImageButton无法在某个区域显示小图; 3、ImageButton上的图像可按比例进行拉伸,而Button上的大图会拉伸变形(因为背景图无法按比例拉伸); 从上面可以看出,Button的适应面更广,所以实际开发中基本使用Button。 Button与ImageButton的单击方法是setOnClickListener,对应的监听器要实现接口View.OnClickListener。长按方法是setOnLongClickListener,对应的监听器要实现接口View.OnLongClickListener。下面是Button按键监听器的代码例子:
aqi00
2019/01/18
1.6K0
OpenCV之绘制几何形状
python代码: import cv2 as cv import numpy as np image = np.zeros((512, 512, 3), dtype=np.uint8) cv.rectangle(image, (100, 100), (300, 300), (255, 0, 0), 2, cv.LINE_8, 0) cv.circle(image, (256, 256), 50, (0, 0, 255), 2, cv.LINE_8, 0) cv.ellipse(image, (256,
MachineLP
2021/07/19
5140
android常用布局详解「建议收藏」
在一个Android应用程序中,用户界面通过View和ViewGroup对象构建。Android中有很多种View和ViewGroup,他们都继承自View类。View对象是Android平台上表示用户界面的基本单元。
全栈程序员站长
2022/09/05
2.1K0
android常用布局详解「建议收藏」
网站顶部设置灯笼
自定义CSS .deng-box { position: fixed; top: -40px; right: -20px; z-index: 999; } .deng-box1 { position: fixed; top: -30px; right: 30px; z-index: 999; } .deng-box2 { position: fixed; top: -30px; left: 30px; z-i
院长技术
2021/02/19
8960
给WordPress博客添加返回顶部和底部的教程
今天就给大家分享下返回顶部那块的制作教程,其实也不难,主要是用到html、css和一些jq代码。
小狐狸说事
2022/11/17
5400
给WordPress博客添加返回顶部和底部的教程
点击加载更多

相似问题

缓存或核心数据的半持久化图像和视频?

12

将byte[]持久化到图像数据库字段

11

将NSCountedSet持久化到NSUserDefaults

11

将ExpandoObject持久化到MongoDB

31

将文件持久化到App

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文