Follow along with the video below to see how to install our site as a web app on your home screen.
Бележка: This feature may not be available in some browsers.
Бях чел, че в кардано го ползвали и за това се поинтересувах "статистически" колко се ползва хахахахаНе съм писал, не знам дали някога ще пиша, но често взе да се споменава езика. Главно го срещам да се споменава при Xmonad WM, който е писан на Хаскел и разширенията също се пишат на него.
@Ticketa нещо конкретно ли те интересува или чисто статистически![]()
Можеш ли да дадеш пример. Интересно ми е как е форсирано в езика.code reuse, isolation & separation of conserns, които ти биват наложени, още докато си пишеш кода, поради самия дизайн на езика
addOne :: [Int] -> [Int]
addOne [] = []
addOne (x:xs) = (x+1) : addOne xs
> addOne [1, 2, 3]
[2,3,4]
> addOne [5, 10, 15, 20]
[6,11,16,21]
> addOne []
[]
module MathFunctions (
add,
multiply,
divide,
subtract',
) where
import Prelude (Int, (+), (-), (*), div)
add :: Int -> Int -> Int
add x y = x + y
multiply :: Int -> Int -> Int
multiply x y = x * y
divide :: Int -> Int -> Int
divide x y = x `div` y
subtract' :: Int -> Int -> Int
subtract' x y = x - y
module UserInterface (
showResult
) where
import qualified MathFunctions as Math
showResult :: String -> Int -> Int -> IO ()
showResult operation x y =
case operation of
"+" -> print $ Math.add x y
"*" -> print $ Math.multiply x y
"/" -> print $ Math.divide x y
"-" -> print $ Math.subtract' x y
_ -> putStrLn "Invalid operation"
import UserInterface
main :: IO ()
main = do
let x = 5
y = 10
operation = "+"
showResult operation x y
$ runhaskell main.hs
15
$ ghc main.hs
$ ./main
15
main.hs:1:1: error:
Could not find module ‘UserInterface’
Use -v (or `:set -v` in ghci) to see a list of the files searched for.
|
1 | import UserInterface
| ^^^^^^^^^^^^^^^^^^^^
import qualified Src.MathFunctions as Math
import qualified Src.UserInterface as UI
import qualified Src.MathFunctions as Math
import qualified Src.UserInterface as UI
import UserInterface
main :: IO ()
main = do
let x = 5
y = 10
operation = "+"
UI.showResult operation x y
$ runhaskell src/main.hs
myproject/
├── bin/
└── src/
├── MathFunctions/
│ └── mathfunctions.hs
├── UserInterface/
│ └── userinterface.hs
└── main.hs

указва типовете на входа и изход. в Haskell "функционалните сигнатури" показват типа вход и изход, които функцията приема и произвежда.За първия ред код да питам - addOne :: [Int] -> [Int]
каква по дяволите е идеята тука?!
addOne :: [Int] -> [Int]
addOne [] = []
addOne (x:xs) = (x+1) : addOne xs
main :: IO ()
main = do
let inputList = [1,2,3]
let outputList = addOne inputList
print outputList