2011-10-24 32 views
1

プログラミング言語:DrRacket /スキーム二DrRacket /スキームの質問

やあみんな、

私は私の最初のコンプ科学の中期の準備をし、私はいくつかの入力にを取得してみたい2つの簡単な質問を持っています:

(1)データ定義と 構造定義の違いはどういう意味ですか?

;; a student is a 
;; - (make-student ln id height gradyear), where 
;; - ln is last name, and 
;; - id is ID number, and 
;; - height is height in inches, and 
;; -gradyear is graduation year 

が、構造体の定義は何ですか:

は、私は、データ定義のために、私はのようなものを持つことができることを知っていますか?

(2)正確に機能する前に来契約におけるアルファおよびベータ版は何、すなわち

take : num α-list -> α-list 

は、事前にありがとうございます!プログラム(HTDP)を設計する方法から

+0

これはScheme/Racketの質問ではないので、プログラムを設計する際の規約や関連する用語と同じくらいです(Typed Racketを使用していないようです) 。中期的な準備をしている場合は、この種の質問に答えるのに最適な人は、あなたの先生、TA、または同級生です。 –

答えて

4

引用:

データ定義状態は、英語とスキームの混合物中で、どのように我々は、構造体のクラスを使用する 、我々は の要素を構築する方法このクラスのデータ。

プログラマが入力データをどのように値として表現するかを決定する必要があるため、問題を解決するには、他の人があなたのプログラムを理解するためには、これがどのように詳細に行われているかを文書化することが重要です。

一部の入力データは単純であり、単一の数値(温度、圧力など)で表すことができます。

他のタイプのデータは、固定数の数字/文字列として表すことができます。 (例えば、cdは著者名(文字列)、タイトル(文字列)および価格(数字)として表すことができる)。固定数の値を1つの値としてパックするには、この構造を表すことができます。

未知数の表現が必要な場合、たとえばcdsとすると、リストを使用する必要があります。

データ定義は、データがプログラムでどのように表現されているかの単純な説明です。構造体の定義が何であるかを説明するために

、私はHTDPから引用されます:用語が言うよう

構造体の定義は、定義の新しい形です。ここで > POSNのDrSchemeの定義です:

(define-struct posn (x y)) 

は、私たちは再びCDの例を見てみましょう。ラケットには「cd値」が組み込まれていないので、cd値が何であるかを定義する必要があります。これは、構造体定義で行われます。

(define-struct cd (author title price)) 

定義は、1つは、CD値を構築するためのmake-CDを使用することができます行われた後。 autorとtitleが文字列であり、priceが数字であると予想されることを説明するには、make-cdの使用方法を説明するデータ定義を書き留めておく必要があります。 >α - NUMα-リスト:

(2)どのような正確に機能する前に 来契約におけるアルファおよびベータ版、すなわち

テイクは次のとおりです。

は、私はあなたの2番目の質問に答えることを忘れてしまいました-list

アルファはタイプに置き換えられているはずです。

整数リスト(入力の整数のリスト)を取得すると、出力は整数リストになります。

文字列リスト(入力文字列のリスト)を取得すると、出力は文字列リストになります。

要するに、あるタイプ(アルファ)の値のリストを入力として取得すると、出力は同じタイプ(alsp alpha)の値のリストになります。

2

Jens Axel Soegaardの答えは正しいが、私は次のように述べる2つの間の関係について詳述していない。

データ定義は、値がラケット値を使用してどのように表されるかを読者に説明します。

「組み込み」の値が不十分で、Jensが参照する「CD」のような新しい種類のデータを定義する必要があることがあります。新しい種類のデータを定義するために、構造定義を使用することがよくあります。

別の言い方をすれば、一部のデータ定義には構造定義が必要です。いくつかはしません。

もし私がこれ以上精緻化しようとするならば、私はひどくHtDPを再現するだろう。私が今までに言ったことが意味をなさないなら、HtDPを読んでください。 :)