OCamlの学習

OCamlのとHaskellは、関数型プログラミングの代表です。

新しい言語を開始し、いくつかのプログラミング経験を持っている人々のために、最も効果的な方法は、いくつかの実用的なユーティリティを開発することであるので、トップレベルは確かに我々のニーズを満たすことができません。

OCamlのためには、どのように我々は、PEファイルのコマンドラインプログラムを生成することができますか?

 

OPAMをインストールします。

参考:https://github.com/realworldocaml/book/wiki/Installation-Instructions

$アドオンのapt-リポジトリPPA:AVSM / PPA
$ apt-getを更新
$カールビルド不可欠M4のOCamlのopamをインストールapt-getを

 

参考:

http://zh.wikibooks.org/wiki/User:Gqqnb/OCaml%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B/%EF%BC%88%E4 %のB8%の80%のEFの%のBC%89%E7%のAEの%80%E4%BB%8B

 

聞かせて比XY =
    X / Float.of_int。yはFloat.of_int ;;
 
ヴァル比:int型 - > int型 - > フロート = <楽しいです>

次の行の機能は、モデルのOCamlコンパイラによって与えられ、

OCamlはヴァル比だから、値として機能するため、比が値で表しています。

:それが表す背後に価値のこのタイプを見た型の値は、int型は、論理の私達の定義と一致していないようです新しいfloat、int型に変換別にint型変換されているが、実際には、比XYでありますそれは考えることができます

ヴァルRATIO1:int型 - > int型 = <楽しいです>
ヴァル・RATIO2:int型 - > フロート = <楽しいです>
聞かせて比XY = 
    (RATIO1のX)と

及び(RATIO1 x)が関数値として見ることができるので、それを返すことができ、それ自体が関数で返します。

そして、(RATIO1のx)関数は、正確に(RATIO2)を返します。

 

タプル

聞かせてtuple_a =(3、"三");;
 
ヴァルtuple_a:int型 *文字列=(3、"三"

このタイプの指定されたタプルの接続が*、*存在するすべてのタプル列int型とデカルト積とすることができるように、デカルト積を表します。

 

パターンマッチング

例えば、我々は、2つの要素のタプルが存在することを知って、あなたは、その内容を抽出するために、このようにして(x、y)を使用することができ、このことは、パターンマッチングです。

 

リスト対タプル

タプルは、異なるタイプの要素の組み合わせの固定数を表すために使用されます。

同じタイプの任意の数の要素の組合せを示すリスト。

 

間隔にタプルを持つ要素の間、

しかし、リスト間の素子で、彼らは離れています。

 

ラベル付き引数

名前はなく、POS識別されたパラメータを使用することができるように、例えばF〜のような標識されたタグパラメータ、、。

 

リストパターンマッチング

[]、抽出された左と一致するパターンマッチング用の要素リスト::、です。

 

| |一致|とマッチXXX

スイッチは、C ++に似ています

 

再帰的なリスト関数

内部では、2の場合があります。

規範事例、

誘導ケース。

 

これは数学的帰納を数学に似ています。

 

 

オプション

いくつかのパラメータが存在する可能性があるか、または存在しない場合があります表します。

一部となしには、オプションの値コンストラクタを作成しています。

 

それまでに

と一致オプション
| いくつかのx  - >
| なし - >
 

オプションの値をチェックして、状況に応じて処理を行います。

 

あなたはタイプを指定した場合は、オプションの種類である、あなたは明示的に指定する必要があります。

最初のオプションを可能にするためである。例えば、タプル

文字列オプション*文字列

 

Pervasivesモジュール

各OCamlの既定のプログラムは、このモジュールを開きます。

 

の範囲と価値を聞かせて

最上階には、グローバル・ロールましょう、しかし、のはローカルであるが、使用に協力しなければならないが聞かせて聞かせています。

 

定義データ構造レコード

タイプされたPoint2D = {X:フロートY:フロート } ;;

あなたは、レコード内の要素を抽出するために、パターンマッチング、以下の3種類を使用することができます

func_a {Xの=のX_POSを聞かせて、Y =のY_POS} =
    X_POS + Y_POS ;;
 
=; func_b {Y、X}せ
    ;; X + Y
 
let_func_c V1、V2 = 
    V1.X + v2.xの;;

 

バリアント型

変異型、ロジックで達成重合の異なるタイプ。

これは、抽象基底クラスとして理解することができます。

型形状=
    | circle_impのサークル
    | rect_impのRECT
    | triangle_impのトライアングル;;

それまでに

とマッチshape_a
    | CircelのCIR  - > ...
    | RECT RECT  - > ...
    | トライアングルトリ - > ... ;;

別の操作を実行します。

 

これはオプションに似ています。

ます。https://www.cnblogs.com/long123king/p/3729675.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_33881050/article/details/94503670