> From: Raul Miller
> Yuvaraj Athur Raghuvir wrote:
> > Is there  a J idiom / verb that implements a design-by-contract or
> > input partameter type checking? 
> 
> Do you mean something like this?
> 
> contract=:1 :'[ ass...@u'
> rawtypesmatch=: -:&(3!:0)
> 
> isboxed=: a:&rawtypesmatch contract
> 

Extending Raul's idea:
  ranksmatch=: -:&(#...@$)
  rankstypesmatch=: ranksmatch *. rawtypesmatch

  isIntAtom=: 3&rankstypesmatch contract
  isIntList=: 3 4&rankstypesmatch contract
  isFloatList=: 3.1 4.2&rankstypesmatch contract

   isIntAtom 9
9
   isIntAtom 9 2
|assertion failure: assert
|       isIntAtom 9 2
   isIntAtom 9.4
|assertion failure: assert
|       isIntAtom 9.4
   isIntList 7
|assertion failure: assert
|       isIntList 7
   isIntList ,7
7
   isFloatList 4 5.1
4 5.1

These are problems though:

   isIntAtom 1
|assertion failure: assert
|       isIntAtom 1
   isFloatList 4 5.0
|assertion failure: assert
|       isFloatList 4 5

Might be safer to go back to using isInteger etc. than just checking matching 
type.


----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to