Size: a a a

2021 March 11

G

GWM in Haskell Start
Привет, не бейте пожалуйста сильно палками, но как в Хаскелле называется функция вроде Option.orElse? т.е. которая берёт две мейби, и возвращает первую если та Just, а иначе - вторую?
т.е. вот это, но компактнее
let result_maybe = case first_maybe of
 Just v -> Just v
 Nothing -> second_maybe
источник

D

Dreamerinnoise in Haskell Start
источник

TZ

Timofey Zakrevskiy in Haskell Start
GWM
Привет, не бейте пожалуйста сильно палками, но как в Хаскелле называется функция вроде Option.orElse? т.е. которая берёт две мейби, и возвращает первую если та Just, а иначе - вторую?
т.е. вот это, но компактнее
let result_maybe = case first_maybe of
 Just v -> Just v
 Nothing -> second_maybe
Control.Applicative.asum
источник

TZ

Timofey Zakrevskiy in Haskell Start
он же <|>
источник

TZ

Timofey Zakrevskiy in Haskell Start
Timofey Zakrevskiy
Control.Applicative.asum
Prelude> import Control.Applicative
Prelude Control.Applicative> Just "hi" <|> Just "ih"
Just "hi"
Prelude Control.Applicative> Just "hi" <|> Nothing
Just "hi"
Prelude Control.Applicative> Nothing <|> Just "hi"
Just "hi"
Prelude Control.Applicative> Nothing <|> Just "hi"
источник

G

GWM in Haskell Start
Спасибо!
источник

JS

Jerzy Syrowiecki in Haskell Start
GWM
Привет, не бейте пожалуйста сильно палками, но как в Хаскелле называется функция вроде Option.orElse? т.е. которая берёт две мейби, и возвращает первую если та Just, а иначе - вторую?
т.е. вот это, но компактнее
let result_maybe = case first_maybe of
 Just v -> Just v
 Nothing -> second_maybe
этот чат существует именно для таких вопросов, никаких палок!
источник

JS

Jerzy Syrowiecki in Haskell Start
можем побить за употребление слова "типо", если хотите (шутка)
источник

G

GWM in Haskell Start
Jerzy Syrowiecki
можем побить за употребление слова "типо", если хотите (шутка)
Исправил, спасибо 😁
источник

 P

 ‌‌Gleb Pilipets... in Haskell Start
Ребят, привет всем, я только изучаю хаскель - до этого писал на обычных ЯП - C/С++, Java, Python, Go, ...

import Data.List
import System.IO

maxInt = maxBound :: Int

Как мне сюда мейн добавить, чтобы оно скомпилировалось и вывести maxInt?

main.hs:1:1: error:
   The IO action `main' is not defined in module `Main'
 |
1 | import Data.List
 | ^
compiler exit status 1
источник

D

Dreamerinnoise in Haskell Start
 ‌‌Gleb Pilipets
Ребят, привет всем, я только изучаю хаскель - до этого писал на обычных ЯП - C/С++, Java, Python, Go, ...

import Data.List
import System.IO

maxInt = maxBound :: Int

Как мне сюда мейн добавить, чтобы оно скомпилировалось и вывести maxInt?

main.hs:1:1: error:
   The IO action `main' is not defined in module `Main'
 |
1 | import Data.List
 | ^
compiler exit status 1
В твоём модуле Main нет объявленного main
источник

 P

 ‌‌Gleb Pilipets... in Haskell Start
А его обязательно объявлять или можно запустить файл как пайтон скрипт без мейна?
источник

D

Dreamerinnoise in Haskell Start
обязательно
источник

к

кана in Haskell Start
 ‌‌Gleb Pilipets
Ребят, привет всем, я только изучаю хаскель - до этого писал на обычных ЯП - C/С++, Java, Python, Go, ...

import Data.List
import System.IO

maxInt = maxBound :: Int

Как мне сюда мейн добавить, чтобы оно скомпилировалось и вывести maxInt?

main.hs:1:1: error:
   The IO action `main' is not defined in module `Main'
 |
1 | import Data.List
 | ^
compiler exit status 1
main = print maxInt
источник

к

кана in Haskell Start
main обязателен, на топлевеле модуля могут быть только определения, импорты, комментарии, запускаться же будет только main
источник

 P

 ‌‌Gleb Pilipets... in Haskell Start
Супер, спасибо.
источник

к

кана in Haskell Start
НО, если нет цели запускать программу, а просто запускать свои функции или значения, то main не обязателен
источник

к

кана in Haskell Start
достаточно открыть репл
(ghci, cabal repl, stack repl) и вызывать нужную функцию

так, во время разработки, приложение редко запускается, обычно достаточно запустить нужную функцию в репле

если модуль поменялся, то команда :r в репле пересоберет модуль

в твоем случае это бы выглядело так:
cabal repl
Main> maxInt
<тут какое-то число>
-- меняем определение на maxInt = 10
Main> :r
Main> maxInt
10
Main>
источник

D

Dreamerinnoise in Haskell Start
в хаскельной программе должен быть модуль, который называется Main с экспортом IO значения — main
источник

D

Dreamerinnoise in Haskell Start
в этом отличие от питона
источник