цикл через две переменные в Haskell

Продолжение от Строки. Ответ соединения, для игнорирования пустого указателя/пустых строк (и если Вы используете.NET 3.5) Вы могли бы использовать немного Linq., например,

Dim Result As String
Dim Items As New List(Of String)
Items.Add("Hello")
Items.Add("World")
Result = String.Join(",", Items.ToArray().Where(Function(i) Not String.IsNullOrEmpty(i))
MessageBox.Show(Result)
9
задан Don Stewart 16 April 2011 в 19:43
поделиться

3 ответа

Используйте понимание вложенного списка. Здесь 'foo' равно '(,)' ':

[ (i,j) | i <- [0 .. 999], j <- [0 .. 999] ]

Или выложено, чтобы сделать вложение более понятным:

[ foo i j
| i <- [0 .. 999]
, j <- [0 .. 999]
]
24
ответ дан 4 December 2019 в 06:06
поделиться

Помимо ответа Дона, вы можете использовать монаду списка:

do 
  i <- [0 .. 999]
  j <- [0 .. 999]
  return (foo i j)
14
ответ дан 4 December 2019 в 06:06
поделиться

Вы также можете сделать это с помощью Control.Applicative

module Main where

import Control.Applicative

main :: IO ()
main = mapM_ putStrLn (foo <$> [0..3] <*> [0..3])

foo :: Int -> Int -> String
foo a b = "foo " ++ show a ++ " " ++ show b

Пример выполнения:

C:\programming>ghc --make Main.hs
[1 of 1] Compiling Main             ( Main.hs, Main.o )
Linking Main.exe ...

C:\programming>main
foo 0 0
foo 0 1
foo 0 2
foo 0 3
foo 1 0
foo 1 1
foo 1 2
foo 1 3
foo 2 0
foo 2 1
foo 2 2
foo 2 3
foo 3 0
foo 3 1
foo 3 2
foo 3 3
8
ответ дан 4 December 2019 в 06:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: