Или как-то так?
.red, .blue {
color: white;
}
.red {
background-color: red;
}
.blue {
background-color: blue;
}
.row{
overflow: auto;
}
[class^="col-"] {
display:table-cell;
width: 30%;
}
.col-7 {
text-align:center;
vertical-align: middle;
}
.row::after {
content: "";
display: table-cell;
width: 40%;
}
<div class="row">
<h1> Example 1</h1>
<div class="col-3 red">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
Why do we use it?
</div>
<div class="col-7 blue">ipsum ipsum</div>
</div>
Помещенный просто, .
композиция функций, точно так же, как в математике:
f (g x) = (f . g) x
В Вашем случае Вы создаете новую функцию, sumEuler
это могло также быть определено как это:
sumEuler x = sum (map euler (mkList x))
Стиль в Вашем примере называют стилем "без точек" - аргументы функции опущены. Это делает для более четкого кода во многих случаях. (Это может быть твердо к grok в первый раз, когда Вы видите его, но Вы привыкнете к нему через некоторое время. Это - общая идиома Haskell.)
Если Вы все еще смущены, это может помочь иметь отношение .
к чему-то как канал UNIX. Если f
вывод становится g
вход, вывод которого становится h
вход, Вы записали бы это на командной строке как f < x | g | h
. В Haskell, .
работы как UNIX |
, но "назад"- h . g . f $ x
. Я нахожу, что эта нотация довольно полезна, скажем, обрабатывая список. Вместо некоторой громоздкой конструкции как map (\x -> x * 2 + 10) [1..10]
, Вы могли просто записать (+10) . (*2) <$> [1..10]
. (И, если Вы хотите только применить ту функцию к единственному значению; это (+10) . (*2) $ 10
. Последовательный!)
Wiki Haskell имеет хорошую статью еще с некоторой деталью: http://www.haskell.org/haskellwiki/Pointfree
. оператор составляет функции. Например,
a . b
то, Где и b функции, является новым функция , который выполняет b на его аргументах, тогда на тех результатах. Ваш код
sumEuler = sum . (map euler) . mkList
является точно тем же как:
sumEuler myArgument = sum (map euler (mkList myArgument))
, но надо надеяться легче читать. Причиной там является parens приблизительно карта, которая - Эйлер то, потому что это делает это более ясным, что существует 3 составленные функции: сумма , карта Эйлер и mkList - карта Эйлер является единственной функцией.
sum
функция во Вводной части Haskell, не аргумент sumEuler
. Это имеет тип
Num a => [a] -> a
, оператор .
композиции функций имеет тип
(b -> c) -> (a -> b) -> a -> c
, Таким образом, мы имеем
euler :: Int -> Int
map :: (a -> b ) -> [a ] -> [b ]
(map euler) :: [Int] -> [Int]
mkList :: Int -> [Int]
(map euler) . mkList :: Int -> [Int]
sum :: Num a => [a ] -> a
sum . (map euler) . mkList :: Int -> Int
Примечание, которое Int
является действительно экземпляром Num
typeclass.
Точечный оператор применяет функцию на левых (sum
) к выводу функции справа. В Вашем случае Вы объединяете несколько функций в цепочку вместе - Вы передаете результат mkList
к (map euler)
и затем передаете результат этого к sum
. Этот сайт имеет хорошее введение в несколько из понятий.
. оператор используется для композиции функций. Точно так же, как математика, если Вы имеете к функциям f (x) и g (x), f. g становится f (g (x)).
карта является встроенной функцией, которая применяет функцию к списку. Путем помещения функции в круглые скобки функцию рассматривают как аргумент. Термин для этого приправляющий карри . Необходимо искать это.
то, Что, делает то, что это берет функцию с, говорят, что два аргумента, это применяет аргумент Эйлер. (отобразите Эйлера), право? и результатом является новая функция, которая берет только один аргумент.
сумма. (отобразите Эйлера). mkList является в основном необычным способом поместить все это вместе. Я должен сказать, мой Haskell немного ржав, но возможно можно поместить ту последнюю функцию вместе сами?