2016-03-24 7 views
0

私はhaskellで新しいです。 私は新しいタイプがあります。ハスケルの新しいデータ型要素へのアクセス

type RealName = String 
type UserName = String 
type GroupName = String 
type Message = String 

data User = User UserName RealName [UserName] [Post] 

と私は、ユーザーの本当の名前にアクセスする新しい機能で、

accreal :: User -> RealName 
accreal us = ?? 

私はそれを行うことができます、私は多くの方法を試みたが、仕事をしなかった。あなたはまた、警告を抑制するために_で未使用の変数の接頭辞する場合があります

accreal:: User -> RealName 
accreal (User un rn uns ps) = rn 

答えて

5

ただ、パターンマッチングを使用します。

accreal:: User -> RealName 
accreal (User _un rn _uns _ps) = rn 

_を使用して値を破棄することもできます。 accreal (User _ rn _ _) = rn

また、記録にあなたのdata種類を変更:

data User = User 
    { user :: UserName 
    , real :: RealName 
    , others :: [UserName] 
    , posts :: [Post] } 

をこれは自動的にreal :: User -> RealName投影を定義します。

+0

パターンマッチングを使用しない他の方法はありませんか? –

+0

@YavuzSelimKartal編集を参照してください。 – chi

関連する問題