假设我有一个包含大量模块和部分的代码。在其中一些中有多态定义。
<div ng-app="myApp" ng-controller="myCtrl">
<select ng-model="myDropDown" ng-change="Dialog()">
<option>a</option>
<option>b</option>
</select>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.Dialog = function () {
var dialog = confirm('Continue?');
if(!dialog) {
alert("Option must not change");
/** The problem is the dropdown still select the option. **/
}
}
});
</script>
通常Coq可以推断出类型,但我常常会输入错误。在这种情况下,您必须使用@显式指定隐式类型,这会破坏可读性。
无法推断出类型为“Type”的_的隐式参数_。
有没有办法避免这种情况?是否可以指定默认参数之类的东西,每次Coq无法猜出类型时都会替换它?
答案 0 :(得分:1)
您可以使用类型类来实现默认值的概念:
Class Default (A : Type) (a : A) :=
withDefault { value : A }.
Arguments withDefault {_} {_}.
Arguments value {_} {_}.
Instance default (A : Type) (a : A) : Default A a :=
withDefault a.
Definition myNat `{dft : Default nat 3} : nat :=
value dft.
Eval cbv in myNat.
(* = 3 : nat *)
Eval cbv in (@myNat (withDefault 5)).
(* = 5 : nat *)