Size: a a a

Конференция C++ Russia

2020 February 26

АГ

Александр Гранин in Конференция C++ Russia
Alexey Veselovsky
С последующим рефакторингом конечно же
Ты довольно объемную дискуссию предлагаешь, с примерами-то. Это требует времени. Составление понятных и валидных примеров - это не для чатика, это даже когда доклад готовишь, чуть ли не самая затратная часть.

Но чем тебя пример с шахматами не устраивает?


findBestMove 0 piece = pure (Left (SearchExausted piece))
findBestMove deep piece = do
  move <- selectNextMove piece
  value <- evaluateMove piece move
  if (isGoodEnough move value)
     then pure (Right (piece, move, value))
  else
     findBestMove (deep - 1) piece  

doMove = do
 pieces <- getAvailablePieces
 eMoves <- mapM (findBestMove 10) pieces
 let failedPieces = lefts eMoves
 
 mapM_ showFailedPiece failedPieces

where
   showFailedPiece (Left (SearchExausted piece)) = ...
   showFailedPiece (Left (ValueIsLow piece)) = ...
источник

АГ

Александр Гранин in Конференция C++ Russia
Я вообще не хочу в чате кого-то в чем-то убеждать, это вряд ли возможно.
источник

AV

Alexey Veselovsky in Конференция C++ Russia
Александр Гранин
Ты довольно объемную дискуссию предлагаешь, с примерами-то. Это требует времени. Составление понятных и валидных примеров - это не для чатика, это даже когда доклад готовишь, чуть ли не самая затратная часть.

Но чем тебя пример с шахматами не устраивает?


findBestMove 0 piece = pure (Left (SearchExausted piece))
findBestMove deep piece = do
  move <- selectNextMove piece
  value <- evaluateMove piece move
  if (isGoodEnough move value)
     then pure (Right (piece, move, value))
  else
     findBestMove (deep - 1) piece  

doMove = do
 pieces <- getAvailablePieces
 eMoves <- mapM (findBestMove 10) pieces
 let failedPieces = lefts eMoves
 
 mapM_ showFailedPiece failedPieces

where
   showFailedPiece (Left (SearchExausted piece)) = ...
   showFailedPiece (Left (ValueIsLow piece)) = ...
Вспоминается статья «давно не брал я в руки шашек» из журнала практики ФП :-)
источник

AV

Alexey Veselovsky in Конференция C++ Russia
Александр Гранин
Ты довольно объемную дискуссию предлагаешь, с примерами-то. Это требует времени. Составление понятных и валидных примеров - это не для чатика, это даже когда доклад готовишь, чуть ли не самая затратная часть.

Но чем тебя пример с шахматами не устраивает?


findBestMove 0 piece = pure (Left (SearchExausted piece))
findBestMove deep piece = do
  move <- selectNextMove piece
  value <- evaluateMove piece move
  if (isGoodEnough move value)
     then pure (Right (piece, move, value))
  else
     findBestMove (deep - 1) piece  

doMove = do
 pieces <- getAvailablePieces
 eMoves <- mapM (findBestMove 10) pieces
 let failedPieces = lefts eMoves
 
 mapM_ showFailedPiece failedPieces

where
   showFailedPiece (Left (SearchExausted piece)) = ...
   showFailedPiece (Left (ValueIsLow piece)) = ...
Погоди, а это не оттуда ли код?
источник

AV

Alexey Veselovsky in Конференция C++ Russia
Но там были шашки а не шахматы :-)
источник

АГ

Александр Гранин in Конференция C++ Russia
Alexey Veselovsky
Погоди, а это не оттуда ли код?
Не, из головы
источник

FO

FORTRAN ONE LOVE in Конференция C++ Russia
Alexey Veselovsky
Но как потом выяснить, где оно сломалось?
Включать режим последовательного вычисления номад :)
источник

AV

Alexey Veselovsky in Конференция C++ Russia
FORTRAN ONE LOVE
Включать режим последовательного вычисления номад :)
Оно ж ленивое в хаскелле. :-)
источник

FO

FORTRAN ONE LOVE in Конференция C++ Russia
Alexey Veselovsky
Оно ж ленивое в хаскелле. :-)
А будут последовательные!
источник

FO

FORTRAN ONE LOVE in Конференция C++ Russia
Тьфу. Я забыл, что такое ленивые. :(
источник

FO

FORTRAN ONE LOVE in Конференция C++ Russia
Это не про параллельность
источник

FO

FORTRAN ONE LOVE in Конференция C++ Russia
Прошу простить и убить
источник

AV

Alexey Veselovsky in Конференция C++ Russia
FORTRAN ONE LOVE
Прошу простить и убить
источник

FO

FORTRAN ONE LOVE in Конференция C++ Russia
Ха. Ничего не будет
источник

AV

Alexey Veselovsky in Конференция C++ Russia
:-(
источник

FO

FORTRAN ONE LOVE in Конференция C++ Russia
А можно проткнуть мультиметром палец на одной руке и палец на другой и потом попробовать измерить сопротивление 😏
источник

AV

Alexey Veselovsky in Конференция C++ Russia
Александр Гранин
Не, из головы
источник

AV

Alexey Veselovsky in Конференция C++ Russia
Хотя там особо монадами не обмазывались
источник

AV

Alexey Veselovsky in Конференция C++ Russia
Жаль, что журнал больше не выходит
источник

YA

Yauheni Akhotnikau in Конференция C++ Russia
Alexey Veselovsky
Жаль, что журнал больше не выходит
Ну это как бы подтверждение практичности функционального программирования вообще и монад в частности.
источник