Я читал через Haskell d3js библиотеки:Как операторы `>>>` и `>> =` работают в Haskell?
Это код, определяющий Haskell окно:
box :: Selector -> (Double,Double) -> St (Var' Selection)
box parent (w,h) = do
assign
$ ((d3Root
>>> select parent
>>> func "append" [PText "svg"]
>>> width w
>>> height h
>>> style "background" "#eef") :: Chain() Selection)
код на самом деле экспорт с помощью функции box
в d3.js коде используется оператор >>=
, как это :
import Control.Monad
import qualified Data.Text as T
import D3JS
test :: Int -> IO()
test n = T.writeFile "generated.js" $ reify (box "#div1" (300,300) >>= bars n 300 (Data1D [100,20,80,60,120]))
Для того, чтобы избежать, как это непопулярно вопрос по стрелкам: How to use arrow operators in haskell Где я могу найти сигнатуры типа или другую основную информацию? Существуют ресурсы, где я могу узнать больше о:
$
Haskell: difference between . (dot) and $ (dollar sign)>>>
это может быть arrow, но я не вижу, где я импортировать его.>>=
Первый был легко найти, но ответ был запутанным:
*Main Lib> :t ($)
($) :: (a -> b) -> a -> b
Я обнаружил, что f $ a b c = f ((a b) c)
в то время как f a b c = (((f a) b) c
Prelude дает подобный ответ для >>=
с участием монад. В моем случае это может быть монада IO. Или заявление d3js монада St()
*Main Lib> :t (>>=)
(>>=) :: Monad m => m a -> (a -> m b) -> m b
Последняя не появляется вообще ... что это очень плохо, потому что это выглядит довольно существенным
*Main Lib> :t (>>>)
<interactive>:1:1:
Not in scope: ‘>>>’
Perhaps you meant one of these:
‘>>’ (imported from Prelude), ‘>>=’ (imported from Prelude)
Наконец на риск связывая слишком много вопросов сразу. Может кто-нибудь объяснить эту подпись типа? Особенно последний пункт:
box :: Selector -> (Double,Double) -> St (Var' Selection)
try https://www.haskell.org/hoogle/ – delta
'>>>' фактически определен в 'Control.Category' сейчас. ('Category' является суперклассом' Arrow'.) – chepner
Что касается вашего последнего вопроса - я бы попросил вас ответить на встречный вопрос - что вы поняли об этом - и что вас беспокоит. Вы рассматривали определения каждого типа? – epsilonhalbe