<address id="zhpbl"></address>
<noframes id="zhpbl">
<address id="zhpbl"><form id="zhpbl"><th id="zhpbl"></th></form></address>

    <em id="zhpbl"></em>

      <address id="zhpbl"><th id="zhpbl"><progress id="zhpbl"></progress></th></address>
      更多精彩內容,歡迎關注:

      視頻號
      視頻號

      抖音
      抖音

      快手
      快手

      微博
      微博

      java monad

      文檔

      java monad

      Monad是一個代碼名字,意思是單子代表Windows上的一個新的交互式命令行工具以及面向對象的腳本技術。Monad也被稱為MSH,是下一代的Windows命令shell,用全新的角度來完成各式各樣的管理任務。
      推薦度:
      導讀Monad是一個代碼名字,意思是單子代表Windows上的一個新的交互式命令行工具以及面向對象的腳本技術。Monad也被稱為MSH,是下一代的Windows命令shell,用全新的角度來完成各式各樣的管理任務。

      java monad是什么,讓我們一起了解一下?

      Monad是一個代碼名字,意思是單子代表Windows上的一個新的交互式命令行工具以及面向對象的腳本技術。Monad也被稱為MSH,是下一代的Windows命令shell,用全新的角度來完成各式各樣的管理任務。

      Monad定義的要素有哪些?

      在定義 Monad 時需要提供一個類型構造器 M 和兩個操作 unit 和 bind:

      1、類型構造器的作用是從底層的類型中創建出一元類型(monadic type)。如果 M 是 Monad 的名稱,而 t 是數據類型,則 M t 是對應的一元類型。

      2、unit 操作把一個普通值 t 通過類型構造器封裝在一個容器中,所產生的值的類型是 M t。unit 操作也稱為 return 操作。return 操作的名稱來源于 Haskell。不過由于 return 在很多編程語言中是保留關鍵詞,用 unit 做名稱更為合適。

      3、bind 操作的類型聲明是 (M t)→(t→M u)→(M u)。該操作接受類型為 M t 的值和類型為 t → M u 的函數來對值進行轉換。在進行轉換時,bind 操作把原始值從容器中抽取出來,再應用給定的函數進行轉換。函數的返回值是一個新的容器值 M u,M u 可以作為下一次轉換的起點。多個 bind 操作可以級聯起來,形成處理流水線。

      具體代碼示例如下:

      public?class?LoggingMonad?{
      ?
      ?private?final?T?value;
      ?private?final?List?logs;
      ?
      ?public?LoggingMonad(T?value,?List?logs)?{
      ?this.value?=?value;
      ?this.logs?=?logs;
      ?}
      ?
      ?@Override
      ?public?String?toString()?{
      ?return?"LoggingMonad{"?+
      ?"value="?+?value?+
      ?",?logs="?+?logs?+
      ?'}';
      ?}
      ?
      ?public?static??LoggingMonad?unit(T?value)?{
      ?return?new?LoggingMonad<>(value,?List.of());
      ?}
      ?
      ?public?static??LoggingMonad?bind(LoggingMonad?input,
      ?Function?transform)?{
      ?final?LoggingMonad?result?=?transform.apply(input.value);
      ?List?logs?=?new?ArrayList<>(input.logs);
      ?logs.addAll(result.logs);
      ?return?new?LoggingMonad<>(result.value,?logs);
      ?}
      ?
      ?public?static??LoggingMonad?pipeline(LoggingMonad?monad,
      ?List>?transforms)?{
      ?LoggingMonad?result?=?monad;
      ?for?(Function?transform?:?transforms)?{
      ?result?=?bind(result,?transform);
      ?}
      ?return?result;
      ?}
      ?
      ?public?static?void?main(String[]?args)?{
      ?Function?transform1?=
      ?v?->?new?LoggingMonad<>(v?*?4,?List.of(v?+?"?*?4"));
      ?Function?transform2?=
      ?v?->?new?LoggingMonad<>(v?/?2,?List.of(v?+?"?/?2"));
      ?final?LoggingMonad?result?=?
      pipeline(LoggingMonad.unit(8),
      ?List.of(transform1,?transform2));
      ?System.out.println(result);?//?輸出為?LoggingMonad{value=16,?
      logs=[8?*?4,?32?/?2]}
      ?}
      }

      以上就是小編今天的分享了,希望可以幫助到大家。

      文檔

      java monad

      Monad是一個代碼名字,意思是單子代表Windows上的一個新的交互式命令行工具以及面向對象的腳本技術。Monad也被稱為MSH,是下一代的Windows命令shell,用全新的角度來完成各式各樣的管理任務。
      推薦度:
      為你推薦
      資訊專欄
      熱門視頻
      相關推薦
      java mono java mqtt java multiset java mvvm java mybatisplus java namespace java newinstance java nextint java nextline java nexus java nfs java geotools java getbytes java hashcode java hdfs java node類 java notify java nslookup java number java hibernate java module java modelandview java mockito java mmap java mkdir java mina java mian java method java merge java memcpy java matrix java matlab java math.ceil java mapping java malloc java main java logstash java logging java localtime java locale
      Top 少妇高潮太爽了在线视频