aya*_*dov 0 getter haskell tuples
我在使用定义为类型同义词的元组的情况下,所以我不能真正使用记录结构.有没有办法获得这些元素?
这里更具体的是我的意思:
type Movie = (Title, Regisseur, MainActors, ReleaseDate, Genre, SalesPrice)
type Title = String
type SalesPrice = Int
etc
Run Code Online (Sandbox Code Playgroud)
我怎样才能只Title和ReleaseDate一个例子.除了为元组中的每个位置定义一个getter函数.
另一个选择是导入包Control.Lens.
>>> import Control.Lens
>>> let movie = ( "The Terminator"
, "James Cameron"
, ["Arnold Schwartzenegger", "Michael Biehn"]
, 1984
,"Science Fiction"
, 19.99)
>>> movie ^. _1
"The Terminator"
>>> movie ^. _4
1984
Run Code Online (Sandbox Code Playgroud)
我不建议你这样做.请改用记录语法.
data Movie = Movie
{ title :: String
, director :: String
, mainActors :: [String]
, releaseDate :: Int
, genre :: String
, price :: Double
} deriving (Eq,Ord,Show)
Run Code Online (Sandbox Code Playgroud)
现在你可以做到
>>> let movie = Movie "The Terminator" "James Cameron"
["Arnold Schwartzenegger", " Michael Biehn"]
1984 "Science Fiction" 19.99
>>> title movie
"The Terminator"
>>> releaseDate movie
1984
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
536 次 |
| 最近记录: |