[Haskell-beginners] Reducing local variable duplication

Michael Orlitzky michael at orlitzky.com
Tue Aug 30 20:35:18 CEST 2011


On 08/30/11 08:15, Michael Orlitzky wrote:
> 
> It /works/, but gives me that "what the hell is he doing.." feeling when
> re-reading my own code.

For what it's worth, this is the most sane thing I could devise that
still allows me to use Haddock:

trilinear_c0_t0_tests :: Test.Framework.Test
trilinear_c0_t0_tests =
  testGroup "trilinear c0 t0"
    [testGroup "coefficients"
      [testCase "c0030 is correct" test_trilinear_c0030,
       testCase "c0003 is correct" test_trilinear_c0003,
       testCase "c0021 is correct" test_trilinear_c0021,
       testCase "c0012 is correct" test_trilinear_c0012,
       testCase "c0120 is correct" test_trilinear_c0120,
       testCase "c0102 is correct" test_trilinear_c0102,
       testCase "c0111 is correct" test_trilinear_c0111,
       testCase "c0210 is correct" test_trilinear_c0210,
       testCase "c0201 is correct" test_trilinear_c0201,
       testCase "c0300 is correct" test_trilinear_c0300,
       testCase "c1020 is correct" test_trilinear_c1020,
       testCase "c1002 is correct" test_trilinear_c1002,
       testCase "c1011 is correct" test_trilinear_c1011,
       testCase "c1110 is correct" test_trilinear_c1110,
       testCase "c1101 is correct" test_trilinear_c1101,
       testCase "c1200 is correct" test_trilinear_c1200,
       testCase "c2010 is correct" test_trilinear_c2010,
       testCase "c2001 is correct" test_trilinear_c2001,
       testCase "c2100 is correct" test_trilinear_c2100,
       testCase "c3000 is correct" test_trilinear_c3000],

    testGroup "face0 vertices"
      [testCase "v0 is correct" test_trilinear_f0_t0_v0,
       testCase "v1 is correct" test_trilinear_f0_t0_v1,
       testCase "v2 is correct" test_trilinear_f0_t0_v2,
       testCase "v3 is correct" test_trilinear_f0_t0_v3]
    ]
  where
    g = make_grid 1 trilinear
    cube = cube_at g 1 1 1
    t = tetrahedron0 cube

    test_trilinear_c0030 :: Assertion
    test_trilinear_c0030 =
      assertAlmostEqual "c0030 is correct" (c t 0 0 3 0) (17/8)

    ...
    <other tests using g, cube, t>



More information about the Beginners mailing list