Мне нравится разрабатывать против Firefox сначала, часто с помощью YUI Yahoo для сброса (и сетки для базовой структуры страницы), и с помощью условных директив IE для переопределения форматов что IE, во всем its– гм – мудрость, дескрипторы по-другому.
index.html
<head>
<link rel="stylesheet" type="text/css" media="all" href="styles/yui/grids/base-min.css" />
<link rel="stylesheet" type="text/css" media="all" href="styles/yui/grids/grids.css" />
<link rel="stylesheet" type="text/css" media="all" href="styles/screen.foo.css" />
<link rel="stylesheet" type="text/css" media="print" href="styles/print.foo.css" />
<!--[if gt IE 5]> <link rel="stylesheet" type="text/css" href="styles/ie.screen.foo.css" /> <![endif]-->
</head>
В Haskell вы не можете перебирать кортеж, как список.
Если в кортеже всего два элемента, вы можете использовать fst
для получения первого элемент кортежа и snd
, чтобы получить второй элемент.
Один из способов сделать то, что я думаю, вы хотите сделать, это следующий подход:
Prelude> let lst = [(1,2), (3,4)]
Prelude> filter ((==1).fst) lst
[(1,2)]
который возвращает только элементы в списке, где первый элемент равен 1; конечно, вы можете заменить x
там, где я поставил 1.
Чтобы быть более конкретным, (== 1) .fst
сначала применяется fst
к элементу в lst, затем применяет (== 1)
к результату fst
- технически точка составляет две функции вместе.
Вы не можете передать аргумент с подстановочным знаком _
в нем оператору ==
(или любой другой функции). Аргумент должен быть реальным значением, а не шаблоном, с которым следует сравнивать.
Если вы хотите использовать сопоставление с образцом, вы можете использовать лямбда-функцию в качестве фильтрующего
условия:
filter (\(a,_) -> a == x) lis
Кроме того, есть предопределенная функция fst
для извлечения первого элемента двухэлементного кортежа. Это может быть объединено с ==
, чтобы выполнить тот же тест:
filter ((== x) . fst)) lis