色色一区二区三区,一本大道道久久九九AV综合,国产香蕉97碰碰视频va碰碰看,综合亚洲国产2020

    <legend id="mljv4"><u id="mljv4"><blockquote id="mljv4"></blockquote></u></legend>

    <sub id="mljv4"><ol id="mljv4"><abbr id="mljv4"></abbr></ol></sub>
      <mark id="mljv4"></mark>

      有沒有一種程序設計語言帶有“負”型系統(tǒng)?

      2021-02-24 17:15

      根據(jù)我的經(jīng)驗,我所知道的所有語言都有一種“肯定”類型的系統(tǒng)。我所說的“正類型系統(tǒng)”是指在編寫源代碼時,總是指定函數(shù)/對象接受的類型,比如:f函數(shù)(SomeTy

      解答動態(tài)

      • FooType參數(shù)){。。。}//交集類型:參數(shù)必須同時符合SomeType和FooTypefunction foo(SomeTypelt;Not ConcreteTypeFoolt;Not TransactionTypeAlt;Not TransactionTypeBlt;Not TransactionTypeC>;t){。。。}布爾驗證(TransactionTypeC t){。。。}} 沒有排除類型系統(tǒng)的等效代碼如下此:
        接口事務() { ... }類TransactionTypeA實現(xiàn)事務{(diào)。。。}類TransactionTypeB imnplements事務{(diào)。。。}類TransactionTypeC實現(xiàn)事務{(diào)。。。}intece TransactionRule(){boolean validate(Transaction t);}intece ValidationStrategy(){boolean validate(Transaction t);}intece ValidationStrategyFactory{ValidationStrategy create(Transaction t);}class RuleA實現(xiàn)TransactionRule{RulealidationStratetyFactory strategyFactory;構造函數(shù)(RuleAvalidationStrateyFactory f){strategyFactory=f;}布爾驗證(事務t){ValidationStrategy s=策略工廠.創(chuàng)建(t) ;返回s.validate();}}類RuleAvalidationStrateyFactory實現(xiàn)ValidationStrategyFactory{ValidationStrategy create(Transaction t){if(t.type==TransactionTypeA){return new RuleATransactionTypealidationStrategy();}else{return new RuleATransactionTypeBAndCValidationStrategy();}}}類RuleATransactionTypealidationStrategy實現(xiàn)ValidationStrategy{布爾驗證(事務t){。。。}}類RuleATransactionTypeBAndCValidationStrategy實現(xiàn)ValidationStrategy{布爾驗證(事務t){。。。}}RuleB類實現(xiàn)TransactionRule{RulebValidationStrateyFactory strategyFactory;構造函數(shù)(RulebValidationStrateyFactory f){strategyFactory=f;}布爾驗證(Transaction t){ValidationStrategy s=策略工廠.創(chuàng)建(t) ;返回s.validate();}}類rulebValidationStrateyFactory實現(xiàn)ValidationStrategyFactory{ValidationStrategy create(Transaction t){if(t.type==TransactionTypeA){return new RuleBTransactionTypeBValidationStrategy();}else{return new rulebtransactionTypeaaandcvalidationStrategy();}}}類RuleBTransactionTypeBValidationStrategy實現(xiàn)ValidationStrategy{布爾驗證(事務t){。。。}}類RuleBTransactionTypeAAndCValidationStrategy實現(xiàn)ValidationStrategy{boolean validate(Transaction t){。。。}}類RuleC實現(xiàn)TransactionRule{RuleCValidationStratetyFactory strategyFactory;構造函數(shù)(RuleCValidationStratetyFactory f){strategyFactory=f;}布爾驗證(Transaction t){ValidationStrategy s=策略工廠.創(chuàng)建(t) ;返回s.validate();}}類RuleCvalidationStrateyFactory實現(xiàn)ValidationStrategyFactory{ValidationStrategy create(Transaction t){if(t.type==TransactionTypeA){return new RuleCTransactionTypeCValidationStrategy();}else{return new ruleCtransactionTypeaaandbValidationStrategy();}}}類RuleCtractionTypeCvalidationStrategy實現(xiàn)ValidationStrategy{布爾驗證(事務t){。。。}}類RuleCTransactionTypeAAndBValidationStrategy實現(xiàn)ValidationStrategy{布爾驗證(事務t){。。。}}問題是:這種類型系統(tǒng)有沒有編程語言?

        • 我不是邏輯學家、類型理論家或編程語言理論家,所以我的直覺在這里可能是錯誤的,但我認為要做到這一點實際上并不需要那么多。
          例如,人們把Java的類型系統(tǒng)扭曲成了相當驚人的形狀。我不會驚訝地發(fā)現(xiàn),你想要的東西可以用Java或類似語言編碼。
          I也很肯定,這是C++模板java編程常用的。但我不是C++程序員,而P 這樣的類型可以很容易地在斯卡拉編碼。其中一個技巧是使用隱式。在隱式解析期間出現(xiàn)歧義是非法的,所以只要在兩種類型相等時編寫兩個變得歧義的隱式。這真的很容易做到:你為[A,B]定義一個隱式的,為[A,A]定義一個隱式的。如果類型不同,那么只有第一個隱式是適用的,所有的東西都是桃色的。如果兩個類型相等,則兩個隱式都適用,編譯失敗并出現(xiàn)不明確的隱式錯誤比如:
          密封類=!=[A,B]trait LowerPriorityImplicits{/**不顯式調(diào)用!*/隱式定義等于[A]:=!=[A,A]=系統(tǒng)錯誤(quot;)}對象=!=擴展LowerPriorityImplicits{/**不顯式調(diào)用!*/隱式定義nequal[A,B]:=!=[A,B]=新=!=[A,B]} 這定義了一個名為的類型構造函數(shù)!=具有兩個類型參數(shù)A和B,如果嘗試用相同的類型調(diào)用它,則會導致編譯錯誤。(請注意,在標準庫中已經(jīng)有一個名為=:=的類型構造函數(shù),用于檢查是否相等)此:
          case類Foo[A,B](A:A,B:B)(隱式e:A=!=B) 這定義了一個類型構造函數(shù)Foo,它有兩個類型參數(shù)a和B,只有在a和B不存在時才能實例化相等:
          Foo(1f,1.0)Foo(quot;,1)Foo(quot;,Some(quot;)//不編譯Foo(1f,1f)//不明確的隱式值://兩個方法在trait LowerPriorityImplicits中相等類型[A]A=!=A//和方法nequal in object=!=類型[A,B]A=!=B//匹配所需類型Float=!=FloatFoo(quot;)//不明確的隱式值://兩個方法在[A]A類型的trait LowerPriorityImplicits中相等!=A//和方法nequal in object=!=類型[A,B]A=!=B//匹配所需的類型字符串=!=string 但您也可以這樣使用它方式:
          案例類NotInt[A](A:A)(隱式e:A=!=Int)NotInt(lt;type,ExcludedUnionlt;A,Tlt;T,Alt;TNotAgt;){return notN;}nonnumber(quot;);nonnumber(2);//類型為“number”的參數(shù)不能賦給類型為“never”的參數(shù)。

          • I將用一個問題回答您的問題。
            您提出了一個函數(shù)de聲明:
            F功能(不是SomeType參數(shù)){。。。}我的問題是:如何實現(xiàn)這個函數(shù)中的任何東西?
            函數(shù)聲明沒有告訴我quot;能做什么。我不知道它可能有什么屬性或方法。我甚至不知道quot;不能做什么。

            • 我認為有許多語言可以支持沒有quot;的TransactionRule用例,只要它們有某種形式的多方法或模式匹配,其中匹配派生類型更多的方法比方法獲得更高的優(yōu)先級匹配派生較少的類型。例如在Raku:
              類事務{(diào)}類TransactionTypeA是事務{(diào)}類TransactionTypeB是事務{(diào)}角色事務規(guī)則{方法驗證(事務-->;Bool){。。。}}cla公司

              • End

              免責聲明:

              本頁內(nèi)容僅代表作者本人意見,若因此產(chǎn)生任何糾紛由作者本人負責,概與琴島網(wǎng)公司無關。本頁內(nèi)容僅供參考,請您根據(jù)自身實際情況謹慎操作。尤其涉及您或第三方利益等事項,請咨詢專業(yè)人士處理。