ocamlで関数パラメータとリターンタイプをリストとして指定するにはどうすればよいですか?

TurtleMan

私は現在ocaml、プログラミング言語クラスについて自分自身教えており、関数パラメーターを指定して型をとして返す方法を理解しようとしていますList

私は、ファイル読み込みプログラムを作成していcharことでchar店舗ごとcharではList、返し、リストを逆にしますList

現在のコード:

(* 
   Creating a function that will read all the chars 
   in a file passed in from the command argument.
   This function takes a parameter of type List.
   This function will return a List. 
*)

let read_file (char_List : List) : List =
    let char_in = open_in Sys.argv.(1) in   (* Creating a file point/in_channel *)
  try
    while true do
      let c = input_char char_in in     (* Getting char from the file *)
        char_List := c :: !char_List    (* Storing the char in the list *)
    done
  with End_of_file ->
        char_List := List.rev !char_List;   (* End of file was reaching reversing char list *)
        close_in char_in;                   (* Closing the file pointer/in_channel *)
;;

(* Storing the result of read_file to buffer which buffer is of type list *)
let buffer = ref [] in
      read_file(buffer);

      print_string "\nThe length of the buffer is: ";
      print_int (List.length !buffer); (* Printing length of the list *)
      print_string ("\n\n");
      List.iter print_char !buffer;    (* Iterating through the list and print each element *)

パラメータタイプとリターンタイプの指定を削除するとList、コードは意図したとおりに実行されます。しかしながら; パラメータの型を指定し、型をとして返したいのListですが。

関数パラメーターと戻りタイプをどのように指定しますListか?

オクタクロン

まず、Listモジュールはタイプではないので、おそらくを意味しlistます。ただし、listリストはそれ自体が型ではないため、のみ注釈を付けることはできません。不明なもののリストではなく、既知の型を持つ要素のリストが必要です。たとえば、あなたの場合、文字のリストがあり、これはchar listと書くことができます同様に、整数のリストが入力されint listます。

より正確にlistは、それ自体は型はなく、引数としてリストの要素の型を取り、そのような要素のリストの型を返す型コンストラクターです。

ps:OCamlを学んでいるなら、より機能的なスタイルに慣れるために参照を使わずにコードを書き直そうとすることができます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

`typeof this`をインスタンス関数パラメータのタイプとして設定するにはどうすればよいですか?

分類Dev

タイプスクリプトの関数パラメーターとしてreactコンポーネントコンストラクターを受け入れるにはどうすればよいですか?

分類Dev

関数またはスクリプトの位置パラメーターとして配列を提供するにはどうすればよいですか?

分類Dev

テンプレートの配列を関数のパラメーターとして指定するにはどうすればよいですか?

分類Dev

関数ポインタをクラステンプレートパラメータとして渡すにはどうすればよいですか?

分類Dev

関数パラメーターでリストタイプを指定するにはどうすればよいですか?

分類Dev

一般的な関数ポインタをテンプレートパラメータとして使用するにはどうすればよいですか?

分類Dev

Racket / Plaitのパラメーターとして特定のタイプの関数を指定するにはどうすればよいですか?

分類Dev

パラメータとして渡された関数のパラメータタイプを検出するにはどうすればよいですか?

分類Dev

関数パラメーターとして一致する列挙型バリアントを渡すにはどうすればよいですか?

分類Dev

関数のパラメーターとしてtkinterエントリーを使用するにはどうすればよいですか?

分類Dev

タイプヒントを使用して、パラメーターに複数のタイプを指定するにはどうすればよいですか?

分類Dev

シェルスクリプトでエイリアスとしてパラメータを実行するにはどうすればよいですか?

分類Dev

スクリプトパラメータ(フォルダパス)を変数として使用するにはどうすればよいですか?

分類Dev

ユーザー定義関数のパラメーターとしてリストを渡すにはどうすればよいですか?

分類Dev

配列またはリストをパラメーターとしてPowerShell関数に渡すにはどうすればよいですか?

分類Dev

リストを入力パラメーターとしてTBV関数に渡すにはどうすればよいですか?

分類Dev

関数へのポインタをパラメータとして受け取る関数を前方宣言するにはどうすればよいですか?

分類Dev

トレイトに関連付けられたタイプをパラメーターとして使用するスーパートレイトでトレイトをバインドするにはどうすればよいですか?

分類Dev

IntelliJ Scalaで複数行のパラメーターリストにインデントを指定するにはどうすればよいですか?

分類Dev

パラメータとしてコンテキストを使用して関数の戻り値を取得するにはどうすればよいですか?

分類Dev

ポインタと文字列パラメータを持つ関数を使用して、ファイルストリームの入力を正しく取得するにはどうすればよいですか?

分類Dev

タイプスクリプトインターフェイスをクラス属性として宣言するにはどうすればよいですか?

分類Dev

Azure関数のカスタムHTTPルートでクエリパラメーターを指定するにはどうすればよいですか?

分類Dev

関数のパラメータとしてクラスを指定するにはどうすればよいですか?

分類Dev

関数の戻り値がテンプレートパラメーターと同じであるテンプレートパラメーターとして関数を渡すにはどうすればよいですか?

分類Dev

Swiftで可変個引数(省略記号)パラメーターをオプションとして指定するにはどうすればよいですか?

分類Dev

ML pysparkパイプラインのカスタムステージとして独自の関数を追加するにはどうすればよいですか?

分類Dev

関数のパラメーターとして年が指定されている場所を選択するにはどうすればよいですか

Related 関連記事

  1. 1

    `typeof this`をインスタンス関数パラメータのタイプとして設定するにはどうすればよいですか?

  2. 2

    タイプスクリプトの関数パラメーターとしてreactコンポーネントコンストラクターを受け入れるにはどうすればよいですか?

  3. 3

    関数またはスクリプトの位置パラメーターとして配列を提供するにはどうすればよいですか?

  4. 4

    テンプレートの配列を関数のパラメーターとして指定するにはどうすればよいですか?

  5. 5

    関数ポインタをクラステンプレートパラメータとして渡すにはどうすればよいですか?

  6. 6

    関数パラメーターでリストタイプを指定するにはどうすればよいですか?

  7. 7

    一般的な関数ポインタをテンプレートパラメータとして使用するにはどうすればよいですか?

  8. 8

    Racket / Plaitのパラメーターとして特定のタイプの関数を指定するにはどうすればよいですか?

  9. 9

    パラメータとして渡された関数のパラメータタイプを検出するにはどうすればよいですか?

  10. 10

    関数パラメーターとして一致する列挙型バリアントを渡すにはどうすればよいですか?

  11. 11

    関数のパラメーターとしてtkinterエントリーを使用するにはどうすればよいですか?

  12. 12

    タイプヒントを使用して、パラメーターに複数のタイプを指定するにはどうすればよいですか?

  13. 13

    シェルスクリプトでエイリアスとしてパラメータを実行するにはどうすればよいですか?

  14. 14

    スクリプトパラメータ(フォルダパス)を変数として使用するにはどうすればよいですか?

  15. 15

    ユーザー定義関数のパラメーターとしてリストを渡すにはどうすればよいですか?

  16. 16

    配列またはリストをパラメーターとしてPowerShell関数に渡すにはどうすればよいですか?

  17. 17

    リストを入力パラメーターとしてTBV関数に渡すにはどうすればよいですか?

  18. 18

    関数へのポインタをパラメータとして受け取る関数を前方宣言するにはどうすればよいですか?

  19. 19

    トレイトに関連付けられたタイプをパラメーターとして使用するスーパートレイトでトレイトをバインドするにはどうすればよいですか?

  20. 20

    IntelliJ Scalaで複数行のパラメーターリストにインデントを指定するにはどうすればよいですか?

  21. 21

    パラメータとしてコンテキストを使用して関数の戻り値を取得するにはどうすればよいですか?

  22. 22

    ポインタと文字列パラメータを持つ関数を使用して、ファイルストリームの入力を正しく取得するにはどうすればよいですか?

  23. 23

    タイプスクリプトインターフェイスをクラス属性として宣言するにはどうすればよいですか?

  24. 24

    Azure関数のカスタムHTTPルートでクエリパラメーターを指定するにはどうすればよいですか?

  25. 25

    関数のパラメータとしてクラスを指定するにはどうすればよいですか?

  26. 26

    関数の戻り値がテンプレートパラメーターと同じであるテンプレートパラメーターとして関数を渡すにはどうすればよいですか?

  27. 27

    Swiftで可変個引数(省略記号)パラメーターをオプションとして指定するにはどうすればよいですか?

  28. 28

    ML pysparkパイプラインのカスタムステージとして独自の関数を追加するにはどうすればよいですか?

  29. 29

    関数のパラメーターとして年が指定されている場所を選択するにはどうすればよいですか

ホットタグ

アーカイブ