Здравствуйте, Дорогие Хабровчане! Я изучаюHaskell, и для закрепления материала я, используя монадуState, реализовал полноценные переменные! Я человек и могу ошибиться, пожалуйста, поправляйте меня в комментариях. Также будет очень приятно услышать конструктивную критику.
Для тех, кто не знает синтаксис Haskell, и его особенностей.
Сейчас я выделю несколько важных аспектов:
-
Haskell— статически типизированный, функциональный декларативный язык. -
Все ф-ии чистые. Это хорошо и удобно.
-
Так весь код — вызов функций, то для вызова функции не требуется скобок:
-- Декларация типа функции. В большинстве случаев не необходима. -- someFunc (Int, Int) -> Int -- *Пояснение к аннотации типа. someFunc :: Int -> Int -> Int -- Тело функции, оно может быть определено несколько раз: someFunc 0 0 = 42 someFunc arg arg' = arg + arg'
-
Названия «переменных» могут содержать штрих:
arg'. -
Все «переменные» — на самом деле константы, и сегодня я буду реализовывать переменные изменяемые.
-
Операторы и функции — одно и тоже, мы можем определить оператор самостоятельно:
-- Декларация типа ф-ии (+) -- Операторы пишутся в таких случаях в скобках (+) :: Num a => a -> a -> a -- Про => см. далее. -- Использование операторов как функций: (+) 1 3 -- Использование ф-ий как операторов (в инфиксной форме): 4 `div` 2
-
Также во всевозможных декларациях типов можно встретить в начале что — то типа
(Num a, Integral b, Show q, Eq s, ...) =>Это значит что в последующей декларации типа типовая переменная реализует какой-либо Тайпкласс (класс типов), в примере,aреализует тайпкласс Num,b— тайпклассIntegral… -
Класс типов это что — то вроде интерфейса. Но это примерное определение.
-
Парочка операторов, для понимания кода:
-- (.) - Оператор композиции ф-ий: (.) :: (b -> c) -> (a -> b) -> (a -> c) (f . g) x = f (g x) -- ($) - Оператор вызова ф-ии. Имеет наименьший приоритет, -- а также правоассациотивен. -- (В то время, как обычный вызов ф-ии - наибольший.) ($) :: (a -> b) -> a -> b f $ a = f a -- (:) - Cons оператор, добавляет в начало списка элемент: -- 1:[2, 3] === [1, 2, 3]
-
Я думаю, Вы и так поняли, что я что-то недоговариваю. Все ф-ии в этом замечательном языке по умолчанию каррированны:
f :: Num a => a -> a -> a f a b = a + b -- "Съели" один аргумент. g :: Num a => a -> a g' :: Num a => a -> a g x = f 5 x -- Воспользуемся так называемой "бесточечной нотацией": g' = f 5 -- Убрали "точку" аргумент x с обоих сторон.
-
Также в
Haskellесть приятный синтаксис для создания лямбда-функций (т. е. анонимных):f :: Num a => a -> a -> a f a b = a + b f = a b -> a + b -- Используем лямбду.
-
Если будут вопросы по синтаксису: добро пожаловать в комментарии и ЛС.
Да кто такие эти ваши монады!?
Монады — это Тайпкласс (см. прошлый раздел) для оборачиваемых типов, вот его определение:
class Monad m where -- Определение Монады для типа m
(>>=) :: m a -> ( a -> m b) -> m b
-- Применяет ф-ию к текущему монадическому значению
(>>) :: m a -> m b -> m b
-- "Заменяет" текущее монадическое значение
return :: a -> m a
-- Оборачивает значение в минимальный контекст.
x >> y = x >>= _ -> y -- Определение по-умолчанию. Для Монад также была придумана do-нотация, «склеивающая» всё что в ней есть с помощью >>
Основы: кто такая монада State?
Незнающий человек может удивиться: как так, состояние (!) в чистом языке! Однако, хитрые хаскелисты с лёгкостью сделали «невозможное». Для начала,Stateимеет следующее определение:
newtype State s a = State { runState :: s -> (a, s)} Значит, к примеру, State Integer () есть функция, преобразовывающая Integer в кортедж ((), Integer). Подсказываю:s — состояние, а a — значение. «Но, это не монада!», возразите Вы, и будете правы, вот реализация Состояния как Монады:
instance Monad (State s) where
return x = State $ s -> (x, s)
(State h) >>= f = State $ s ->
let (a, newState) = h s
(State g) = f a
in g newState
-- x >> y = x >>= _ -> y return x, как положено, помещает значение в минимальный контекст, т. е. в данном случае мы заменяем текущее значение a(результат вычислений), а состояние оставляем прежним. В случае привязки немного сложней: используя pattern matching, производится извлечение функции из состояния (h), и далее оборачивается в состояние анонимная функция, принимающая состояние s и возврающая g newState, где newState — состояние, полученное вызовом h s, а g — функция, полученная «разворачиванием» вызова f a. Получается, мы заменяем текущее состояние (т. е. функцию) новым, «наращивая» слои. Также здесь я показал обычную реализацию >>.
import Control.Monad.State
set_state :: s -> State s ()
set_state s = state $ _ ->
((), s)
get_state :: State s s
get_state = state $ s ->
(s, s)
main' :: State Integer Integer
main' = do
set_state 10
state' <- get_state
return state'
-- Аналогично этому:
main'' = set_state 10 >> (get_state >>= state' -> return state')
-- Аналогично этому:
main''' = set_state 10 >>= _ -> get_state >>= state' -> return state' Разница между state и State
State— конструктор типа State, однако по умолчанию он не экспортируется, и для публичного использования предлагается ф-ия state, имитирующая конструктор
В функцияхset_ get_ -state мы оборачиваем анонимную функцию, принимающую текущее состояние, в state, а возвращает новое состояние в связке с новым значением. Далее мы используем эти функции в main' используя do-нотацию. Также я показал что находится «под капотом» этого синтаксического сахара. Далее пошагово раскроемы вызовы bind оператора:
main' = set_state 10 >>= _ -> get_state >>= state' -> return state'
-- Вычисляем функции get_ и set_ -state, убираем блок с return (излишество)
main2 = state (_ -> ((), 10)) >>= _ -> state (s -> (s, s))
-- "Разворачиваем" вызовы >>= оператора
main3 = State $ s ->
let (a, newState) = (_ -> ((), 10)) s
(State g) = (_ -> state (s -> (s, s))) a
in g newState
-- Вычисляем лямда-функции
main4 = State $ s ->
let (a, newState) = ((), 10)
(State g) = state (s -> (s, s))
in g newState
-- Подставляем значения в pattern matching
main5 = State $ s ->
let a = ()
newState = 10
g = s -> (s, s)
in g newState
-- * Для вычисления этого требуется "достать" ф-ию из State,
-- для этого используется runState (см. определение State)
-- Подставляем переменные
main6 = (s -> (s, s)) 10
-- Вычисляем и эту лямбду
main7 = (10, 10) Вот мы выполнили «грязную работу» компилятора. Надеюсь так станет яснее.
Переменные?
Теперь, разобравшись с магией чистого состояния, двигаемся дальше, к переменным. Я собираюсь хранить список переменных как состояние, а сама переменая есть обёртка вокруг кортеджа из имени и значения. К сожалению, таким образом у нас все переменные будут одного типа, однако это не столь проблематично.
import qualified Control.Monad.State as S
newtype Var name val = Var {runVar :: (name, val)} -- Переменная - обёртка
-- вокруг кортеджа.
type Vars name val = [Var name val] -- |
type VarState name val res = S.State (Vars name val) res -- | Для удобства.
type VarEnv val = VarState String val (Maybe val) -- | Здесь определяется новый тип — обёртка Var, И вспомогательные псевдонимы типов Vars (список переменных), VarState(на замену State) и VarEnv(как надстройка VarState, о нём попозже). Далее я определяюVarкак экземпляр тайпклассов Showи Eq:
instance (Show name, Show val) => Show (Var name val) where
show (Var (name, val)) = "Var " ++ show name ++ " = " ++ show val
instance (Eq name, Eq val) => Eq (Var name val) where
Var (name, val) == Var (name', val') = (name == name') && (val == val') Тайпкласс Show— обьекты отображаемые в строку, Тайпкласс Eq— обьекты которые можно сравнивать (==, /=). Далее, я определяю вспомогательные функции для Var:
varName :: Var name val -> name
varName = fst . runVar
varVal :: Var name val -> val
varVal = snd . runVar
var :: name -> val -> Var name val
var name val = Var (name, val)
runVars vars = S.runState vars []
-- Для упрощения запуска, потом применяется как:
-- runVars $ do
-- ... -- Действия с переменными (см. дальше) Функция varнужна чтобы не писать скобки кортеджа как Var (name, value). Далее самое интересное: работаем с переменными. Что мы можем сделать с переменными? Изменить (в т. ч. добавить), получить, удалить. Для реализации можно просто рекурсивно проходиться по списку переменных и делать сопутствующее действие, к примеру, перезаписывать:
-- Присваивание переменной
-- Ф-ия для присвоения по имени и значению, обёртка
-- вокруг присвоения по обьекту переменной:
assign :: Eq name => name -> val -> VarState name val ()
name `assign` val = assignV $ var name val
-- Ф-ия для присвоения по обьекту переменной, строит состояние
-- вокруг самого присваивания.
assignV :: Eq name => Var name val -> VarState name val ()
assignV var = S.state $
vars -> ((), vars `assignV'` var)
-- Само присваивание. Никак не относится к состоянию.
assignV' :: Eq name => Vars name val -> Var name val -> Vars name val
assignV' ((cvar@(Var (cname, _))):xs) (var@(Var (name, _)))
| cname == name = var:xs
-- Если имя проверяемой переменной и задаваемой равны, то заменить
-- проверяемую переменную задаваемой.
| otherwise = cvar:(xs `assignV'` var)
-- Иначе "оставить просматриваемую переменную в покое" и продолжать искать.
assignV' [] var = [var]
-- Если переменная с одинаковым именем не найдена, создать новую. Получение значения переменной:
-- Получение переменной по имени, заботится об состоянии.
-- Важно, что результат может закончится ничем (нет такой переменной),
-- по этому результат -- Maybe val.
get :: Eq name => name -> VarState name val (Maybe val)
get name = S.state $
vars -> (vars `get'` name, vars)
-- Получение переменной из списка. Никак не относится к окружению.
get' :: Eq name => Vars name val -> name -> Maybe val
get' ((Var (cname, val)):xs) name
| cname == name = Just val
-- Если имя проверяемой и получаемой переменных равны, то
-- то вернуть её значение, обёрнутое в Just
| otherwise = xs `get'` name
-- Иначе продолжать искать.
get' [] _ = Nothing
-- Если ничего не нашли то возвращаем Nothing. А теперь удаление переменной. Не отрицаю, чуть — чуть кривое:
-- Основная функция, управляет состоянием.
del :: Eq name => name -> VarState name val (Maybe ())
del name = S.state $ -- Обёртка вокруг del'
vars -> vars `del'` name
-- Ф-ия, удаляющая переменную с таким же именем.
-- Результат тоже Maybe (), т. к. нельзя удалить переменную,
-- которой нет.
del' :: Eq name => Vars name val -> name -> (Maybe (), Vars name val)
del' [] _ = (Nothing, []) -- Нельзя удалить переменную, которй нет.
del' (cvar@(Var (cname, _)):xs) name
| cname == name = (Just (), xs)
-- Если имена проверяемой и удаляемой переменных равны, то возвращаем
-- список переменных (без удалённой) и Just (), показывающий нам,
-- что операция проведена успешно.
| otherwise = (res, cvar:vars) where (res, vars) = xs `del'` name
-- Иначе возвращаем список переменных с проверенной и рекурсивно
-- проверяем следующие. Ох, вроде всё. Теперь посмотрим на всё это великолепие в коде:
import qualified Vars as V
main :: IO ()
main = print . runVar $ vars_stuff
vars_stuff :: V.VarEnv Integer
vars_stuff = do
init_vars
b <- V.get "VarB"
V.del "VarB"
return b
init_vars :: V.VarState String Integer ()
init_vars = do
"VarA" `V.assign` 10
"VarB" `V.assign` 42
"VarC" `V.assign` 33
-- Результат: (Just 42, [Var "VarA" = 10,Var "VarC" = 33]) Также, я обещал рассказать про используемый здесь VarEnv val. Т. к. в большинстве случаев имя — строка, а результат —Maybeтипа переменной, то для упрощения я создал этот псевдоним типа.
Поздравляю, мы сделали это! Мне было очень интересно работать над этим проектом, и теперь я предлагаю вам, Моим Читателям, для тренировки, реализовать переменные по памяти. Спасибо за прочтение, я очень признателен Вам.
Итоговый код (без комментариев)
module Vars (
VarState,
VarEnv,
assign,
get,
del,
var,
varName,
varVal,
runVars
) where
import qualified Control.Monad.State as S
newtype Var name val = Var {runVar :: (name, val)}
type Vars name val = [Var name val]
type VarState name val res = S.State (Vars name val) res
type VarEnv val = VarState String val (Maybe val)
instance (Show name, Show val) =>
Show (Var name val) where
show (Var (name, val)) =
"Var " ++ show name ++ " = " ++ show val
instance (Eq name, Eq val) =>
Eq (Var name val) where
Var (name, val) == Var (name', val') =
(name == name') && (val == val')
varName :: Var name val -> name
varName = fst . runVar
varVal :: Var name val -> val
varVal = snd . runVar
var :: name -> val -> Var name val
var name val = Var (name, val)
assign :: Eq name => name -> val -> VarState name val ()
name `assign` val = assignV $ var name val
assignV :: Eq name => Var name val -> VarState name val ()
assignV var = S.state $
vars -> ((), vars `assignV'` var)
assignV' :: Eq name => Vars name val -> Var name val -> Vars name val
assignV' ((cvar@(Var (cname, _))):xs) (var@(Var (name, val)))
| cname == name = (var):xs
| otherwise = cvar:(xs `assignV'` var)
assignV' [] var = [var]
get :: Eq name => name -> VarState name val (Maybe val)
get name = S.state $
vars -> (vars `get'` name, vars)
get' :: Eq name => Vars name val -> name -> Maybe val
get' ((Var (cname, val)):xs) name
| cname == name = Just val
| otherwise = xs `get'` name
get' [] _ = Nothing
del :: Eq name => name -> VarState name val (Maybe ())
del name = S.state $
vars -> vars `del'` name
del' :: Eq name => Vars name val -> name -> (Maybe (), Vars name val)
del' [] _ = (Nothing, [])
del' (cvar@(Var (cname, _)):xs) name
| cname == name = (Just (), xs)
| otherwise = (res, cvar:vars) where (res, vars) = xs `del'` name
runVars vars = S.runState vars [] Новинки 2021 года:
Мультивитаминная сыворотка для волос, цена 570+15%:
[ссылка-1]
Маска-реконструктор, цена 370 +15%:
[ссылка-2]
Лосьон с aha-кислотами, цена 310+15%:
[ссылка-3]
Пока ничего не пробовала, но буду брать, серии для волос у фирмы очень неплохие
29.11.2021 14:15:17, Marg
Новинка 2020 года:
легкий нежный крем шарм:
[ссылка-1]
Цена 305 р+15%
29.11.2021 14:15:32, Marg
Отзывы:
От ПятасЁк: Оксан, спасибо большое за кремчики! Очень порадовала! Сейчас( после неск-ких дней теста) сухости почти нет, кожице оч. понра косметика- гладкая, нежная, без стянутости. В восторге от Экск-ва 2 и крема для век Наслаждение.
Ой, Оксан, спасибо тебе за кремик! Он лучше для меня оказался чем предыдущий! Крастотаааа! Был крем для век серия наслаждение- тоже понра, но более легкий, я его буду в теплое время года заказывать, Запах у него очень приятный, впитывается супер.
А новый- Очей очарованье- пожирнее, как мне сейчас и нужно. Я его даже на всю мордаху нанесла- сижу балдею! Спасибо! Надо что то из этой серии( Ренессанс) приглядеть для мордахи, для глаз так просто супер!
Эксклюз-в 1 тоже хорош,жирненький, я его как маску 2-3 раза в нед буду исп-ть. На каждый день- Экск-в 2.
В общем, я довольна, думаю на ней и остановлюсь в ближайшее время. И результат очевиден!
От Лариска: Мне все чем пользуюсь очень понравилось. Крем экс-в 2 супер, для век наслаждение тоже очень хороший, дезодорант без запаха замечательный. Я очень рада, что Вы закупаете эту косметику, т.к. я ей и раньше пользовалась, но это стоило намного дороже. Спасибо
От L-Elenka:
Добрый вечер.
Спасибо за кремики, отчитываюсь:
1. КРЕМ ДЛЯ ВЕК SISMETICA — нежный, почти без запаха, для меня
немного жирноват, но общее ощущение хорошее, кожу вокруг глаз не стягивает после него.
2. Фитомаска ДЛЯ ПРОБЛЕМНОЙ КОЖИ — пользуюсь вместо ночного крема. Специфический запах, но пользовалась подобной маской другой фирмы — пахла также, так что наверное это норма. Наутро лицо блестит, но цвет кожи выравнивается хорошо и общее состояние улучшается заметно.
3. Крем-желе ДЛЯ ЧУВСТВИТЕЛЬНЫЙ КОЖИ — очень понравился. На внешний вид — жидкий-жидкий крем. После нанесения лицо сразу блестит, но после
того, как крем впитается, блеск пропадает. Пропало ощущение стянутости, кожа перестала шелушиться от сухого воздуха от батарей.
Вообщем я очень довольна. Обязательно побалую себя еще какими-нибудь кремиками в дальнейшем.
От Фросюшка: Оксана!Вот пишу как и обещала отзыв.Во-первых,понравилась серия Эксклюзив 1и 2.Кожа после них гладкая и бархатистая.№2 пользуюсь каждый день,а №1 где-то 2-3р в неделю.Оч.хороший для глаз Sismetica.У меня с детства синяки под глазами,поэтому нужна особая забота.Еще брала для волос бальзам Сосновый бор.Волосы становятся намного пышнее и для кожи головы массаж идет.Так что спасибо,Оксан.Буду еще заказывать.А главное -шикарная цена.Доступная для нас)))
ОТ Порядочная стерва: Оксана! Спасибо большое за косметику и консультацию:) ЭксклюзивI и Эксклюзив II для сухой кожи просто замечательные средства! Чудо-гель — отлично очищает кожу, после него она такая гладкая, бархатистая!
Спасибо еще раз огроменное!
От La vida:
Оксана, я созрела для отзыва:)
Значит так…кожа у меня комби(т-зона жирная, щёки нормальные/сухие)
Брала почти всё;-)))))))))
Из того, что произвело особенное впечатление:
1. Фитомаска. Просто восторг! Состав расчудесен и действие её на кожу не менее чудесное. За ночь выравнивает цвет кожа, сужает поры и вытягивает чёрные точки. А если ещё добавить пару капель «Кудесника», то заживают все прыщи(у меня на подбродке иногда выскакивают-отлично подсушивает и заживляет)
2. Молочко «Красавица Байкала» Запаааах….Отлично снимает макияж, не пересушивает и успокаивает кожу.
3. Антибактериально мыло «Очарование свежести» Умываю им только т-зону, отлично снимает воспаления, очищает просто на 5+, а вместе с лосьоном «Таёжный» убрало мне почти все чёрные точки(пользуюсь по такой системе курсово-2 недели, если больше, то кожу подсушивает)
4. Просто мастхев «Чудо-гель» Это надо пробовать!Очищение, лифтинг и полное преображение после этой маски! причём чем дальше пользуюсь, тем лучше результаты.
5. Крем для глаз «Sismetica» просто песня:) Нежный, впитывается быстро, питает отлично, под макияж незаменим. Убрал мееелкие морщинки и круги под глазами осветлил за месяц.
6. Самый-самый мой любимый крем «Крем-желе для чувствительной кожи» Очень впечатлил! Кожа после него напитанная влагой, бархатная-бархатная, овал лица подтягивается(как мне кажется) Расход у него минимальный, т.к консистенция лёгкая, а баночка большая (50 мл.)-надолго хватает)
7. Ну и напоследок о геле «Регенерирующем» У меня тяжесть в ногах к вечеру основательная-не варикоз, но все задатки есть( Этот гель за минуту убирает это ощущение, вены все уходят и «лёгкость необыкновенная» после его использования. Уже 2-ой пузырёк пользую, буду брать ещё.
Вообщем, отличная косметика, я на неё подсела после люксовых марок и ни разу не пожалела. Девочки, я брала очень много, здесь только 1/3 часть перечислена, если будут вопросы спрашивайте-отвечу;)
Оксана, спасибо большое! Я сама пользуюсь и подруг подсадила, так что ждите ещё в закупку.
От Lelick-81: И от меня огромное спасибо. Уже попробовала Маску Чудо-гель, вначале испугалась, что очень сильная для моей сухой, тонкой кожи, но ничего не травмировалось, не пересохло. Кожа нежная и гладкая. Еще попробовала в ампулах Си-Беллу, кожа подтянулась и стала белоснежной, без обычной красноты. Этим комлексом надо пользоваться через день и в него входят два вида масла, так я одно маслице сразу с первыми двумя ампулами применяю, а моделирующее на след. день. И еще попробовала крем Эксклюзив-II, хорош как утром под макияж, так и вечером. Впитывается моментально, на коже не ошутим, но такое впечатление, что кожа хорошо увлажнена. До этого пользовалась Кларансом — он жирненький и хорошо ложился на кожу, но теперь перейду на эти крема. Уже скинула новый заказ.
От Лакшми: Добавь еще отзыв от моей подруги. Крем, который ты тогда посоветовала (не помню название, увлажняющий — Волшебный дуэт это :)) — просто гениальная штука. Кремчик действительно работает, ее проблемная кожа его приняла на Ура
29.11.2021 14:14:47, Marg
От Анни74: Оксана,здравствуйте.спасибо огромное за косметику.я думала,что так не бывает.пользуюсь 3 дня,а кожа лица благодарна как никогда.выбирала по отзывам,но могу сказать,что они оказались очень скромными. Супер!!!спасибо
От Anais-Anais:
Вкратце… мне нравится — очень критически осматриваю себя … ну целый день практически осматриваю — нравится :)))) … явно улучшился цвет лица , ровненький такой стал, подтянулся рельеф. Кожа хорошо увлажнена — недавно с утра не нанесла крем (хотела маску сделать) и лицо не превратилось как обычно в «сморщенное яблоко», т.е. я даже забыла, что хожу без крема!!!
Пользуюсь уже месяц с небольшим :).
До этого в течение многих лет пользовалась Деклеором! Как-раз и металась до последнего — то ли побежать и купить закончившийся Деклеор или все-таки полностью перейти на эту косметику :)).
Вот жду результаты от сестры — у нее все похуже :)) , единственное, кожа явно хорошо увлажнена (до этого была очень сильно обезвожена) и она сказала, что вроде уменьшились морщинки под глазами 
Посмотрим что дальше будет.
Мой подробный отзыв
Что было в наличие: кожа комбинированная, возраст 36, многолетняя фанатка Деклеора.
Немного скептически попробовала данную косметику, польстившись на отзывы «проверенных» участниц и… закончился крем и не было в наличие лишних 1,5 тыс. на Деклеор :)).
Начала с крема Эксклюзив-2.
Главный результат — УВЛАЖНЕНИЕ, подтянулся рельеф, цвет лица стал ровнее.
Я думала, что такого не бывает за такой короткий срок (пользуюсь 1,5 мес).
Чем пользуюсь (покупала все частями 
1. Эсклюзив 2 — легкий крем, прятный запах и быстро впитывается. Иделален под макияж! Сначала испугалась, что крем быстро закончится, т.к. накладывала его гораздо больше, чем, например, Деклеор, но спустя месяц потребление крема стало гооораздо меньше, т.е. кожа увлажнена и требует его меньше!
2. Эксклюзив 1. Наношу 3 раза в неделю, затем Экслюзив 2. Очень хорошее увлажнение. Надо сразу знать что сильный запах — мне напоминает курятник или хлев :)) , но выветривается быстро — ради красоты можно и потерпеть :))
3. Тоник «Таежный бальзам» . Лучше тоника в моей жизни не было. Особенно утром — кожа просто просыпается!
4. Молочко для умывания «Красавица Байкала». Хорошо снимает макияж (для глаз не использую), хорошее увлажнение и вообще приятный.
5. Чудо-гель. Пользовалась пока 2 раза (1 раз в неделю по выходным: Чудо-гель , затем Эксклюзив 2, потом Экслюзив 1 
Результат пока рано смотреть, но он с эффектом скраба, т.е. скрабом отдельно теперь не пользуюсь вообще.
6. Фитомаска — пробовала (пока в пробниках), наносила по рекомендации из местных отзывов как вечерний крем в дечение 5 дней (потом пробник кончился 
7. Крем для глаз «Наслаждение» . ОЧЕНЬ нравится — быстро впитывается, реально увлажняет коже под глазами. Лучше крема не пробовала.
От мгука:
ОТЗЫВ: не знала, где лучше написать, напишу здесь )) Понравилась косметика, даже не ожидала, что подойдет для моей очень чувствительной кожи.
Заказывала тоник «Таежная сказка» — приятный, нет ощущения стянутой кожи и сухости, пользуюсь утром вместо умывания водой и вечером.
Крем «Эксклюзив II» — легкий нейтральный запах, приятная текстура, сразу впитывается, понравилось, что кожу не стягивает и не вызывает раздражения, которое у меня бывает от многих кремов. Кожа после него бархатная и матовая, без блеска, увлажненная.
«Гель моделирующий» — мало им пользуюсь, мне 30, пока еще рано что-то основательно подтягивать, явных проблем нет, но кожа тонкая и мимические морщинки бывают, особенно, когда кожа пересушена. Ощущения после геля приятные, хорошо увлажняет, я его и под глазами наношу на крем, морщинки меньше видны, как мне кажется)), буду дальше пробовать.
Приятные впечатления от отечественной косметики, буду еще заказывать. Спасибо ОРГУ!
От Dudochka: Отличная косметика, все никак отзыв не напишу, что я только не пробовала и всякие шанели диоры, но честно честно, это просто отличная. Нашла крем под глазами, для меня просто рай.
Организатор просто замечательный, душевная девушка, что очень важно в таком деле как СП.
От Тюльпанчика:
Оксан, спасибо огромное за косметику и консультацию 
Напишу свои впечатления:
У меня вообще всегда сложно было с нашей косметикой. Тут особенно порадовали дозаторы, я жуткая лентяйка и лишний раз мараться в креме не буду 
— Купила жидкое мыло «Очарование свежести». Умываюсь каждый вечер. Не стягивает кожу и ощущения приятные. Брала для проблемной кожи. Вот думаю тоник попробовать т.к. я всю жизнь пользуюсь спиртовыми, чтобы очищали.
— Фитомаска. Вещь и хотя бы потому, что ее не надо смывать 
— Чудо-гель. Да, очищает, но мои черные точки не убрал окончательно. У меня очень глубокие и широкие поры, НО лицо стало однозначно чище. Я пока пользовалась один раз 
— Ну и крем-желе. Какая же после него мордочка 
Спасибо 
И отзыв от stvetavan:
Да, кстати, на фотке лицо (фотки Светика можно регулярно увидеть в Посиделках :)), регулярно пользующееся кремами от Marg. Оксана, спасибище!! Не устаю благодарить. Начала пользоваться с осени, сейчас кожа в сто раз лучше, чем была после лета.
Да, и еще у нее чУдный лак-масло для ногтей. Я мучилась, у меня они слоились от середины и ломались. Через неделек пять после начала этого масла они каааак попёрли. И росли-росли-росли… Короче, я их сама обрезала потом, а то неудобно в быту стало
29.11.2021 14:15:53, Marg
От Катя_О:
Ощущения самые приятные для кожи. Удивительно, что такие плотные кремы — Эксклюзив 2 и Виктория, не забивают поры, а хорошо питают и увлажняют. Не образуют пленки! Выдержали испытания морозами. Вернее, это кожа моя выдержала, защищенная ими:)
Но за счет плотности — расход, конечно, большой:) Но соотношение цена-качество позволяет с этим примириться:)
Наслаждение для век — милый легкий крем, неалергенный для моих очень чувствительных глаз.
От Gnomla:
Все вчера привезли, хочу мини-отзыв написать —
чудо-гель с бамбуком довольно спорный. он ОЧЕНЬ отбеливает кожу хотя об этом нигде ни слова не сказано… я еще после солярия стала просто белая как мумия )))) тело загорелое а голова как от чужого человека )
так кожа явно стала более гладкая и мягкая но блин… БЕЛАЯ )))хотя
возможно это тот эффект который многие ищут — при пигментации или
веснушках например…
крем антицеллюлитный — слава отечественной косметике — пахнет вообще не айс… минут через 20 начинает пробиваться запах кофе и все становится не так ужасно…
НО — он действительно потрясающей текстуры, шикарно кремово наносится и утром кожа остается увлажненной — если сравнивать например с серией Фитнес-боди то там утром ты опять весь сморщенный как яблочко))
насчет антицеллюлитного эффекта напишу попозже когда будут какие-то результаты
от lvitsa:
Не могу удержаться от отзыва о дезодоранте. Искала натуральный, с минимумом запаха. Раньше брала Кристалл Деонат, который камушек, квасцы, натуральный. Так вот он ничего, но запах пота все-таки появлялся, постоянно приходиться его с собой и перемываться и мазюкаться. А вот этот просто класс! На что я потливая и запахи не люблю от себя парфюмерные. Запах нежный, на целый день защищает от появления запаха пота и кожа от него хорошая! А уж как нравится, что он с дозатором и надо наносить прям капельку, очень экономно и гигиенично. Оксане спасибо большое!
Подарила подруге тушь, отечественную, с хорошим составом, натуральным. Подруга много постоянно красится, много всего перепробовала, и масс и люкс=косметику. В общем звонит сегодня и радостно сообщает:наконец- наши научились тушь делать! Кисточка, сказала, какая-то здоровская, разная с двух сторон, мол сохранит кисть после использования:) Оксана, спасибо тебе большое! Будем брать:) Кстати, от крема и маски Волшебный дуэт она тоже в восторге, очень благодарит тебя за закупку! Да, кожа у нее сухая, рассказывает, что встает по утрам помятая, кожа в складочку:)
От _Мушка_ :
Оксана, хочу сказать Вам и девочкам, которые рекомендовали тушь, огромная СПАСИБО! Держится хорошо, никакого раздражения, ложится ровно, без комочков. В общем, одно удовольствие! Спасибо!
Вспомнила про еще одно Ваше чудесное средство. Опробовала его на днях. Бальзам «кудесник». Укрывала розы, как обычно все руки в порезах. Один палец разрезала глубоко, как ножом. Обычно это все долго болит и плохо заживает. Решила попробовать бальзам. Сначала удивилась — не ожидала, что он темный, как мазь Вишневского. Чтобы не испачкаться, заклеила пластырем. Через день решила посмотреть! и тут снова удивление — приятное — порез зажил, его как-будто не было!
От murazhka:
Оксана…, добрый день….Итак.., вот мое резюМО))
1.Дезодорант, понравился мне,но больше дочке-подростку, у неё наконец-таки появилось сильное ощущение сухости и отстутствие сильного запаха, т.к. долгое время она не могла подобрать нужное.Для меня дезодорант до вечера сохраняет ощущение уюта, и, если не принять душ сразу после сна утром, в принципе, неприятностей не ощущается.
2.Крем-маска Эксклюзив — ОЧЕНЬ нра!Кожа как-будто изнутри пропитана оливковым маслом,ощущение оч комфортное, и хочется наносить её вместо крема.
3.Крем Эксклюзив-понравился, несмотря на легкую консистенцию, достаточно долго сохраняет на коже ощущение влаги, под макияж ложится ровно, косметика не сварачивается.
4.Крем-бальзам «Очаровательные глазки»-классная вещь на ночь, с утра гладкие веки и мешочков/мелких морщин нет, только если спать лечь вовремя, а если чем-то заниматься, тут ни одно зелье не поможет))))
5.Крем для век «Наслаждение»-очень нежная субстанция с утра под макияж и просто как уход под глазки. Кожа увлажненная и и имеет ухоженный вид)
6.Крем для рук использую после каждого контакта с водой, не знаю как написать, скорее всего увлажняет и питает как надо, но из-за постоянного использования привыкла к бархатной коже и кажется, что и без крема имею такую кожу)
7.Крем вечерний «Виктория» однозначно НРА, особенно сильный восторг с утра после применения на ночь в купе с крем-маской Эксклюзив, вот это прямо новая кожа с утра.
8. ФИТОМАСКА-ядерное ощущение, как от запаха, так и от эффекта, я бы сказала «Скорая помощь Вашему имиджу», если усталость и даже простуда видна отечностью на лице, НАДО маску!
9. Кудесник есть кудесник, на пальце, точнее между пальцами, появилось раздражение под кольцом, сразу как получила Кудесник наносила по 4-5 раз в день, достаточно быстро раздражение перешло в подсушеную кожицу, пока есть ещё неприятные ощущения, но уже нет как такого воспаления и можно надеть кольцо.
Большое спасибо, буду дальше писать свои ощущения, т.к. на сегодняшний день прошло чуть больше недели регулярного использования кремов-масок, а дезодорант и серия ЭКСКЛЮЗИВ около 3-х недель
29.11.2021 14:17:03, Marg
Отзыв от Черчи:
1. Чудо-гель — реальное чудо. Осветляет, подтягивает, чистит. Применяю его перед ампулами Си-Белла.
2. Ампулы Си-Белла. Просто песня. Сделала пока курс из 2 упаковок (4 процедуры) 2 раза в неделю, эффект заметный — кожа сияет, увлажнена, подтянута. Коллеги спросили не делала ли я мезотерапию)) Масла из третьей ампулки хватает на 2-3 вечера (наношу на шею и декольте).
3. После ампул — Отбеливающий крем-сыворотка. Для меня это «больной» вопрос — на лбу после Туниса аки звёзды пигментные пятна. После 1 недели уже увидела результат — они посветлели. Применяю на ночь, утром — солнцезащитку.
4. Бальзам «Кудесник» — нечто. Всего один факт — папа «проехался» болгаркой по пальцу на своей руке, думала, что надо будет зашивать. Остановила кровь, намазала бальзамом, рана затянулась, через неделю практически все зажило.
5. Интим-крем «Афродита» — рекомендую без лишних слов!)))
От Пионервожатой:
Оксан, спасибо тебе за косметику — это просто праздник какой-то:))
до этого пользовалась дорогой аптечной. твоя лучше:)) а ампулы вообще супер! эффект потрясающий!
и цена сказочная!
спасибо за такую нужную закупку:)
От yuliok (разговор идет про Выразительный взгляд):
Помогает! Ресницы оживают, как и обещано, через 3 недели. Не «колосятся», как с гормональными средствами, но густеют, подрастают, опять начинают подвиваться. И при прекращении использования эффект не пропадает. Брови, многолетне перещипанные, тоже отрастают, правда, медленнее. И состав там натуральный полностью. Я довольна.
От Акуна-Матата:
давайте я похвалюсь?:) Давно собираюсь отзыв накатать, но все как-то…:)
Пробовала много чего. Из того, что ОЧЕНЬ понравилось:
Лифтинг-крем Наслаждение (не переврать бы названия)
Ночной крем Виктория — он у меня ассоциируется с волшебным кремом Азазелло — как там было? «легкий, жирный крем…» — так вот, это он:))
Крем д/век обратная эмульсия — очень жирный, на любителя, конечно, но для зимы нужная вещь и от него совсем не отекают веки
Легкий крем д/век, опять же, Наслаждение — под макияж хорош
Волшебный дуэт маска-крем (а просто крем с тем же названием не впечатлил особо, крем и крем)
И…та-дам!…просто мой личный МАСТХЭВ — Чудо-гель — реальное чудо. Очень нежное и прекрасное очищение. И еще тоник Таежная краса (или как-то так) — надо сказать, что я тониками уже давно не пользуюсь, не вижу в них смысла, а этот — прекрасен, не побоюсь этого слова. Даже моя тонкая сухая кожа, постоянно требующая крема, после этого тоника требует его не так настойчиво:)
Еще много другого было, не все запомнилось. Лифтинг-гель поначалу очень понравился, но потом как-то перестал на меня действовать:( Маски разные несмываемые — неплохо, но без дикого восторга. Ампулы масляные вполне приятные, но это надо с духом собраться, чтобы курс проделать. Крем д/рук неплохой, а д/ног — не запомнился.
Пока все:)
От valuma:
Давно смотрела на эту косметику и читала отзывы, взяла и очень довольна. Итак, все по порядку
1. Защита от солнца 
2. Средство для роста ресниц 
3. Крем-желе для лица 
4. Масло для ногтей 
5. Крем для рук 
Отзыв от УЛЮ:
Маска эксклюзив просто шикарная, жду пока чуть похолодает, в жару поры забивает. У меня кожа реактивная, поэтому фитомаска меня летом просто спасает. Сейчас косметикой с гликолем особо не попользуешься:)
А после маски эксклюзив лицо утром очень отдохнувшее, кожа гладкая:)))
29.11.2021 14:17:25, Marg
Хит:
Коллаген-гиалуроновый комплекс, цена 1045+15%:
[ссылка-2]
Крем-гель с выраженным лифтинг-эффектом. Содержит нативный коллаген с сохранённой природной структурой. Сама пользуюсь (раньше он был в проф серии), очень нравится.
29.11.2021 14:14:31, Marg
Лифтинги с пептидами:
Лифтинг-день, цена 870р+15%:
[ссылка-1]
Лифтинг-ночь, цена 1045 р +15%:
[ссылка-2]
Уже попробовала оба продукта, очень понравились, особенно ночной. Очень хорошо питает, при этом легкий и моментально впитывается.
29.11.2021 14:16:09, Marg
Уход за жирной кожей:
Чудо-гель — маска для жирной кожи 2 раза в неделю.
Вечер: Молочко «Красавица Байкала» для очищения
Тоник для жирной кожи
Фитомаска или крем «Волшебный дуэт»
На веки крем для век «Сисметика»
Утро: Тоник для жирной кожи и тоник «Таёжная сказка»
крем «Формула молодости» или крем-желе
На веки крем для век «Сисметика
29.11.2021 14:14:06, Marg
Для подростковой проблемной кожи (советы косметолога).
Чудо-гель 2-3 раза в неделю.
Для очищения на каждый день — жидкое мыло «Очарование свежести».
Фитомаска несколько раз в неделю (наносится на лицо и не смывается).
Гель «Чистая кожа» — на проблемные места. Он блокирует фермент, который превращает тестостерон в дигидротестостерон (если правильно написала, я не биохимик, в общем, смысл в том, что уменьшается появление подростковых гормональных прыщиков).
Крем для молодой кожи на каждый день.
Лосьон Таежный на каждый день для очищения и подсушивания прыщей и комедонов
29.11.2021 14:13:54, Marg
еще рекомендую Маску-эксфолиант, цена 370+15%:
[ссылка-1]
Очищающая смываемая маска, дочка ее очень любит.
29.11.2021 14:16:27, Marg
Уход за сухой кожей:
Чудо-гель 1 раз в 2 недели, не чаще! Очень сильная очищающая маска!
Вечер: Очищение — крем-молочко «Наслаждение»
крем вечерний «Виктория»
Для век «Очей очарование» или крем для век «Наслаждение»
Утро: крем-желе или крем Формула молодости
для век крем для век «Наслаждение»
3 раза в неделю вечером хорошо наносить крем-маску Волшебный дуэт.
29.11.2021 14:13:42, Marg
Хорошо работает Формула молодости для сухой кожи, вот отзыв:
[ссылка-1]
Сейчас крем вышел с новой формулой
29.11.2021 14:16:42, Marg

