Чуть попозже как пишется

Здравствуйте, дорогие хабровчане! я изучаюhaskell, и для закрепления материала я, используя монадуstate, реализовал полноценные переменные! я человек и могу ошибиться,

Здравствуйте, Дорогие Хабровчане! Я изучаю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 [] 

Marg

Новинки 2021 года:
Мультивитаминная сыворотка для волос, цена 570+15%:
[ссылка-1]
Маска-реконструктор, цена 370 +15%:
[ссылка-2]
Лосьон с aha-кислотами, цена 310+15%:
[ссылка-3]
Пока ничего не пробовала, но буду брать, серии для волос у фирмы очень неплохие

29.11.2021 14:15:17, Marg

Marg

Новинка 2020 года:
легкий нежный крем шарм:
[ссылка-1]
Цена 305 р+15%

29.11.2021 14:15:32, Marg

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

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

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

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

Marg

Хит:
Коллаген-гиалуроновый комплекс, цена 1045+15%:
[ссылка-2]
Крем-гель с выраженным лифтинг-эффектом. Содержит нативный коллаген с сохранённой природной структурой. Сама пользуюсь (раньше он был в проф серии), очень нравится.

29.11.2021 14:14:31, Marg

Marg

Лифтинги с пептидами:
Лифтинг-день, цена 870р+15%:
[ссылка-1]
Лифтинг-ночь, цена 1045 р +15%:
[ссылка-2]
Уже попробовала оба продукта, очень понравились, особенно ночной. Очень хорошо питает, при этом легкий и моментально впитывается.

29.11.2021 14:16:09, Marg

Marg

Уход за жирной кожей:
Чудо-гель — маска для жирной кожи 2 раза в неделю.
Вечер: Молочко «Красавица Байкала» для очищения
Тоник для жирной кожи
Фитомаска или крем «Волшебный дуэт»
На веки крем для век «Сисметика»
Утро: Тоник для жирной кожи и тоник «Таёжная сказка»
крем «Формула молодости» или крем-желе
На веки крем для век «Сисметика

29.11.2021 14:14:06, Marg

Marg

Для подростковой проблемной кожи (советы косметолога).
Чудо-гель 2-3 раза в неделю.
Для очищения на каждый день — жидкое мыло «Очарование свежести».
Фитомаска несколько раз в неделю (наносится на лицо и не смывается).
Гель «Чистая кожа» — на проблемные места. Он блокирует фермент, который превращает тестостерон в дигидротестостерон (если правильно написала, я не биохимик, в общем, смысл в том, что уменьшается появление подростковых гормональных прыщиков).
Крем для молодой кожи на каждый день.
Лосьон Таежный на каждый день для очищения и подсушивания прыщей и комедонов

29.11.2021 14:13:54, Marg

Marg

еще рекомендую Маску-эксфолиант, цена 370+15%:
[ссылка-1]
Очищающая смываемая маска, дочка ее очень любит.

29.11.2021 14:16:27, Marg

Marg

Уход за сухой кожей:
Чудо-гель 1 раз в 2 недели, не чаще! Очень сильная очищающая маска!
Вечер: Очищение — крем-молочко «Наслаждение»
крем вечерний «Виктория»
Для век «Очей очарование» или крем для век «Наслаждение»
Утро: крем-желе или крем Формула молодости
для век крем для век «Наслаждение»
3 раза в неделю вечером хорошо наносить крем-маску Волшебный дуэт.

29.11.2021 14:13:42, Marg

Marg

Хорошо работает Формула молодости для сухой кожи, вот отзыв:
[ссылка-1]
Сейчас крем вышел с новой формулой

29.11.2021 14:16:42, Marg

  • Чуть больше как пишется
  • Чучелка и подчучелка сказка
  • Чуть ли как пишется через дефис или нет
  • Чуть позже как пишется
  • Чуть заметно как пишется