tipos tabla soluciones solucion simplex optimizacion optima online objetivos metodo inicial con artificiales haskell do-notation

haskell - tabla - ¿Cómo evitar variables superfluas en notación?



tabla inicial simplex (2)

(Supongo que su objetivo es limitar el alcance del uid , no solo estar libre de puntos por sí mismo)

En un caso simple como este, la respuesta de @ pdw es probablemente el camino a seguir. Los operadores <$> y <*> de Control.Applicative son particularmente útiles aquí.

foo = do are_same <- (==) <$> doThis <*> doThat

En situaciones un poco más complicadas, podría usar una función anidada:

complicatedEq :: This -> That -> IO Bool main = do are_same <- do this <- doThis that <- doThatBasedOn this complicatedEq this that ... rest ...

Cualquier cosa significativamente larga probablemente merece ser su propia función.

Decir en un bloque de notación de Haskell, deseo tener una variable is_root indique si soy root:

import System.Posix.User main = do uid <- getRealUserID is_root <- return $ uid == 0

Esa variable uid molesta solo se usa en ese lugar. Ojalá pudiera escribir esto:

main = do is_root <- getRealUserID == 0

Pero claro que eso no compilará.

¿Cómo puedo deshacerme de variables superfluas como uid ? Aquí está lo mejor que he encontrado:

import System.Posix.User main = do is_root <- getRealUserID >>= return . ((==) 0)

Blech! ¿Hay alguna manera mejor?


Una forma es

fmap (== 0) getRealUserID